one of the problems with being a mad scientist is that you can scope creep really fast
I haven't written line one of code on this project and I'm already thinking about how much dedicated hardware powered on and monitored I'd have to have to support indefinitely
but it would make my mastodon and blusky posts at least 5% cooler

so I recently did a lets-call-it-a-poem about (specifically Windows) computers loving us back:

https://digipres.club/@foone/116276073266480193

and I was thinking I want a way to do this automatically, specifically I'd like (almost) the first one.

and this post describes the behind-the-scenes of how I made these. (tl;dr it was manual screenshots)
https://digipres.club/@foone/116276567994297740
and I was thinking about automating it so I could do another thing: make a mastodon instance that renders every post on it as pixel-accurate windows 95 dialog boxes

and the OBVIOUS answer for "how do I do that" is "extend the death generator to do windows 95 dialog boxes and then automate it".

I've done the second half before, automated the death generator. It's a pain and is ugly (the death generator is written exactly wrong to make this doable) but I've done it before, I can steal Foone's code for it

but "I've done it before" is kinda boring and also windows dialog boxes have a surprising number of edge cases that I am unable to escape being autistically perfectionist about.

so adding win95 to the death generator, while it would be cool, is probably not happening any time soon

but I'm a Mad Scientist.
So what's the Mad Scientist way to do this? Well, how'd I do it before?

I wrote a line of code in my Visual Basic 6 IDE and ran it on my Windows 98 VM

So let's just automate that.

We take the post text, generate a visual basic source file for it, then boot windows 98, compile the visual basic, run the EXE, take a screenshot, shutdown

"easy", for certain values of "easy"

But where do we run the code?
Well there's two obvious options that are sufficiently Mad Scientist enough to be interesting enough to do:

1. In the browser. Do this client-side. Boot a VM in the browser that runs Visual Basic and then the resulting EXE and shows that to the user

Might get CEASE AND DESIST'd by Microsoft, but fuck it, it'll be funny
2. hardware
set up a Pentium-60 to boot into Windows 95, compile some Visual Basic code, and then run it.

How do you get the image?

Easy. We just photograph the CRT

But how does the generated Visual Basic code get into the Pentium-90 desktop?

Well, it doesn't have a network card. I could add one, but /boring/

same for a WiFi232 on the serial port. boring.

hey I wrote some code a while ago to emulate a PS/2 keyboard, I could just type it in!

The next obvious option is to set up a floppy autoloader
that could be done without being too difficult by simply using a Gotek running FlashFloppy and something emulating USB storage (or making a Trick USB cable that can be in two computers at once)

but the far more fun answer would be to build a machine to eject floppies out of some other network-attached computer and inserts them into the Pentium, and vice versa.

Air-gapped

could also get some servos and physically manipulate the keyboard. really air-gap it
POP QUIZ: how many servos do you need, if you need to be able to type all the symbol keys on a QWERTY-US keyboard (49 keys), plus the following keys:
F5 (to run the program after we type in the code)
Enter (to close the popup after we take the photo, which will then trigger a shutdown)
@foone i was gonna say infrared link but i feel like that's really abusing the literal meaning of the words 'air gapped'
@foone Robotic hands that can touch type. When you control-v have the hands type out what is in the paste buffer (or piped to a command).
@foone cloud-init for windows 9x with a config drive that looks like atapi to windows but is actually something cursed :>
@foone On the other hand, "net send" really *does* feel like the right thing to kick off a social media post.
@foone Could you make Wine emulate dialog boxes close enough? And run in a browser?...

Hmm there's already stuff like BoxedWine, could you load the real Windows icons and fonts, and get the title bars close enough?
@nyanpasu64 @foone why not? wine has a built in "desktop mode" for this purpose
@foone save a step: VBScript can MsgBox too, so you could use WScript to run a generated .vbs.
@ZiggyTheHamster nah using Visual Basic is a loadbearing part of my Mad Science

@foone in that case, you can pass switches to the VB6 executable to make it compile a project, so you could generate the .bas/.frm and compile it with a .bat, and finally run it.

I did some version of this when I developed and maintained an IRCX server written in VB6.

@ZiggyTheHamster the problem is that I still need to get the data into the computer, and "typing it into VB6 IDE" is that step in the current design.

I guess I could write a wrapper program that just types in the input+an enter, then runs the VB6 compile + run, but by that point why don't I just make the program call MessageBoxA?

so having VB6 be part of the loop is important to me

@ZiggyTheHamster oh I was thinking about the hardware option, I didn't see this was on the "in the browser" option.

yeah that'd help, that'd be what I'd want to do

@foone you don’t need VB and a compile step in the path to do this; generate a program that does the win api calls (sure could be in VB) by reading a data file, run that in a VM. hell, write over a templated exe file’s dummy string values with new strings. MS still not happy perhaps, lol. I am guessing wine would not be pixel accurate?
@sif oh there's a lot of ways I could do this easier. I'm doing it wrong on purpose as part of the bit
@foone Mad Science means never stopping to ask "what's the worst thing that could happen?"
@foone okay maybe *building* it would be a bad idea but you gotta at least tell us what it is
@foone I’m sure whoever’s running Intel this week would kill for a consistent 5% performance improvement with each CPU generation.