Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Viewpoints Research Institute claims that they did all of personal computing (including antialiased graphics needed to do SVGs, TCP/IP and an office application which could run both word processing workloads and PowerPoint) in under 20,000 lines of code. (Usually TCP/IP itself is 10k LOC so this is pretty impressive.)

The basic idea that Alan Kay has presented in his many similar YouTube presentations (most of which run with that office application) is what we call today domain-specific languages, you write the rules for antialiasing a pixel in whatever the ideal language would be for those rules: you just imagine that you have a dream language and "wishful think" the solution: then you go and you reimplement that DSL in another language that you are wishfully conjuring, a language-language, and that final one can become self-describing and can compile and optimize itself.

This is also a method of programming advocated in MIT's old SICP lectures, which will also cover the implementation of Lisp in itself, which is sort of a prerequisite for it.

That all said, I would love to read the source code someday but I can't seem to find it anywhere, the software product may be the KSWorld that was described in [1].

[1] http://www.vpri.org/pdf/tr2013002_KSonward.pdf



Actually, we didn't claim to have successfully done this.

More careful reading of the proposal and reports will easily reveal this.

The 20,000 lines of code was a strawman, but we kept to it, and got quite a bit done (and what we did do is summarized in the reports, and especially the final report).

Basically, what didn't get finished was the "bottom-bottom" by the time the funding ran out.

I made a critical error in the first several years of the project because I was so impressed with the runable-graphical-math -- called Nile -- by Dan Amelang.

It was so good and ran so close to actual real-time speeds, that I wanted to give live demos of this system on a laptop (you can find these in quite a few talks I did on YouTube).

However, this committed Don Knuth's "prime sin" : "the root of all evil is premature optimization".

You can see from the original proposal that the project was about "runnable semantics of personal computing down to the metal in 20,000 lines of code" -- and since it was about semantics, the report mentioned that it might have to be run on a supercomputer to achieve the real-time needs.

This is akin to trying to find "the mathematical content" of a complex system with lots of requirements".

This is quite reasonable if you look at Software Engineering from the perspective of regular engineering, with a CAD<->SIM->FAB central process. We were proposing to do the CAD<->SIM part.

My error was to want more too early, and try to mix in some of the pragmatics while still doing the designs, i.e. to start looking at the FAB part, which should be down the line.

Another really fun sub-part of this project was Ian Piumarta's from scratch runnable TCP/IP in less than 200 lines of code (which included parsing the original RFC about TCP/IP.

It would be worth taking another shot at this goal, and to stick with the runnable semantics this time around.

And to note that if it wound up taking 100K lines of code instead of 20K, it would still be helpful. One of the reasons we picked 20K as a target was that -- at 50 lines to a page -- 20K lines is a 400 page book. This could likely be made readable ... whereas 5 such books would not be nearly as helpful for understanding.


Ah, I see, you are objecting that you did not complete what you were setting out to do. I think that is quite noble of you to admit but at least the demo presentations were quite impressive even if they lack a certain totality.

Well anyway, thanks a lot for these presentations. I don't think it's as good as a software course where someone breaks all my preconceptions of what computing is, to leave me truly free, but they are helping to widen my thoughts.


Final report (2012, released 2016) of the STEPS project, which has some more info, but sadly no reference to the source code... http://www.vpri.org/pdf/tr2012001_steps.pdf

Did some digging and found this site with some code, but I haven't looked closely enough to determine what it is specifically for... http://tinlizzie.org/dbjr/ And it is not exhaustive of what the PDF describes. Maybe someone is able to contact one of the original group working on this?


What is amusing about the VPRI project is that, even though the number of lines is low, nobody managed to replicated what they did.. Or more precisely, nobody was able to build something which work with the pieces of code they left. An impressive research but a poor software project, apparently they hadn't hear about SCM..




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: