"This means that somewhere, this instance needs to be connected to a proxy server, which assigns a 10.x.x.x address to the “Windows” machine, and then forwards the connections through. Basically, world’s weirdest, most hipster ISP on the face of the earth."
I wonder if there will ever be a business case for things like this. I sit across the hall from a startup that sells mp3 gramaphones, etsy is a huge success, there are strange Kickstarter projects every day. Is nostalgia a permanent long tail phenomenon, or a fad from which people will move on?
There's no doubt in my mind that nostalgia is a permanent phenomenon. Spencer wrote The Faerie Queene in deliberately antique english to appeal to people's nostalgia. And that was more that 400 years ago. There's been a market for classic cars almost as long as there's been cars.
How many businesses will carve out a niche in long tail tech is harder to tell. I expect it will be like many things, many enter, few leave.
Actually, PPP over Websockets has some really interesting implications. Raw TCP/UDP in your browser is a potentially powerful thing. It's like a VPN client in your browser - once you're connected, you can bridge private networks, or establish pure TCP connections to any server on the internet, without special-case wrappers or browser-imposed WebSocket restrictions.
Jason Scott is such a weird and wonderful person. I highly recommend watching BBS: The Documentary. Episode 8 was especially interesting and moving in a way I didn't expect. I would say, in brutal honesty, the production values are (unfortunately) low, but the content is pure gold, and well makes up for it.
So my thanks go out to Jason Scott and the small crowd of computing historians he unofficially represents. As a modern software and hardware engineer, it is both a joy to watch the old, and a comfort to know our work of today has a chance of being preserved in the years to come.
Nope, I'm going to do it, I'm going to focus right on one sentence and ignore all the compliments.
The BBS documentary was shot across 4 years on my own dime (no crowdfunding, my family helped pay for the camera) and traveling to 20 states, from 2001-2004, and then released in 2005. (10 years ago). This means some footage was shot as long as 14 years ago.
"Production Value" is a very specific term - it is almost always used to indicate skill or attention to the final product. All along the way for the BBS Documentary, I had to make choices. Remember, the Canon XL1 I shot with cost me $4000 in 2000, when it was bought. And instead of going with a handful of people, say, under 15, to tell the whole story, I chose instead to interview 201 people. This meant that sometimes in a single day I'd drive to up to 4 different homes, with miles between them, set up all the equipment myself, conduct the pre-interview and interview, and then move on to the next location. In one case I drove 500 miles to grab an hour interview with a figure who had popped up, and then drove back.
This was before DSLR became prominent, before HD was the norm. I could have gotten a full crew, but everything else would have suffered: the breadth of subjects, the locations, the variant voices. It's a choice I'm fine with.
I recognized, after BBS Documentary was done, that I'd want to move to HD, but in 2006, when I started filming GET LAMP, that cost me $10,000. I paid larger numbers for the new movies - $20,000 for the DSLR equipment. (Both GET LAMP and the new films are crowdsourced, based on the reputation of BBS Documentary.)
Choose your words carefully, please. I'll take "Dated", I'll take "SD", I'll take "Videotaped", but please don't imply I didn't sweat bullets over every aspect of the production, and that everything in there wasn't a best-of-all-circumstances choice made with the intent of finishing a project that many (at the time) thought was impossible.
If anyone is interested, I just wrote a simple guide on how to get your own DOS programs up and running with em-dosbox: https://csl.name/post/em-dosbox/
Em-dosbox and emscripten are really amazing projects. An emulator is cross-compiled to JavaScript, which is then JITed in your browser's js VM. It's not only amazing that it works, but also that it runs pretty well (compared to native dosbox, it's only a little bit slower on some programs).
it’s running inside the EM-DOSBOX system, since Windows 3.x was essentially a very complicated program running inside DOS. (When Windows 95 came out, a big deal was made by Gates and Co. that it was the “end” of the DOS prompt, although they were seriously off by a number of years.)
Nitpicking just a little bit: Windows 3 didn't run inside DOS. Maybe "on top of it" if you want to put it that way, but not "inside".
It changed the processor and graphic modes and when shut down it reverted to the prompt. But by no means was it "just a big DOS program".
Guess what: Windows 95 also was a program running "on top" of DOS. That was somewhat hidden, but I remember clearly that I booted to DOS and then executed either Windows 3 or Windows 95 (I was programming a compatible 16/32 bits application). There was some tweaking needed but it worked nicely.
It gets a bit metaphysical at some point, but 'on top of' or 'after' probably are better prepositions to use when describing the relationship between DOS and Windows.
'Instead of' would also work, in the case of Windows 95, as it would be fair to say that simply exiting Windows involves resetting everything back to the way DOS had it, then rerunning DOS.
And when you ran DOS inside a window in Windows 95, then that was DOS running inside of a VM.
> It turns out a number of fundamental aspects of The Web have changed since this time.
I wish they went into more detail what exactly changed and why these browsers no longer work, unless it was the PPP protocol they mentioned that is causing the issue.
Old browsers speak HTTP 1.0, which adhered to the old "one service per IP" rule. This doesn't work so well with cloud based stuff, or shared web hosting.
HTTP 1.1 added the `Host:` header, which let a single IP host many domains, which essentially created the web hosting industry.
Original author of the hack here. Several changes:
1) HTTP 1.0 vs 1.1 and lack of the Host: header, as you've all deduced
2) Additional encoding info tacked on after the Content-type causes parsing issues
3) Many sites now redirect to HTTPS by default. While Netscape 1.0 and Mosaic 1.0 both support HTTPS, it used SSLv1, and well, remember POODLE? :P
Newer versions of these browsers tend to work in native DOSBOX but present problems when running on the web. We're working on it.
Biggest problem right now is that the virtualized dial-up ISP is a bit flaky. For some reason PPP over TCP over Websockets via Trumpet Winsock isn't as rock solid as it should be :P
There's a number of problems, which folks like jwz have dealt with, and which we'll look at. Basically, you don't get https (of course) and the response codes of web servers have shifted enough that older browsers don't know what to do. Proxy injection of needed helper material will help this a bit.
Bear in mind, though, it will ALWAYS be insecure and it will ALWAYS be more of a "try this out" than popping on your unicycle, starting up your bagpipes and riding down the Information Superhighway permanently.
JWZ ran into similar issues when he brought http://home.mcom.com back from the dead and then got it working in old versions of netscape and mosaic
In order to make these web sites work in the old browsers, it was necessary to
host them specially. In this modern world, a single server will typically host
multiple web sites from a single IP address. This works because modern web
browsers send a "Host" header saying which site they're actually looking
for. Old web browsers didn't do that: if you wanted to host a dozen sites on
a single server, that server had to have a dozen IP addresses, one for each
site. So these sites have dedicated addresses!
The web server also had to be configured to not send a "charset" parameter
on the "Content-Type" header, because the old browsers didn't know what
to make of that.
He also wanted to use these old browsers to surf the modern web, so he wrote a proxy that translates between HTTP/1.0 and HTTP/1.1. Maybe the textiles.com guys can implement something similar.
The most important change is that HTTP 1.0 assumed that each IP had a unique hostname. The HTTP request just got sent to the IP that resulted from the DNS lookup with no indication of what hostname was fed to DNS.
HTTP 1.1 (1999, so way postdating Netscape 1.0) has a Host header that's sent with every request, which allows the client to communicate to the server which hostname the client thinks it's talking to. That allows today's world, with multiple hostnames colocated on the same IP, to work properly. But if you leave out the Host header the server doesn't know which of those sites you meant and will do ... something.
For example, this explains the defcon.org failure in their screenshots. In fact, you can try this at home in your favorite command-line:
1) Type
telnet www.defcon.org 80
You get output like:
Trying 162.222.171.206...
Connected to www.defcon.org.
Escape character is '^]'.
2) Type:
GET / HTTP/1.0
and hit enter twice. See what it responds with.
3) Repeat, but in step 2 type (or paste, since it closes the connection quickly):
GET / HTTP/1.1
Host: www.defcon.org
followed by two newlines. Observe the difference.
Same thing for www.whitehouse.gov (which is in fact a cname for www.whitehouse.gov.edgesuite.net which is a cname for www.eop-edge-lb.akadns.net which is a cname for a1128.dsch.akamai.net which you can bet needs the Host header to know which site you were accessing!).
And same thing for news.ycombinator.com, which is a cname for news.ycombinator.com.cdn.cloudflare.net which then resolves to an IP but doing a reverse DNS lookup on that IP says it's got at least "ns1.cloudflare.com" and "dns.cloudflare.com" as domain names that resolve to it... so it's clearly going to be looking at the Host header to see what you actually think you're talking to. You can even see this if you compare http://news.ycombinator.com.cdn.cloudflare.net/ to https://news.ycombinator.com/ even though one is a cname for the other.
I recall running Windows 3.11 on a Mac using the earliest versions of Connectix Virtual PC in the late 90s. It was so slow as to be unusable. And today we can run Windows 3.11 in a browser. Mind-boggling.
Although Connectix also sold a playstation (original) emulator for mac that worked pretty well. Connectix was embroiled in a lawsuit with Sony, till Sony ended up buying it.
Part of the problem I think with some emulation speed has to do with bit order of the original hardware (or endian order) which makes emulators do a lot of memory moves.. We ran into this a little when looking into migrating software from PA-RISC to X86..
My first thought on reading this is that we can't be that far off from running MAME and every classic arcade game in a browser. Googled it and sure enough - it's already here courtesy of the Internet Archive:
The vast majority of the games will not run at a playable speed. Heck, a fairly large percentage don't even with the MAME software itself on 4Ghz+ CPUs.
MAME's commitment to accurate emulation is amazing.
'the ski game' is likely Ski Free. Delightfully, the author has created a 32 bit version of the game, if you want to run it on your modern desktop. You can also download the 16 bit original version.
Considering the simplicity of his page, and the browser now running in the emulator, it should be possible to download and run the 16 bit version from his website:
Now I'm imagining pointing this thing not at a proxy that accesses the live web but one which picks a date in the wayback machine and relays the state of the web at the time the browser came out...
I went through the period of nostalgia and fascination the author exhibits years ago with Amiga, c64 and dos emulation and virtual machines.
It's impressive and convenient that this runs in a browser, but does itreally change anything about emulation? We've had this capability for windows, mac and Linux for years which covers about every platform with a browser. I suppose it's convenient if you wanted to emulate windows 3.1 on your iOS device.
Emulators suffer from bitrot just like the software they're emulating. I've seen several fall into disrepair in recent years -- eventually we'll lose the people that remember how the the old systems worked. Centralizing the development and publishing it on the web seems a good way to keep the preservation effort humming.
(And as pointed out in the OP, getting something like Trumpet Winsock to work against a 21st century internet is non-trivial)
> We've had this capability for windows, mac and Linux for years which covers about every platform with a browser
Yes, but that always required installing emulation software, tracking down the necessary ROMs/disk images, etc. If it's running in the browser, the site admin can do all that once for everybody rather than every user having to do it for him/herself. All the user has to do is open a URL.
They should try getting a more modern browser on there. If I remember correctly, while running my hand-me-down Gateway 2000 with Windows 3.11 in 1998, I managed to get Internet Explorer 3 or 4 installed after I downloaded it at a friend's house.
No, there are various other mechanisms now, perhaps the most useful and widespread for this situation being WebSocket. It's not without limitations though: http://en.wikipedia.org/wiki/WebSocket
K so JS is the new de-facto interpreted machine-Latin. The lingua franca.
Is there something else I'm missing here? We've known that there is a decent mapping from X86 assembly to a subset of javascript for a number of years now. You can even run the entire OCaml stack in the browser, or Doom, or Quake... etc. What's next? Wordperfect in the browser? Visicalc? This is clever and kudos to the guys, but how is this advancing what we already know?
May I suggest you click on the little "X" in the upper right of the window of your browser with this story, which is short for "I am Xtremely beyond this"
chrisduesing|11 years ago
I wonder if there will ever be a business case for things like this. I sit across the hall from a startup that sells mp3 gramaphones, etsy is a huge success, there are strange Kickstarter projects every day. Is nostalgia a permanent long tail phenomenon, or a fad from which people will move on?
stinkytaco|11 years ago
How many businesses will carve out a niche in long tail tech is harder to tell. I expect it will be like many things, many enter, few leave.
bai0|11 years ago
8ig8|11 years ago
I think you can count on it as long as the 'retro gap' [1] holds at the current level.
[1] http://www.theonion.com/articles/us-dept-of-retro-warns-we-m...
textfiles|11 years ago
mark-r|11 years ago
iso8859-1|11 years ago
fpgaminer|11 years ago
So my thanks go out to Jason Scott and the small crowd of computing historians he unofficially represents. As a modern software and hardware engineer, it is both a joy to watch the old, and a comfort to know our work of today has a chance of being preserved in the years to come.
textfiles|11 years ago
The BBS documentary was shot across 4 years on my own dime (no crowdfunding, my family helped pay for the camera) and traveling to 20 states, from 2001-2004, and then released in 2005. (10 years ago). This means some footage was shot as long as 14 years ago.
"Production Value" is a very specific term - it is almost always used to indicate skill or attention to the final product. All along the way for the BBS Documentary, I had to make choices. Remember, the Canon XL1 I shot with cost me $4000 in 2000, when it was bought. And instead of going with a handful of people, say, under 15, to tell the whole story, I chose instead to interview 201 people. This meant that sometimes in a single day I'd drive to up to 4 different homes, with miles between them, set up all the equipment myself, conduct the pre-interview and interview, and then move on to the next location. In one case I drove 500 miles to grab an hour interview with a figure who had popped up, and then drove back.
This was before DSLR became prominent, before HD was the norm. I could have gotten a full crew, but everything else would have suffered: the breadth of subjects, the locations, the variant voices. It's a choice I'm fine with.
I recognized, after BBS Documentary was done, that I'd want to move to HD, but in 2006, when I started filming GET LAMP, that cost me $10,000. I paid larger numbers for the new movies - $20,000 for the DSLR equipment. (Both GET LAMP and the new films are crowdsourced, based on the reputation of BBS Documentary.)
Choose your words carefully, please. I'll take "Dated", I'll take "SD", I'll take "Videotaped", but please don't imply I didn't sweat bullets over every aspect of the production, and that everything in there wasn't a best-of-all-circumstances choice made with the intent of finishing a project that many (at the time) thought was impossible.
csl|11 years ago
Em-dosbox and emscripten are really amazing projects. An emulator is cross-compiled to JavaScript, which is then JITed in your browser's js VM. It's not only amazing that it works, but also that it runs pretty well (compared to native dosbox, it's only a little bit slower on some programs).
iso8859-1|11 years ago
narag|11 years ago
Nitpicking just a little bit: Windows 3 didn't run inside DOS. Maybe "on top of it" if you want to put it that way, but not "inside".
It changed the processor and graphic modes and when shut down it reverted to the prompt. But by no means was it "just a big DOS program".
Guess what: Windows 95 also was a program running "on top" of DOS. That was somewhat hidden, but I remember clearly that I booted to DOS and then executed either Windows 3 or Windows 95 (I was programming a compatible 16/32 bits application). There was some tweaking needed but it worked nicely.
db48x|11 years ago
'Instead of' would also work, in the case of Windows 95, as it would be fair to say that simply exiting Windows involves resetting everything back to the way DOS had it, then rerunning DOS.
And when you ran DOS inside a window in Windows 95, then that was DOS running inside of a VM.
swalsh|11 years ago
cbd1984|11 years ago
We'll have the technical side of this solved before the legal side is.
platz|11 years ago
I wish they went into more detail what exactly changed and why these browsers no longer work, unless it was the PPP protocol they mentioned that is causing the issue.
sbierwagen|11 years ago
HTTP 1.1 added the `Host:` header, which let a single IP host many domains, which essentially created the web hosting industry.
You can fix this communication problem with a HTTP 1.1 to 1.0 translating proxy server: http://www.jwz.org/blog/2008/03/happy-run-some-old-web-brows...
bai0|11 years ago
1) HTTP 1.0 vs 1.1 and lack of the Host: header, as you've all deduced
2) Additional encoding info tacked on after the Content-type causes parsing issues
3) Many sites now redirect to HTTPS by default. While Netscape 1.0 and Mosaic 1.0 both support HTTPS, it used SSLv1, and well, remember POODLE? :P
Newer versions of these browsers tend to work in native DOSBOX but present problems when running on the web. We're working on it.
Biggest problem right now is that the virtualized dial-up ISP is a bit flaky. For some reason PPP over TCP over Websockets via Trumpet Winsock isn't as rock solid as it should be :P
textfiles|11 years ago
Bear in mind, though, it will ALWAYS be insecure and it will ALWAYS be more of a "try this out" than popping on your unicycle, starting up your bagpipes and riding down the Information Superhighway permanently.
quux|11 years ago
See here for details: http://www.jwz.org/blog/2008/03/happy-run-some-old-web-brows...
bzbarsky|11 years ago
HTTP 1.1 (1999, so way postdating Netscape 1.0) has a Host header that's sent with every request, which allows the client to communicate to the server which hostname the client thinks it's talking to. That allows today's world, with multiple hostnames colocated on the same IP, to work properly. But if you leave out the Host header the server doesn't know which of those sites you meant and will do ... something.
For example, this explains the defcon.org failure in their screenshots. In fact, you can try this at home in your favorite command-line:
1) Type
You get output like: 2) Type: and hit enter twice. See what it responds with.3) Repeat, but in step 2 type (or paste, since it closes the connection quickly):
followed by two newlines. Observe the difference.Same thing for www.whitehouse.gov (which is in fact a cname for www.whitehouse.gov.edgesuite.net which is a cname for www.eop-edge-lb.akadns.net which is a cname for a1128.dsch.akamai.net which you can bet needs the Host header to know which site you were accessing!).
And same thing for news.ycombinator.com, which is a cname for news.ycombinator.com.cdn.cloudflare.net which then resolves to an IP but doing a reverse DNS lookup on that IP says it's got at least "ns1.cloudflare.com" and "dns.cloudflare.com" as domain names that resolve to it... so it's clearly going to be looking at the Host header to see what you actually think you're talking to. You can even see this if you compare http://news.ycombinator.com.cdn.cloudflare.net/ to https://news.ycombinator.com/ even though one is a cname for the other.
unknown|11 years ago
[deleted]
cleverjake|11 years ago
BenoitEssiambre|11 years ago
TeMPOraL|11 years ago
js2|11 years ago
acomjean|11 years ago
Although Connectix also sold a playstation (original) emulator for mac that worked pretty well. Connectix was embroiled in a lawsuit with Sony, till Sony ended up buying it.
http://en.wikipedia.org/wiki/Connectix_Virtual_Game_Station
Part of the problem I think with some emulation speed has to do with bit order of the original hardware (or endian order) which makes emulators do a lot of memory moves.. We ran into this a little when looking into migrating software from PA-RISC to X86..
alexvoda|11 years ago
https://www.destroyallsoftware.com/talks/the-birth-and-death...
300bps|11 years ago
https://archive.org/details/internetarcade
textfiles|11 years ago
busterarm|11 years ago
MAME's commitment to accurate emulation is amazing.
ianopolous|11 years ago
with a playable demo of doom here: https://jsdosbox.appspot.com/
marcosdumay|11 years ago
ColinDabritz|11 years ago
Considering the simplicity of his page, and the browser now running in the emulator, it should be possible to download and run the 16 bit version from his website:
http://ski.ihoc.net/#download
Zikes|11 years ago
kalleboo|11 years ago
code_duck|11 years ago
It's impressive and convenient that this runs in a browser, but does itreally change anything about emulation? We've had this capability for windows, mac and Linux for years which covers about every platform with a browser. I suppose it's convenient if you wanted to emulate windows 3.1 on your iOS device.
sehugg|11 years ago
(And as pointed out in the OP, getting something like Trumpet Winsock to work against a 21st century internet is non-trivial)
smacktoward|11 years ago
Yes, but that always required installing emulation software, tracking down the necessary ROMs/disk images, etc. If it's running in the browser, the site admin can do all that once for everybody rather than every user having to do it for him/herself. All the user has to do is open a URL.
orbitur|11 years ago
textfiles|11 years ago
wazoox|11 years ago
iso8859-1|11 years ago
unknown|11 years ago
[deleted]
arohner|11 years ago
If you're running in a browser, all the network access you get is HTTP AJAX, right?
petercooper|11 years ago
And it's not quite "the browser" in the usual sense, but Chrome Apps (and, I believe, extensions?) get access to TCP and UDP APIs: https://developer.chrome.com/apps/app_network
spion|11 years ago
inglor|11 years ago
nsxwolf|11 years ago
cleverjake|11 years ago
> Before I get 1,000 "GIMME DER SAUCE AND WHERE DO I KLIK" - the DOS situation showed me we need something to be really tested to go big.
transfire|11 years ago
RandomCode|11 years ago
[deleted]
vegabook|11 years ago
Is there something else I'm missing here? We've known that there is a decent mapping from X86 assembly to a subset of javascript for a number of years now. You can even run the entire OCaml stack in the browser, or Doom, or Quake... etc. What's next? Wordperfect in the browser? Visicalc? This is clever and kudos to the guys, but how is this advancing what we already know?
Javascript is fast and flexible. The browser is a credible platform technologically. We can treat it like a VM. Yep...Got it. More than three years ago. https://github.com/kripken/emscripten/graphs/contributors
textfiles|11 years ago
bai0|11 years ago
Might need to print this and tape it to your keyboard though http://bit.ly/1zDZrjk