Javascript Hero: Change Computer History Forever(ascii.textfiles.com)
ascii.textfiles.com
Javascript Hero: Change Computer History Forever
http://ascii.textfiles.com/archives/3375
24 comments
If ASCII is the universal, forward-compatible data format, is JavaScript to become the universal runtime environment?
Every layer of software builds upon the lower software (and hardware) layers (and bugs). It's like a Jenga tower of dependencies. It would be nice if some middle layers could be excised/refactored to simplify our technology stack.
Every layer of software builds upon the lower software (and hardware) layers (and bugs). It's like a Jenga tower of dependencies. It would be nice if some middle layers could be excised/refactored to simplify our technology stack.
If we took out the Javascript layer we'd be down to C, right? We've had emulators written in portable C for nigh on twenty years. Where's the challenge in that? ;)
The advantage of JS as a runtime environment is that it's got the most extensive cross-platform app ecosystem in the world, with a lot of eyeballs on it. Every new difference that arises between the behavior of a JS engine and that of its peers is greeted by a hundred thousand screams from the mouths of a hundred thousand web developers.
Plus, I believe the pain required to get your app to run in all the popular JS engines is mild when you compare it to the ins and outs of cross-platform C libraries.
The advantage of JS as a runtime environment is that it's got the most extensive cross-platform app ecosystem in the world, with a lot of eyeballs on it. Every new difference that arises between the behavior of a JS engine and that of its peers is greeted by a hundred thousand screams from the mouths of a hundred thousand web developers.
Plus, I believe the pain required to get your app to run in all the popular JS engines is mild when you compare it to the ins and outs of cross-platform C libraries.
Actually, no, beneath the JS layer is the browser, which is a massive wall of architecture-independent C++ with its own graphics abstractions and high-level constructs. You'd need to drop another level or three to reach the C layer.
I dare you to actually try SDL sometime; it is far less pain than doing browser work in JS.
I dare you to actually try SDL sometime; it is far less pain than doing browser work in JS.
If the premise is ASCII, JavaScript cannot be the result.
ASCII is intensely simple and, for its intended purpose, very close to perfect. JavaScript is... not.
JavaScript is, at best, the most common language used for today's GUI applications. It and its "toolkit" (the DOM and HTML) need a lot of work, particularly wart removal, if they're going to have the timelessness of ASCII or its successor (UTF-8).
ASCII is intensely simple and, for its intended purpose, very close to perfect. JavaScript is... not.
JavaScript is, at best, the most common language used for today's GUI applications. It and its "toolkit" (the DOM and HTML) need a lot of work, particularly wart removal, if they're going to have the timelessness of ASCII or its successor (UTF-8).
The DOM and HTML need work, sure. But JavaScript is perfect.
Javascript is beautiful and far simpler than most languages it resembles on the surface, but it is far from perfect.
Fortunately there are many serious efforts at improving the language almost all of which compile down to today's javascript for backwards compatibility.
Fortunately there are many serious efforts at improving the language almost all of which compile down to today's javascript for backwards compatibility.
Brendan Eich would seem to disagree[1], as would, well, everyone else I've ever heard talk about JS, so I'm not sure from whence you draw that rather remarkable assertion.
It may or may not meet your particular needs, but that has very little relationship to its perfection.
[1] http://brendaneich.com/2005/06/javascript-1-2-and-in-between...
It may or may not meet your particular needs, but that has very little relationship to its perfection.
[1] http://brendaneich.com/2005/06/javascript-1-2-and-in-between...
There's actually a fair amount of old hardware out there even still, but you're right that it won't last forever. Heck, there's an 8088 hiding under my bed, complete with math coprocessor, full RAM, CGA adapter (and monitor) and even a dot-matrix printer.
One of these days, I should find out if it still works or not.
One of these days, I should find out if it still works or not.
http://blog.archive.org/2011/09/03/hard-drive-archaeology-an... is a great example of this.
Tangentially related: Google recently posted a case study of porting MAME to Native Client (currently a Chrome thing): http://code.google.com/chrome/nativeclient/docs/portingMAME....
Very appreciated.
Jason here, who wrote that weblog entry. Quick comments.
- Yes, it is difficult in some ways. Easy in others. - Emscripten is very likely to be involved. - It will run slow for some things. That's fine. Things get faster. - Yes, this is really important.
I'm at [email protected] if people want to work on it.
- Yes, it is difficult in some ways. Easy in others. - Emscripten is very likely to be involved. - It will run slow for some things. That's fine. Things get faster. - Yes, this is really important.
I'm at [email protected] if people want to work on it.
I've been working on a port of my IronBabel framework (universal emulator platform) to JS for a couple months whenever I can spare a few minutes. Designing it properly has been a challenge, but the goal is that any computer can be emulated using it. The focus is on simplicity and handling common tasks, e.g. generic memory mapping, JIT code caching, etc.
From here, what I'd love to do is this: develop emulators for common platforms in the clearest way possible (no optimizations -- that can be separate) and simultaneously document the hell out of older platforms. In the end, you'd theoretically have a repository comprised of a set of documentation and a set of "reference emulators".
It wouldn't be fast, but it'd preserve these platforms effectively forever.
From here, what I'd love to do is this: develop emulators for common platforms in the clearest way possible (no optimizations -- that can be separate) and simultaneously document the hell out of older platforms. In the end, you'd theoretically have a repository comprised of a set of documentation and a set of "reference emulators".
It wouldn't be fast, but it'd preserve these platforms effectively forever.
If you want to experience what this will be like, there is a browser plugin called ActiveGS that lets you load Apple ][ and IIGS images directly into your browser and "boot" from them. http://activegs.freetoolsassociation.com/ (examples http://www.virtualapple.org/oregontraildisk.html )
Sounds like a job for emscripten:
https://github.com/kripken/emscripten/wiki
My eyes! All I see is green text, everywhere.
Green text on black background, my eyes hurt.
Never used a monitor where that was the only option?
My lawn: get off of it.
My lawn: get off of it.
Let's be fair: The old green-screen monitors had much larger font sizes. Maybe that was less harsh. Also, I had younger eyes. ;)
Does anyone have an actual Apple II green-screen display (40 or 80 columns, 24 rows) emulated in Javascript to share with us? I found an Apple II emulator but it only plays games.
Does anyone have an actual Apple II green-screen display (40 or 80 columns, 24 rows) emulated in Javascript to share with us? I found an Apple II emulator but it only plays games.
The shapes on old green-screen monitors were also significantly softer, which I believe helped readability as well. Small, sharp green text on a black background is just killer on the eyes.
What's your OS?
OS X defaults to much softer font rendering than most systems, and Windows/Linux can be tweaked (try googling for things like "OS X style font" or "soft font rendering" with the name of your OS tacked on)
OS X defaults to much softer font rendering than most systems, and Windows/Linux can be tweaked (try googling for things like "OS X style font" or "soft font rendering" with the name of your OS tacked on)
http://www.readability.com/
The bookmarklet will make it (and other sites) easy to read.
http://www.readability.com/articles/s15uh64p
The bookmarklet will make it (and other sites) easy to read.
http://www.readability.com/articles/s15uh64p
no kidding, this is even worse when you are on a tablet that doesn't support bookmarklets
I was talking to a friend of mine about the "Digital Dark Ages." He didn't believe me that we were unable to view data that we had sitting around on computers anymore; one of my prime examples was computer games from the 80s that relied on bugs in the hardware to run. I'm glad that emulators exist to be provide that service.
But, man, being able to say, "Yeah, here's the URL to the gist of Choplifter," would be something completely different. The level of accessibility provided by the World's Largest Runtime (tm) would be unreal.