Hacker Newsnew | past | comments | ask | show | jobs | submitlogin
Bill Gates demonstrates Visual Basic (1991) [video] (youtube.com)
237 points by jackdoe on Oct 18, 2023 | hide | past | favorite | 191 comments


Ooh, nice to see my project here. I was the lead developer of Ruby (no relation to the programming language), which became the "visual" side of Visual Basic.

Ruby was originally going to be a customizable shell/desktop for Windows 3.0, with pretty much what Bill was demoing but a more modest scripting language - and the ability to plug in other scripting languages as desired.

Microsoft decided to make Basic the scripting language and sell it as a standalone development system instead of being the Windows shell.

I guess my great claim to fame is the VBX (Visual Basic eXtension) interface, which I originally called the Gizmo API. I still think "gizmo" was a much better name than "control" as Microsoft later called them.

AMA.


I'll echo others, VB was my start. The year I decided to take programming in high school, they switched from Java to VB. I had so much fun in that class going above and beyond in all my projects.

When I was a kid, I used to sneak off to the computer lab and just play with the form builder. I had no idea how to code at the time but it was fun making mockups


VB on Windows 3.1 was my first intro to programming, thanks for your work!

I've always wondered where the "Thunder" prefix for VB's window class names came from (ThunderForm, ThunderButton, ThunderListBox, etc). Do you know who came up with it and if there's any fun meaning behind the name?


Thank you! It means a lot to me that so many people were able to use VB both to get their start in programming, and to develop applications that businesses relied on.

"Thunder" was the code name that Microsoft adopted for Ruby/VB early on. Its tagline was "The Power to Crack Windows".

As you know, window class names existed in a global namespace, so you needed some kind of hopefully-unique prefix or something to avoid collisions.

Did you ever happen to see an early VB version with "GSK_" prefixes on window class names and such? My colleague Gary S. Kratkin developed much of the forms editor, so he used his initials as the disambiguator.

It was a tradition back then to use your initials like this. Mark Zbikowski may be the most famous example. To this day, every Windows EXE file begins with his initials.

https://en.wikipedia.org/wiki/DOS_MZ_executable

Here is an article from Scott Ferguson about Thunder:

https://www.forestmoon.com/birthofvb/birthofvb.html

And a great long-form article from Ryan Lucas of Retool:

https://retool.com/visual-basic

For the curious, that article has the origin story of "fire an event".

I also want to mention Frank Raab and Mark Merker, who both did a ton of work on Ruby, and of course Alan Cooper gets credit for coming up with the idea and developing his Tripod prototype.


> Thank you! It means a lot to me that so many people were able to use VB both to get their start in programming, and to develop applications that businesses relied on.

Oh, then you should know that there are still VB6 apps in heavy use being actively maintained out in the world. I'm working on a treasury management system that is in use by 90+ banks in my country, where the bulk of the app is still VB-based (we're moving to C# but it will be many years still before we can say a complete goodbye to VB).


Very insightful. Thank you for sharing.


Thanks for sharing this awesome lore.


I have to join others in this thread to acknowledge the impact VB had on my life as well. My first paying gig was on a Visual Basic 6 codebase, good times and good money for a 14yo. Thanks!


Your LinkedIn is the most impressive thing I've ever seen. Love the bit from Apple:

> I developed an electronic mail gateway for the Macintosh, featuring scriptability in a FORTH-based language.

(Also How to Lie with Statistics is my favorite book!)


You helped a lot of people get into programming, including me. So thanks for your contribution!

I learned VB4 or 5 at college in 98. The teacher did nothing while we sat through MS videos where a bearded man both poured water from one jug to another and taught me how to code. Magical stuff.


> where a bearded man both poured water from one jug to another and taught me how to code.

Thank you for this image :D


> Ruby was originally going to be a customizable shell/desktop for Windows 3.0, with pretty much what Bill was demoing but a more modest scripting language - and the ability to plug in other scripting languages as desired.

Was it meant to compete with Norton Desktop? Norton Desktop had an extremely powerful built-in visual scripting language that resembled Visual Basic, so powerful it's strange that it wasn't a separate product. I learned about this from https://youtube.com/watch?v=iD7AezjG5YE&t=25m52s.


Thank you for making hacking on AOL punters and proggies accessible to a middle school kid in the 90s. Your project is the reason I’ve made an entire career of writing code.


likewise man. for me it started with Gorillas.bas and a curiosity of what all this text meant and how it pertained to throwing bananas across a skyline. that later turned into VB3 and AOL. the rest is history. what a fun time in nerdy history. thanks Stratoscope, thanks Steve Case!


Holy shit, I never heard anyone talk about GORILLA.BAS. It's also the first code I ever read, in 8th grade algebra class w/ Mr. Seaman (serious).

I didn't have a computer so I wrote a lot of BASIC in composition books, instead. I never got to run any of that code.

Also DOS32.BAS represent! VB6 was all I wanted to do when I got my first PC. It took me like a month to download a warez copy overnight with a download resumer. My dad wouldn't let me use the phone line during the day.

I used vb6 to make about 15k in high school in a slightly unsavory way.

I'm learning rust now.


It was bothering me that you had written GORILLAS.BAS as I remembered it as GORILLA.BAS. I hadn't seen it in 27 years, at least, so I wasn't confident. Anyway today I had a look, and we're both right.

The game was called GORILLAS, but was in a source file GORILLA.BAS

Published in 1991, 32 years ago. Dang. It was pretty new source when I read it. At the time, I figured it was old.


Same :> I enjoyed this bit of nostalgia: https://github.com/readme/featured/aol-programming-culture Remember jaguar32.bas?


What a great read! Thanks for sharing. Trip down memory lane to a very happy time in my life.

jaguar32 and master32, :) swapping bas files was the only way I could actually do difficult stuff in the beginning


Thanks! I graduated from qbasic to vb in the late 90s, and it was my swiss army knife of app and game development for many years.


What did you and they imagine a built-in, programmable shell would accomplish?

Would the defaults be swappable without rewriting it all?


The state-of-the art Windows shell at the time was the MS-DOS Executive:

https://microsoft.fandom.com/wiki/MS-DOS_Executive

Alan's idea was that your desktop could be customized to your needs, either by yourself or by an IT group. Say you're rolling out machines to an accounting team: the Windows desktop would have tools right on it to make those team member's jobs easier.

Or you could make your own desktop tools with a few clicks and maybe a bit of scripting.

In the end, Microsoft decided to go with Program Manager and File Manager for the "shell" and turn Ruby into application development tool.


Apple: Develops something close to the perfect desktop UI on their first go.

Microsoft: "I know! We'll let users create their own UI! What could possibly go wrong?"

That Ruby ended up the way it did was an example of what they call "cooler heads prevailing".


Apple released something similar called HyperCard in 1987: https://en.wikipedia.org/wiki/HyperCard, allowing users to create their own UI.


HyperCard was not intended to enable users to change the shell UI. Ruby was, originally.


What's the fundamental difference? HyperCard apps had minimal chrome and were fully customizable.


I haven't had a programming experience that was as pleasurable as visual VB. Thank you for your contribution.


Loved VB. I met Alan Cooper ages ago. Are you still in touch?

And why didn't Bill ever include the VB runtime with Windows?


Wow what an honor! VB really got me of the ground (after a short endeavor with QBASIC) and I loved it! I have to say though that in terms of creating an UI it kind of messed me up: When later studying CS and was asked to create a UI based project in Java I really did not understand what was going on: All students in my team thought it was "normal" that you would hardcore not only the functionality of a button but also it's position, color etc. From VBA I was used to just drag and drop, press F5 and enjoy! Same goes for debugging via terminal outputs... Anyways, many thanks to you (and others) - VB really got me hooked


Thanks @Stratoscope. VB paid my rent for 3-4 years, from version 3 to version 6. I've rarely felt so comfortable and at home in a programming language / environment.

Shout out to former VISBAS email list subscribers, that was a fun community.


Have you ever created a GUI interface in Visual Basic, and seen if you could track an IP address?

(https://www.youtube.com/watch?v=hkDD03yeLnU for the younguns)


Hey, I just want to drop by and say thanks! My dad started teaching me programming when I was six years old, using VB6 and a big lesson binder he brought home from work. I wouldn't be where I am without that, and the visual component and instant feedback were so important to making programming accessible and exciting to a little kid.


Why Microsoft was never able to come up with Borland C++Builder competitor? i.e. RAD for C++.

Even today there is no WinUI3 GUI designer for C++.


VC++ was pretty good. I have good memories with VC++ 6. At that time borland was mostly following MS - or as I thought. I liked MS approach much better than anything else in the market.

Desktop computing era is over now :(


The VC6 IDE was nice as a code editor and debugger and the compiler was a bit better than C++ Builder's, but that is only as far as it goes. When it came to making desktop GUI applications C++ Builder was lightyears ahead of VC6. In fact it still is, it is much easier to make a desktop GUI application[0] in the very first version of C++ Builder than it is on the very latest version of Visual C++.

The VCL framework combined with the visual editor in C++ Builder[1] are way more advanced than anything Microsoft has made available for (regular[2]) C++ developers targeting the windows desktop.

[0] as long as you don't care about the fact it'll use some old versions of GUI controls, though a manifest resource can fix that

[1] and Delphi, where it really came from

[2] i do not count using Managed C++ or whatever .NET based, those are different beasts


No question, I just wanted to thank you for your work on what became VB. I'm still using VB6 to pay the bills today, believe it or not!


nice work! i spent a lot of time learning to program using VB 1.0 for Windows (i could hardly wait and bought it as soon as it came out). it was so fast and lightweight compared with the alternatives. being able to call external DLL files was also quite useful.


Thank you, especially for being such an early adopter.

I am glad that VB served you well.

As ChatGPT said to me one day: happy hacking! :-)


My dude. I taught VB 6 as well as Visual FoxPro in rural Kenya as part of the KASNEB/KNEC national standards.

The immediacy of feedback in these platforms was responsible for many of the enlightened and motivated faces in those classrooms.

Your contributions have global reach and we thank you for them.


VB used to be one of the most important technologies in our field. No, it was never "good" nor "elegant". But it allowed a huge humber small and medium businesses to benefit from computers. All those DVD/VHS rental stores? VB. Line of business applications for government? VB.

Visual Basic allowed people with minimal knowledge of computers to write useful applications that powered the economy. This is something we often forget nowadays in the flood of frameworks, programming paradigms, microservices etc. Computers exist to serve humans, we must never lose the connection with how useful our systems are.


It also allowed a lot of young people (ie me) to learn to make legitimate looking GUI programs without a difficult barrier to entry, on whatever windows machines our schools/houses had lying around.

That and Delphi, how I miss you.


Believe it or not, the legacy point of sale product I work on still uses a VB6 app for the cash office and reporting functions. A number of large grocery stores still use it in the US and abroad. I don’t work on that part of the application, but it still works just fine on Windows 11.


One of my previous jobs was working on a vb6 POS system, we had to use windows XP VMs just so that we could run an old visual studio to keep developing it.

I left that company when it was clear their dreams of replacing it with a SaaS product wasn't headed in the right direction for me, but I sometimes wonder if that product is still going or whether they finally achieved their SaaS migration dream.


Very well could be the same company :)


Sadly development is no longer possible on Win11 and requires a Win7 VM


Not true, I maintain the VB6 and VC++6 parts of our system on a Win 11 machine. Search a bit and you will find instructions for installing them successfully.


I think the installer wont work and needs some workarounds to convince it to install but the program should work.


I have not tried it myself, but apparently it can be done.


I coded and compiled a vb6 program last week on windows 11.


> Visual Basic allowed people with minimal knowledge of computers to write useful applications that powered the economy. This is something we often forget nowadays in the flood of frameworks, programming paradigms, microservices etc.

We haven’t forgotten anything. MS Power Apps is the spiritual successor for Access.

Also, it’s the likely reason that startups like AirTable went unicorn, and if you look at Salesforce and ServiceNow they look a lot like enterprise versions of MS Access. Everything mentioned is a low code platform. I’m sure if you give me time I can name more major low code companies

What you’ve forgotten in your nostalgia is the instability and insecurity related to VB and everything that relies on it. It’s probably why MS is trying to kill it for Windows 12.


> We haven’t forgotten anything. MS Power Apps is the spiritual successor for Access.

I am pretty sure that having access to all of the events in VB6, I would be able to implement a bug-free Autocomplete Textbox. [0]

In Power Apps, it is not possible to implement this exact UI, without major bugs - in 2023.

Something was definitely forgotten along the way.

[0] https://www.w3schools.com/howto/howto_js_autocomplete.asp


> [H]aving access to all of the events in VB6, I would be able to implement a bug-free Autocomplete Textbox.

.. That’d completely fall apart at the first hint of anything vaguely nontrivial going on with input, whether due to the user’s language, accessibility tech, or autocorrect on a touch keyboard.

I remember being a non-Latin-script user in the age of localization patches and country-specific builds, and very much appreciate today’s “(try not to ruin) i18n first” approach (among other things implied by the above), but a simple input API absolutely was a casualty of that, even if you LoB app is completely fine being ASCII-only (however dubious a statement that is).

(No experience with Power Apps, but I don’t think there is a single modern platform where that’ll be easy.)


Yeah for databases that's great, but still there is nothing to compare to VB, looking at it's accessibility and power.


There’s also nothing else that compares to vb as a large security threat to the windows ecosystem. There also have been plenty of replacements that have already eclipsed vb. It’s no one else’s fault that you just weren’t paying attention.


> No, it was never "good" nor "elegant".

It was great for the time. I still don't see time travel debug in any of most modern IDEs.


You can use the Godot engine to build apps. It has a very similar drag/drop UI. Double click for events, and gdscript is very easy to pickup. Reminds me of VB everytime I use it


Interesting, I've only ever heard it used as a game engine.


You totally can! I have a couple of apps that were made using it. There might even be a showcase on their site


How would you compare VB in the early 90s to XCode in 2023?


VB6 was the absolute high water mark for RAD tools. Nothing has come close since and yeah, productivity and software in general has suffered for it.


Nothing comes close to VB even today. I can't recall anything like that.

The language was almost English like. The interface was so advanced for it's time. The drag and drop form designer.

XCode is nothing even Microsoft's own product line has nothing like that.

Edit: typo


The true successors to VB today are low code tools like Retool. Visually create an internal app for your business, then use a (relatively) simple language (this time JavaScript) to make it do basic CRUD stuff.

For various reasons, we kind of lost that pragmatic approach when apps moved from the desktop to the web browser, and we've only just recently started to revisit it.


Free Pascal/Lazarus is pretty close, but the documentation needs work. It's my go to for Windows GUI development.


Tcl/Tk has entered the chat.

Some of us don't want to spend an hour rat wrestling to get a form up -- a form that won't even tolerate resizing very well. Tcl/Tk is pretty much the fastest way to go from zero to functional GUI I've ever seen -- especially if you already have some functionality that works from the command line and just need to wrap it. It's also available from Python as Tkinter, and is amenable to repl driven development.


I've written both Tcl/Tk code and Lazarus and i think the latter is much faster to make things: not only you have a visual WYSIAWYG[0] editor but also a very rich framework.

[0] A for Almost as technically the program can compile with different GUI backends (Win32, Gtk, Qt, etc) :-P


Still not as accessible to non-techies as VB was, but I've been really enjoying using the Godot game engine for making simple GUI apps.


What are the reasons for using this vs a simple UI library like tkinter?


I'd like to know more about that. If you've a blog or something.


Yea, VB was quite something. I look back at it with fond reminiscence.


I'd actually counter this with Lotus Notes 6.5; On top of what VB offered it had a built-in locally replicated, fully encryptable and access manageable DBMS for every application you developed. Plus, it had a formula expression language that could take many tasks without needing to drop into the basic derived scripting language. To create simple CRUD apps that you could still work on in airplanes & trains it was really powerful. One of my favourite moments was when I sat in a corporate meeting with 12 or so different stakeholders for a project management software, and while they were discussing things to change, I just took the projector and implemented it live.


I'd say Delphi/C++ Builder back then (not sure for now) and nowadays Lazarus are better than VB6 in pretty much all aspects when it comes to RAD tooling. There are many more controls (and with way more features in them) than VB6 ever had, it has much better functionality for layouts (in VB6 controls do not even have automatic resizing and alignment is limited to "picture" controls - but even that is more limited than even Delphi 1), in VB6 non-visual controls/components (e.g. timer) felt more of an afterthrought and at least in Delphi and Lazarus/Free Pascal the language itself is designed so that any object can in theory be inspected by the object inspector.

VB6 was easier to get started with and learn though, but IMO that was because it didn't provide as many features and on that front the earlier VBs (up to VB4, before the new IDE was made) were even easier.


Not even close. VB was pure productivity.


Yup. Even for non-UI applications.

Our site at the time was Active Server Pages, with a DCOM backend. We started out writing the DCOM components in C++, but way more than half of the C++ code was in just type conversions with the variant types that COM demanded.

We got tired of that really fast, and started building the COM components with VB5/6. That was SO MUCH faster.


Same here. When VB4 came out I wrote a COM based plugin system with it which worked perfectly.


I honestly miss VB, there was just something about it.


> VB used to be one of the most important technologies in our field. No, it was never "good" nor "elegant".

Node.js for a modern take?


Not just useful, but also user friendly. Not all computer users were savvy enough for command line apps or bare bones script source.


VB was the Macromedia Flash of our (pre-internet) generation.

Too bad theres nothing as good an ubiquitous nowadays.


Amen, all the structures in the world are useless if it's not producing something useful.


>Visual Basic allowed people with minimal knowledge of computers to write useful applications

Over a weekend, I built a very useful application using only the `yad` [1] tool, sqlite3, and BASH scripts. Its a membership system with integrated Bluetooth, QR codes, Markdown for membership cards, and so on.

I was impressed with how quickly it all came together.

It was delightful to be programming forms, using BASH to validate the results, and then stuff things into a relational database - all with common tools available with ease on the newly installed Raspberry Pi.

I was struck with how pleasant it felt to be coding this way. Immediate forms, very rapid validation logic, and a great set of tools to do data mangling. I even managed to convince ChatGPT to give me a "randomized test data" script that populated my nascent database with acceptable data for the purposes of continued development. Suddenly, rendering Markdown from the .sqlite3 database was fun!

We've come a long way. I didn't have to fuss much to gain access to many of these tools. Of course it helps that I know a bit of `yad` to be dangerous, enough sqlite3 to be productive, and just enough BASH to tie it all together.

I couldn't help but feel, somehow, that there was a way to make a GUI for these three tools, though ..

[1] - https://github.com/v1cont/yad


In 1990 we had drag and drop UI creation, double-click on the button and write the code behind it. Where did we go wrong?


Web browsers. The idea of "programming with markup language" meant a focus on writing text in order to get anything to work. There were some initial attempts at trying to make a WYSIWYG to wrestle with html and javascript, and later css, but the underlying markup, and bizarre web page rendering rules, made WYSIWYGs horrible for making anything other than the ugliest Geocities pages. As more and more programs moved from native to the web, programmers were forced to write more code by hand. Eventually by 2010 there began a "coder culture" where technology was seen as inferior if it wasn't 10,000 lines written by hand with 20 frameworks that no single person could completely comprehend. Add to that the fact that programmers were rapidly becoming bootcamp-driven MBA dropouts looking to get a startup off the ground, and the culture gets ever more ingrained by people who don't know the history of what came before or how easy things used to be or why.


Flash also allowed you to drag controls onto a canvas and double-click them to write code — for the web. It's this modern misguided effort to turn glorified word processors into operating systems that ruined it, together with Adobe killing Flash.



Adobe also did its part. They could've open-sourced Flash Player instead of acting how they did. Thankfully, Ruffle is a thing and is improving compatibility rapidly. Runs on iPhones too.


Yup, web browsers are the answer.

All the VB-style development and developers moved to the web, but the web's layout paradigm is fundamentally reflowing-resizeable-document-based, not the drawable, draggable absolute positioning of dialog box controls.

Not to mention the fact that code was now split into three languages on the front end and one or two on the back end. You can't just write code to respond to a button click to read from the database, because now you need an API and authentication and all that...


>draggable absolute positioning of dialog box controls.

Delphi had layout, so did Java (many of them). Resizable was always a thing, aside for the extremely lazy development with null layouts by some programmers.

VB used to be considered a lame/toy language with its "onerror resume next" paradigm.


We've had the ability to use a single language across both FE and BE for quite a while now. That's not the problem.


I was talking about the time when people made the transition from VB6 to the web.

There was no single language back then. Node.js wasn't even an idea at that point.

And regardless, you've still got to learn HTML and CSS and often SQL.


In the VB6 era, you could write JScript ASP Classic pages and have JS in the browser (provided you weren't doing the more proper DCOM stuff behind the ASP pages). I worked somewhere doing that on NT4, but IIS 5 in W2K broke it somehow.

Or for really perverse IE only stuff, VBScript in ASP and VBScript in the browser.


No chunk of them moved on to app development for iOS/Mac?


Honestly, not really.

I'm sure there are a few exceptions, but VB was never used for "traditional" app development in the first place -- you weren't going to write a Photoshop or Word in VB, or even something small like a CD ripper or a music player, since it was so cumbersome to access any of the Win32 API's -- and performance wasn't anywhere close to C/C++ either.

VB was used for business apps that connected to databases, and those apps really did just entirely move to the web. It was such a gigantic benefit that web apps were inherently cross-platform, didn't have to be installed or deal with different versions of binaries, and could add new features instantly for everyone.

And Microsoft inadvertently hastened the transition by making VB.NET backwards-incompatible with VB6, at just the time that web apps had become capable enough. Since all this software was going to need to be rewritten to some degree anyways, might as well rewrite it for the web sooner than later, and get all those new benefits.


I have some doubts about the actual benefits of web apps, especially for corporate software. In such settings, software distribution is a long-solved problem, also clients are usually not that heterogeneous.


> 10,000 lines written by hand with 20 frameworks

Do you prefer more lines written by hand? Or more frameworks?

Because those are meant to offset each other.


The need for responsive design. In 1990 you could make a pixel perfect design, that looked great on the 640 x 480 display that everyone used for everything. Today your application (i.e. your website) needs to look good on phones, tablets, laptops, etc.


I just wanted to push back a bit on the idea that responsive design is a web innovation, or why we are where we are today. Here's a Visual Basic 6 tutorial from 2007 describing forms resized automatically based on screen size: https://web.archive.org/web/20100419123457/http://www.dreami...

If native app ecosystems had as much invested in them (monetarily and people-hours) as the web ecosystem has, it would easily blow away anything you can currently do with a browser, and it'd be much easier. But investment got steadily and increasingly redirected to the web, while simultaneously progress was being held back by the limitations of the web.


It's not just that forms need to resize. Mobile phones are entirely different computing environments, and VB never had a good answer for that. A mobile phone has different UI paradigms altogether, you cannot just resize a desktop app to a phone resolution and call it a day. You cannot be as precise with a thumb as you can with a mouse. You also do not have a keyboard, so anytime a user attempts to type into an input, a virtual keyboard will usually occupy almost 30-40% of the vertical space your app previously had. As a result it's much more difficult to even get a keypress from a mobile user, so you have to resort to alternative gestures and UI buttons to make up for this lack. This limits you to mostly lists and cards on mobile screens. You'll also be forced to reimplement or import a UI library that attempts to mimic things like app bars and navigation buttons that users expect from native mobile apps, as the web was never designed with these paradigms in mind.

Native app ecosystems benefit from the fact that they are a singular computing and OS target. Web apps have to work on everything. It's the same reason gaming consoles tend to have a wider variety of AAA games than PCs. It's easier to optimize for the PS5 or Switch and call it a day, than it is to port a game to work on 6 year old video cards and get it to work on Mac (both ARM based and x86 based), Windows, and Linux. A web dev has to inherently target thousands of different devices, dozens of different operating systems, 3 or 4 browsers, and dozens of screen resolutions, and cannot make any assumptions about what type of input devices are available.

Oh, and they also have to assume an async programming environment with intermittent connectivity, and possible throttled connections as low as 100-200 kbps, so try to keep the bundle size under 100KB to keep time to first paint under 1s, mmkay?

Even Windows 95 apps could assume a few dozen MBs loaded in via disc, and count on cached assets being available on disk.


> A mobile phone has different UI paradigms altogether, you cannot just resize a desktop app to a phone resolution and call it a day.

So maybe mobile phones are just not meant to be tools for actual work, despite of what marketing departments of phone manufacturers tell us?


Partly this is because of enterprise security and procurement. You can invest all you like in the desktop, but getting anything new past change control is like flying to the moon.


Using a better layout engine doesn't mean we couldn't have something similar. In the 90's there were adaptive layout engines that scaled UI elements according to set criteria as the window was resized or font sizes changed. Maybe not on Windows, but there's no reason VB couldn't have an adaptive layout for its UIs.


"Just automatically figure it out" sounds good, but in practice hasn't worked.


But does it really? Because many of them don’t. They just look bad everywhere.


VB was kind of crap if you wanted to do a scalable UI.

Qt has a visual designer that's less intuitive to use than VB was, but on the other hand you don't need to write all that resizing code by hand, or to be stuck with a fixed size window.


Maybe fixed size window is ok for most applications? These old VB6 apps outlived every trendy modern framework. Just shows there's a different between what users care about and about what developers think users care about.


I don't see the benefit.

VB forms were something that was very easy to get started with, and then took forever to actually polish. If you wanted to make things pretty you'd spend ages adjusting positions by hand.

If you want to make a fixed layout you still can with modern tools. The difference is that instead of painfully adjusting everything by hand because something is longer in Spanish and doesn't fit, you can just resize the window in the IDE and be done in 10 seconds.


This was basically resolved by the time of Windows.Forms. The biggest issue at that point was high-DPI compatibility - I haven't used Windows for long enough to know whether that is still an issue.



Yeah it was indeed. You essentially had to code event handlers to react to window size changes in which you repositioned your UI elements to maintain/scale your UI. I remember some of the first 'library' code I ever wrote as a professional developer was reusable "layout" handlers for VB3. Good times!


I recently watched the launch video of Windows 95. It’s really kind of sad how little progress we made. If it’s not worse today.


> In 1990 we had drag and drop UI creation, double-click on the button and write the code behind it. Where did we go wrong?

Many of us grew tired of being locked in to Microsoft's platform, their simple yet stifling assumptions and their hostile behavior.

Those who walked away from Microsoft's Omelas went in a thousand different directions. While some grew tired of being pioneers and returned or found new walled gardens, others refused to trade their freedom for comfort or simplicity.


The wrong turn was JavaScript and Web 2.0


It's even easier today with web browsers being the ubiquitous app platform, and the VB equivalent being https://retool.com/


Does this give me the code and all the stuff I need to run the app? Can I write an open source app with this?


You can export the app artifact and share it. The artifact is human readable and in a JSX format (called Toolscript). In this way it can be meaningfully interpreted, improved and customized by others in an open source manner.

As for running the software the platform has a proprietary license obviously but you can host your own Retool backend from which to serve the apps to your end users (check the docker repo). This is an alternative to the SaaS/cloud based app hosting at https://retool.com/.

There's a free tier to edit and run the apps but professional usage will have a license fee. This is not unlike making an app with VB which required buying VB and having end users buy and run Windows.


You can use solutions like baserow tooljet and Appsmith for open source apps


We still have it and in many place. Lazarus, windowsforth, visualtk, puredata, embeded node editors, blender, etc


It still exists. Modern C# and C++ have Windows Form Builder tooling built in and it's still very good.


They are good for small projects but I think they fall apart quickly when trying to do anything more complex.

I've worked in multiple C# shops with both WinForms and WPF. Everyone in the WinForms shop hated it due to the enforced designer usage, and everyone in the WPF shop only used the designer as a preview window and never directly used it to build anything.

I can't speak for the C++ side of things.


What is the common or recommended GUI framework [1] (or whatever the right term is) on Windows these days?

Also, I think I read a few times on other HN threads, somewhat recently, that the GUI development scene on Windows is a mess these days, because MS changes the recommended framework every now and then. Is that true?

[1] By framework, here, I mean the layer such as WinForms or WPF, that GUI developers program to.


There are newer frameworks like MAUI but I believe WPF is the most common for pure Windows development. It's the best mix of modernity and stability. WinUI3 is coming but I don't think it's properly supported yet. There's also Avalonia if you want cross platform (not first party).

Someone correct me if I'm wrong, I've been in WinForms land for a while (unfortunately).


Thanks.


We shoved everything into the browser.


Runtime Revolution/Livecode spun out after going opensource and is now closed source:

https://livecode.com/


The Godot engine. Don't have to build games with it. Gdscript is just as easy as basic, too. I suggest making a weekend app with it and learning


The closest thing we have to this currently is Excel.

I can't believe there's no browser-based point and click software that lets you build web apps in JS.


I'd have to say Access is the closest. MS Access is one of the easiest programs to use to make an app with a front end, dB, reporting, and SQL all in one package.

Prototyping for a dB backed app is extremely easy.

I'm fully aware of all it's drawbacks, but there's still nothing like it available today.


FileMaker maybe.

But yeah, both tools are great for in-house applications in my experience. It’s quite easy to provide actually useful features very quickly. It might not win you design awards, but often that’s not a problem in reality.

I’d rather have an inventory that is correct but maybe looks a bit homegrown than one that looks like it has been designed by Jony Ive but is wrong for example.


I'm not a professional developer and have seen my share of badly designed Access applications created by people who don't understand normalisation, so get the bad rep Access gets in this respect. But I've created a couple of simple apps for specific tasks that work excellent for their usecase. I can't imagine there being a simpler way of doing them with other tech stacks.


Hey we’re in the age of document databases and NoSQL, normalization is for boomers anyway ;)


I remember using Access to make simple internal enterprise apps in 2017, is that no longer a thing?


Because if sucked then, and it would suck now. You had Dreamweaver.


They call this low- and no code programming now. There is a market for it.


Yeah, but it's a modern software market - a toy market, not productivity software market.


I'm building that now!


lots of weird and wonderful stuff in 1990, this covers some of the bleeding edge of programming in 1990 https://www.youtube.com/watch?v=TcrmLfQx_to&t=30s


Your question is flawed. We didn't go wrong. Programming is much more accessible to a much bigger audience today and we have better tools and techniques.


My experience was very different. At my first software job in '98, there was a whole team of women in the 50s/60s that did VB. They had long careers doing COBOL/JCL before that. That entire demographic has all but disappeared from software. More people do software dev now, but they're all the same people generally and our industry suffers from this lack of real diversity.


> Programming is much more accessible to a much bigger audience today and we have better tools and techniques.

Much of your point seems debatable. I had a band director that was able to write a GUI app in 1992 on a 12MHz 80286 with a couple megabytes of memory. Put today's tooling in their hands and I don't think they'd be nearly as effective. Today's tools may be better by some definitions, but certainly not by all.


yeah I mean in highschool I was writing a bunch of VB6 in the computer lab study halls. I wrote a LAN chat program for the lab, a file encryption/decryption that used blowfish, I even wrote a basic UI-based RPG game for the lab.

building a UI now with modern tools makes me lose sleep


How does it make you lose sleep?


In terms of ease of use, we went very wrong. You need to be an expert to understand all the technologies involved in a react web app, and there is no easy drag and drop coding function included.


consider both 1.) the bare minimum knowledge one must know to successfully use, and 2.) the complexity of the underlying abstractions of, both a.) modern web app development and b.) Visual Basic desktop app development. not only is there much more to learn nowadays, but the stuff you have to learn is all domain-specific abstractions upon abstractions, any of which could be subject to change as frameworks' popularities wax and wane. obviously VB is not assembly by any stretch of the imagination, but consider how many layers of abstraction one forgoes in making a VB app vs. a modern web app—the situation is ridiculous.


Why do we get so much less delivered then today?


it wasn't cool, hip, or elite to choose in vb. real developers didn't use vb want was the mentality


My dad actually worked at a startup (two programmers if I recall) in 1990 onward that wrote very similar software to MS Visual Basic and even has a BASIC derived language. It was called Realizer. They started working on this before MS announced VB, but I wouldn't be surprised if there was already similar software around. If I recall correctly, my dad was at a trade show and their booth was right next to Microsoft (whom he turned down an offer from the year prior to work at this startup instead).

Needless to say, we're watching the video of a VB demo, not a Realizer one :)

I can't find much online about the original Realizer, but there is a Wikipedia article for CA-Realizer, which was the version released after CA bought their company. CA-Realizer didn't really go anywhere and my dad eventually left CA as well. Very cool story though, and a large reason I chose to work at small companies fresh out of college too.

https://en.wikipedia.org/wiki/CA-Realizer


Hello there -I happened to be a former Within Technologies employee. You are correct that there were two primary programmers-Steve was the back end/compiler guy, and Peter was the front end guy. Was the trade show you're talking about Fall Comdex? That was after CA acquired us...I actually went since I was handling the OS/2 port of Realizer, and they wanted it demo'd at the show. What's your dad's first name, if you don't mind my asking? If it was Ivan he was my boss, and I have some funny Comdex stories involving him.

I still have the glossy and manual for Realizer too.


It was the subject of a book:

_Windows 3.0 for BASIC Programmers_ by Michael Hyman

which I learned a great deal from (and the Poker game of which kept me entertained quite a bit working nights).


Linus Torvalds:

> I personally believe that Visual Basic did more for programming than Object-Oriented Languages did. Yet people laugh at VB and say its a bad language, and they've been talking about OO languages for decades. And no, Visual Basic wasn't a great language, but I think the easy database interfaces in VB were fundamentally more important.

https://blog.codinghorror.com/linus-torvalds-visual-basic-fa...


My dad introduced me to Visual Basic when I was 13 and it honestly changed the trajectory of my life. Prior to this I wasn't overly interested in learning anything in particular. VB became a creative outlet and since that day I never stopped learning.

Loved hitting up PlanetSourceCode to get scripts and reverse engineer other peoples code to learn.

I built so many fun programs - the best of which was a chat programs using UDP so we could chat over the schools local network.


Similar here :-) But what would you introduce your kids today? It seems the learning curve is much steeper.


Well, at 13 I did build some weird CLI based text adventures in c++, mostly imperative style and badly written. I knew only how to declare a variable, how to cout/cin, loops and conditions, due to the fact that access to information was almost impossible (we had something like a subscription plan with a limited 20 hours of internet, and finding websites that I could understand about developing in C++ was hard).

I remember the feeling I had the day I learned about classes and functions, a true "wow" moment.

Unfortunately those text adventures died with the hard drive of the computer my parents had.


Yeah I often think about this too... everything today feels so complex, although VB was probably just as complex under the hood. The complexity was just masked by the GUI and WYSIWYG interface.


I started with VB 1.0 for DOS, (before that I used PDQ) and used VB all the way to 6.0 - I agree there hasn't been anything like it since.

However some of the downsides included DLL hell and requiring 3rd party components for functions like TCP/IP (IP-Works) and more advanced UI elements and so on. I remember investing quite a lot in such components - I recall componentsource.com as being a key marketplace. I think one of the main issues was OS integration, hooking into Win32 required all kinds of incantations. Decompilers were also an issue.

It brings back memories of a much simpler time in terms of development, especially the UI editor - it was so fast to just draw a few forms and hook them up to code. I used it a lot for statistics type interfaces, and CRUD type systems, however I wrote a P2P communication tool back in 2000 that even had VOIP. I also recall writing a game that wrapped OpenGL and running it on my SGI520 Windows NT box. So much fun.

I transitioned to .NET and C# and didn't look back or bother with VBScript.

However I recall at the time feeling so abandoned by Microsoft, having to learn another complete system from scratch - existing projects didn't come across cleanly.

Anyhow... just a bit of a greybeard rant about the 'good old times'...

Just as an aside - after playing around with BBC Basic during covid, I was so impressed how OS calls were implemented in the language. If VB integrated with Win32 to the same level BBC basic integrates with RiscOS it would have been pretty much the perfect tool in my opinion.


BBC BASIC had an inline 6502 assembly feature that was as simple as doing this anywhere in your BASIC program (but not in the middle of a BASIC statement, obviously):

[ asm_statements ]

That is, open square bracket, then write your assembly statements (one per line, as usual), then close square bracket.

That's it.

No assembly step required.


VB blows everything else today out of the water. Most kids would lose interest when you mention the word environment or toolchain. Being able to visually draw a control and then click the control to add code to its events was the best motivator because the results were instant. I can not believe how bad kids have it these days trying to learn to make an iOS app for instance, about 100 lines of code for what would be 5-10 in VB.


This brings back fond memories... For those interested, someone has been working on a "Visual Basic for Linux" called Gambas (Gambas Almost Means BASic): https://gambas.sourceforge.net/en/main.html


Oh my, I've never heard about gambas. It is just what I was looking for! I always get stupid ideas about simple UI based applications in my day to day linux usage, but everything I've tried is very cumbersome.

I installed and tried Gambas and it does have the VB6 feeling. A complied graphical Hello World was a matter of 5 clicks and `lblHello.Text = "Hello World!"`

I'll do a lot with this. Thanks again!


That's been around for quite a while.


My first paid programming job was a VB6 app in ~2004 in high school. It was initially a volunteer thing for a local youth court assistance group but they paid us $100 at the end as a kind of surprise reward. The thing had a UI with the right tab movements and backed by mysql db, and even did correlation calculations for crime statistics.

I still have 1 VB app on my resume from way back then, I refuse to remove it!

And boy do I miss just making stupid games really really fast, and making actual productive applications also really really fast. I had made an HTML editor with previews, syntax highlighting (lol, my own 'algorithm' haha), project management tools, and everything. I was so proud of that.

The base fond VB memories are the simple joy of starting a new project (before .NET called them Solutions) and making the thing I had in mind in like a couple hours. Really miss that.


VB is one of the only "no code / low code" tools over the last 3-decades that worked at scale.


Not bad for a market bought as a dollar purchase:

https://www.folklore.org/StoryView.py?story=MacBasic.txt

(I bought a copy of Microsoft BASIC for Macintosh, and would have much rather had MacBasic)


Does anyone know why the VB was named so? it had nothing to do with BASIC language. The wiki page says "Visual Basic was derived from BASIC" but I don't recall it being anything remotely close to BASIC. Or am I recollecting things wrongly? It has been 30 years :)


For some reason another poster with the correct answer was downvoted here. VisualBasic was indeed based on Microsoft's QuickBasic (and QBasic).

Microsoft even released VisualBasic for DOS which was QuickBasic with a text mode UI component.


VB was based on QuickBASIC which introduced structured programming constructs and made line numbers optional. Many BASIC statements, such as PRINT and INPUT, had to be eliminated or changed because they were meaningless in the GUI world. But the fundamentals of Microsoft BASIC as it existed in the early 90s are still there.


VB does have PRINT, it causes text to be drawn on the form. It's not very useful, but it is there.


I must've been confusing it with Access VBA, which doesn't appear to support PRINT except in the debugger. Print # is supported for file I/O however.


I wrote a long form history of Visual Basic[0] awhile back that covers the origin of the product and how it ended up being married to BASIC at Microsoft.

tl;dr: VB started out as a project called "Tripod" (later "Ruby"), written by Alan Cooper (of "The Inmates are Running the Asylum" fame) and a small team of developers. It was originally a Windows shell construction set, but Alan sold it to Microsoft where it languished on the shelf for awhile.

Bill Gates eventually decided that he wanted to marry the visual UI building aspect with BASIC and handed the project off to Scott Ferguson and the Business Languages Group, who were maintaining Microsoft's QuickBASIC IDE, the BASIC compiler, and developing a new language engine (dubbed Embedded Basic) for inclusion in a relational database product codenamed Omega (which would go on to become Microsoft Access).

[0] https://retool.com/visual-basic/


It was BASIC, just one that had evolved quite far from really old school BASIC. I like to probably incorrectly think that AmigaBASIC (also written by MS) was a bit of a half way point between old 8bit BASIC and VB. It did away with line numbers, got a bit more event driven, and added a lot of GUI stuff like mouse handling, windows, menus etc etc etc.


Lots of its features come from BASIC, like "on error goto" (even though it now worked with labels rather than line numbers). It is a more structured kind of BASIC than many of its predecessors, but procedures and functions have appeared in earlier BASICs such as BBC BASIC, or I think later versions of QuickBASIC.


Been a long time since I played with VB but I think you could still use line numbers if you wanted but you had to have everything numbered?


There were a whole bunch of these 'structured' basic dialects in the mid/late-80s that fused Pascal-ish syntax elements with BASIC and made line numbers optional. QuickBasic was a predecessor to VB, of course... but GFA Basic was one I used on the Atari ST, there was MacBASIC on the Mac, AMOS/STOS on the Amiga & Atari ST, etc. etc.


Pretending to improve something established? I’d say that about the C# naming.


Or JavaScript, which only has Java in the name because another popular language at the time did.


After QBasic, Visual Basic 3 on Windows 3.1 was my intro to programming.

Set aside the language syntax – the way that the IDE exposed all the UI properties to you was so enlightening. You couldn't help but learn how Windows expected controls to work.


Related:

Bill Gates demonstrates Visual Basic (1991) - https://news.ycombinator.com/item?id=24435217 - Sept 2020 (11 comments)


I think Excel + Visual Basic is some kind of fixed point.

If you iterate long enough on your self developed backend/Frontend system to enable your BI department to work in their own with their data, it will eventually converge into something like a spreadsheet application with a custom DSL.

Or the database + SQL will be your converged application


Visual Basic was the greatest visual development environment I have ever used. Modern Visual Studio tooling is also pretty awesome if you're targeting Windows. I am less these days so do not have much use for this tool.


What a trip down memory lane (no pun intended)! Rest in peace, my WYSIWYG friend.

It was a rough ride bringing VB to the web. There was VB Active Server Pages, then VB.NET Webforms, which did not always produce the most performant or secure UI code. It was like an ornery bronco in the age of industry.

The concept of Viewstate was interesting and probably looked great in demo applications, but it was ultimately not the best way to avoid writing JavaScript. Sometimes it could be tamed, but for the sly cowboy, ruby on rails was the king of RAD.


The only place to buy VB 1.0 was an 800 number advertised in John Dvorak’s column in PC Info. I assume partners had access too, but it wasn’t on a shelf anywhere.

$99. I bought it instantly.


Something is probably difficult to find these days is a CEO that writes code, and probably even more difficult one that writes code live in front of the audience!


It's 2023, the world had a collective brain hemorrhage and now prefer to define their GUIs via two seperate text files.


I think Excel + Visual Basic is some kind of fixed point.

If you iterate long enough on your self developed backend/Frontend system to enable your BI department to work in their own with their data, it will eventually converge into something like a spreadsheet application with a custom DSL


Like Access?


Many people back in the day looked down upon Visual Basic development.

But you will never see once again the same development speed you could achieve with Visual Basic 6.0 and earlier.

The UI was instantaneously responsive, and the language had very low cognitive load.


I still remember showing a still image of this demo and discussing this at the Red Hat developer conference in 2019 in Vienna. I still think that Visual Basic was the real bicycle for the mind that brought computing to the masses!


I really miss VB and Flash. Wish we had something like that today.


Not identical, but close and quite excellent: https://www.lazarus-ide.org


Oh, interesting. I have never written Pascal though.


now compare how UI development is done in the likes of react and such.

that app if done in react - would be so full of subtle bugs. and way slower too.

we really have regressed backwards as an industry.


Frontpage. Anyone?


Edgy, dissing on developer's time.


Bill Gates demonstrates Retool (2024) /s




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: