A browser-native classic Visual Basic VB6 IDE
wieslawsoltes.github.io
wieslawsoltes.github.io
I'm not sure if that's the right term, but by discoverability I basically mean having things like pallettes, property editors, visual builders, codegen... Basically that I can look at the pallete of widgets, drag a button onto the screen, click on it, see and rich-edit all the possible properties about the button, one-click codegen an event handler for any possible event of the button... No documentation, no guessing the names of properties of events, everything is just there right in front of me. I miss that from VB.
intuitiveness?
Also, trust me, the VB6 interface hits a lot different (which is to say: worse) on a cramped 800x600 or 1024x1768 monitor than whatever spacious thing you're probably viewing it on. =)
Makes it that much more absurd that tooling on modern
platforms isn't anywhere near this level of discoverability
and developer-friendliness.
I can think of a few concrete reasons why.1. The VB6 UI element palettes work well because there's essentially a 1:1 correlation between the icon and the thing it produces when you drop it onto the canvas. That works well for visual elements but less well for things that don't have visual analogs.
2. Toolbars/palettes don't scale well past a few dozen items, whereas a VSCode-style command palette or text command autocomplete can scale nearly infinitely.
3. The way HTML works is a totally different paradigm than VB6's fixed grids. Obviously (as this demo shows) you can do that in HTML, as long as you're willing to ship stuff that kind of works like a VB6 app.
Also, have you used VB before? having Timer icons all over your form while not being visible at runtime is fairly par for the course.
VB/VBScript is almost like writing shell scripts, in one sense. You can write really maintainable, even elegant stuff. It's just that nobody else is, and the language is almost pathologically constructed to discourage it.
(Although, at least shell scripting was never really intended for big apps, so, it has an excuse)
Back then I was running 1280x1024 on a 17" CRT. Which was still modest for the era.
I'd consider VB6 and Delphi peak IDE for the era. With Turbo Vision for the 80s.
I.T. was just less well funded in general back then, I think, and hardware was relatively more expensive.
There was also just much less understanding of "hey, developers need somewhat beefy setups"
I remember at my first professional job, I had a 100mhz or 120mhz Pentium I. The receptionist had a 133mhz Pentium I with, I think, more RAM as well. (I remember because it pissed me off...)
There were also a lot more in-house development jobs. Some small non-tech company would grow to the point that the underfunded IT guy was writing all these little scripts and VB apps. And then he'd finally fight and fight and the company would hire a second person as programmer, so the IT guy could focus on fixing people's printers and reinstalling Windows, and management would not understand why they'd need to spend an extra $2000 buying a nice desktop and monitor for the $40K/year programmer they just begrudgingly hired for their company where the average salary was $27K/year.
Shit, even in the late 2010s, in a lot of places would still look at you like your hair was on fire if you asked for a second monitor... there was a stretch there where I'd just bring one of my own... also I remember I had a job where I had a second company-provided monitor and they took it away because they were hiring more engineers and it wasn't "fair" for me to have 2 because they didn't have the budget to give everybody 2 lmao
Form builders don’t work for responsive design. That’s it, that’s the entire reason they got dropped by industry.
So, I think there's still potential to throw together an interface even if it can't do all of it. We do need a placeholder box that can be labeled for the controls we add manually but use its sizing info. Also, a converter that autoscales them in HTML or Qt to maintain the ratios that were in the VB6 app. For the placeholder, I was temporarily using that one control that's like a giant frame or box meant to contain others.
One reason I abandoned the idea is the AI's are so good now that we can probably just generate better GUI's from scratch or a basic, VB6 sketch. I couldn't justify the work until I try an AI with such projects. To avoid hallucinations or garbagr designs, might make sense to do the original program but AI-generate the transpiler.
Winforms is a little dated, but much, much closer IMO to VB6. Xaml makes prettier UIs, but it's a bastardized hybrid of drag-and-drop and html.
When it came to Blazor, MS just gave up on drag-and-drop UIs.
However, appearance-wise it looks very noisy/distorted with some crooked elements (especially window buttons) and missing visual parts (mainly bevel edges). I made a screenshot with comments for it[0].
I guess this was made with AI which isn't that great at making stuff pixel-level unless you explicitly told it to check reference images and be pixel level precise, so i'd recommend firing up a VM with WinXP in classic theme mode (or even better, 86Box running Windows 95 or Windows 98) and grabbing a bunch of screenshots.
Also i found some bugs:
1. You cannot click on non-visual controls (or disabled controls) to select them (e.g. timer). You can still use the rect selection to select them and drag them around by resizing via the handles but clicking on them selects the form.
2. Adding a control doesn't update the controls list in the editor unless you double click a control without a handler (i.e. the form, as long as you remove the Form_Load handler). Even after the controls are updated, if the event list has only one event, you cannot have the editor add by selecting it (i guess because it is already the selected item and you don't receive an event about selecting it).
I tried to make a simple pong game but it seems no key or mouse motion events are implemented yet so all i did was to make a bouncing OptionButton :-P.
[0] http://runtimeterror.com/pages/iv/images/5ffbf1494821c77a3fe...
Nitpicking. Let me reflect - runtimeterror.com has no https which is available for free, so I'm not entering it.
It is a direct image link, it wont ask your password.
Also, https is not available for free even if some solutions are available without asking money for it. In this case: the site is on a shared host so the only option is the paid one from the host (so it isn't free-as-in-money) while the alternative is having a VPS and installing something like let's encrypt (which is more expensive than the shared host and requires me to play sysadmin for it, so not only it isn't free-as-in-money but also free-as-in-time).
Have you lived under a stone? No wonder we have so many vulnerabilities if people have no idea about images being malicious, exploiting image decoding libraries.
I think your threat model needs some work here. What exactly does https guard against when downloading a jpeg? A intermediary swapping it out for a different jpeg?
Downloading things from an unknown domain over https still carries the risk of the site itself vending you malware...
And all that for what, for a VB6 screenshot on a hn comment threat while procrastinating on top secret work ?
Nah, not worth it.
I'm working on my own with AI (separate from this one - unrelated), its a slow burn, but I want to make a source-compatible compiler. So far I can open up forms, and source code (its all IDE specific) but until I build up the actual compiler / debugger, its all cute but nowhere near where it could be. Whenever I have something worthwhile I will put it up on GitHub more than likely.
I've been using screenshots, but I also did find an old laptop I still had a licensed copy on (in my college years I had access to DreamSpark and MSDN).
What happens when an app calls into a lower-level Windows API? (It's been years, so I don't remember the name for the tech.)
Anyway, if you really want to, you can emulate old OSs with a very fast modern computer. Some emulators even bridge the network and file system to support enough that you can really live in it.
It's not just me who prefers everything as fast as possible, but true of people in general. Google measured that slowing down loading a search page by only 400ms caused people to do fewer searches. And the biggest reason I heard people say they switched to Chrome was that it was faster than other browsers (which was true for the first couple years after release).
laughs in Amiga
He has 500+ open source repositories including very advanced stuff like GPU powered gui framework and game engine components ( https://wieslawsoltes.github.io/Home ). It's very impressive and almost hard to believe that a single person could make all of this, even with help of modern ai agents.
The real test is if any of it is any good or not.
Competent developers have, can, and will out-build entire industries in a week.
Not counting the years before that which he spent using multiple source control systems intensely.
> Not counting the years ...
Never knew a capable/competent developer who didn't spend years.
Unix, C, etc.. constitute other historical examples of having been built in a very short time apart from Linus's git.
With enough competence, it boils down to an exercise in organizing discipline and first principles derivation. As I have mentioned in the past, skillsets at sufficient granularity are transferable across domains.
What you said would be true when looked at each different project as a separate domain, but real world is rarely a collection of isolated domains.
To put that in perspective, our app SlypBusiness has memberships, products, services, gift cards, privilege cards, etc. which all look like different domains to a user but is fundamentally the same primitive instantiated differently.
I am wondering if newer avatars of coding agents can bring that back. Two reasons 1) Code generation is getting faster 2) More and more code is becoming a detail that is expected to work
Imagine a RAD where we have a VB6 like experience and can dive into real code (agent-generated) when the abstraction breaks.
I spent a lot of time cutting my teeth in MS Access, and would've done a whole lot more in VB6 if it didn't become deprecated so quickly. It's like a whole smooth ecosystem I expected to persist and improve just evaporated, all in favor of much more fiddly stuff or much more expensive stuff (or if you're really unlucky, both).
I would like to see a comeback in this area, with modern security features and reduced bottlenecks for scaling.
I took it for granted, expected it to always be there-- wish I had something similar to point modern juniors to.
https://github.com/microsoft/Power-Fx
It's not really on people's radar but it seems very interesting and I think a lot of people that aren't on HN use and interact with it daily through the apps it supports.
It was just wonderful. I owe so much to that thoughtful feature as a child.
I wish I could meet the person who decided that. You’ve changed my life.
When I was 12, my dad brought home a laptop that the company he worked at was going to throw away. He convinced them to let him take it home instead, and turned it into our home computer. My brothers didn't care about it, but I became obsessed with it. Stumbled into QBASIC just looking at all the executable files in DOS.
The help feature alone taught me about and how to program, at least enough to turn it into something that I wanted to do for the rest of my life. (though notably I missed some very important features just by accident: for instance, I never learned that subroutines and functions existed until I actually took a real class in Pascal years later... I used a horrible rats' nest of GOTOs).
If it wasn't for that help feature, I'd probably have ended up a barista aspiring to get a novel published. Instead I became a (probably overly obsessed) software engineer, with complicated but mostly good outcomes. I'm 45 and retired now for example, and I certainly wouldn't be if I hadn't gone down this path. And I wouldn't have gone down this path if I hadn't randomly found QBASIC on that computer, and if the help feature hadn't been so helpful.
This creates 45 degree corners on the borders which are an uncanny valley to me [1]. Feel free to lift any CSS you need from https://jdan.github.io/98.css/, it's MIT licensed. I used a box-shadow hack to get the "staircase" look.
> box-shadow: inset -1px -1px #0a0a0a,inset 1px 1px #fff,inset -2px -2px grey,inset 2px 2px #dfdfdf;
[1] https://notes.jordanscales.com/98-css-reflections#when-butto...
Is there something similar for the web now? Easy UI editor but a fully featured language behind with direct database access.
There are a bunch of escape hatches if you want to get to the lower level platform (eg use JS libraries, or express a particular piece of styling in HTML+CSS), but the core experience is very VB-like: drag, drop, edit properties, run code on events.
Some texts on the other hand scream LLM to me. E.g. this label in the Print Code dialog:
> Opens a browser print window containing source only. Browser and operating-system print settings remain native.
This is just not how humans write. In fact, I don’t think a human would write anything here – it’s an implementation detail, not something that should be user-facing.
I remember sitting in class in school, writing out programs on paper for me to try out at home
That and Flash is what I miss, we don't have the tools anymore. Lost in hunt for "optimal" or "responsive" apps.
That brings me back.
Well, it's close in JS: 3 - 3.01 = -0.009999999999999787
- Xojo is a commercial tool which I believe does that (but with a price and license to match)
- MoonBasic seems like a promising start
- Gambas for folks using Linux?
- For folks using the very affordable PureBasic there is the matching (also commercial, just about as affordable) SpiderBasic
Naturally if one extends the search to other languages there are lots of options, but Lazarus with a .js Object Pascal compiler seems worth mentioning. For my part, I was swayed when flet.dev announced their v1.0 and so went the Python route....
Also MS Access form designer was quite like that; I kinda miss it.
And parts of their patient portal website were still VB6 on the backend a decade ago, not sure that's true anymore. Visual Basic 6 as a web backend.
That code you looked at must have been incredibly old! I think that BBj and ProvideX both added structured-programming features to make working in their environments at least somewhat tolerable. As intolerable as we find it today, Business BASIC was really a breath of fresh air in its time compared to the alternatives, like COBOL...
I'm used to "ON ERR GOTO"-type error handling in BASIC dialects, whereas in this code I'm seeing a lot of defensive "IF ERR=xxx" after API calls. It looks like they're also "cleverly" using the division by zero handler as an "escape hatch" out of a subroutine. To paraphrase some their code:
> 31338 IF ERR=15 THEN LET ERRMSG$=MSG(-1) ELSE IF ERR=14 THEN GOSUB DB_LOGIN; IF NO_CONNECT THEN LET a=1/0 ELSE GOTO 31337
That's the stuff!
Apparently they didn't make use of line renumbering (or the ProvideX environment doesn't support it) because I see features and error-handling shoehorned in between lines numbered ascending by 10. It reminds me of 9 y/o me shoehorning in new code when I was trying to write text adventure games using a unique INPUT / IF/THEN / GOTO block for each "room" of the game.
I thought the same way when I saw some impressive AI-generated videos not long ago, and I suspect the author prompted AI to get a basic idea, and then possibly after many iterations, finished it up with manual editing.
https://drive.google.com/drive/folders/1aIbRs2f6sVpCxO4TGoBf... (direction-log.md shows all the human provided input). It is far less than you'd think.
Was that there?
Does the site have intellisense? Yes
Did VB6 have intellisense? Also yes
TYPE PERSON
AGE AS INTEGER
FIRSTNAME AS STRING * 12
END TYPE
DIM KURTZ AS PERSON
PRINT KURTZ._
You could do something like this, but it wouldn’t provide any kind of code completion or autocomplete to show the AGE/FIRSTNAME fields where the underscore represents the text cursor.However you are right that if you hit F1 on KURTZ it would then show User defined PERSON, and then you could hit F1 again and it would show built-in help of user defined TYPE with AGE/FIRSTNAME properties. Sort of like context-sensitive help I guess.
As far as subroutines/functions go, if you tried to pass data into a subroutine where the data couldn’t be coerced, it would just give you a generic type mismatch.
DIM Y AS SINGLE
Y = 10.5
PRINTIT Y ' Throws parameter type mismatch
PRINTIT (Y) ' Succeeds through a self-evaluated expression which is effectively BYVAL because Microsoft takes pain in your suffering.
SUB PRINTIT (X%)
PRINT X%
END SUB
But to your point, you could point at PRINTIT and hit F1 and get a quick symbol look-up.I've spent the last 6 months building a similar 1:1 faithful recreation of QBASIC and QuickBasic 4.5 that runs natively in the browser [1] - so I know way more about this than anyone should by right.
...Off to waste the day in my .vimrc *sigh*
We look back at people's computers, say, 30 years ago now.
And in 30 years the people will look back at us and wonder why we sucked so much. Or, AI skynet slop is winning, then we all look up to our AI overlords.
no CLAUDE.md, no AGENTS.md, no SKILL.md, no .claude or .agents directories either.
Dare we dream? A project this ambitious, done without AI help? I'm getting that feeling like when I see a piece of really well done art come across my feed—and it was done entirely by a human!
Untracked.