I’ve been trading emails with Alan Kay for a few d...
# thinking-together
w
I’ve been trading emails with Alan Kay for a few days about CS education. Wanted to share a few thought-provoking snippets with y’all:
In my research group at Parc in the decade of the 70s, we did four major “real object” languages, about three more major designs, and many versions. This is because “what was actually needed” was not a variation on any of the several thousand languages that Jean Samet was able to count by the late 60s. Other research groups at Parc accounted for another 4 or 5 higher level languages and SDKs as well.
Part of the mental tool set for being a “aspirational computer scientist” back then was to know how to make OSs, languages, and new whole computers in a timely fashion. Today it is much easier than back then, but most computer people don’t know how, and don’t.
What seems to be lacking is what we used in order to get most of “personal computing” into an Alto in the 70s in about 10,000 lines of code including the OS with all but a few thousand instructions written in the super high level language -- and all done by less than 10 people (who also had to invent the personal computing ideas and GUI, etc). The secret sauce was a kind of mathematics and design that seems quite missing today combined with an integrated live programming language, live development environment, and hardware all built to support the math and design.
For “CS” learning purposes, just bootstrapping a neat system done by others is probably not the best first experience. But this is an indication that a very large “personal computing experience” can indeed be programmed in a few thousand lines of code via what really counts in computing: Design not bricklaying or “Runnable Math*
A separate “real CS” department -- maybe it should be called “The Systems Sciences Department” for clarity -- would address all these deeper issues.
❤️ 3
👍 11
s
Would be awesome if a university could spin up one of these 'real CS' or 'system science' department where a compact implementation of a whole computing system can be done and experimented with.
w
On that note, has anyone tried nand2tetris (https://www.nand2tetris.org/) or anything like it?
d
Higher level language in the 70s was C, right?
w
No, he’s talking about Smalltalk.
❤️ 1
👍 4
Another quote:
Here’s the Xerox Parc Smalltalk that Steve Jobs saw in 1979 that led to the Macintosh. It was done for the Parc “Notetaker” computer (Steve saw it on a Dorado). The entire system was written in Smalltalk -- “OS”, language, GUI, development system, “apps”, etc. -- in about 10,000 lines of code. The kernel required about 2000 machine code instructions (about 6KB of code). It was stored as a complete system, so all that was required to bring it back to life was to implement what the 2K machine instructions did. The main difference today is having a lot more storage, which allowed many more bit-map pictures to be used.
Referencing this video:

https://www.youtube.com/watch?v=AnrlSqtpOkw&t=135s

s
The 10K LOC always amazes me. That's the bait Kay uses to get folks hooked into these ideas 😄. It's also legit because it's true. Here's another thread about this system: https://futureofcoding.slack.com/archives/C5T9GPWFL/p1574100925005200?thread_ts=1574100925.005200
👍 2
c
On that note, has anyone tried nand2tetris (https://www.nand2tetris.org/) or anything like it?
Yes, I highly recommend it although it is not that FoC related. What I truly appreciated about it, was it broke down a distinction in my mind between electrical circuits (physical) and software (non-physical). I never really understood before how typing on a keyboard and images on a screen related to physical wires and electricity, even though I understood each well separately. I will warn people that if you are susceptible to over-climbing the "general solution" ladder, this will not help! You'll go from wanting to design your own PL, to own OS, then own RISC!
🤠 3
d
I think the idea of a whole system (including OS) built for a specific purpose, bootstrapped from minimal code (e.g. 10K LOC) still has a lot of potential merit. And we can do it using context and tools that weren't available then
For example, maybe instead of a whole OS, an entire toolchain and language and UI for it could easily piggyback on a modern browser. Kind of like Orca does.
❤️ 2
w
The challenge with mathematical design secret sauce is that simple, concise, precise, composable design is not easy.
w
I love what he's saying, and I'd love more focus on people designing such fundamentals from scratch.. That said, I hope he understands that 10Kloc of novel OS design in the70ies got you in the history books, and today it gets you 3 stars on github in a sea of a million repos. I don't think "people don't know how to make these anymore" is the only problem.. the bar for success has gone up 10000x too, and that does affect things.
💯 3
I know I'm going to commit sacrilege by saying this, but if a young Alan Kay came around today, most likely he'd accrue a fraction of the fame his forebear did, or indeed be the proud owner of a 3 star github repo with his new OS.
d
I agree and disagree. Sure, good design can be hard; but it's made much harder and more complicated than it needs to be; which I think is because most software developer don't understand what software is really about: not mechanism and patterns and frameworks, but human value! Decompose and recompose the human model, and there's your code model! But most (enterprise) code bases are so far from that. You have to trace all over the code to reverse engineer an understanding (in human terms) of what the system is & what it does. Instead, that stuff is supposed to "emerge" from a bunch of separate components. So the decomposition of the system is typically far removed from what the system is even for / about. If software people get a handle on that, then a lot of that complexity just becomes translating straight from English to code. And then the design difficulty has very little to do with code; it's all about how to design a good user model, which is more on the side of business / user experience than on anything technical.
s
That 3 star repo might get a lot of upvotes on Hackernews though!
😂 1
s
Kay has said that he was graduating school now instead of in the 60s, he would not go into computing. It's a very different field now. I think the value in Kay's talks and perspective is that it's provides a broader 'beginners mind' view of the computing space. Over the decades the space has been partitioned into many sub fields and many ideas so entrenched that the research is structured along very specific views. A different kind of research might (or might not) produce deep and interesting results.
👍 2
w
@Wouter it does seem like there are hundreds of people with little, interesting projects.
s
Is there a way to look at these 10k LOCs somewhere? Or at the 20k LOCs from the STEPS project? I'd really like to have some specific questions answered on how these systems were built with so few lines of code. I am aware of the VPRI papers that describe the overall ideas, but I'd really like to take a look at the actual source code. I think that's a common criticisms about the STEPS project that they never released the source code, but perhaps the source for that earlier Smalltalk-based system is available somewhere?
☝️ 3
s
@Stefan - there's a paper describing how SmallTalk-78 was revived and now can run on emulated hardware in JavaScript. Here's how I peek at the sources, though there's probably a better way:
The paper is here: http://web.archive.org/web/20190507213950/http://freudenbergs.de/bert/publications/Ingalls-2014-Smalltalk78.pdf. The emulated SmallTalk is here: https://lively-web.org/users/bert/Smalltalk-78.html (I believe this is the one used in Kay's demo for Ted Nelson's tribute - not 100% sure on that though)
👍 1
You can probably extract the sources from the image, which should be available somewhere in the JS. I've been wanted to see the source too, just haven't gotten around to it. Likely there are useful links in the paper too. If you zoom in to the screenshot above, the focus is on the
turn
method of the Box object. It essentially undraws itself, updates its
tilt
based on the new angle passed in, and redraws itself. The paper describes the syntax of this version of SmallTalk.
Now it's a bit fiddly to get the emulator going so I'll describe it here. This worked for me today: 1. Open https://lively-web.org/users/bert/Smalltalk-78.html 2. Click 'OK' on the 'asdf' popup to close it 3. Bottom left, click 'load image' and then 'fetch updated.st78 from server' 4. (now the image is running). Right click in the smalltalk window - hold down the click - select 'open browser'. 5. Draw on the screen to see the typical smalltalk browser.
👍 1
s
Thanks for that, @shalabh! Looks like this is the project on GitHub: https://github.com/bertfreudenberg/Smalltalk78
w
@wtaysom hundreds? you mean hundred thousands, surely? 🙂
w
I can only personally account for hundreds, maybe a thousand, as a person of limited attention.
d
@Wouter I don't know if there's hundreds of thousands of "reinvent computing" or "self contained system" type of projects
☝️ 1
w
No, probably not.. but hundred definitely sounds too low. There's probably a 100 on this slack, let alone outside of it
✔️ 1
d
I'm fascinated by the sentence "The secret sauce was a kind of mathematics and design that seems quite missing today" - I see code monkeys all around, banging out hundreds of thousands of lines of code as though this were normal and appropriate. Can we teach developers not to do this? Can we teach the missing mathematics and design with a "Systems Sciences Department"?
w
Training Picasso is a tricky business, and isn't going necessarily going to be rewarded or feel rewarding. Writing LoC feels like progress, and searching for unified, elegant mathematics doesn't mean you're going to find it.
s
So what does that mean? What “kind of mathematics and design”?