Technical Notes
"In software, there is very little difference between what we can build, and what we can imagine.
The constraints imposed by building large software components are the limitations of our own minds.
Talk in declarative language about what we take to be true. Formalize intuitions about process. Develop a way to talk precisely about 'how-to' knowledge, as opposed to Geometry, which is 'what-is' true."
- Harold Abelson
the Structure and Interpretation
of Computer Programs, MIT, 198x.
(quotes joined from episode 1)
About
HiConsole provides a command-line interface to the virtual machine inside a JavaScript-enabled browser window. It's inspired by dream machines like the Apple II, Amiga, Symbolics, Sketchpad, SGI, VMS, NES, Video Toaster, Xanadu, etc.
It helps people who are comfortable with the web learn how to program. By example, learners come up to speed with the technology of yesterday, and accelerate into the present. The minimum spec is IE6 for Win2k, so things users build with it can run on almost all browsers.
It was developed by Conversation Research to see if programming can become as quick and rewarding as the videogames of the past. It is commercial software. It depends on the JavaScript library compilation whiteb0x, including LISP and Raphael, which is free.
System
In HiConsole, the hardware is the browser window (JavaScript and the DOM), the ROM is HiConsole & its dependencies (the opensource whiteb0x), and the software is whatever the user creates. It is a command-line interface, much simpler than DOS or Bash, but good enough for a formal, deterministic conversation with the machine. This conversation is extendable with new words, functions, and graphic forms.
- Hardware = JavaScript VM+DOM
- ROM = HiConsole + Whiteb0x (JavaScript libraries) + HTML UI
- Data = inputs/streams/bitmaps/anything in the VM/DOM
- Software = user creations/configurations
Components
HiConsole depends upon a few wondrous JavaScript libraries. Each empowers the browser window with a particular UI ability, like a standards-compliant Pokemon. Here's what we collected:
Thanks to these people, the web is super effective.
Decimal LISP Notes
JGLisp is an Integer LISP, meaning (+1.2 2) = 2. HiConsole's version has been hacked to detect decimal numbers in simple arithmetic and try to process them through JavaScript math instead. This should be reviewed by people, ideally Joe.
Additional Components
- Dpad - handles keyboard and/or joystick events
- Omnom.js - reads and parses HTTP pages into strings/arrays
- Timer - a stack-based, reporting, debugging timer function
Raphaël
Raphaël is important. If we're going to use web pages for another five years, they should include the graphical capabilities included in, say, the Sinclair ZX Spectrum.
Prior to Raphaël and ExCanvas, the ability to draw a diagonal line inside normal web content was only possible by ignoring X or Y Browser, or writing for both. Raphaël puts this awesome BigCo-Labs type power into the hands of all web content developers.
Dmitry should get a statue and some of your hard-earned support.
Please help us improve
HiConsole was programmed by front-end developers. It needs a code review and your constructive advice. If you see what we're reaching for, and you know better, please talk about it here in the forum.
Things we are working on
- Graphics tools do nothing
- Need to Buy Product
- HTML validation & accessibility
- Code stability, compactness, & good examples
- Lessons and demos
- Licensing
- Flash Sound/Speech Library (Java to AS3 or C++ to Alchemy)
Thank you.
|