Earlier quoted context omitted.
What kinds of changes to your thought processes did you make?
First of all, I now enjoy talking about myself :) I stopped assuming I knew everything, and a childlike sense of wonder returned to my life. I began looking beyond what was directly in front of me and sought out more comprehensive generalizations. What do atoms have in common with humans? What does it mean to communicate? Do we communicate with ecosystems? Do individuals communicate with society? What is consciousnes…
Alan Kay has agreed to do an AMA today
651–660 of 931 posts
Re: Alan Kay has agreed to do an AMA today
#652Hi Alan, how do you think that object-oriented programming and distributed computing will intertwine in the not-so-far future?
I've been constantly surprised about how what I called "object-oriented" and "system-oriented" got neutered into Abstract Data Types, etc., (I think because people wanted to retain the old ways of programming with procedures, assignment statements, and data structures. These don't scale well, but enormous amounts of effort have been expended to retain the old paradigms ...
I think another part of it was people wanted to go on using systems the way they had been, with the operating system being a base layer on which things happen, which does not exist as a foundation for building a different system. To create code, you put it in files, files go in directories, you compile it into a static executable, which becomes temporarily dynamic when executed, and then goes back to being static when it exits, because it was based on a static image. The OS makes it difficult for the executable to update the state of its own image, assuming that trying to do so is a mistake. You run it on top of the OS, not in the OS, not part of it. It's the recapitulation of the application metaphor, where the app. only exists while someone is using it, and then all its state goes away when they're done with it, unless a small piece of it is serialized (unpacked into raw bytes, with no meta-code) for later retrieval. With that kind of setup, the thinking is there's no need for inter-entity relationships that become part of the larger whole, though eventually people wanted applications systems with capabilities, and so more cruft got added onto the pile, trying to create versioned late-binding in the midst of a system designed for abstract data types.
When I talk to people about OOP, I explicitly try to distinguish it from ADTs and systems like I've described above, though I'm at a bit of a loss to come up with a phrase for what to call languages that people commonly call "OO." I've sometimes called them procedural languages, with an extra layer of scoping, or that work with ADTs, but that's a mouthful.
Re: Alan Kay has agreed to do an AMA today
#653Hi Alan, My understanding was that you were there at the keynote where Steve Jobs launched the iPad. From what we've heard Steve came up to you after the event and asked you what you thought (implicitly acknowledging your work on the Dynabook). Subsequent interviews suggested you thought that the iOS range of products "were the first computers good enough to criticise". My question is: what has to happen next for the…
I remember one thing Alan said (this was a couple years after the introduction of the iPhone, but I think it was before the iPad), which relates to your question is, "I wish they'd allow people to program the darn thing," which I took to mean, "program on the darn thing!"
Tablet computers existed long before the iPad, though they were bulky and expensive. I used to write software that ran on Telxon tablet units back in the mid-1990s, which used WiFi. A bit later they got enough memory and processing power that we were able to run Microsoft Windows on them, though they cost several thousand dollars each (not a consumer price point). I remember in video of a reunion of former Xerox PARC employees (around the year 2000. It's on the internet), Chuck Thacker held up a Tablet PC running Squeak, and he said, "This is a Dynabook right here." That sort of thing is more of a Dynabook than the iPad, because the software development licensing restrictions for iOS don't even allow people to share code from one unit to the next, because it's considered a security hazard. Apple let up on the restrictions such that people could write code on them, in an environment such as Scratch, but they're not allowed to share code from unit to unit. Instead, they have to jump through hoops, posting code on a web server for others to download.
Part of what the Dynabook was supposed to do was allow people to share code without the thought that it was a security hazard, because it would be designed to be a safe environment for that sort of thing. The iPad has the hardware form factor of a Dynabook (if I may say so), but its system ideas are far from it. It's designed as a consumer product where people are supposed to use it for personal interaction, gaming, consumption of digital content, and little else.
Re: Alan Kay has agreed to do an AMA today
#654Earlier quoted context omitted.
Other points of consideration: My coworkers might not already know some library, but they definitely won't know my library. My coworker's code is just about as "3rd party" as any library - as is code I wrote as little as 6 months ago. Also my job owns that code, so rolling my own means I need to write another clone every time I switch employers - assuming there's no patents or overly litigious lawyers to worry about.…
It's all trade-offs. If there happens to be a well-tested third party library that does what you want, doesn't increase your attack surface more than necessary, is supported by the community, is easy to get up and running with, and has a compatible license with what you are using it in, then by all means go for it. For me and my work, I tend to find that something from the above list is lacking enough that it makes m…
The developers around me tend to be inept at time estimation. They completely lack that aptitude. To be fair, so do I. I slap a 5x multiplier onto my worst case estimates for feature work... and I'm proud to end up with a good average estimate, because I'm still doing better than many of my coworkers at that point. Thank goodness we're employed for our programming skills, not our time estimation ones, or we'd all be unemployable.
They think "this will only take a day". If I'm lucky, they're wrong, and they'll spend a week on it. If I'm unlucky, they're right, and they'll spend a day on it - unlucky because that comes with at least a week's worth of technical debt, bugs, and other QC issues to fix at some point. In a high time pressure environment - too many things to do, too little time to do it all in even when you're optimistic - and it's understandable that the latter is frequently chosen. It may even be the right choice in the short term. But this only reinforces poor time estimation skills.
The end result? They vastly underestimate the cost of supporting the extra code they'll write. They make the "right" choice based on their understanding of the tradeoffs, and roll their own library instead of using a 3rd party solution. But as we've just established their understanding was vastly off basis. Something must give as a result, no matter how good a programmer they are otherwise: schedule, or quality. Or both.
Re: Alan Kay has agreed to do an AMA today
#655Earlier quoted context omitted.
AS someone that read at least one book per day if not more since the age of 6, yes it is possible. I can read between 100 to 200 page per hour, depending of the book. You reach a storage and money problem fast (Ebook are a savior nowadays). And you tend to have multiple books open at the same time. How does it work? There are several strategy. First i read fast. Experience and training make you read really fast. Seco…
> In a fiction book, it is not unusual for me to not read a chapter or two because i know what will happen inside. This is ridiculous. It doesn't count as reading if you skip whole chapters.
Re: Alan Kay has agreed to do an AMA today
#656Earlier quoted context omitted.
This is why "the objects of the future" have to be ambassadors that can negotiate with other objects they've never seen. Think about this as one of the consequences of massive scaling ...
Along this line of logic, perhaps the future of AI is not "machine learning from big data" (a lot of buzz words) but computers that generate runtime interpreters for new contexts.
Re: Alan Kay has agreed to do an AMA today
#657Earlier quoted context omitted.
Have you looked into the various Haskell/OCaml to hardware translators people have been coming up with the past few years? It seems like it's been growing and several FPGA's are near that PnP status. In particular the notion of developing compile time proved RTS using continuation passing would be sweet. Even with newer hardware it seems we're still stuck in either dynamic mutable languages or functional static ones.…
Without commenting on Haskell, et al., I think it's important to start with "good models of processes" and let these interact with the best we can do with regard to languages and hardware in the light of these good models. I don't think the "stuckness" in languages is other than like other kinds of human "stuckness" that come from being so close that it's hard to think of any other kinds of things.
A good example for me has been virtual memory pattern, where from a processes point-of-view you model memory as an ideal unlimited virtual space. Then you let the kernel implementation (and hardware) deal with the practical (and difficult details). Microsoft's Orleans implementation of the actor model has a similar approach that they call "virtual actors" that is interesting as well.
My own stuckness has been an idea of implementing processes using hierarchical state machines, especially for programming systems of IoT type devices. But I haven't been able to figure out how to incorporate type check theorems into it.
Re: Alan Kay has agreed to do an AMA today
#658Re: Alan Kay has agreed to do an AMA today
#659Earlier quoted context omitted.
Along this line of logic, perhaps the future of AI is not "machine learning from big data" (a lot of buzz words) but computers that generate runtime interpreters for new contexts.
When high bandwidth communication is omnipresent, is "portability" of the interpreter really something to optimize for?
The association between "patterns" and interpretation becomes an "object" when this is part of the larger scheme. When you've just got bits and you send them somewhere, you don't even have "data" anymore.
Even with something like EDI or XML, think about what kinds of knowledge and process are actually needed to even do the simplest things.
Re: Alan Kay has agreed to do an AMA today
#660Earlier quoted context omitted.
This is why "the objects of the future" have to be ambassadors that can negotiate with other objects they've never seen. Think about this as one of the consequences of massive scaling ...
Along this line of logic, perhaps the future of AI is not "machine learning from big data" (a lot of buzz words) but computers that generate runtime interpreters for new contexts.