10 ms·
Something Pretty Right: The History and Legacy of Visual Basic
- gumby 4y agoHmm: > ..DLLs, a new concept of shared libraries with code and data that could be used by more than one program at the same time. Pretty brand spanking new in 1988, having only been around for about 25 years at that point.
- dvdhsu 4y agoIt was surprising to us (here at Retool) that visual programming has never taken off, despite countless attempts over the past few decades. (That's why we started Retool, after all.) But Visual Basic is probably the product that came closest, and that's why we wrote this homage to it. It, along with Filemaker, Hypercard, are products that we loved. And we always wished that they had flourished, since then we wouldn't have had to start Retool, hah! As Linus says (in the article): > “For example, I personally believe that Visual Basic did more for programming than Object-Oriented Languages did,” Torvalds wrote, “yet people laugh at VB and say it's 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 DB interfaces in VB were fundamentally more important than object orientation is, for example.”
- simonbarker87 4y agoIn science and engineering I would say LabVIEW has taken off. I doubt there’s a university in the world that doesn’t have it running in some capacity. Without learning LV I doubt I would have learnt to code.
- Yhippa 4y agoThese are the original low-code tools. Easy to pick up and your average citizen developer could figure it out with some trial and error. So much lost productivity due to whatever happened in the next several decades.
- XorNot 4y agoThe biggest problem is that it's just impossible to use modern coding tools with them. If we could fix that, so much would work better. Even the best efforts at it haven't really worked out, since there are some truly sprawling VBA codebases out there (tried Rubberduck with a big MS Access app for a business - reliably crashed it).
- illiarian 4y ago> visual programming has never taken off, despite countless attempts over the past few decades. It has, in some niches like Unreal Blueprints. I think one of the reasons it doesn't become more popular is because most visual programming is just a more cumbersome and slow way of programming. It's stringing the same concepts together in the same way, but slowly and tediously with a mouse. Non-tech users wouldn't know what to do with it. Power users would rather program directly.
- badsectoracula 4y ago> It has, in some niches like Unreal Blueprints. [...] I think one of the reasons it doesn't become more popular is because most visual programming is just a more cumbersome and slow way of programming. It's stringing the same concepts together in the same way, but slowly and tediously with a mouse. The latter bit basically perfectly describes Unreal Blueprints :-P. It was hyped when it first came out and for some time (years) it was well received - until people had to deal with the spaghetti mess others made in blueprints. Visual languages are fine as long as they are limited to high level concepts, but UB not only is not that (there is even a type cast node!) but instead of being there in addition to Unreal Script, it actually replaced it, forcing many people who didn't want to bother with C++ (especially Unreal's flavor of C++) to use blueprints. Epic supposedly learned from this and UE5 at some point will have a new scripting language, but AFAIK so far it has been vaporware. Meanwhile i (i am into gamedev and have worked with UE) increasingly see people get disillusioned by Blueprints.
- qsort 4y agoI'm the last to defend visual programming, it's mostly spaghetti nonsense and you'd be better of with an actual programming language for most complexity levels -- but I think there's a viable niche for stuff that satisfies both of the following: (a) it's simple and it strings together off-the-shelf components; (b) it has an intuitive, well-defined computational model examples: defining compositions of matrix transformations for camera angles, defining data pipelines (read from this source, do these operations, write to that sink), very simple automation Apple Shortcuts-style (whenever I receive a message from this number, make a note on this file, etc.) As soon as you venture into general-purpose territory, visual programming is just a disaster. Which is a problem because you have no way to convert your mini-idea into something usable, and you always find yourself wishing you had started with a normal script. I tend to stay very far away, but it does have its moments admittedly.
- Turskarama 4y agoVisual programming is useful in some niches, but for general purpose you either have to have less power than a text based programming language (and users will beg you to add that power) or it will become exactly as complicated as a text based programming language, but more cumbersome because whatever you're doing is slower than typing. I feel like the whole idea of visual programming comes from some fundamental idea that the hard part of programming is learning the syntax, which I just don't agree with at all.
- m_mueller 4y agoI wouldn't say it didn't take off, it just has 'landed' again somewhere over the last 10-20 years. VB, Xcode Interface Builder, Hypercard, Filemaker & Lotus Notes all had pretty good runs, we just never got something similarly successful for the web & even smartphones, probably due to compatibility issues with varying screen sizes. Once the screen can be wildly resized, it just becomes too murky. Maybe have the programmer do it manually for 2-3 sizes and then let some AI model interpolate the sizes in between?
- mike_hearn 4y agoThe problem isn't responsive design, GUI builders were able to do that just fine. The problem with making it work on the web was that the dominant design paradigm for web apps was (and to some extent still is) templating, in which there's no clean split between UI layout code and UI controller code and no proper notion of encapsulated components. PHP, JSP, ASP and the <script> tag all mix UI layout with code that works with the database or controls the UI itself. Yet all VB-like platforms require this to be split, because the GUI designer has to be able to edit the GUI code without breaking your app logic too badly, and they really need a strong component model. How they do this does vary, I don't remember how VB did it but Delphi had a binary file format for describing forms, Java Swing used IDEs with code generation inside magic comments that you weren't supposed to touch, JavaFX and WPF have the cleanest approach with an XML dialect for describing the UI and then the event handlers and controller logic are implemented as classes that are bound to the UI using reflection, Android has something similar, macOS uses NIB files and so on. And they all have a notion of a component being something you can install and treat as if it were one of the built-in widgets. On the web there's no equivalent to this. React sort-of brings components but they don't provide sufficient metadata to be used in a visual designer, and it still mixes code and data together in such a way that visual editors would struggle to not corrupt the user's code. Ultimately the web came to dominate not because it's a good way to do GUIs. It mostly tossed out what was learned about making GUIs easy to use and develop, because it was never designed to do that in the first place. It came to dominate because it made distribution easy at a time when desktop OS vendors were totally dropping the ball on everything internet related. That's why classical VB-style development app development paradigms dominate on mobile: mobile OS vendors put way more thought into distribution, and that took away the web's primary competitive advantage. On the desktop distribution can still be quite hard, which is why I put a lot of work into making a tool that makes it drop-dead easy and which gives you the option of web-style forced "immediate mode" updates (we call it "aggressive mode" but that's kind of a dumb name). See my profile for a link. It brings desktop way closer to the web in both UX and DX, which opens up the possibility of VB style development again. Not only for professional devs but also for people who benefit from a lower barrier to entry.
- pcdoodle 4y agoXojo is another one worth looking at. Desktop and Web apps can be written pretty quick.
- fatneckbeard 4y agoVBA, a visual language, runs the entire planet, it's just that nobody knows it or talks about it.
- pjmlp 4y agoBesides all sibling comments, OutSystems is doing quite well for the last 20 years. Just like most low code, CDP and data analytics tooling.
- juliangamble 4y agoThere's a generation of programmers that fell into software development through Visual Basic. Maybe you could say the same about the Apple II/Commodore/ Sinclair/ BBC Micro generation of computers that booted up to a BASIC prompt.
- Zardoz84 4y agoOn my case was : ZX Spectrum +3 -> TurboBASIC/QBasic -> VisualBasic 3 to 6 -> PHP + early JavaScript -> C, C++, JavaScript, Java
- gigel82 4y agoVisual Basic 4 is when I fell in love with programming. I remember staying up late (school nights no less) just playing around and designing GUIs. I had done some programming before with Pascal, C and even QBasic, but nothing was quite as fascinating as dragging and dropping fully functional controls and having them light up with functionality in minutes. Up until a few years ago, I was still reaching out to WinForms / C# to build quick prototypes - maybe it was part nostalgia, but I didn't find anything comparable when it comes to quickly standing up a GUI prototype (for a LOB type of application, or a small utility / tool kind of thing).
- lotsoweiners 4y ago“Up until a few years ago, I was still reaching out to WinForms / C# to build quick prototypes” What replaced them for you? I still use Windows forms a lot for prototypes and utilities and was curious if there is something else I should be looking at.
- gigel82 4y agoI no longer need to write LOB / GUI apps, and I switched to node.js scripts for utilities.
- HideousKojima 4y agoI've been using the Godot game engine and C# to make various utilities. Not quite as dummy simple as WinForms but it's super easy and fun to use.
- Kwpolska 4y agoI find WinForms weird and difficult to make consistent-looking UIs in. But WPF is quite nice.
- Stratoscope 4y agoRyan and David and team, I am so happy to see this posted! I'm quoted a few places in it. Yes, the story about the origin of the phrase "fire an event" is true and correct. I could even tell you exactly where I was sitting and which way I was facing when that event fired. Some things stick in your mind, doobies or not. Also mentioned is the VBX. In some ways, this may have been the worst API I ever designed. It was so bad that Microsoft eventually replaced it with COM! But it was the most successful. If anyone has any questions, fire a comment!
- RyLuke 4y agoThanks, Michael! Finding your comments on HN about the design details of the original "Ruby" version of VB and VBX was part of my inspiration for writing this article in the first place. Your recollection of "firing an event" is my favorite kind of classic Silicon Valley story.
- Stratoscope 4y agoRyan, thank you for writing the article. I remember you described it to me as a "labor of love". Indeed it is that. It also reminds me of how much work goes into journalism like this. Ruby/VB was a labor of love for us. One of my favorite episodes of Silicon Valley was the TechCrunch Disrupt where every founder said "we want to make the world a better place." It's funny, but true! That is exactly what we wanted to do. Anyone who likes the "fire an event" story may also enjoy What the Dormouse Said by John Markoff: https://www.amazon.com/dp/B000OCXFYM/ https://www.amazon.com/dp/B000OCXFYM/
- kevingadd 4y agoThanks for all your hard work! Without VB my career definitely wouldn't have happened.
- Stratoscope 4y agoKevin, I can't tell you how much that means to me. (Well, I guess I just did.) I checked your HN profile, and my gosh, if I had even a small part in getting you started in this crazy business, that makes it all worth it.
- matwood 4y agoWhen I was college my first programming job was writing CRUD UIs in VB (I think it was 4 or 5) for a local contract dev shop. I was only a sophomore at the time, and the money I made helped me pay for college. I know people ripped on VB the language, but I still haven’t used anything to date that was as good and easy at creating Windows CRUD UIs.
- qup 4y agoI spent a couple weeks downloading a pirated vb6 with a download manager that could resume. I think it was 1GB, on dial-up. Once I had it installed I had like 6mb free space. I made a bunch of AO-progz and an mp3 player. And a bunch of friends in #vb6 on aol, which I keep to this day.
- nickstinemates 4y ago:) we probably crossed paths, good times
- chrismarlow9 4y agoChecking in. I learned OSCAR and YMSG before HTTP. I recently tried to find a modern vb6 type setup that wasn't DOM (electron style) based and works cross platform. Best I found was javafx and scene builder.
- sam345 4y agoYou might try Lazarus Ide. Very much like VB6 though language is free pascal. Actively developed, good documentation, and lots of libraries. https://www.lazarus-ide.org/ https://www.lazarus-ide.org/
- duncans 4y agoIt would have been around a few 100MB as most hard drives were less than 1GB back then.
- bombolo 4y agoWhen vb5 was around my hard drive at home was 3GB.
- newusertoday 4y agoto put things in perspective this article is bigger than 100mb so bigger than vb distribution!
- 4y ago
- throwawaaarrgh 4y agoYou know why Visual Basic was the best programming language ever made? Because it wasn't a programming language. Nerds just can't wrap their heads around this idea: no normal person wants to be a programmer. But they do want to make little custom things to help them get stuff done in life. Just like nobody wants to be a plumber, but they do want to be able to fix their faucet.
- zubairq 4y agoWish I could +100 this comment!
- Pamar 4y agoSorta like Excel, then?
- deafpolygon 4y agoAnd Access! That's one amazing piece of software.
- fredsmith219 4y agoAccess could easily become a victim of its own success if the dataset got too large. I made some money off of a couple projects where that happened. I had to convert them to sqlserver to both handle the data load and for true multiuser.
- deafpolygon 4y agoThat is true. People don't understand that there is an upper limit to Access before you run into issues - but it's fairly large.. what was it? 4GB? Edit: 2gb!
- philbarr 4y agoAaah - back in the day when we used to link 26 Access databases together, one for the first letter of a customer's surname... :)
- zubairq 4y agoAuthor of Yazz here (and a big Retool fan), I was a former C++ developer and seeing visual basic for the first time in the mid 90s was a breath of fresh air for me. Now that I have time I"m writing an open source passion project of what I wish Visual basic could be in the modern age. So web based, uses Javascript as the scripting language, and editable components. Thanks for a great article Retool! :)
- Nursie 4y agoAh VB :) It wasn't the best language, no. But it was so damn easy to slap something together just to get things done. Draw me a window this size, put one of these there, one of these here, hook this method up to this button/slider/whatever... go! Was it great for large-scale, complex stuff? Not so much, IMHO. But was it great for slapping together a quick, useful util or demo? Absolutely.
- lukasb 4y agoSo? Why HASN'T anyone built Visual Basic for the web?
- omnibrain 4y agoThere are several approaches to building Delphi for the web I talk about here: https://news.ycombinator.com/item?id=35046667 https://news.ycombinator.com/item?id=35046667
- zubairq 4y agoWell "Visual Basic for the web" can mean many things. If you mean just an app builder online, then there are hundreds of options, the most popular probably being Retool or Bubble. Or do you mean run locally like Visual Basic and then output to an intranet web browser? Also, do you need basic language, or will Javascript be enough? For me, what is important is the spirit of Visual Basic, easy to use local applications that can be distributed as standalone apps, and an amazing component ecosystem
- est 4y agoThe web is a mess compared to text/binary data we had to deal with in the 90s and early 00s. Personal Computers used to be a productivity oriented tool. VB6 was designed to handle business data. Today mobile phones are like sentiment manipulation devices or consumerism sinkhole. Could iPhone owners created apps on their iPhones? No. It's a ready-only OS.
- yCombLinks 4y agoYeah, but I can't even write a standard desktop GUI app nearly as easily as 25 years ago. Even a desktop first web app should be simple
- pavlov 4y agoI have some experience here and can share my frustrations... I wrote the original version of a product named React Studio (https://reactstudio.com https://reactstudio.com). It's sort of a "VB for the modern mobile-first web". Unlike VB though, it's runtimeless and exports regular React code (there's no closed blob or mandatory custom packages in the output). An enormous thing that has changed since the 1990s and those halcyon days of Visual Basic is the central role of design. Back then, overall consistency was a pillar of desktop UI. If your app's buttons looked like Windows buttons and you could use Tab to move through input fields, that was usually good enough. VB provided that kind of usability out of the box. The PC platform was fairly homogenous: you could assume that your user has at least a 800*600 screen, so you'd just make your application window that size and the MVP can ship. Today's UI designs must deal with an enormous variety of physical form factors and display resolutions. But even if your no-code tool is able to deal with this and provides a consistent UI that scales from phone to desktop, it's not nearly enough. Commercial visual branding has replaced consistency as the central pillar of UIs. Now your buttons must never look like default buttons, and your UI must use a custom font even though the OS standard font would be more readable. This is simply what customers believe they want. Unfortunately the web is a very poor platform for expressing UI designs in a consistent way, so literally everyone has their own haphazard UI framework. Basic components like pop-up menu buttons are commonly written from scratch. Nobody can agree on how to style a button. Et cetera ad absurdum. Your no-code tool should somehow integrate into this customer-specific private universe. On top of this mess, your primary input is visual designers who draw static pictures of applications in Figma and expect those to be translated into code. Often these designs are entirely lacking in structural thinking. (These designers typically come from a graphic design background, so they are very interested in fonts and padding widths but have never read the Apple Human Interface Guidelines or any other UI fundamentals. Hence they're mostly concerned with making sure any prototype application looks exactly like their Figma document.) In my experience, the only reasonable way out of this trap is to focus on applications that are not of interest to the designers, i.e. internal business tools. Retool seems to be very successful here. I also use Retool in my day job and appreciate its no-nonsense design.
- kome 4y agoWhat are some contemporary clones of VB6, still maintained and useful?
- tomcam 4y agoThere is only 1 such viable product, Xojo. https://www.xojo.com/ https://www.xojo.com/ I haven’t used it since it was called RealBasic ages ago.
- clouddrover 4y agoDelphi: https://www.embarcadero.com/products/delphi https://www.embarcadero.com/products/delphi Lazarus: https://www.lazarus-ide.org/ https://www.lazarus-ide.org/
- timw4mail 4y agoLazarus looks so promising...but their documentation is so scattershot.
- fafalone 4y agoI'm a big fan of twinBASIC, more successor than clone. It's working on full backwards compatibility with VB6 (and very, very close to it, even many complex UserControls work), with a lengthy list of new features (x64-- through compat. with VBA7 x64 syntax, multithreading (via API for now, native syntax soon), generics, overloading, Unicode-everything, defining interfaces/coclasses in language instead of TLBs, easily makes standard DLLs, Implements-Via syntax to extend classes, parameterized class constructors, can specify UDT packing, bitshift operators, inline initialization of vars, forms support modern image formats/transparency/alpha blending, AddressOf works on class members... well, the list goes on for quite some time: https://www.vbforums.com/showthread.php?890181-TwinBasic&p=5598184&viewfull=1#post5598184 https://www.vbforums.com/showthread.php?890181-TwinBasic&p=5... One thing I'm sure lots of people here will find blasphemous, it lets you make kernel mode drivers, provided you stick to WDM (you could do this as a hack in VB6, but you had to strip the runtime dependency out-- which dramatically limited usefulness, not to mention no WOW64 for kernel mode. tB has no runtime dependency so all you have to do is avoid strings/variants/most but not all arrays, as those call user mode APIs behind the scenes). Proof of concept: https://github.com/fafalone/HelloWorldDriver https://github.com/fafalone/HelloWorldDriver Main downsides are that it's also like VB6 in being closed source/commercial (only restriction on the free version is a splash screen on x64 exes though, and won't have access to compiler optimizations or cross-platform compilation when they're implemented; no restriction on commercial use or royalties), but the creator seems amenable to changing that if it's viable, and since we've had 20 years of no community stepping up for something like this, it's just a practical matter that for one person to do it they'd need income as it's a major undertaking, not something you can do as a hobby with full time employment doing something else, at least if it's going to get done in years instead of decades (*cough* Radbasic, which has made near zero progress after being announced around the same time, and is barely a step above Hello World support).
- chapliboy 4y agoDon't listen to fighter-pilots stuck in busses. That's such an easy thing to do as a product. All the comments you see are all clamouring for some set of features that will just complicate everything. Yet a majority of the users have absolutely no issues continuing on with what they already have. You need to be able to figure out how many quiet happy customers you have if you want to make any big breaking changes...
- tomcam 4y agoWas a huge fan of the product. Joined the VB team as a PM in 1996 and worked for a few years while my health declined. The whole division was beautifully run. The people were, to a person, amazing human beings. I honestly think I stumbled into the best team Microsoft had before or since. The Microsoft campus was verdant and tranquil. Everything you sort of imagine Apple would be to work at was true on that team, and has never actually been the case at Apple. At the same time our first child was born. For me, it was a time of pure magic. All that and I got to work on VB.
- ShadowBanThis01 4y agoI don't know who approved the inclusion of VB in Word, but that person is a hero. WordBasic was a career-maker for me. I worked at a Big-6 consulting firm and used Word to parse and rewrite thousands of SQL modules (that resided on a VAX, no less) with a Word macro when the DB structure changed. It ran for 11 hours and saved man-weeks. That was after I had used WordBasic to add tons of features to Word for our doc team, which we take for granted today: cross-file searches, cross-file page numbering, style enforcement... just incredible. It's sad to see the mess that Word has become, however. And Windows too.
- sasulzer 4y agoI joined the VB/Ruby dev team in 1992, first as an intern and then full-time a couple years later and stayed in the team thru 1999 / VB6. I implemented the Data control and some of the data binding logic for VB 3.0. It was such a special team and code base - even 30 years later I still fondly remember my HDesks, HDeskrefs, and Gizmos. We tried hard to get the Ruby forms engine running on the (what became the) .NET/CLR runtime - but alas it was not to be.
- RyLuke 4y agoHey Stephen, I wrote the original article. Had no idea that MS actually tried to port the Ruby forms engine to the CLR—what a fun twist. Did it end up being too difficult technically, or were there other factors that killed it?
- rob74 4y agoHilarious quote (notwithstanding the fact that bus drivers usually have to work shifts, also on weekends): > Almost all Visual Basic 6 programmers were content with what Visual Basic 6 did. They were happy to be bus drivers: to leave the office at 5 p.m. (or 4:30 p.m. on a really nice day) instead of working until midnight; to play with their families on weekends instead of trudging back to the office. They didn't lament the lack of operator overloading or polymorphism in Visual Basic 6, so they didn't say much. The voices that Microsoft heard, however, came from the 3 percent of Visual Basic 6 bus drivers who actively wished to become fighter pilots. These guys took the time to attend conferences, to post questions on CompuServe forums, to respond to articles. Not content to merely fantasize about shooting a Sidewinder missile up the tailpipe of the car that had just cut them off in traffic, they demanded that Microsoft install afterburners on their buses, along with missiles, countermeasures and a head-up display. And Microsoft did. ...and it applies not only to Visual Basic, but also to many open source programming languages today. There are the users who are happy with the way things are, who are content to do their job and don't say much. And there are those clamoring for that one more feature that they just have to have, and those are the ones that eventually get heard, adding more complexity and cruft for everyone else.
- interfixus 4y agoFor what it's worth, I am a bus driver these days; a real one, no metaphor involved. And I sufficently disliked and mistrusted Visual Basic that already in the mid nineties I instigated a complete ban on any vb**run.dll on all computers under my jurisdiction. Mainly a heuristic: VB applications tended overwhelmingly to not being worth the inevitable trouble. I have proudly carried this curmudgery into the present century, these days applied to Java runtimes and Mono libs.
- ShadowBanThis01 4y agoVB was the one thing that most closely approached the promise of object orientation: "bolt-together," "off-the-shelf" components that you could build software with. In VB you could slap together a CRUD app in days, with VBXs (later renamed OCXs). I worked for a company where a bunch of programmers turned up their nose at VB and insisted on using C++, and then they got canned when the VB prototype functioned perfectly sufficiently for a production app.
- grumpyprole 4y agoWhen I first played with VB in the early nineties, it was also about the time Microsoft Foundation Classes was released. I compared the two approaches for building UIs and it pretty much soured my opinion of C++ for life.
- ShadowBanThis01 4y agoOh man, while we got a lot done with MFC, I scorned the macro mess that VC++ generated. To this day I detest C/C++ macros and never use them in my own code. But years later, when I had to switch to the Mac and Project Builder, I couldn't believe how half-assed its integration with Interface Builder was. You couldn't even drag from a control in your UI layout to your view's source code to generate a code stub. You had to manually type stuff like IBOUTLET. And there was no bi-directional updating either, of course. It has gotten a lot better since. Meanwhile, whereas I used to love the Visual Studio IDE itself, I find the same ridiculous bugs in it that I reported 20 years ago...
- omnibrain 4y ago> VB was the one thing that most closely approached the promise of object orientation: "bolt-together," "off-the-shelf" components that you could build software with. I think Delphi perfected it with the data aware components. If you had a DB you could throw together a CRUD application with several screens with tablegrids and edit fields without any code at all. Even Master:Detail relations are taken care of. (Of course it's not pretty and it's going to miss validation, etc...)
- tragomaskhalos 4y agoThere was more to VB than just guis though - one could use it to build COM components far more easily than with C++ - the fact that a string was just String rather than the miasma of competing flavours that abounded in Visual C++ was worth the price of admittance alone. Delphi was arguably best in breed here, but always suffered from lacking the Microsoft badge.
- StopHammoTime 4y agoWhen I was younger, I HATED VB6. Even today, I still loathe some of the weird apps that I had to support running in Excel with VBA. I truly never thought about the power of VB until I read this article - those apps I loathed so much probably wouldn't have existed if it weren't for VB. I ran into so many tools that provided immediate value and go things done, even if it was dodgy or weird. Even though I'm a Platform Engineer these days, I hate the tooling that we have to do deal with today. Instead of having people build solutions, we all need to understand hundreds (if not thousands) of cloud/vendor-specific APIs. The actual solution itself is almost a by-product of the job of getting in run in the cloud. Maybe don't bring back VB, but a world where we can deliver solutions quickly and effectively without spending hours debugging dependency issues between releases.
- Syzygies 4y ago"Alas, the final product horrified Cooper—who loathed BASIC" This so reminded me of that wolf-to-dog "What could go wrong" meme. https://imgur.com/uVJPlZF https://imgur.com/uVJPlZF
- Zardoz84 4y agoInteresting... there is someone trying to create a modern Visual Basic 6 compiler & IDE : https://www.radbasic.dev/ https://www.radbasic.dev/
- lproven 4y agoThere are several. https://gambas.sourceforge.net/en/main.html https://gambas.sourceforge.net/en/main.html https://www.b4x.com/b4j.html https://www.b4x.com/b4j.html https://www.freebyte.com/programming/compilers/envelop/ https://www.freebyte.com/programming/compilers/envelop/ https://xbasic.sourceforge.net/ https://xbasic.sourceforge.net/ That's just a handful. There are or were more.
- bluelightning2k 4y agoThis article was really, really well written and researched. Cudos! Even the bridge at the end back to their product was well done (they're usually abrupt). Excellent piece of journalism and content marketing
- lproven 4y agoBTW, it's "kudos". The OS for the machine Linus Torvalds started on, the Sinclair QL, was called QDOS as a pun. The original codename for 86DOS, which became MS-DOS and made Microsoft rich, was also QDOS, for the same reason. Because cue-doss sounds like "kudos".
- Kwpolska 4y agoThe Visual Basic language always seemed weird to me, with two ways to call a method, setting the return value using the equals sign, the = and <> inequality operators, and other confusing syntax bits. > They didn't lament the lack of operator overloading or polymorphism in Visual Basic 6, so they didn't say much. Java still lacks operator overloading to this day. Also, VB6 had properties, something that Java lacks to this day (and no, Lombok doesn’t count).
- djhworld 4y agoVisual Basic was so good. Growing up all I knew was Windows, so being able to create fairly reasonable looking GUI apps at the time seemed like magic. I remember building a "web browser" in VB, I put that in quotes because it was really just an IE webview/control wrapped in my own custom UI with features like not recording browser history. I remember making a "virus" and sending it to a mate, and when he opened it, you could send messages to him and open the CD drive on his computer. I remember making a lottery number generator program and sending it to my Dad. I even remember doing work experience in a computer repairs shop, the guy that ran it used to sell PCs with not so legit software on it and he got me a copy of Visual Basic 6.0, which was amazing at the time. Definitely attribute my interest in programming, computers and everything to VB, no matter how much its look down upon!
- orthoxerox 4y ago> I remember building a "web browser" in VB, I put that in quotes because it was really just an IE webview/control wrapped in my own custom UI with features like not recording browser history. Haha, I built one as well. Couldn't have the parents accidentally discover what sites their horny teenager visited when they were at work, even if all I could rely on with 21600bps was written smut.
- heap_perms 4y agoI did those things as well as a teenager. I wrote a tcpi/ip chat program and we used it in school to chat with each other. It all seemed like magic to me. I did the thing with opening the CD drive continuously in a loop, and sending this to friends. It was hilarious. Altough I'd never use it today, it still acted as a catalyser for my interest in programming and computers.
- pcdoodle 4y agoRemember being able to pause execution, check variables by hovering, changing the dang code and resuming like nothing happended? "Do you ever wish a = 2 and not 3? introducing, pause button, let's you add anything at anytime and we don't ask no questions!"
- lappet 4y ago
- narag 4y agoI don't think Microsoft failed to see that most VB programmers wanted to keep VB as it was. Microsoft killed VB with a clear purpose: controlling more tightly as much as Windows development as possible, copying the Java model with .NET. If that seems like too conspiranoic theory, let's say that their new Devs head, Anders Hejlsberg, wanted a more uniform development experience around .NET and its star, C#. I'd bet for the former.
- mike_hearn 4y agoIt wasn't deliberately killed. The problem was that VB6 had weird semantics and behavior by the standards of other languages, but .NET was designed primarily around Java's semantics. Rather than pollute their nice next-gen platform (that they wanted to standardize through ECMA even!) with lots of VB6 compatibility goop, Microsoft chose to change VB with a new version that was closer to a normal .NET language. For example, in VB6 parameters are always passed by reference, but in C#, Java and VB.net they're passed by value. They also didn't seem to care much about being fully compatible, for example VB6 had some fairly basic features that WinForms didn't have.
- narag 4y agoOK, you bet for the latter. But: They also didn't seem to care much about being fully compatible... That sounds deliberate. Edit, to clarify: I doubt they didn't anticipate the frustration and the hit on the mindshare. From Ballmer's show, shouting "developers", to spit in the face... I didn't use VB6, but I do remember the complaints.
- bazoom42 4y agoI dont see how .net was more tightly controlled than VB? VB was a closed source proprietary language tightly integrated with the IDE. They had absolute control.
- narag 4y agoThey had no control over other vendors' programming tools. Borland Delphi used a more difficult language, but generated compiled, autocontained faster binaries, had a better out of the box library, similar third party components market (same language for programs and libraries, unlike VB that often used C++ controls) and was starting to develop a version for Linux. Microsoft had been poaching most of Borland's talent: https://techmonitor.ai/technology/microsoft_and_borland_bury_the_hatchet_sotto_voce https://techmonitor.ai/technology/microsoft_and_borland_bury... That included Hejlsberg. Take a look at the tools he created and worked on: https://en.wikipedia.org/wiki/Anders_Hejlsberg https://en.wikipedia.org/wiki/Anders_Hejlsberg Later something interesting happened. Microsoft settled just another suit, this time for office applications. I don't remember if it was a spreadsheet or a desktop database and I've been unable to find it in the news, but I clearly remember that Borland received $30M in cash and priviledged access to Microsoft's dev documentation. Then Borland abandoned Kylix, its Delphi version for Linux and released Delphi 8, that wasn't a native tool, but only worked on .NET. Next versions of Delphi included both .NET and native compilers and .NET creeped into Delphi IDE making it much slower. FUD was spreaded that Microsoft will eventually close all native developement and you will only will be able to use .NET to program for Windows. Delphi versions for .NET were never as good as VS, always lagging in features, and finally they were abandoned. But the distraction lasted long enough to kill the company. It's not the same to target a binary API and a virtual machine. The first must be stable, backwards compatible and follow specifications.
- tomger 4y agoWho else here followed the path of QBASIC > Visual Basic > ASP.NET > general web development as a kid?
- cpill 4y agoI did the first two and then when to php for ten years. the wild west of the internet!
- yc-kraln 4y agoI started programming with VB4, and built a lot of cool stuff in VB6. Went on to learn C++, C, Python, and a bunch of other cool languages to build a bunch of cool things. Nothing really quite feels as approachable for a beginner as VB did, those days.
- wslh 4y agoAs a system programmer who used VB6 as a glue or ochestrator (early 2000s) of low level components I say the only important flaw I found was on its single threading model. In the 2000s VB was rusty but amazed me when I remembered that pedantically (shame on me) criticized the VB developers of the 90s against the C/C++ hardcores. It was on high school though. Nerd issues.
- rprospero 4y agoI also remember my dismissive high school analysis of VB and wouldn't mind an opportunity to slap my younger self for blind dogmatism. However, I also remember that the fight was a two way street. My high school had classes in both VB and C++ and there were multiple calls from the local business community to cancel the C++ class. There was no reason to teach a dead language when knowledge of VB was enough for a lifetime career. Especially with the emerging web, where companies would need a ready supply of VB script developers and ActiveX control creators for their sites (JavaScript would be deprecated once the last five people using Netscape came to their senses).
- fatnoah 4y ago> As a system programmer who used VB6 as a glue or ochestrator (early 2000s) of low level components I say the only important flaw I found was on its single threading model. As a developer cutting my professional teeth in the late 90's / early 2000's, VB was amazing for building utilities and other bits of software run by individuals on their machines. When we tried to reuse components built for those applications in our web applications, issues with the threading (single threaded apartment) model soon became apparent, so we rewrote those in C++ in order to support the level of concurrency we needed.
- DeathArrow 4y agoCouple of thoughts: 1. Microsoft did a good thing at that time with Visual Basic. Building visual interfaces with RAD tools is the most efficient way, as defining visual elements with code is harder. VB was great at its time, Borland Delphi and C++ Builder were good, QT Builder was good, Windows Forms was good. Of course, why use good models when you can inflict pain and let people define UIs by using plain code? WPF used XAML and the new MAUI uses XAML, and while it is a better experience to define the visuals with XAML, a RAD tool like VB or C++ builder is much better. We should have RAD tools for desktop apps and mobile apps. In my software career I've not only built apps and websites and web applications and backends, but I worked as a game programmer, too. And people preferred game engines like Unreal and Unity because they were rapid tools with which is was much easier to build game levels and UIs than doing that by code. 2. I didn't use VB, because by the time I've encountered VB, I already knew C and C++ and felt they were more powerful and fast. I enjoyed using Borland C++ builder very much, and I wondered why MS didn't provide such a tool and enforced Win32 over programmers. I thought Microsoft hated programmers. And being that failed to provide one API for desktop programming, switching from Win32 to MFC to Windows Forms, to WPF, to MAUI - I still sometime think MS doesn't do the best job with providing tools for programmers. Now that MAUI is the thing, I hope it will stay and won't be replaced in two years by another thing. 3. If people think using Haskell or Rust is hard, they should buy Petzold's Book and try to program Windows with the info provided in that book. To do very simple things like apps with menus and child Windows, you really had to spend hours, correct compile errors, have the program crash, debug it, make it not crash, observe that things don't work as they should, change the code, solve errors, observe that the program crashes, solve those bugs, make it not crash, observe that things don't work as they should. And all that without having learn.microsoft.com, stackoverflow, YouTube to learn from.
- Kwpolska 4y agoWPF’s and Android’s approach are the best of both worlds. You get both a visual designer that can get you far, and human-editable XML, which is useful for more complicated layouts or for copy-pasting similar widgets around.
- DeathArrow 4y ago
- mobilio 4y agoThey're missed only VB Dos version. https://twitter.com/dosnostalgic/status/803339511845552128?lang=en https://twitter.com/dosnostalgic/status/803339511845552128?l...
- gattilorenz 4y agoThey didn't: "Visual Basic's initial release in 1991 was followed by five major versions (not including an ill-fated version for DOS). By the time Visual Basic 6.0 was released in 1998, its dominance was absolute" TBH, VB for DOS was indeed not very successful, and while fun as a concept (I've recently coded a Wordle-clone with it it), all things considered it's not very practical nor sensible.
- fabianholzer 4y agoThe WYSIWYG GUI builder that VB provided, I have never encountered afterwards again in quite that manner. Now, in VBs heyday the field of UX design we now have as a profession adjacent to software development was in its infancy and was usually an implicit part of the developers job. What was lost with the demise of the RAD tools was a potentially shared medium of expression. Today designers build Potemkin villages in Figma and the likes, throw them over the fence and as a developer I then need to reverse-engineer them. How much more productive would it be if they didn't throw something over the fence but would actually build the UI in the same tool that the developer uses to write the logic behind it? And another thing: I don't know if I had gotten into the field without BASIC. I started with QBasic, because it was the only thing readily available and switched over to VB when I got my hands on a students' edition. The thing that distinguished these two from educational environments like Scratch or Logo is that I could build actually useful stuff for myself with it.
- hahamrfunnyguy 4y agoI think the WYSIWYG WPF and Silverlight tools were pretty close to VB6 level of usability. The tools are great for building a quick UI, but I think they fall short for more complex applications. This is why designers have their own preferences when it comes to designing the UX, to give them the flexibility to create the UI as they see fit. When different teams are working on a shared goal, there can always an element of "throw it over the fence". As a developer, I always saw part of my job as getting plugged in with the other teams as much as possible. Providing continuous advisement and feedback on UX patterns as projects progress really helps things move smoothly.
- AnIdiotOnTheNet 4y agoI would argue that "more complex applications", when it comes to UI, are an anti-pattern. Use standard widgets, and don't be creative. Of course "standard widgets" don't really exist anymore because of where UI design has gone, but they did provide a consistency that users could rely on. That is gone now. Buttons don't even look like buttons anymore.
- samsaga2 4y agoMicrosoft killed Visual Basic on purpose. They wanted to force everyone to move to c# because they were afraid of Java and wanted to compete against their market.
- lproven 4y agoThis is the most important comment so far. MS tried to embrace, extend and extinguish Java. It got blocked in court. So, instead, it pushed .NET instead. "If it ain't dot-net, it ain't worth sh*t." So everything that wasn't dot-net was killed. Real VB loved by millions? Dead. QBasic, QuickBasic, Quick C? Dead. FoxPro, a good dBase clone, the database of choice for millions of businesses worldwide in the '70s, '80s and '90s? Dead. FrontPage, democratising the web for millions? Dead. HTML is dead, use ASP.net.
- DeathArrow 4y agoIdeally we should have a modern programming language and environment that a) is very easy to use for new comers and people that aren't professionals to build small functionalities and link different functionalities together b) has visual components (so this disqualifies Python) c) it is flexible and can be used by seasoned professionals to build complex things The complexity of the programming should be gradual, i.e. if you are a beginner, if you are learning, if you don't plan to be a full time programmer but you need to build something very simple, it should be possible. When I studied programming in highschool, the tool of choice was at first Turbo Pascal. Using Turbo Vision it was easy for US to construct simple text-based UIs and using BGI allowed us to dabble with graphics and draw simple things in a simple and straight forward way. Now, if I have to explain to a potential beginner that in order to build a simple to do app he should learn: HTML, CSS, Typescript, React, install VS Code, install VS Code extensions, linters, NPM, sass, less and tens of packages, just to be able to start, he might feel a bit discouraged and want to become a cab driver instead. But if I, in a totally unmodern, uncool, unwelcomed by community way I tell him to open Notepad and show him a few bits such as <button onclick="myFunction()">Ok</button> and alert("Ok") he might discover a taste for programming, and start to learn his way up to building something.
- lproven 4y agoI think you're right. And there were things in this general direction... Smalltalk and Logo spring to mind. But there is a lot of culture in computing, and a big problem that isn't recognised let along acknowledged is that today, there are basically only 2 surviving branches on one tree, when 30-40 years ago there was a whole forest. The branches are Windows (which now means NT) and Unix (which now means Linux and macOS). They both grow out of the same stump: DEC's minicomputers, specifically DEC's 16-bit line. DEC also had 12-bit, 18-bit, 20-bit, 24-bit and 36-bit lines, all profoundly deeply unlike anything that ever ran C. And of course there were lots of other minicomputer and mainframe brands that were far far more different than that: Burroughs, UNIVAC, NCR, Control Data Corporation (CDC), RCA, General Electric, and Honeywell. Once known as "IBM and the seven dwarves". All we have left descends from one branch: DEC 16-bit machines. The rest is mostly gone. Some are still around, emulated and in maintenance mode, because they run the world's banking systems and air-traffic control and things. Kinda important. There are whole families of languages and OSes that never used a single line of C or involved any Unix code at all at any point. Whole types of OS and GUI and editor and filesystem and so on more different from Unix than Unix is different from Windows NT. Whereas today, the traditional Mac is totally gone, replaced by Unix. And Windows is getting more Unix-like all the time and now includes a choice of Unix and two different Linux runtimes. Suggest that, hey, let's run Smalltalk on the bare metal and teach kids on that, so that they don't even have to ever know what "a file" is or means, and people will say "that's crazy talk!" Remember the Blues Brothers? "We got both kinds of music! Country AND Western!" Well, we got both kinds of software today! Unix AND Windows! They are the same damned thing, and gods help you if you are some heretic that says hey, you know, there are other things out there...
- WillAdams 4y agoIt leaves out one important point --- Microsoft killed off a similar development on a competing platform: https://www.folklore.org/StoryView.py?story=MacBasic.txt&characters=Randy%20Wigginton https://www.folklore.org/StoryView.py?story=MacBasic.txt&cha... TLDR: Bill Gates got the source code for "MacBasic" from Apple for $1 in exchange for continuing the license for Microsoft BASIC on the Apple ][.
- heap_perms 4y agoI started with visual basic. It was my first programming language, It will always hold a place in my heart. For beginners, having a UI is very important i think. Visual basic was unique in being able to click to together your UI.
- hnthrowaway0315 4y agoI didn't know when I first used it, but UED the first version of Unreal Editor was written in VB with a C or C++ rendering engine embedded.
- dsiegel2275 4y agoWow, brings back lots of memories. In high school I got started writing VB3 for my father's small software development company. I'd end up working full-time there for a handful of years after college, really pushing the boundaries of what one could do with Visual Basic. I don't think there's a single tool or language that I've loved more than it in my entire career. Twenty-seven years later, still one of my proudest accomplishments is to have had a multi-year project that I worked on featured in "Visual Basic Programmer's Journal".
- dingi 4y agoOh this brings back the memories of good old VB6. Never encountered such a simple and easy to use UI builder after that, probably because I left MS ecosystem for more open technologies. Just drag and drop. Double click on the component and start coding. How simple was that.
- fjfaase 4y agoVB6 is often underrated as a programming language, but it did have some neat things that are still not present in existing programming languages. (They were dropped in VB.NET.) In a sense VB6 is still ahead of its time. One is the transparent intergration with COM objects, allowing you to access objects in another process (possibly from a different executable) in exactly the same way as in-process object. All the marshalling is done under the hood. The only problem with this is that the execution of a single statement could be intermixed with another statement in another thread. I once had to deal with a nasty bug that was obscured by this fact, which was actually caused by using a programming mistake where someone had used a global variable for something that should have been a method argument. The other is the very nice event mechanism where there is no need to (un)register event handlers. They are automatically registered and unregistered. Very powerful mechanism that I started to use more and more the longer I worked with VB6.
- teh_klev 4y ago> One is the transparent intergration with COM I think this is one of the things detractors of VB kinda miss. You could build quite sophisticated software to leverage COM/DCOM without needing to go full C/C++ and IDL. The place I worked at built software that ran inside Microsoft Transaction Server (latterly COM+) to exploit distributed transactions. And then there's the really "advanced" stuff you could do in VB as written about by Matthew Curland in his excellent book "Advanced Visual Basic 6: Power Techniques for Everyday Programs"[0]. Armed with a copy of Curland's book and Don Box's "Essential COM" you could be really dangerous :) [0]: https://www.amazon.co.uk/Advanced-Visual-Basic-Programming-DevelopMentor/dp/0201707128 https://www.amazon.co.uk/Advanced-Visual-Basic-Programming-D...
- pjmlp 4y agoIt is incredible how on one hand WinDev has doubled down on COM after the way Longhorn was botched and rebooted into Vista,coming up with WinRT afterwards. While on the other hand they keep failing to deliver a VB like experience to deal with all that COM. All C++ improvements were killed in the name of the mighty IDL, and even .NET has always been hit and miss with RCW/CCW, and CsWinRT requires manual boilerplate coding.
- pcdoodle 4y agoBus driver moment: As a young contractor I was told about an on premies lawn mower kept getting stolen. I asked if there was a telephone line down in that part of the buiding. Wrote them a vb6 app that monitored a magnetic door contact sensor on the LPT Printer port with a vb6 timer that looked for a state change and would send AT commands to the modem to call the on site manager if the door with the equipment was opened during a non standard time. Took a few minutes to do this in vb6 and clients were super happy.
- specproc 4y agoI can remember doing stuff in VB when I must have been 14 or so. Coming to it from QBASIC it felt incredibly powerful and incredibly complicated. I think I managed to cobble together a simple form that informed the user the computer had a "virus", made it up as an .exe, and stuck it on a timer on the family computer for shits and giggles. Good times.
- jjkaczor 4y agoI picked-up a copy of VB1 (student priced, so... $140 CAD, IIRC) - and built a few simple apps (Character creator/manager for original Cyberpunk RPG, dice roller, bowling league management) while I was in school. Once I left school, I built a couple 'bespoke' commercial applications; 'WinReal' (AFAIK, the first Windows-based real-estate appraisal software - in Canada at least), 'WireStrand Estimator' (would calculate multi-strand wire/cable material requirements accounting for "twist-over-time" and number of individual strands with or without a core strand) - and a retail POS/accounting system used by a small local chain of 'CD' stores. But - my real transition from 'glue together controls with some simple logic' was when I was working on that retail/POS software and suffered a project corruption and lost all the code... ... to prevent this from ever happening to me again, I reverse-engineered the .MAK format, and then wrote a simple version control application that would use that to make copies of all the contained files... (I guess I could have just pulled from a directory folder, but - yeah, hindsight is 20/20 - I learned alot and became a better code)... Around the time of VB3, transitioning to VB4 - my corporate job was having a devil of a time doing that, because they purchased EVERY single VBX control on the market - but had no design standards/governance around which could be used - so, we had an application with about 90 different forms, and there were at least 20-30 different 'textboxes/buttons' from different VBX vendors spread throughout that (based on developer preference for pretty icon in the control panel) - transitioning to VB4/OCX was a nightmare, because not every vendor was also upgrading in a timely fashion. Myself, I had started outgrowing the constraints with VB3 for personal/hobby/side-hustle projects - and ended-up using Delphi. I could create and sell a standalone, single-file multi-media screensaver - with not VB runtime dependencies. It was faster, more powerful - but never caught-on for my commercial/corporate clients. (In 20 years, I have only found 2 organizations that used Delphi internally) Ah... memories... Now no one lets me code anymore (well - in compiled fashion - I do alot of DevOps/automation scripting)
- recursivedoubts 4y agoThe visual basic 6 debugging experience, where I could drag the program counter around willy-nilly and edit code mid-debug, remains the pinnacle of developer experience I have ever seen.
- deleted 4y ago[deleted]
- ChicagoDave 4y agoI’m fairly certain that the only way to originally purchase VB 1.0 was an 800 number posted in Dvorak’s weekly PC Info magazine column. It was $99 and I borrowed it from my manager. I still have the original manuals and 3.5” disks. It was almost like Microsoft was sheepishly waving it and saying, “maybe you’ll think this is cool,” while not directly challenging their C++ audience.
- ChicagoDave 4y agoI just want to add that as popular/cool as Visual Basic became, the first few years it was derided by most “real” developers as a crappy shortcut. PowerBuilder was king for awhile and even Delphi was ahead until VB 6.0 crushed all the competition.
- Eumenes 4y agoi'd watch a movie in this blog format
- richsu-ca 4y agoLoved the article. Thank you. I went from VB6 to C#, and lived through the drama surrounding the end of VB6. Everyone one had something to say, but here are some words from Bruce McKinney https://classicvb.net/hardweb/mckinney.htm https://classicvb.net/hardweb/mckinney.htm
- orthoxerox 4y agoBruce's Hardcore VB was the first book that I was underqualified to read as a teenager teaching himself to program.
- FlingPoo 4y agoI got started with Visual Basic 2.0 I wrote a shareware game in VB3 in the early 1990's called "Nisus Missile Master", a Missile Command clone. If I remember correctly, I sold just over 400 copies. My game made it into "Shareware Magazine" (print). I was also interviewed by the author of "Programming Games For Beginners" by Chris Howard, a chapter about Missile Master, and shareware sales. You can find and play it here, but the emulator is very slow. https://archive.org/details/win3_NisusMis https://archive.org/details/win3_NisusMis
- 752963e64 4y ago[dead]
- jkingsbery 4y agoWhen I started to learn programming in the mid-90s, it was still common to not have home Internet (or, if you did, it was too expensive to spend the whole day online). I learned a lot of programming from the VB helpfiles, a random book on VB from Barnes and Nobles, and recording VB macros in Excel and frankenstein-ing them back together to do different things. In particular, learning from recording macros and seeing the command was a very intuitive way to learn - I didn't have to guess at what the first version of a program would do.
- brunovcosta 4y agoI'm a super fan of Visual Basic! I'm building a "visual basic" for Python in the VSCode https://www.abstracloud.com/editor https://www.abstracloud.com/editor
- fatneckbeard 4y agothink people are missing, VBA is all over the place right now. its not going away. because that's the only language that comes pre-installed on a Windows machine in the average Office. Any other programming language, from powershell to python, is almost certainly locked off and blocked off by corporate security policy and 10 layers of bureaucracy and organizational organizational-ness. This is how the world actually works. Because the half-broken obsolete proprietary vendor systems that run the world's major corporations need to be glued together to have any semblance of efficiency, and that glue a lot of times is VBA. It's basically the continuation of the PC revolution, the PC within the PC if you will. Pushing out and decentralizing the access to computing to the desktop of every employee.
- gabrielsroka 4y agoDid everyone find the Solitaire Easter egg?
- linrl3 4y ago[dead]
- tedyoung 4y agoBeta testing "Thunder" (code name for VB 1.0) was one of the most exciting things in my career. As a long time QuickBASIC user, looking longingly at those C++ developers writing Windows apps, I was floored when I got my hands on VB. I was finally able to create a graphical Windows app without having to learn C++ (which I later did, because I wanted to write VBX controls). I did what I often do with new languages: write a stock charting and technical analysis application. Microsoft loved it and asked me if they could use it for demonstrations. They showed it off during the VB road show because they could show Microsoft's stock (up) vs. IBM's (down). The early VB community was fun to be a part of and VB3 was the pinnacle for me. VB4 was a mess and it took until VB6 to finally get things right again, but at that point I had given up on C++ and was writing Java applets.
- zanethomas 4y agoIn the early 90s I was working in downtown Seattle. The manager of the project I was on was married to a product manager at Microsoft. One morning he showed up with a beta copy of VB 3.0. There was a young, brilliant, programmer, James Shields, who was my partner working on a project. We took one look at VB3 and both immediately saw the potential of vbxes. At lunch we came up with a couple of initial ideas for custom controls, wrote them, and began selling them on Compuserve for $5 each. Soon I wrote some controls for working with the just-released Sound Blaster card, which gained some interest on Compuserve's music-related forums, I actually traded messages with Jerry Garcia one night. But our first big hit was Message Hook which I wrote to overcome some of the limitations of using the Windows API when using VB. That lead to Mitch Waite (publisher of many popular computer books in those days) contacting me to revise the Visual Basic How To. The result was the Visual Basic 3.0 How-To, which was almost all entirely new material. My approach to writing that book was to think about the things that one would want to program in Windows apps but could not easily accomplish with Visual Basic ... and to solve those problems. Message Hook featured heavily, a copy was included with the book's diskette. Soon enough the internet came online and I wrote a number of internet controls which allowed thousands of Visual Basic programmers to add, primarily, email and ftp to their programs, however there were controls for more obscure protocols as well. Visual Basic 3.0 was magic! It was an entirely new idea and several companies, including Mabry Software which was founded by me and my programmer buddy, had a good business until .net blew up the entire ecosystem. I think it's probably fair to say that VB 3.0, and our internet controls, made a significant contribution to the evolution of the internet.