Re: [fonc] Alternative Web programming models?
On Mon, Jun 13, 2011 at 11:17 AM, Alan Kay alan.n...@yahoo.com wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. For example, take a look at Alex Warth's Worlds work (and paper) and see how that might be used to deal with larger problems of consistency and version control in a live system. I also believe that we should advance things so that there are no hidden dependencies, and that dependencies are nailed semantically. Alan/Alex, Worlds does not address how to debug a live system other than random state-space exploration. Have you made progress I am not aware of? As I've said before, computer scientists must be much better at studying living systems if they want to build systems that can function at scales that exceed the capacity for humans to configure it. How exactly does Worlds truly deal with larger problems of consistency and version control? The same question applies to David Reed's TeaTime, which is really just Worlds with an illusion of infinite memory. I, too, could edit a PhotoShop image forever and scroll through the history of every edit I ever made using the History view, but I would need a lot of memory to do it. In practice, PhotoShop requires the user to do things like compacting layers and other memory organization techniques. To really make something like TeaTime or Worlds useful, you need bounds on how the history relation of a program affects the input/output relation. Even with bounds, you can still have glitches like the Brock/Ackerman Anomaly. But the nice thing about bounds is there is a lot of mathematical ways you can describe bounds, such as linear temporal logic or linear types or just any linearity guarantee period. That said, it is okay to have hidden dependencies, as long as somebody is allowed to check those dependencies at any point in time they please. A bad hidden dependency would be something like a NAT firewall causing a protocol to stop working. But an even more pernicious hidden dependency is in all software: BUGS! Dealing with bugs has led Carl Hewitt to propose we should just live with them, and reason about live systems using inconsistency tolerant logic. He prefers his own logic, DirectLogic. Cheers, Z-Bo ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Mon, Jul 11, 2011 at 10:23 PM, John Zabroski johnzabro...@gmail.comwrote: On Mon, Jun 13, 2011 at 11:17 AM, Alan Kay alan.n...@yahoo.com wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. For example, take a look at Alex Warth's Worlds work (and paper) and see how that might be used to deal with larger problems of consistency and version control in a live system. I also believe that we should advance things so that there are no hidden dependencies, and that dependencies are nailed semantically. Alan/Alex, Worlds does not address how to debug a live system other than random state-space exploration. Have you made progress I am not aware of? As I've said before, computer scientists must be much better at studying living systems if they want to build systems that can function at scales that exceed the capacity for humans to configure it. How exactly does Worlds truly deal with larger problems of consistency and version control? The same question applies to David Reed's TeaTime, which is really just Worlds with an illusion of infinite memory. I, too, could edit a PhotoShop image forever and scroll through the history of every edit I ever made using the History view, but I would need a lot of memory to do it. In practice, PhotoShop requires the user to do things like compacting layers and other memory organization techniques. To really make something like TeaTime or Worlds useful, you need bounds on how the history relation of a program affects the input/output relation. Even with bounds, you can still have glitches like the Brock/Ackerman Anomaly. But the nice thing about bounds is there is a lot of mathematical ways you can describe bounds, such as linear temporal logic or linear types or just any linearity guarantee period. That said, it is okay to have hidden dependencies, as long as somebody is allowed to check those dependencies at any point in time they please. A bad hidden dependency would be something like a NAT firewall causing a protocol to stop working. But an even more pernicious hidden dependency is in all software: BUGS! Dealing with bugs has led Carl Hewitt to propose we should just live with them, and reason about live systems using inconsistency tolerant logic. He prefers his own logic, DirectLogic. Cheers, Z-Bo ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc I wonder how these worlds would merge split streams of worlds. Or will worlds only allow branching without combining. Could I pull in another world and start combining them ? Or should they behave as website history, where I use the backbutton to trace may steps? Karl ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Mon, Jul 11, 2011 at 4:43 PM, karl ramberg karlramb...@gmail.com wrote: On Mon, Jul 11, 2011 at 10:23 PM, John Zabroski johnzabro...@gmail.comwrote: On Mon, Jun 13, 2011 at 11:17 AM, Alan Kay alan.n...@yahoo.com wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. For example, take a look at Alex Warth's Worlds work (and paper) and see how that might be used to deal with larger problems of consistency and version control in a live system. I also believe that we should advance things so that there are no hidden dependencies, and that dependencies are nailed semantically. Alan/Alex, Worlds does not address how to debug a live system other than random state-space exploration. Have you made progress I am not aware of? As I've said before, computer scientists must be much better at studying living systems if they want to build systems that can function at scales that exceed the capacity for humans to configure it. How exactly does Worlds truly deal with larger problems of consistency and version control? The same question applies to David Reed's TeaTime, which is really just Worlds with an illusion of infinite memory. I, too, could edit a PhotoShop image forever and scroll through the history of every edit I ever made using the History view, but I would need a lot of memory to do it. In practice, PhotoShop requires the user to do things like compacting layers and other memory organization techniques. To really make something like TeaTime or Worlds useful, you need bounds on how the history relation of a program affects the input/output relation. Even with bounds, you can still have glitches like the Brock/Ackerman Anomaly. But the nice thing about bounds is there is a lot of mathematical ways you can describe bounds, such as linear temporal logic or linear types or just any linearity guarantee period. That said, it is okay to have hidden dependencies, as long as somebody is allowed to check those dependencies at any point in time they please. A bad hidden dependency would be something like a NAT firewall causing a protocol to stop working. But an even more pernicious hidden dependency is in all software: BUGS! Dealing with bugs has led Carl Hewitt to propose we should just live with them, and reason about live systems using inconsistency tolerant logic. He prefers his own logic, DirectLogic. Cheers, Z-Bo ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc I wonder how these worlds would merge split streams of worlds. Or will worlds only allow branching without combining. Could I pull in another world and start combining them ? Or should they behave as website history, where I use the backbutton to trace may steps? Karl There is a formalism for thinking about what you are describing, called Oracles [1]. (It is used to define Fudgets or Functional Gadgets.) Oracles basically have a decision function that knows which outcome ( World ) is going to materialize (create a side effect). I am oversimplifying, but I think this is what you are asking about. Instead of combining Worlds, you combine outcomes. After all, a World says nothing about how it flows back to reality to create, say, a coin flip. Cheers, Z-Bo [1] http://lambda-the-ultimate.org/node/1665 ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Mon, Jul 11, 2011 at 10:57 PM, John Zabroski johnzabro...@gmail.comwrote: On Mon, Jul 11, 2011 at 4:43 PM, karl ramberg karlramb...@gmail.comwrote: On Mon, Jul 11, 2011 at 10:23 PM, John Zabroski johnzabro...@gmail.comwrote: Much interesting Thanks Karl On Mon, Jun 13, 2011 at 11:17 AM, Alan Kay alan.n...@yahoo.com wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. For example, take a look at Alex Warth's Worlds work (and paper) and see how that might be used to deal with larger problems of consistency and version control in a live system. I also believe that we should advance things so that there are no hidden dependencies, and that dependencies are nailed semantically. Alan/Alex, Worlds does not address how to debug a live system other than random state-space exploration. Have you made progress I am not aware of? As I've said before, computer scientists must be much better at studying living systems if they want to build systems that can function at scales that exceed the capacity for humans to configure it. How exactly does Worlds truly deal with larger problems of consistency and version control? The same question applies to David Reed's TeaTime, which is really just Worlds with an illusion of infinite memory. I, too, could edit a PhotoShop image forever and scroll through the history of every edit I ever made using the History view, but I would need a lot of memory to do it. In practice, PhotoShop requires the user to do things like compacting layers and other memory organization techniques. To really make something like TeaTime or Worlds useful, you need bounds on how the history relation of a program affects the input/output relation. Even with bounds, you can still have glitches like the Brock/Ackerman Anomaly. But the nice thing about bounds is there is a lot of mathematical ways you can describe bounds, such as linear temporal logic or linear types or just any linearity guarantee period. That said, it is okay to have hidden dependencies, as long as somebody is allowed to check those dependencies at any point in time they please. A bad hidden dependency would be something like a NAT firewall causing a protocol to stop working. But an even more pernicious hidden dependency is in all software: BUGS! Dealing with bugs has led Carl Hewitt to propose we should just live with them, and reason about live systems using inconsistency tolerant logic. He prefers his own logic, DirectLogic. Cheers, Z-Bo ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc I wonder how these worlds would merge split streams of worlds. Or will worlds only allow branching without combining. Could I pull in another world and start combining them ? Or should they behave as website history, where I use the backbutton to trace may steps? Karl There is a formalism for thinking about what you are describing, called Oracles [1]. (It is used to define Fudgets or Functional Gadgets.) Oracles basically have a decision function that knows which outcome ( World ) is going to materialize (create a side effect). I am oversimplifying, but I think this is what you are asking about. Instead of combining Worlds, you combine outcomes. After all, a World says nothing about how it flows back to reality to create, say, a coin flip. Cheers, Z-Bo [1] http://lambda-the-ultimate.org/node/1665 ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
Still, databases and file systems are both based on concepts that predate electronic computers. When Windows and Macs came along the document metaphor became prevalent, but in practice this was always just a user friendly name for a file. The layers and layers of slightly broken metaphors never gets simpler. They interact in unpredictable and inconvenient ways that people adapt to, because people are far more adaptable than the machines we build. The rather intense focus on usability in recent years is probably the most powerful tool we have to sweep away all these partially implemented and poorly thought out concepts. User experience is even now the main driving force behind the evolution of programming environments. Even without auto-completion and fancy debuggers, there is a profound growth in the use of dynamic languages. The millions of hours of development that have gone into the tools the major computer vendors have been using to lock people into their platforms are no match. What matters for developers is quick turnaround for debugging problems and code that expresses its intention in a concise and elegant manner. This is a profound change in the past 5 years. So how can you make simple languages simple to use? Developers have been rejecting complex GUIs in favour of plain text. If Google and Apple are right, every program component isn't a file on a disk, but rather some network accessible resource. On the other hand, a cynical person would say that the cloud is just another broken metaphor to pile onto the heap, because all this stuff is going to be built on top of the concepts we are already stuck with. Virtual environments might also be a good way to keep the detritus of the past from cluttering the future, but a cynic might have some opinions about that too :-) Cheers Steve On Tue, Jun 21, 2011 at 7:30 PM, Julian Leviston jul...@leviston.net wrote: Yeah I've been using this DBMS on and off for years. I have a copy of it installed on my machine. It's INCREDIBLY fast. The interesting thing for me recently was that they've built an implementation of Ruby on top of it, and called it MagLev, and it's now possible to have persisted, fast, pure object-oriented data store in Ruby and/or Rails applications... and as we know, there's an implementation of O/Meta for Ruby... ;-) Julian. On 22/06/2011, at 4:58 AM, Steve Wart wrote: Also of interest might be GemStone/S, an ODBMS that is still heavily used in at least two large Investment Banks (JP Morgan and UBS), as well as several large shipping companies (OOCL, Coscon, and NYK). Marketing blurb here http://seaside.gemstone.com/docs/OOCL_SuccessStory.pdf Basically it's an environment that replaces the limitations of SQL with the limitations of Smalltalk. It's interesting that the debate about O/R mapping is still stuck in the same place it was in 1990. After all these years I still think it would be easier to implement relational semantics on top of this sort of environment than vice-versa, but last time I checked Oracle and Microsoft weren't taking my calls. This paper is kind of old, but it describes the implementation of a DBMS inspired by the description of Smalltalk in the famous 1981 issue of Byte magazine. http://portal.acm.org/citation.cfm?id=602300 Making smalltalk a database system To overcome limitations in the modeling power of existing database systems and provide a better tool for database application programming, Servio Logic Corporation is developing a computer system to support a set-theoretic data model in an object-oriented programming environment We recount the problems with existing models and database systems We then show how features of Smalltalk, such such as operational semantics, its type hierarchy, entity identity and the merging of programming and data language, solve many of those problems Nest we consider what Smalltalk lacks as a database system secondary storage management, a declarative semantics, concurrency, past states To address these shortcomings, we needed a formal data model We introduce the GemStone data model, and show how it helps to define path expressions, a declarative semantics and object history in the OPAL language We summarize similar approaches, and give a brief overview of the GemStone system implementation Cheers, Steve On Tue, Jun 21, 2011 at 11:38 AM, Max OrHai max.or...@gmail.com wrote: There are certainly practical differences between conventional relational databases and hierarchical filesystems, without having to get into implementation details. I'm sure at least a few people on this list are familiar with the BeOS filesystem, which acted much more like a relational DBMS than most filesystems do... over a decade later, we've now got hacked-on DBMS-like functionality in the form of (e.g.) Spotlight, but most users are stuck with the little walled-off databases presented by their media library and email application
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/22/2011 5:08 PM, Steve Wart wrote: Still, databases and file systems are both based on concepts that predate electronic computers. When Windows and Macs came along the document metaphor became prevalent, but in practice this was always just a user friendly name for a file. The layers and layers of slightly broken metaphors never gets simpler. They interact in unpredictable and inconvenient ways that people adapt to, because people are far more adaptable than the machines we build. I personally consider documents+folders and files+directories to be equivalent. ideally, one could discard the metaphors, but if this involves the names as well, then what does one call them?... lumps and nodes?... it comes up as a thought that an HDB and a filesystem could be, potentially, unified, however doing so could create a complicated interface, as both are traditionally accessed differently (unless one effectively eliminates the concept of opening/closing files as well). an example of the later would be replacing, say, file open/close/read/write, say, with a handle to the file, and treating the file, for example, like a large byte array. hmm, say: var f=File.getFileAsArray(~/foo.bin); var c; c=f; while(!c.eof) { printf(%d , *c);//print byte printf(%d , *(c.asWord));//print word (16-bit LE unsigned short) printf(%d\n, *(c.asDWord));//print dword (32-bit LE unsigned int) c++; //step to next byte } where asWord/asDWord would coerce the array to a virtual word or dword array. maybe there are ways the interface can be made nicer, and is ideally without being horridly inefficient (such as the hair in the above if the FileAsArray is to behave like a proper array type). for example, if every FileAsArray+Integer - new FileAsArray, although this could work, it would spew garbage and be slow in the above (whereas in-place mutation has its own costs). a partial trick (used in implementing array iteration) was to generally use a pointer into the array body as the index, but this would require memory-mapping the file (and thus not work well with large files on 32-bit systems). VM-level value-types are another option, but these are a relatively costly feature in general (as they are allocated/copied/freed more-or-less continuously in the present VM). all this would likely mean having to use file-arithmetic sparingly, and instead mostly access array-like files by index. for(i=0; ic.length; i++) printf(%d , c[i]); but, in any case, could offer an alternative to the traditional read/write/seek interface. hmm... The rather intense focus on usability in recent years is probably the most powerful tool we have to sweep away all these partially implemented and poorly thought out concepts. User experience is even now the main driving force behind the evolution of programming environments. Even without auto-completion and fancy debuggers, there is a profound growth in the use of dynamic languages. The millions of hours of development that have gone into the tools the major computer vendors have been using to lock people into their platforms are no match. What matters for developers is quick turnaround for debugging problems and code that expresses its intention in a concise and elegant manner. This is a profound change in the past 5 years. potentially, but there are limits, and the target is still relatively stable/slow-moving, at least going by TIOBE and similar. meanwhile, trying to balance being conservative and practical with trying out possibilities is difficult. So how can you make simple languages simple to use? Developers have been rejecting complex GUIs in favour of plain text. If Google and Apple are right, every program component isn't a file on a disk, but rather some network accessible resource. On the other hand, a cynical person would say that the cloud is just another broken metaphor to pile onto the heap, because all this stuff is going to be built on top of the concepts we are already stuck with. cloud == HTTP, CIFS, WebDav, ... have some servers, and pile together a bunch of assorted stuff (network file-sharing, running virtualized Linux instances in VMware or QEMU, ...) and suddenly from this a cloud emerges... although, maybe it is a good thing, or a cloud emerging from a big burning pile of crap, and service-providers blowing the smoke up... well... I would much rather keep most of the disk/memory/CPU/... on the client-side, or use a hybrid model. say, where for ones' low-power mobile devices, a lot of the raw power is provided, say, by a PC they have running at their house, as then one has no obligation to pay a service provider for their storage and CPU usage. about the only real place it really makes sense IMO is for things like high-volume web-servers / ..., where a service provider can probably provide the resources (processing power and bandwidth) in a more cost-effective manner than, say, getting a
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 23/06/2011, at 10:08 AM, Steve Wart wrote: So how can you make simple languages simple to use? Developers have been rejecting complex GUIs in favour of plain text. If Google and Apple are right, every program component isn't a file on a disk, but rather some network accessible resource. On the other hand, a cynical person would say that the cloud is just another broken metaphor to pile onto the heap, because all this stuff is going to be built on top of the concepts we are already stuck with. I find the simplest thing is actually nothing at all. It's there before you start. As the Rubinius guys' adage goes: (There is) no code (that) is faster than (having) no code (at all). (Brackets added by me, for understanding purposes, because I find the way they usually write that to be too simple to aide understanding). Thus... (my real point here)... the fact that we call this stuff code or language is at fault in my opinion. If something is codified, there's something wrong. Things need to be immediately obvious when you observe them. Easy to say, hard to implement. Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
The emergence of ubiquitous internet media and the distribution architecture we've built around it has shifted attention to the communication needs of people. Many are employed in the Web industry and others unemployed... market forces come into play. It's all possible because of established (and apparently very persistent!) protocols, like IPv4 and HTTP. Any technology that is fluent in these can potentially survive in the marketplace. If it does other, more important things better than its competitors, it may even thrive. Of course, these protocols can have serious defects, but even so they are somewhat liberating. In the realm of programming, they are things like plain text and language specifications. People who want a small language should be prepared to be somewhat idiosyncratic, if they want to express big or complex programs. I mean 'language' here not just in terms of a programming language definition but rather to mean all constructs (or, more fundamentally, concepts and conventions) which are shared, which belong in some sense to a culture rather than an individual. If they don't enlarge the language (usually via some library) they enlarge their personal idiom instead, which may not be as portable. Progress depends on the ability of individuals to nonetheless communicate these new ideas 'uphill' so to speak, but more immediately on the ability to make them, so as to make them better. Some leverage here may be available through improvements in the notion of expressivity itself. There is a wonderfully large number of experiments being done in dynamic language design these days, from Ruby to REBOL... If more of them would take what I'd say is the major lesson of Smalltalk and become fully integrated personal computing environments, rather than living off the previous generation's operating systems, perhaps they might be able to move some of the uncomfortable fixed points of usability and complexity, as well as gain more user-programmers altogether. I think FONC is, at least, a pointer in the right direction; a reminder that there's plenty of room out there beyond the familiar. -- Max On Wed, Jun 22, 2011 at 5:08 PM, Steve Wart st...@wart.ca wrote: Still, databases and file systems are both based on concepts that predate electronic computers. When Windows and Macs came along the document metaphor became prevalent, but in practice this was always just a user friendly name for a file. The layers and layers of slightly broken metaphors never gets simpler. They interact in unpredictable and inconvenient ways that people adapt to, because people are far more adaptable than the machines we build. The rather intense focus on usability in recent years is probably the most powerful tool we have to sweep away all these partially implemented and poorly thought out concepts. User experience is even now the main driving force behind the evolution of programming environments. Even without auto-completion and fancy debuggers, there is a profound growth in the use of dynamic languages. The millions of hours of development that have gone into the tools the major computer vendors have been using to lock people into their platforms are no match. What matters for developers is quick turnaround for debugging problems and code that expresses its intention in a concise and elegant manner. This is a profound change in the past 5 years. So how can you make simple languages simple to use? Developers have been rejecting complex GUIs in favour of plain text. If Google and Apple are right, every program component isn't a file on a disk, but rather some network accessible resource. On the other hand, a cynical person would say that the cloud is just another broken metaphor to pile onto the heap, because all this stuff is going to be built on top of the concepts we are already stuck with. Virtual environments might also be a good way to keep the detritus of the past from cluttering the future, but a cynic might have some opinions about that too :-) Cheers Steve On Tue, Jun 21, 2011 at 7:30 PM, Julian Leviston jul...@leviston.net wrote: Yeah I've been using this DBMS on and off for years. I have a copy of it installed on my machine. It's INCREDIBLY fast. The interesting thing for me recently was that they've built an implementation of Ruby on top of it, and called it MagLev, and it's now possible to have persisted, fast, pure object-oriented data store in Ruby and/or Rails applications... and as we know, there's an implementation of O/Meta for Ruby... ;-) Julian. On 22/06/2011, at 4:58 AM, Steve Wart wrote: Also of interest might be GemStone/S, an ODBMS that is still heavily used in at least two large Investment Banks (JP Morgan and UBS), as well as several large shipping companies (OOCL, Coscon, and NYK). Marketing blurb here http://seaside.gemstone.com/docs/OOCL_SuccessStory.pdf Basically it's an environment that replaces the limitations of SQL
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 23/06/2011, at 12:35 PM, Max OrHai wrote: People who want a small language should be prepared to be somewhat idiosyncratic, if they want to express big or complex programs. I mean 'language' here not just in terms of a programming language definition but rather to mean all constructs (or, more fundamentally, concepts and conventions) which are shared, which belong in some sense to a culture rather than an individual. If they don't enlarge the language (usually via some library) they enlarge their personal idiom instead, which may not be as portable. Progress depends on the ability of individuals to nonetheless communicate these new ideas 'uphill' so to speak, but more immediately on the ability to make them, so as to make them better. Some leverage here may be available through improvements in the notion of expressivity itself. There is a wonderfully large number of experiments being done in dynamic language design these days, from Ruby to REBOL... If more of them would take what I'd say is the major lesson of Smalltalk and become fully integrated personal computing environments, rather than living off the previous generation's operating systems, perhaps they might be able to move some of the uncomfortable fixed points of usability and complexity, as well as gain more user-programmers altogether. I think FONC is, at least, a pointer in the right direction; a reminder that there's plenty of room out there beyond the familiar. So, by that reasoning, GNU SmallTalk doesn't exhibit what you'd express as being the major lesson from SmallTalk? Interestingly, one of the most irritating things for me was the User Interface when I first came to Squeak, having programmed in GemStone SmallTalk for a number of years (which we were programming via snippets plugged into HTML, and sometimes via GemStone/J, on a mac natively, not inside a SmallTalk environment at all). At that point I had experience in AmigaDOS, MacOS (pre X), Windows 95, NT and GEOS (commodore 64 based GUI) would you believe... Squeak was supremely irritating for two reasons: Firstly, the UI was completely different without having any easy way to say hey, I'm a n00b, turn on n00b mode so I can learn this thing, and second it seemed far too easy to make irreparable damage, or even lose what I was doing... (probably due to point 1). So I'd be very much against your build the whole world so you can express the language philosophy. Potentially, though, I'd say having the idea of a SmallTalk-like image loaded into a fully graphical interface AS AN OPTION is awesome... I'd love to have a visual debugger for my Ruby code the likes of the SmallTalk ones... (to a degree, MagLev kind of allows this as a possibility). My issue seems to be that if you change the language at a base level while in one of those environments, you kind of break everything... don't you? They don't really lead to experimentation very well. Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
I wish that emacs / vi, GBD, and the Unix shell had anything close to the n00b mode provided by Squeak in terms of inline documentation, tool tips, menus etc.. But, yeah, Squeak has serious problems, and you're absolutely right that it's too hard to tinker with the core of it, just like every other computing system on the planet. When you hack your kernel, should you be free enough to do so, you *expect* to break everything... don't you? You'll notice we've been discussing things like Worlds, which might be one way to address this particular issue. Pioneering isn't for everyone, but the conventional roads don't lead where I want to go. My daily software environment has been over-engineered to solve too many problems I don't have. I'd like to be able to shed some of the excess complexity of a conventional OS while retaining the media capabilities and increasing the overall expressive power. I don't mind giving up the comfort of familiar habits, and I don't give a whit about delivering a product to anyone. That's why I read this list. -- Max On Wed, Jun 22, 2011 at 8:21 PM, Julian Leviston jul...@leviston.netwrote: On 23/06/2011, at 12:35 PM, Max OrHai wrote: People who want a small language should be prepared to be somewhat idiosyncratic, if they want to express big or complex programs. I mean 'language' here not just in terms of a programming language definition but rather to mean all constructs (or, more fundamentally, concepts and conventions) which are shared, which belong in some sense to a culture rather than an individual. If they don't enlarge the language (usually via some library) they enlarge their personal idiom instead, which may not be as portable. Progress depends on the ability of individuals to nonetheless communicate these new ideas 'uphill' so to speak, but more immediately on the ability to make them, so as to make them better. Some leverage here may be available through improvements in the notion of expressivity itself. There is a wonderfully large number of experiments being done in dynamic language design these days, from Ruby to REBOL... If more of them would take what I'd say is the major lesson of Smalltalk and become fully integrated personal computing environments, rather than living off the previous generation's operating systems, perhaps they might be able to move some of the uncomfortable fixed points of usability and complexity, as well as gain more user-programmers altogether. I think FONC is, at least, a pointer in the right direction; a reminder that there's plenty of room out there beyond the familiar. So, by that reasoning, GNU SmallTalk doesn't exhibit what you'd express as being the major lesson from SmallTalk? Interestingly, one of the most irritating things for me was the User Interface when I first came to Squeak, having programmed in GemStone SmallTalk for a number of years (which we were programming via snippets plugged into HTML, and sometimes via GemStone/J, on a mac natively, not inside a SmallTalk environment at all). At that point I had experience in AmigaDOS, MacOS (pre X), Windows 95, NT and GEOS (commodore 64 based GUI) would you believe... Squeak was supremely irritating for two reasons: Firstly, the UI was completely different without having any easy way to say hey, I'm a n00b, turn on n00b mode so I can learn this thing, and second it seemed far too easy to make irreparable damage, or even lose what I was doing... (probably due to point 1). So I'd be very much against your build the whole world so you can express the language philosophy. Potentially, though, I'd say having the idea of a SmallTalk-like image loaded into a fully graphical interface AS AN OPTION is awesome... I'd love to have a visual debugger for my Ruby code the likes of the SmallTalk ones... (to a degree, MagLev kind of allows this as a possibility). My issue seems to be that if you change the language at a base level while in one of those environments, you kind of break everything... don't you? They don't really lead to experimentation very well. Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/20/2011 9:19 PM, Julian Leviston wrote: Hi... (see below)... On 21/06/2011, at 3:42 AM, BGB wrote: On 6/20/2011 3:22 AM, Julian Leviston wrote: On 20/06/2011, at 8:06 PM, BGB wrote: hmm... S-Expression database?... sort of like a hybrid between a database and a persistent store. or such... I'd like to know if you think there's a difference between a filesystem and a database... conceptually... or such... interesting thought... Note that I asked if you think there's a difference not how they differ. I'd be surprised if there were any people on this list who didn't know how they differed. I don't consider there to be much of a difference between the two, conceptually - they are both concerned with the retrieval and storage of data (I'm using the term 'data' here to mean any form of raw information at all, useful or otherwise, including programs). (I got sidetracked and forgot to answer earlier...). but, well, I consider them as different, as they serve different roles... filesystems serve a very narrowly defined role, so possible variation is limited before one risks compromising compatibility with existing software (both WRT removing features, or adding too many fundamentally new ones). compromising this compatibility would also severely compromise the general usability of the system. however, one could argue that filesystems are probably a fairly narrowly defined subset of databases, so in this sense there is overlap. for example, humans are mammals, but not all mammals are humans (tigers aren't hosting TV shows, there are no cities of bears, elephants aren't doing construction work, ...). so, it seems a similar level of difference... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
There are certainly practical differences between conventional relational databases and hierarchical filesystems, without having to get into implementation details. I'm sure at least a few people on this list are familiar with the BeOS filesystem, which acted much more like a relational DBMS than most filesystems do... over a decade later, we've now got hacked-on DBMS-like functionality in the form of (e.g.) Spotlight, but most users are stuck with the little walled-off databases presented by their media library and email application software. Once again, it's not a technical issue so much as a matter of perspective. http://www.theregister.co.uk/2002/03/29/windows_on_a_database_sliced/ -- Max On Mon, Jun 20, 2011 at 11:31 PM, BGB cr88...@gmail.com wrote: On 6/20/2011 9:19 PM, Julian Leviston wrote: Hi... (see below)... On 21/06/2011, at 3:42 AM, BGB wrote: On 6/20/2011 3:22 AM, Julian Leviston wrote: On 20/06/2011, at 8:06 PM, BGB wrote: hmm... S-Expression database?... sort of like a hybrid between a database and a persistent store. or such... I'd like to know if you think there's a difference between a filesystem and a database... conceptually... or such... interesting thought... Note that I asked if you think there's a difference not how they differ. I'd be surprised if there were any people on this list who didn't know how they differed. I don't consider there to be much of a difference between the two, conceptually - they are both concerned with the retrieval and storage of data (I'm using the term 'data' here to mean any form of raw information at all, useful or otherwise, including programs). (I got sidetracked and forgot to answer earlier...). but, well, I consider them as different, as they serve different roles... filesystems serve a very narrowly defined role, so possible variation is limited before one risks compromising compatibility with existing software (both WRT removing features, or adding too many fundamentally new ones). compromising this compatibility would also severely compromise the general usability of the system. however, one could argue that filesystems are probably a fairly narrowly defined subset of databases, so in this sense there is overlap. for example, humans are mammals, but not all mammals are humans (tigers aren't hosting TV shows, there are no cities of bears, elephants aren't doing construction work, ...). so, it seems a similar level of difference... __**_ fonc mailing list fonc@vpri.org http://vpri.org/mailman/**listinfo/fonchttp://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
Also of interest might be GemStone/S, an ODBMS that is still heavily used in at least two large Investment Banks (JP Morgan and UBS), as well as several large shipping companies (OOCL, Coscon, and NYK). Marketing blurb here http://seaside.gemstone.com/docs/OOCL_SuccessStory.pdf Basically it's an environment that replaces the limitations of SQL with the limitations of Smalltalk. It's interesting that the debate about O/R mapping is still stuck in the same place it was in 1990. After all these years I still think it would be easier to implement relational semantics on top of this sort of environment than vice-versa, but last time I checked Oracle and Microsoft weren't taking my calls. This paper is kind of old, but it describes the implementation of a DBMS inspired by the description of Smalltalk in the famous 1981 issue of Byte magazine. http://portal.acm.org/citation.cfm?id=602300 Making smalltalk a database system To overcome limitations in the modeling power of existing database systems and provide a better tool for database application programming, Servio Logic Corporation is developing a computer system to support a set-theoretic data model in an object-oriented programming environment We recount the problems with existing models and database systems We then show how features of Smalltalk, such such as operational semantics, its type hierarchy, entity identity and the merging of programming and data language, solve many of those problems Nest we consider what Smalltalk lacks as a database system secondary storage management, a declarative semantics, concurrency, past states To address these shortcomings, we needed a formal data model We introduce the GemStone data model, and show how it helps to define path expressions, a declarative semantics and object history in the OPAL language We summarize similar approaches, and give a brief overview of the GemStone system implementation Cheers, Steve On Tue, Jun 21, 2011 at 11:38 AM, Max OrHai max.or...@gmail.com wrote: There are certainly practical differences between conventional relational databases and hierarchical filesystems, without having to get into implementation details. I'm sure at least a few people on this list are familiar with the BeOS filesystem, which acted much more like a relational DBMS than most filesystems do... over a decade later, we've now got hacked-on DBMS-like functionality in the form of (e.g.) Spotlight, but most users are stuck with the little walled-off databases presented by their media library and email application software. Once again, it's not a technical issue so much as a matter of perspective. http://www.theregister.co.uk/2002/03/29/windows_on_a_database_sliced/ -- Max On Mon, Jun 20, 2011 at 11:31 PM, BGB cr88...@gmail.com wrote: On 6/20/2011 9:19 PM, Julian Leviston wrote: Hi... (see below)... On 21/06/2011, at 3:42 AM, BGB wrote: On 6/20/2011 3:22 AM, Julian Leviston wrote: On 20/06/2011, at 8:06 PM, BGB wrote: hmm... S-Expression database?... sort of like a hybrid between a database and a persistent store. or such... I'd like to know if you think there's a difference between a filesystem and a database... conceptually... or such... interesting thought... Note that I asked if you think there's a difference not how they differ. I'd be surprised if there were any people on this list who didn't know how they differed. I don't consider there to be much of a difference between the two, conceptually - they are both concerned with the retrieval and storage of data (I'm using the term 'data' here to mean any form of raw information at all, useful or otherwise, including programs). (I got sidetracked and forgot to answer earlier...). but, well, I consider them as different, as they serve different roles... filesystems serve a very narrowly defined role, so possible variation is limited before one risks compromising compatibility with existing software (both WRT removing features, or adding too many fundamentally new ones). compromising this compatibility would also severely compromise the general usability of the system. however, one could argue that filesystems are probably a fairly narrowly defined subset of databases, so in this sense there is overlap. for example, humans are mammals, but not all mammals are humans (tigers aren't hosting TV shows, there are no cities of bears, elephants aren't doing construction work, ...). so, it seems a similar level of difference... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/19/2011 9:49 PM, Julian Leviston wrote: On 20/06/2011, at 2:33 PM, BGB wrote: in a sense, the metaphor no longer works, and should likely itself be left to fall into the recycle-bin of history. worse yet is having to read stuff written by people who actually take this metaphor seriously. Given the historical perspective, it was appropriate at the time. These days, our computers are so vastly scaled beyond the original intention of the file metaphor that it's getting silly, I'd grant you that. yep. It's not really any surprise, then, that Apple's trying to get rid of the file system, is it? :) Mind you, I think the app metaphor is just as crappy, personally. I like the idea of workflows much more, and combining a few small simple tools together to get some particular job done. interestingly, I don't believe in getting rid of the file-system, per-se, as technically it works fairly well and is a proven piece of technology. but, mostly, I just want the filing-cabinet metaphor to go away, if anything, so that people making stupid computer/filing-cabinet analogies will go away, or worse yet, talking about computers implying that they themselves are subject to the same sort of limitations as filing cabinets, or describing technical limitations WRT computers and data storage which haven't really been the case since maybe the 70s or 80s... (such as claiming that files are simply collections of fixed-format records and are unable to store heterogeneous data, leaving me to think WTF?...). if I could make any notable change to how filesystems worked, it would be likely to introduce user-defined VFS systems as an OS-level facility. this would mean one of several things: ability to more easily introduce user-defined virtual directories as a part of the host operating file-system (as is, on both Windows and Linux, it is a little nasty...); ability to run apps (and parts of apps) inside of custom VFS's (more like finer-grained chroot); potentially a virtual mount facility, where an app can locally mount/unmount volumes it has rights to, and can choose whether or not they are visible to the external OS (say, an app might mount its own data-files as volumes, and choose that only itself can see them); ... as-is, it is generally less nasty to do this within the app, essentially having the app provide its own VFS and drivers (for example, my project can mount zip-files as volumes, including for random read/write, albeit with a few limitations...). going more extreme, one could begin to blur the line between files and in-program objects and code (say, packages, functions/methods/variables, ... could be potentially visible as part of the VFS). implementation-wise, there is likely to be a layer of separation above the true filesystem (this would introduce a huge number of tiny files which would not map effectively onto most existing filesystems, and so it would seem better to introduce this as a virtual mount). another possible idea could be to go from a traditional mount/unmount/fstab style system, to possibly supporting a mechanism partway between mounts and symlinks (one doesn't mount a volume, they link to it...). I am partly imagining links partway between Unix-style symlinks, and the links supported by Windows, but with more features (such as ability to mount something via accessing a link, or redirect to a network resource such as a CIFS/HTTP/WebDav/FTP share). and, for something like the prior concept, they can create a link from a directory into a program, allowing the program to fill a role partway between being an application, an FS driver, and an OS service. taken further, this could also potentially be partly used as an alternative to traditional DLL/shared-library and IPC/RPC mechanics as well (could get hairy, primarily if C/C++ and data sharing are involved, potentially limiting to high-level managed types, which may either be copied or passed as handles...). worst case for the above, probably can't be too much worse than MS's COM system (COM / COM+ / DCOM). a proper HLL could probably mostly hide the underlying mechanisms. trivia: in a much-older version of my projects, it was possible to open network sockets purely via a VFS vffopen() operation, but this feature later died with a rewrite of my VFS mechanism some years back (I may eventually re-add it, possibly among several other VFS features, namely cached HTTP mounts and ability to support virtual file encryption). basically, the rewrite partly broke my ability to route network sockets over the local VFS (in general), as well as several other things. my code also generally works within a local VFS, rather than directly using the OS provided FS facilities. the VFS is actually one of the oldest parts of my codebase (dating to sometime around the late 90s...). For example, when web programming on a specific web app, I use a web browser, a text editor, a
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 20/06/2011, at 4:33 PM, BGB wrote: interestingly, I don't believe in getting rid of the file-system, per-se, as technically it works fairly well and is a proven piece of technology. Interestingly, I disagree entirely. Finding things is a pain for most people (including myself). Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 20/06/2011, at 4:33 PM, BGB wrote: For example, when web programming on a specific web app, I use a web browser, a text editor, a database management program, a command line, and a couple other tools. It'd be nice to be able to fit these tools together into a pseudo-app and then build documents for this pseudo-app... that were accessible within the pseudo-app (ie not the file system) to use Apple's idea, and that could simply do all the things I generally need to do... (there are only a few tasks I generally do and none of them correlate directly into any one particular application). I love the way I edit text in my one particular text editor. Why do I have to use a different editor to edit my email text? lol... it makes little sense. well, mostly I am using Windows Explorer and the shell (both CMD and Bash) for managing things on Windows, and this setup works adequately. admittedly, I am not entirely sure how the idea you are describing will work, so maybe it can be described in more detail? (like, what parts it may contain and how they may fit together...). Perhaps you might take a look at Panic's Coda http://www.panic.com/coda/ This is *one instance* of what I'm talking about generally... it does for most web developers what I was describing... but I'm talking about having a more modular approach in that you should be able to build a tool that incorporates other things, too (for example, I might decide I want a particular colour-picker in there, or a specific interactive language reference or API reference, or perhaps I'd like to have some form of rudimentary image editing, because I do that in my work). You get me? Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/19/2011 11:54 PM, Julian Leviston wrote: On 20/06/2011, at 4:33 PM, BGB wrote: interestingly, I don't believe in getting rid of the file-system, per-se, as technically it works fairly well and is a proven piece of technology. Interestingly, I disagree entirely. Finding things is a pain for most people (including myself). a relevant distinction can be made though: for the user; or, for programs... it is like, for programs, systems with a structure similar to the Windows System Registry are very useful, but for users, they can become hopelessly confused, and naive changes risk irreparably breaking the OS... (one of my first personal major encounters with the System Registry had, at the time, rendered the computer unable to boot...). Unix-style single-root-mount systems are IMO most convenient from a software-development perspective, albeit they have a few present severe limitations (mostly that it is nearly impossible to keep applications and the OS separate), as apparently Unix and Linux were designed with it in mind that apparently of course, user applications and data will go in /usr/bin and /usr/var and similar, and system applications and data in /bin and /var a few features I sort of wish Linux had: ~/bin, ~/var, ~/etc, ... (or: ~/.usr/bin, ~/.usr/var, ~/.usr/etc, ...), which would be used for per-user programs and settings (vs the current mess that ~ tends to become); a shared-object system which looked up SO's more like Windows does DLLs (largely eliminating the need for rpath and similar); ... a Unix-style organization for a VFS is fairly helpful though. for users, it is different: MS partly does the whole My Documents thing, I guess as an effort to simplify things for newbies (albeit, IMO, they did it poorly). one possibility would be organizing the filesystem differently for the user and for the OS. ... in my case, I have a personal file-management system which mostly prevents me losing stuff, but is technically a fairly complex/bureaucratic process (would be difficult to really elaborate on). OTOH, my dad just sort of naively organizes things in a deep hierarchy based on associations, and so tends to loose stuff fairly often. or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 2011-06-19 Sun, at 09:33 PM, BGB wrote: .. which mappings are more natural and under which circumstances seems to be the important question and one, AFAICS, that may not well answered by simply replacing words with ideograms and expressions with boxes and arrows. agreed... I really don't believe graphical solutions are necessarily ideal. but, at the same time, there is also the matter of finding the right tool for the job. for example, code works great for expression program logic, but falls flat for many other tasks: creating a graphical image; creating a 3D model or scene; ... in these cases, having more specialized tools tends to be far more effective. I agree and notice that none of the good solutions we have for those involve ideograms and... boxes and arrows. It's as if compsci culture is unable to let go of flow charts, even if they aren't used for constructing complex circuits anymore which (AFAIK) was the inspiration for their use. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/19/2011 11:58 PM, Julian Leviston wrote: On 20/06/2011, at 4:33 PM, BGB wrote: For example, when web programming on a specific web app, I use a web browser, a text editor, a database management program, a command line, and a couple other tools. It'd be nice to be able to fit these tools together into a pseudo-app and then build documents for this pseudo-app... that were accessible within the pseudo-app (ie not the file system) to use Apple's idea, and that could simply do all the things I generally need to do... (there are only a few tasks I generally do and none of them correlate directly into any one particular application). I love the way I edit text in my one particular text editor. Why do I have to use a different editor to edit my email text? lol... it makes little sense. well, mostly I am using Windows Explorer and the shell (both CMD and Bash) for managing things on Windows, and this setup works adequately. admittedly, I am not entirely sure how the idea you are describing will work, so maybe it can be described in more detail? (like, what parts it may contain and how they may fit together...). Perhaps you might take a look at Panic's Coda http://www.panic.com/coda/ This is *one instance* of what I'm talking about generally... it does for most web developers what I was describing... but I'm talking about having a more modular approach in that you should be able to build a tool that incorporates other things, too (for example, I might decide I want a particular colour-picker in there, or a specific interactive language reference or API reference, or perhaps I'd like to have some form of rudimentary image editing, because I do that in my work). You get me? errm, the modular part sort of sounds like what OLE and COM were meant to be (although presumably without all the MS or the suck, and ideally without big security holes like putting virus-laden ActiveX controls in emails...). the linked-to site sort of sounds like an IDE or something... I am not certain I follow how this would get rid of file-systems though... I am not aware of any good alternative to the filesystem which is generally better than the filesystem (can effectively manage huge numbers of files and multiple TB of disk space, can effectively multiplex between a large number of apps, and still is accessible to mere humans, ...). also, the vast majority of existing software would break if no FS were available. although, there are things which are lacking with traditional OS-level filesystems: ability to have localized and customized filesystems (usually done via app-local VFS's); ability to easily sandbox or virtualize the filesystem (apart from fairly heavy-handed/costly mechanisms, such as chroot); ability to see into app-internal data (can be handled via FUSE on Linux, but AFAIK there is no good analogue for Windows); generally require jerkoff to access network resources (although GVFS does this, but the Linux VFS requires mounts, and Windows requires mount as drive letter or using Win32 API calls to be able to access UNC files, which for who-knows-what-reason don't seem to work with fopen/fclose or open/close last I checked, and instead require using OpenFile or such...); ... sadly, the least nasty (IMO) option is essentially to just have ones' program provide and use its own VFS internally... actually, Steam also does this (for one who wants their apps to work with GCF files) but sadly the process of connecting to the Steam VFS is ... nasty... hence, even then, one still needs their own VFS... or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/20/2011 2:19 AM, Julian Leviston wrote: On 20/06/2011, at 6:33 PM, BGB wrote: I am not certain I follow how this would get rid of file-systems though... I am not aware of any good alternative to the filesystem which is generally better than the filesystem (can effectively manage huge numbers of files and multiple TB of disk space, can effectively multiplex between a large number of apps, and still is accessible to mere humans, ...). Really? So you don't like the idea of an application managing its own content? Effectively saying hey, let's store our data with our code... which is the encapsulation pattern of OOP isn't it? I missed wherever this was mentioned... but, no, this is not generally ideal either IMO. if an image-based strategy, it is my personal belief that these are unlikely to (in themselves) be a general-purpose workable strategy (if contrasted with a file-based, or file-backed strategy). databases are sort of a compromise IMO, as then one can store their data in a database, and fetch it back out. IMO, this is better with hierarchical (registry-like databases) though, as IMO most generic data-storage tasks are a poor match for an RDBMS (since it is generally a pain to put data into or get it out of an RDBMS), but an HDB usually matches a little more closely with application data-storage tasks IME. in the case of my BGBScript language, the HDB actually forms a fairly important part of the underlying structure of the VM. but, a database is still stored as files... I guess XML is also possible/popular, but I am not aware of any particularly scalable way to access/query/... lots of XML-based data (and a DB which quickly bogs down is not exactly ideal...). also, by itself, XML isn't terribly easy to work with either... hmm... S-Expression database?... sort of like a hybrid between a database and a persistent store. or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 20/06/2011, at 8:06 PM, BGB wrote: hmm... S-Expression database?... sort of like a hybrid between a database and a persistent store. or such... I'd like to know if you think there's a difference between a filesystem and a database... conceptually... or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/20/2011 3:22 AM, Julian Leviston wrote: On 20/06/2011, at 8:06 PM, BGB wrote: hmm... S-Expression database?... sort of like a hybrid between a database and a persistent store. or such... I'd like to know if you think there's a difference between a filesystem and a database... conceptually... or such... interesting thought... well, filesystems are generally hierarchical, don't generally support user-defined fields, and store all data as large binary globs. some filesystems (such as HFS/HFS+ and NTFS) allow multiple forks per file, others don't (FAT32 / EXT* / ...). generally, filesystems store data in terms of disk-blocks, and often make little/no provision for tiny files (partial exception being EXT* and ReiserFS, the former supporting inlining the contents of small files into the inode, the latter supporting the storage of sub-block files into B+Tree leaves). databases may come in any number of varieties, and generally store structured or semi-structured information; the contents of a database are generally individual datums, rather than binary globs; typically, databases store contents according to user-defined structures; typically, databases are stored using structures such as B+Trees; ... for example, the HDB used for my VM framework has a structure like: each node is identified by a path, generally with a POSIX-style name foo/bar/baz; each node may contain a number of key/value pairs, with a special null/default key internally named '_', and the key is identified following ':', and sometimes key indices are used following a '.', ... stored values are generally untyped, and treated as if they were strings. foo/bar/baz:name node: foo/bar/baz key: name foo/bar/baz:item.3 node: foo/bar/baz key: item index: 3 the index allows treating the key like a small array. possible, but not currently supported (at least not efficiently) would be to apply an index to a node, allowing treating the node as a makeshift indexed table: foo/bar/baz.59:name the optimization would be to transform the above into a key-index: foo/bar/baz:name.59, allowing for storing the values as arrays. however, in this case, table-like nodes would not allow for indexed keys: foo/bar/baz.59:item.5 since this would require double-indexing, but the keys are presently only defined as 1D arrays. at present, this will work, as the node index would just store multiple nodes with dotted names (baz.59 will simply be interpreted as a nodes' name). as-is, node names may also begin with '.', however these nodes are treated as volatile and effectively will not be saved back into the database (this mechanism is generally used for storing volatile information, namely information about things like environment variables, which libraries or modules are currently loaded, ...). so .var/foo:name is volatile, as neither .var nor any of its children will be saved to disk. note: the present system does not allow for non-trivial queries (besides ?next, ?prev, ...), but interestingly, for most uses of this system, one doesn't generally need to perform queries (much like, for the most part, application code doesn't really need readdir either, since its main use is mostly for presenting directory listings to the user). it is worth noting that the design of this system was originally partly inspired by the Windows Registry, but there are differences (the nodes being untyped, and the use of '/' rather than '\', and the present lack of hives albeit a similar mechanism may be needed for other reasons, and may need to be retrofitted on, that or supporting in-database mounts and links...). the external serialized database format somewhat resembles '.reg' files (albeit, technically if .reg and .ini files hybridized). unlike more proper databases, the current implementation uses AVL trees rather than B+Trees internally. the main reason for AVL trees was that they were less effort to implement (actually, it is a tree of AVL trees, as each node-level starts a new AVL tree). the internal structure of the code for managing the HDB is a bit nasty, luckily, nearly all access is via named path-strings (the path-key then is its canonical structure, and all of the mucking around with AVL trees/... is hidden behind the API). as I think noted previously, the main reason I chose an HDB style design (rather than an RDB / Relational Database) was because an HDB is generally much easier to work with via a programmatic interface, whereas working with relational databases is a bit more painful, as nearly every operation will involve queries and having to work with tables or similar... or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
Hi... (see below)... On 21/06/2011, at 3:42 AM, BGB wrote: On 6/20/2011 3:22 AM, Julian Leviston wrote: On 20/06/2011, at 8:06 PM, BGB wrote: hmm... S-Expression database?... sort of like a hybrid between a database and a persistent store. or such... I'd like to know if you think there's a difference between a filesystem and a database... conceptually... or such... interesting thought... Note that I asked if you think there's a difference not how they differ. I'd be surprised if there were any people on this list who didn't know how they differed. I don't consider there to be much of a difference between the two, conceptually - they are both concerned with the retrieval and storage of data (I'm using the term 'data' here to mean any form of raw information at all, useful or otherwise, including programs). well, filesystems are generally hierarchical, don't generally support user-defined fields, and store all data as large binary globs. some filesystems (such as HFS/HFS+ and NTFS) allow multiple forks per file, others don't (FAT32 / EXT* / ...). generally, filesystems store data in terms of disk-blocks, and often make little/no provision for tiny files (partial exception being EXT* and ReiserFS, the former supporting inlining the contents of small files into the inode, the latter supporting the storage of sub-block files into B+Tree leaves). databases may come in any number of varieties, and generally store structured or semi-structured information; the contents of a database are generally individual datums, rather than binary globs; typically, databases store contents according to user-defined structures; typically, databases are stored using structures such as B+Trees; ... for example, the HDB used for my VM framework has a structure like: each node is identified by a path, generally with a POSIX-style name foo/bar/baz; each node may contain a number of key/value pairs, with a special null/default key internally named '_', and the key is identified following ':', and sometimes key indices are used following a '.', ... stored values are generally untyped, and treated as if they were strings. foo/bar/baz:name node: foo/bar/baz key: name foo/bar/baz:item.3 node: foo/bar/baz key: item index: 3 the index allows treating the key like a small array. possible, but not currently supported (at least not efficiently) would be to apply an index to a node, allowing treating the node as a makeshift indexed table: foo/bar/baz.59:name the optimization would be to transform the above into a key-index: foo/bar/baz:name.59, allowing for storing the values as arrays. however, in this case, table-like nodes would not allow for indexed keys: foo/bar/baz.59:item.5 since this would require double-indexing, but the keys are presently only defined as 1D arrays. at present, this will work, as the node index would just store multiple nodes with dotted names (baz.59 will simply be interpreted as a nodes' name). as-is, node names may also begin with '.', however these nodes are treated as volatile and effectively will not be saved back into the database (this mechanism is generally used for storing volatile information, namely information about things like environment variables, which libraries or modules are currently loaded, ...). so .var/foo:name is volatile, as neither .var nor any of its children will be saved to disk. note: the present system does not allow for non-trivial queries (besides ?next, ?prev, ...), but interestingly, for most uses of this system, one doesn't generally need to perform queries (much like, for the most part, application code doesn't really need readdir either, since its main use is mostly for presenting directory listings to the user). it is worth noting that the design of this system was originally partly inspired by the Windows Registry, but there are differences (the nodes being untyped, and the use of '/' rather than '\', and the present lack of hives albeit a similar mechanism may be needed for other reasons, and may need to be retrofitted on, that or supporting in-database mounts and links...). the external serialized database format somewhat resembles '.reg' files (albeit, technically if .reg and .ini files hybridized). unlike more proper databases, the current implementation uses AVL trees rather than B+Trees internally. the main reason for AVL trees was that they were less effort to implement (actually, it is a tree of AVL trees, as each node-level starts a new AVL tree). the internal structure of the code for managing the HDB is a bit nasty, luckily, nearly all access is via named path-strings (the path-key then is its canonical structure, and all of the mucking around with AVL trees/... is hidden behind the API). as I think noted previously, the main reason I chose an HDB style design (rather than
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 2011-06-14 Tue, at 09:36 PM, Julian Leviston wrote: The thing that irritates me about this attitude of don't consider kids as equal is that we DO consider them as equal in other frames... we expect so much of them in terms of linguistic and cognitive development... and actually the abstractions (zero-th order abstraction) capable of and exhibited by a 5 year old are used when in the activity called programming all the time... so much so we as adult programmers rarely think about them. I agree. People seem to define smart as something like things I can't do easily. So, for example, if they can use a keyboard, well someone like a child who can't must not be smart and this is why people were surprised when the mouse and graphical UIs allowed toddlers to use the Mac or touch screens allowed near infants to use iPads today. All along it was an issue of unnatural conceptual mapping (like asking a right handed person to throw with their left hand) that was the problem, not a lack of smarts. From this perspective we could see the history of programming as one of finding ever more natural mappings between how our minds work and how we can get machines to do what we want - just as steering wheel and floor pedals map between our bodies and our vehicles. If so, which mappings are more natural and under which circumstances seems to be the important question and one, AFAICS, that may not well answered by simply replacing words with ideograms and expressions with boxes and arrows. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 20/06/2011, at 12:20 PM, Steve Dekorte wrote: From this perspective we could see the history of programming as one of finding ever more natural mappings between how our minds work and how we can get machines to do what we want - just as steering wheel and floor pedals map between our bodies and our vehicles. If so, which mappings are more natural and under which circumstances seems to be the important question and one, AFAICS, that may not well answered by simply replacing words with ideograms and expressions with boxes and arrows. Or even - might I proffer - that mapping are fairly arbitrary by their very nature, and therefore perhaps the mappings should be able to be inspected, translated between, and even completely reworked or added to as deemed fit. One of the issues that immediately springs from this is that as programmers of incredibly large (in terms of complexity) computers which don't offer physical switches, it's almost impossible to escape this abstract mapping, because the tools used to deal even directly with what makes up a computer involve a large amount of mapping (always at least two). It's not like we can switch switches anymore! In other words, the programming interfaces are virtual. We're always modelling. We need to also be CONTEXTUALLY EXPLAINING what the models are as we're modelling (ie baked into the modelling process, even) them so that people trying to understand the models (artefacts of our processes) can hold them in the right contextual frame. (Holding something in the right contextual frame is another name for understanding). What I'm stipulating, is not replacing words with ideograms and expressions with boxes and arrows, but building a representation (a visual mapping) such that it's immediately obvious what the intent of the objects in a system are doing. For example, if you have two numbers, then the numbers get visually transformed each to a set of dots with a perimeter (border) around them, and they're animated towards each other and the border becomes one border, and the dots all join into the one set... and then that set is animated into the sum of the two original numbers, this is *A* visual representation of addition. (note that there are definitely many others - there are many methods to doing something just as there are in other places in computing, and just as there are many styles to learning. If I didn't understand that representation of addition, then I pick another one, and interact with or watch that). Note that addition is a very low level concept used thousands of times a day in computer programming, so most likely most of *us* as fairly complex programmers wouldn't ever use this particular pedagogical tool... unless we wanted to explain addition to our kids... we might replace the dots with 3d oranges... and then a tiny child could understand the concept in seconds... Note also that the only thing I'm really interested in proposing here is that knowledge be inlined... that is... as I'm writing code, my intention is written down too... or to put another way... if I'm drawing a terrain map THAT I INCLUDE THE KEY FOR THE MAP WITH THE MAP ITSELF... so that later, someone can interpret what it means. This removes the need for documentation, and also allows it to be generated easily if it's required... but also, hopefully doesn't let people build things they don't understand... so that in the end if someone doesn't understand how something in particular works, well then the learning of it is in the environment where the object is itself... Note that this seems SO RIDICULOUSLY OBVIOUS to me that it's not even funny... it also makes explaining computer to people incredibly saddening, because to someone with the requisite knowledge, computing is incredibly easy, but getting the requisite bits of knowledge into the right parts of a person is often so frustrating for the person in question. One thing I liked about Self and to a lesser degree SmallTalk (especially Squeak) is that if you want to work out how something works, you yank it out, or build an example of it, and inspect it... and you can go on ad infinitum... inspecting... seeing how things are composed. There's still a HUGE amount of assumed and required knowledge in there in order to use the system, but the idea is what I mean... where there's a totally uniform interface that can be inspected to learn about it, up to the point that the original programmer decides to allow you to see inside it. I should be able to inspect to the degree of machine code... if I want to... to find out how my large sum addition is clothed in machine code on my particular computer... and perhaps even lower - see the particular way that byte-size integer addition happens on my particular machine if there's a pedagogical model in place to see it. I know for a fact that young inquisitive kids will find this fascinating, and when there's less stuff
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/19/2011 7:20 PM, Steve Dekorte wrote: On 2011-06-14 Tue, at 09:36 PM, Julian Leviston wrote: The thing that irritates me about this attitude of don't consider kids as equal is that we DO consider them as equal in other frames... we expect so much of them in terms of linguistic and cognitive development... and actually the abstractions (zero-th order abstraction) capable of and exhibited by a 5 year old are used when in the activity called programming all the time... so much so we as adult programmers rarely think about them. I agree. People seem to define smart as something like things I can't do easily. So, for example, if they can use a keyboard, well someone like a child who can't must not be smart and this is why people were surprised when the mouse and graphical UIs allowed toddlers to use the Mac or touch screens allowed near infants to use iPads today. All along it was an issue of unnatural conceptual mapping (like asking a right handed person to throw with their left hand) that was the problem, not a lack of smarts. also, mouse or touch-screen are relatively direct-feedback, rather than requiring high-levels of abstract thought to work with. part of the problem may be that of preexisting knowledge... sometimes, knowledge can help people understand things easier; often, existing knowledge will lead to very nasty conceptual kludges. an example of the above I think is the ever-persistent file-cabinet metaphor: people very often portray things like files/... by making references back to this metaphor. the assumption (I guess) is that people will be more familiar with filing cabinets or find them more intuitive or similar. but, from the POV of someone who has never really used them for their intended purpose, or worked with piles of paper documents, the analogy doesn't really seem to work, as filing cabinets and filing systems really seem very much like unrelated concepts... at best, the terminology has been overloaded, and the new concept of file (a hierarchical tree of directories containing files each containing some number of bytes) has almost entirely subsumed the file-cabinet concept on which the original metaphor was based. in a sense, the metaphor no longer works, and should likely itself be left to fall into the recycle-bin of history. worse yet is having to read stuff written by people who actually take this metaphor seriously. granted, there are other annoying metaphors, but most others are not used nearly so offensively... a young child though will probably see things more how they are, and not likely build their thinking around metaphors which are borderline absurd: that a computer is a filing cabinet in an office residing on the surface of a giant desk for which a man in a robe will pop out just as soon as one pokes at it... (and where one is honestly expected to take advice from an anthropomorphic paper-clip...). yet, at the same time, it seems far more the case that society in general disregards people, and tries to force them into their particular mindset and worldview. one is not then really allowed to see the world as it is, but expected to deal with it in terms of layers of intellectual and ideological cruft. granted, maybe not everyone will come into the same reality, but maybe this is ok as well. it is a curious observation that so many people, living in essentially the same world and often from the same culture and geographic area, will come to have a number of different worldviews. (but, going more into this topic goes into some rather awkward issues...). From this perspective we could see the history of programming as one of finding ever more natural mappings between how our minds work and how we can get machines to do what we want - just as steering wheel and floor pedals map between our bodies and our vehicles. If so, which mappings are more natural and under which circumstances seems to be the important question and one, AFAICS, that may not well answered by simply replacing words with ideograms and expressions with boxes and arrows. agreed... I really don't believe graphical solutions are necessarily ideal. but, at the same time, there is also the matter of finding the right tool for the job. for example, code works great for expression program logic, but falls flat for many other tasks: creating a graphical image; creating a 3D model or scene; ... in these cases, having more specialized tools tends to be far more effective. for example, for editing a photo, one summons up a tool like GIMP. and, for making a 3D model, or working on its animations, one will generally summon up a dedicated 3D tool. picking the right sort of tool can notably reduce the effort required to complete a given task. in the above cases, a graphical tool is generally the best solution, but graphics are not best for all tasks either. a partial issue may then be battling a more subtle problem: it is very common
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 20/06/2011, at 2:33 PM, BGB wrote: in a sense, the metaphor no longer works, and should likely itself be left to fall into the recycle-bin of history. worse yet is having to read stuff written by people who actually take this metaphor seriously. Given the historical perspective, it was appropriate at the time. These days, our computers are so vastly scaled beyond the original intention of the file metaphor that it's getting silly, I'd grant you that. It's not really any surprise, then, that Apple's trying to get rid of the file system, is it? :) Mind you, I think the app metaphor is just as crappy, personally. I like the idea of workflows much more, and combining a few small simple tools together to get some particular job done. For example, when web programming on a specific web app, I use a web browser, a text editor, a database management program, a command line, and a couple other tools. It'd be nice to be able to fit these tools together into a pseudo-app and then build documents for this pseudo-app... that were accessible within the pseudo-app (ie not the file system) to use Apple's idea, and that could simply do all the things I generally need to do... (there are only a few tasks I generally do and none of them correlate directly into any one particular application). I love the way I edit text in my one particular text editor. Why do I have to use a different editor to edit my email text? lol... it makes little sense. Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/14/2011 9:50 PM, Dethe Elza wrote: On 2011-06-14, at 9:36 PM, Julian Leviston wrote: The thing that irritates me about this attitude of don't consider kids as equal is that we DO consider them as equal in other frames... we expect so much of them in terms of linguistic and cognitive development... and actually the abstractions (zero-th order abstraction) capable of and exhibited by a 5 year old are used when in the activity called programming all the time... so much so we as adult programmers rarely think about them. Not equal. Children are very different cognitively from adults and it is important to resist the temptation to treat them as little adults. On the other hand, we shouldn't condescend to them, they are like learning sponges and can absorb ideas far beyond what we generally give them credit for. not much experience interacting with kids (don't have kids, never married, don't have a significant other either, as things just never seem to go anywhere...). but, yeah... being young, time seems to go by very slowly, and just sitting around fiddling with something, one accomplishes a lot of stuff in a relatively short period of time. as one gets older though, time goes by ever faster, and one can observe that less and less happens in a given period of time. then one sees many older people, and what one sees doesn't look all that promising. sadly, as is seemingly the case that a lot of potentially ones' potentially most productive years are squandered away doing things like schoolwork and similar, and by the time one generally gets done with all this, ones' mind has already become somewhat dulled due to age. it is like, me noting that several years ago, I was dealing with a personal-project codebase expansion of around +120 kloc/yr or so (and a few cases of breaking 1 kloc/day, usually in bursts), but more recently, my codebase has actually been shrinking (seemingly defying common sense...). granted, it is a question of how big of a codebase can be reasonably developed and maintained by a single developer though. also, maybe the underlying forces behind codebase expansion and shrinking, where positive effort and adding functionality doesn't necessarily always make ones' code get bigger, ... it leaves something to ponder. granted, at the time I was pulling off high output rates: I wrote an x86 assembler/linker, pulling off around 10 kloc in 3 days or something; when writing a C compiler, which turned out very large, and a bug-ridden mess; writing an x86 interpreter, which itself was like 40 kloc in around a 2 weeks or similar; ... granted, these sorts of efforts are relatively rare. scary would be if someone else could (actually) pull off consistent output at this rate (and emit code consistently at approx 1Mloc/yr...). and, meanwhile, recent output has been net negative... hmm... One problem is immersion. They learn language amazingly fast (in large part) because they are immersed in it constantly. Seymour Papert's book, Mindstorms is one of the best reads I've ever had about software, and he discusses creating worlds for math, physics, and other subjects on the computer so that children can be as immersed in those worlds as they are naturally in the world of language. That was one of the guiding ideas behind the creation of Logo. yes, but it is also notable that they learn language, being exposed to it in its full complexity. it is like, kids don't learn from a watered-down subset of the language, they just learn the language from hearing others use it. hence, a large portion of immersion may be more due to availability and them having a personal interest or reason. Some of the structural patterns that a small child already has at least some mastership of are connection, fitting, representation, indirection, context, mood, physical relationship. These are all used in simple programming. Perhaps they don't have the meta-words, but that's okay - that can come later at about 12 when they begin their next level of abstract cognitive development (ie proper abstract thought). My flatmate's 7 year old daughter is in the process of mastering addition, subtraction, multiplication and division. These things are quite abstract. My flatmate's THREE year old (!!) understands in a non-verbal way the idea of a pointer and mouse connection. Do you realise how advanced that idea is? Consider that he's only really begun to talk in sentences properly in the last 6 to 8 weeks. It's very simple in terms of our usage of computers, but it's an incredibly complex structural pattern, really... it's representation and indirection... you move this thing, and it represents this other thing, and we can use it to manipulate yet more things... of course the child doesn't realise that the things on the screen aren't real that they're simply further representations... but you get the gist... the capacity is there... and the ENERGY that
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
but, yeah... being young, time seems to go by very slowly, and just sitting around fiddling with something, one accomplishes a lot of stuff in a relatively short period of time. as one gets older though, time goes by ever faster, and one can observe that less and less happens in a given period of time. then one sees many older people, and what one sees doesn't look all that promising. sadly, as is seemingly the case that a lot of potentially ones' potentially most productive years are squandered away doing things like schoolwork and similar, and by the time one generally gets done with all this, ones' mind has already become somewhat dulled due to age. From the insights into how the human neocortex learns information gained from the research (not mine) in Hierarchical Temporal Memory (HTM) machine learning model, I would contest the idea that less happens in a give period of time as you get older. If you explore HTM, it illustrates that as inputs are generated, they are evaluated in the context of the predictions that the network is making at any given time. As a young person, the neocortex knows nothing, so all the predictions are most often wrong. When there is dissonance between prediction and input, a sort of *interrupt* happens ( which gives us awareness of time ) and learning of a new pattern eventually occurs. As we get older, less and less of the world becomes *novel*, so our neocortical predictions are more and more correct, generating less and less interrupts. One could argue that our perception of time is the number of these interrupts occurring in an interval of proper time. The concept of *flow* for example, when one loses track of time being fully immersed in a problem, could be simply the fact that you are so engaged and knowledgable in an area that your mind is able to successfully isolate itself from interrupt generating input and process information at peak efficiency. I would go even as far as saying that the productivity described in productive years is more of an exposure to novel input than actual productivity. Perhaps another way of stating what you're perceiving could be that you have more and more *friction* of learned patterns to overcome as you try to adapt to novel input as you get older. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Waterbear announcement (was Re: Age and Language (was Re: [fonc] Alternative Web programming models?))
On 2011-06-15, at 3:42 PM, Dale Schumacher wrote: On Wed, Jun 15, 2011 at 8:30 AM, Dethe Elza de...@livingcode.org wrote: In fact, I'm interested enough in the block structure visualization that I've been porting just the blocks, without the Scratch semantics and runtime, to the web. You can use scratch-like blocks to write and output any language, provided a language plugin. As a demonstration, I'm writing a language plugin for Javascript (plus Raphael, for graphics) and Martyn Eggleton is working on a plugin for writing Arduino code. It is still early days, very alpha, but if anyone is interested there is more here: https://github.com/dethe/waterbear/wiki [info] https://github.com/dethe/waterbear/ [code] https://waterbearlang.com/ [Javascript demo] http://stretch.deedah.org/waterbear/ [Arduino demo] I've been meaning to share this with the group here, but wanting to get it roughed in a bit more, but here it is in all its half-baked glory. Feedback highly appreciated. --Dethe Very cool project. I'd like to see how easy it would be to use it for Humus programs. Thanks! I don't know how easy it would be to use with Humus, but I'd be happy to help explore it and find out. I'm just finishing up a couple of side projects so I can devote all my hobby coding time to Waterbear. One big refactoring is going to be control of (most of) the UI from a language plugin, and multiple language plugins supported from the same version (right now they are separate forks). --Dethe ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Waterbear announcement (was Re: Age and Language (was Re: [fonc] Alternative Web programming models?))
I like it. My son is very keen on Scratch (although he prefers Lua these days), but we picked up an Arduino kit last month, and I'm looking forward to playing with that. His eyes kind of glazed over looking at the C code, as simple as it is for Arduino. I got the impression he was just happy to have dad perform magic tricks for him :-) Cheers, Steve On Wed, Jun 15, 2011 at 3:49 PM, Dethe Elza de...@livingcode.org wrote: On 2011-06-15, at 3:42 PM, Dale Schumacher wrote: On Wed, Jun 15, 2011 at 8:30 AM, Dethe Elza de...@livingcode.org wrote: In fact, I'm interested enough in the block structure visualization that I've been porting just the blocks, without the Scratch semantics and runtime, to the web. You can use scratch-like blocks to write and output any language, provided a language plugin. As a demonstration, I'm writing a language plugin for Javascript (plus Raphael, for graphics) and Martyn Eggleton is working on a plugin for writing Arduino code. It is still early days, very alpha, but if anyone is interested there is more here: https://github.com/dethe/waterbear/wiki [info] https://github.com/dethe/waterbear/ [code] https://waterbearlang.com/ [Javascript demo] http://stretch.deedah.org/waterbear/ [Arduino demo] I've been meaning to share this with the group here, but wanting to get it roughed in a bit more, but here it is in all its half-baked glory. Feedback highly appreciated. --Dethe Very cool project. I'd like to see how easy it would be to use it for Humus programs. Thanks! I don't know how easy it would be to use with Humus, but I'd be happy to help explore it and find out. I'm just finishing up a couple of side projects so I can devote all my hobby coding time to Waterbear. One big refactoring is going to be control of (most of) the UI from a language plugin, and multiple language plugins supported from the same version (right now they are separate forks). --Dethe ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Monday 13 Jun 2011 8:47:49 PM Alan Kay wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. The picture I had in mind was a interconnection of systems that grow in an interdependent way by absorbing selectively from each other. This implies mechanisms for diffing two systems and filtering appropriate elements for absorption into one of the systems. While a system can be used independently (i.e. it has its intrinsic worth), it is capable of absorbing, adapting and amplifying its capabilities when plunked into a network systems. In this scenario, diffing a system against itself along a timeline is just a special case. Warth's Worlds is a fascinating paper but I didn't see it address multiple world scenario (yet!). It is possible that my reading hasn't gone deep enough to realize its ramifications. xmldiff was an injudicious analogy for a research mailing list :-(. Apologies. Subbu ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Waterbear announcement (was Re: Age and Language (was Re: [fonc] Alternative Web programming models?))
On Wed, Jun 15, 2011 at 8:16 PM, Dethe Elza de...@livingcode.org wrote: Glad you like it. How old is your son? Maybe we should organize a Vancouver Geek Kids, or meet up at Maker Faire next week. Or there is this: http://www.tedxkidsbc.com/ TEDx kids looks wonderful - thanks for that link. A Geek Kids meetup would be very popular; he's 13 and his sister is 12. They're up in Vancouver for the Summer, but unfortunately I'll be in San Jose with only a couple of very short trips back. We took them to the Maker's Faire in San Mateo last month and they were thrilled, especially with the hands-on labs, but it was too much to cover with the intense crowds and we missed a lot. The mini Faire should be a lot more manageable. I'll pass on that info and hopefully we can get them to go. I'm working to get the Arduino code merged in with the main fork. Also looking at options for wrapping the webapp in a native shell using Appcelerator Titanium or Mozilla Chromeless so we can access the serial port from Javascript. I'll have a look at the code this weekend. Other than a somewhat obsessive use of Minecraft as social media, things are quiet here :) Cheers, Steve ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Mon, Jun 13, 2011 at 9:26 PM, Julian Leviston jul...@leviston.net wrote: ... also, the idea of modelling change ITSELF is an appealing one in this context, and all changes including data entry etc being simply represented as a log of mutations using the command pattern. Thus the data represented in the first world would be mutated and propagated to the new world (actually more like the view of it filtered or some-such) according to the new rules, and the inverse would apply as well... There might be some experience on this in the CQRS-community. They usually model systems with event sourcing as the primary representation of state and have to deal with the versioning issues. Then there's the experience with working with databases, both relational and OO. The practice that seems to work is to model new versions in a backwards-compatible way and then refactor once the old versions has been completely shut down. My own thinking in this area is that you handle merges automatically if you can but fall back on manual intervention if not. Hopefully the system has a user-base that knows what to do with inconsistent data. In any case I guess the default behaviour when branching is to simply diverge, merges in any direction, should only happen if asked to, and when asked to. The Git workflow seems to work very well. If there is anything broken with it it is that it tends to express dependencies that aren't really there, but that isn't a fundamental property of the DAG-model just a consequence of how the tools steers you. The Darcs approach with it's theory of patches be better in this regard, have no experience working with it though. BR, John ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Mon, Jun 13, 2011 at 10:02 PM, BGB cr88...@gmail.com wrote: but, what would be the gain?... the major issue with most possible graphical representations, is that they are far less compact. hence, the common use of graphical presentations to represent a small amount in information in a compelling way (say, a bar-chart or line-graph which represents only a small number of data-points). I too have been thinking that the textual representation has to go. Not to replace it with fancy icons but mainly to remove the limits imposed by parsing, but also to make graphical representations available, for example tables is a language construct I usually miss, arrays of arrays of objects just doesn't cut it. By parsing limits I mean the fact that the language grammar usually has to be more verbose than is required by a human to resolve ambiguity and other issues. This is mainly a problem if you start thinking of how to mix languages. To integrates say Java, SQL and regular expressions in one grammar. Sure it can be done by careful attention to the grammar, like PL/SQL f.ex. but how do you do it in a generic way such that DSLs can be created as libraries by application programmers? BR, John ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
By parsing limits I mean the fact that the language grammar usually has to be more verbose than is required by a human to resolve ambiguity and other issues. This is mainly a problem if you start thinking of how to mix languages. To integrates say Java, SQL and regular expressions in one grammar. Sure it can be done by careful attention to the grammar, like PL/SQL f.ex. but how do you do it in a generic way such that DSLs can be created as libraries by application programmers? BR, John This looks like a job for OMeta ( http://tinlizzie.org/ometa/ ) ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
I had some thoughts about how to approach the issue. I was thinking that you could represent the language in a more semanticaly rich form such as a RAG stored in a graph database. Then languages would be composed by declaring lenses between them. As long as there is a lens to a editor dsl you could edit the labguage in that editor. If you had a lens from SQL to Java (for example via jdbc) you could ebed SQL expressions in java code. Give transitive lenses it would also be a system supporting much reuse. A new DSL could then leverage the semantic editing support allredy created for other languages. BR, John Just for completeness, the lenses you describe here remind me of OMeta's foreign rule invocation: from http://www.vpri.org/pdf/tr2008003_experimenting.pdf see 2.3.4 Foreign Rule Invocation p. 27 of paper, p. 46 of pdf So, if you don't like the PEG roots of OMeta, perhaps it's a good reference that already works? Cheers, Tristan ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
Thanks for the pointer. I'll have a look. BR, John Sent from my phone Den 14 jun 2011 17:17 skrev Tristan Slominski tristan.slomin...@gmail.com : I had some thoughts about how to approach the issue. I was thinking that you could represent the language in a more semanticaly rich form such as a RAG stored in a graph database. Then languages would be composed by declaring lenses between them. As long as there is a lens to a editor dsl you could edit the labguage in that editor. If you had a lens from SQL to Java (for example via jdbc) you could ebed SQL expressions in java code. Give transitive lenses it would also be a system supporting much reuse. A new DSL could then leverage the semantic editing support allredy created for other languages. BR, John Just for completeness, the lenses you describe here remind me of OMeta's foreign rule invocation: from http://www.vpri.org/pdf/tr2008003_experimenting.pdf see 2.3.4 Foreign Rule Invocation p. 27 of paper, p. 46 of pdf So, if you don't like the PEG roots of OMeta, perhaps it's a good reference that already works? Cheers, Tristan ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 15/06/2011, at 1:14 AM, Tristan Slominski wrote: Just for completeness, the lenses you describe here remind me of OMeta's foreign rule invocation: Yeah, I think there is a fair amount of deep digestion required to fully grok these ideas, personally. Haha that sounds disturbing. :) ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Tue, Jun 14, 2011 at 5:14 PM, Tristan Slominski tristan.slomin...@gmail.com wrote: Just for completeness, the lenses you describe here remind me of OMeta's foreign rule invocation: from http://www.vpri.org/pdf/tr2008003_experimenting.pdf see 2.3.4 Foreign Rule Invocation p. 27 of paper, p. 46 of pdf So, if you don't like the PEG roots of OMeta, perhaps it's a good reference that already works? The foreign rule invocation let you reuse other grammar but you still have to carefully declare how the merged grammar should behave. What I as aiming for was a more dynamic approach in that the merged grammar doesn't exist as such but is just an execution state derived from the combined program fragments and available lenses. To continue the Java/SQL example, lets say I had a program like this: public int totalAmmount(InvoiceNo invoceNo) { return SELECT SUM(ammount) FROM Invoices WHERE invoiceNo = :InvoiceNo; } To make this work I would need three things 1. The java grammar in which the method is declared 2. The SQL grammar in which the expression is declared 3. Something that can translate an SQL expression to a Java expression, and Java type-errors to SQL type-errors (the lens). 4. A way to annotate the syntax to distinguish Java-syntax from SQL-syntax. It is step 4 that I think makes it hard to keep a text representation. A generic syntax to separate any given language would probably be very convoluted. OTOH extending all languages one want to include to support grammar switches means that you will end up having to create those extensions yourself (which could be hard) or live at the mercy of the syntax-component you depend on. So my fix is to make the separation a hidden thing, which means the program needs to be represented in something that allows such hidden things (and I don't think Unicode control characters is the way to go here). Btw, if it wasn't clear form the context before, by RAG I meant a Reference Attributed Grammar. BR, John ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
Hi, John Nilsson j...@milsson.nu writes: So my fix is to make the separation a hidden thing, which means the program needs to be represented in something that allows such hidden things (and I don't think Unicode control characters is the way to go here). Why not crib a hack from JavaDoc and make your nested syntax embedded in comments in the host language? -- Michael FIG mich...@fig.org //\ http://michael.fig.org/\// ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 6/13/2011 8:09 PM, Julian Leviston wrote: On 14/06/2011, at 7:33 AM, Casey Ransberger wrote: Kids may not have the linguistic development out of the way that one needs to do serious programming. Adults who don't already code may find themselves short on some of the core concepts that conventional programming languages expect of the user. In both cases, I think visual systems can get useless syntactic hurdles out of the way, so that users can focus of developing a command of the core concepts at work. In most parts of the world, Monks used to be the only people who could read and write, you know. ;-) I started out messing around with computers in maybe 3rd and 4th grade, mostly as that was when I started having them around... personally, the textual nature of code was not such an issue, but I do remember at the time having a little confusion over the whole order of operations thing (I think I was left to wonder some why some operations would bind more tightly than others, they did not mention it in classes). at the time, it was mostly QBasic and DOS... much younger, and it is doubtful people can do much of anything useful. can you teach programming to a kindergartner?... maybe not such a good idea, so, it is an issue for what a good lower-limit is for where to try. ultimately, maybe the whole topic is beyond the reach of many people (like, maybe ability to program is more of an inherent ability, rather than a learned skill?...). in this case, one can just make things available, and see who catches on... I don't necessarily think graphics are the answer though. people learn to read and write either way, and using graphics seems a bit much like a vain attempt at trying to water down the topic. or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 2011-06-14, at 12:33 PM, BGB wrote: much younger, and it is doubtful people can do much of anything useful. can you teach programming to a kindergartner?... maybe not such a good idea, so, it is an issue for what a good lower-limit is for where to try. My kids learned to program around kindergarten/first grade. My son started with Scratch when he was six and is now teaching himself Javascript/Raphael and HTML/CSS at age 10. One advantage graphic tools like Scratch have for younger learners is that they don't have to know how to type, just read and write. Having the syntax enforced by the structure of the blocks helps too (no typos, no syntax errors, in addition to the aforementioned enforced strong typing). --Dethe ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On both questions the answer is basically that Java was an example. I was looking for a general solution. Something that would work withoug prior assumptions about the languages involved. The problem I was thinking about was how to provide an infrastructure where in anyone could be a language designer and almost for free get all the tooling support required for the language to gain traction. It seems to me that the effort required to go from an itch to a fully mainstream language is way to high. And partly to blame why we are still introducing inventions from the sixties in current mainstream languages. BR, John Sent from my phone Den 14 jun 2011 22:10 skrev BGB cr88...@gmail.com: ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
I wonder if a thousand years ago the readers of the world thought that only certain people had an aptitude for reading. = As a professional coder and father of young children I find Dethe's anecdote of teaching his children to code/program at an early age has me thinking I need to take another stab at showing Scratch again to my children. On Tue, Jun 14, 2011 at 4:09 PM, Dethe Elza de...@livingcode.org wrote: On 2011-06-14, at 12:33 PM, BGB wrote: much younger, and it is doubtful people can do much of anything useful. can you teach programming to a kindergartner?... maybe not such a good idea, so, it is an issue for what a good lower-limit is for where to try. My kids learned to program around kindergarten/first grade. My son started with Scratch when he was six and is now teaching himself Javascript/Raphael and HTML/CSS at age 10. One advantage graphic tools like Scratch have for younger learners is that they don't have to know how to type, just read and write. Having the syntax enforced by the structure of the blocks helps too (no typos, no syntax errors, in addition to the aforementioned enforced strong typing). --Dethe ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Tue, Jun 14, 2011 at 01:04:20PM -0700, BGB wrote: On 6/14/2011 12:14 PM, Michael FIG wrote: Hi, John Nilssonj...@milsson.nu writes: So my fix is to make the separation a hidden thing, which means the program needs to be represented in something that allows such hidden things (and I don't think Unicode control characters is the way to go here). Why not crib a hack from JavaDoc and make your nested syntax embedded in comments in the host language? or, like in my languages (generally for other things): use a keyword... reusing prior example: public int totalAmmount(InvoiceNo invoceNo) { return SQLExpr { SELECT SUM(ammount) FROM Invoices WHERE invoiceNo = :InvoiceNo; } } Well you can embed languages easily using fact that in any sane language parenthness match unless you areb inside string. You could get pretty strong preprocessor in few lines like my preprocessor which I attach. It has one command register(name,command) which replaces all subsequent occurences of name(args){properly parenthized text} by output of command with args given and text pasted as input. -- Big to little endian conversion error $reg={register=true} def subp(s,i,l,r) return [,i] if s[i,1]!=l o= pc=0 begin pc+=1 if s[i,1]==l pc-=1 if s[i,1]==r if s[i,1]=='' while s[i+1,1]!='' s[i,1]!='\\' os[i,1] i+=1 end i+=1 end os[i,1] i+=1 end while pc0 [process(o[1,o.size-2]),i] end def process(s) o= i=0 while is.size ch=false $reg.each{|name,command| if name==s[i,name.size] !(s[i+name.size]=~/\w/) i+=name.size args,i=subp(s,i,(,)) text,i=subp(s,i,{,}) if name==register word,program=args.split(,) $reg[word]=program else File.open(tmp1,w){|f| f.puts(text)} `#{command} #{args} tmp1 tmp2` oprocess(File.new(tmp2).lines.to_a*) end ch=true break end } if !ch os[i,1] i+=1 end end o end puts process(File.new(ARGV[0]).lines.to_a*) ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
Let say I want this then: public int totalAmmount() { return SELECT SUM(ammount) FROM Invoices WHERE invoiceNo = Invoice.currentId(); } That is now there is Java nested inside the SQL. When I ask the IDE to list all references to Invoice.currentId(), this instance should also be included. There was some paper on macros that solved this with varios nestings of ?() or some such construct. But that isn't very readable when you add lots of back and forth. Oh well, it isn't a project I'm working actively on, just a wild idea for the future ;-) BR, John 2011/6/15 Ondřej Bílka nel...@seznam.cz: On Tue, Jun 14, 2011 at 01:04:20PM -0700, BGB wrote: On 6/14/2011 12:14 PM, Michael FIG wrote: Hi, John Nilssonj...@milsson.nu writes: So my fix is to make the separation a hidden thing, which means the program needs to be represented in something that allows such hidden things (and I don't think Unicode control characters is the way to go here). Why not crib a hack from JavaDoc and make your nested syntax embedded in comments in the host language? or, like in my languages (generally for other things): use a keyword... reusing prior example: public int totalAmmount(InvoiceNo invoceNo) { return SQLExpr { SELECT SUM(ammount) FROM Invoices WHERE invoiceNo = :InvoiceNo; } } Well you can embed languages easily using fact that in any sane language parenthness match unless you areb inside string. You could get pretty strong preprocessor in few lines like my preprocessor which I attach. It has one command register(name,command) which replaces all subsequent occurences of name(args){properly parenthized text} by output of command with args given and text pasted as input. -- Big to little endian conversion error ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 6/14/2011 4:24 PM, John Nilsson wrote: Yes. And now add to that semantic editing support for such extensions automatically inherited. Things like syntax highlighting, intellisense, find references. Also interoperabilty with libs/modules in other languages is important. BR, John yeah. I don't have special editor support for extensions, mostly because I don't have a special dedicated editor (as-is, I do most text-editing with Notepad2... mostly as it is fairly lightweight and does enough for my uses...). in my case, I generally just tell it that my language is JavaScript, and it does well enough. granted, a fancy editor which supported both a base language, and syntax extensions, could probably handle all this as well, more so if the editor was able to make use of the VM's facilities. granted, this would mean plug-ins also registering interfaces for things like autocomplete and similar. as for cross-language interfacing... actually, if the other language is C, my VM already does fairly well at this, since it was designed with a fancy C FFI. in terms of the implementation, the C FFI is generally handled by special object, and in particular an object I call CTop (for C Toplevel, but it also supports scoped-lookups as well). basically, the VM is set up to delegate to this special object (via a delegation-based lookup). when a request for something reaches this object, it will then call off into a C-side API to basically look up whatever is being asked for (involves a database, and GetProcAddress/dlsym, ...). variables will be marshaled into dynamically typed values. functions will be auto-wrapped as special function objects (which basically implements the Apply handler, so it can be called like a function... other special handlers have names like GetSlot, SetSlot, MethodCall, ...). (how the lookup system works would be difficult to explain here, but IIRC some of the basic ideas/mechanism came from Self, and some stuff I ran into online describing some of the internals of Squeak IIRC, so this should be somewhere in the right direction...). when called, the function object will take the arguments (generally passed to it as a list), and basically coerce this into the format expected by the native function and the relevant ABI, and then will then call the native function. on return, it will go the other way, and coerce the native return value back into a dynamically-typed reference. this step currently involves some amount of ASM, but I have recently considered the possibility of an optional pure C solution (likely involving a big-ass switch block, probably using autogenerated code). there is a little nastiness in the details, but in general it manages to work fairly well... it also has some basic support for C macros and similar as well (may involve eval, and so doesn't always work, and doesn't currently support function-like macros, ...). eventually, I may work on extending the mechanism to support interfacing with C++ APIs, but this is likely to be big and nasty... interfacing with other VM-based languages shouldn't be too difficult. one would mostly just have to implement an object type which can perform the relevant lookup operations, and returns function objects (objects which support being called/applied). oh yeah, and one can create new objects to exhibit generally whatever other behaviors are needed as well (recently, I also added handlers/... related to value-type objects, which can support pass-by-value semantics rather than necessarily follow pass-by-reference, ...). or such... Sent from my phone Den 15 jun 2011 01:08 skrev BGB cr88...@gmail.com mailto:cr88...@gmail.com: On 6/14/2011 2:31 PM, John Nilsson wrote: On both questions the answer is basically that Java was an example. I was looking for a general solution. Something that would work withoug prior assumptions about the languages involved. The problem I was thinking about was how to provide an infrastructure where in anyone could be a language designer and almost for free get all the tooling support required for the language to gain traction. It seems to me that the effort required to go from an itch to a fully mainstream language is way to high. And partly to blame why we are still introducing inventions from the sixties in current mainstream languages. possibly, opening up the implementation more... namely: the parser produces an AST, in a form that user-written code can work with (one possibility being a List/S-Expression based form, or an XML-based format); allowing code to create its own ASTs and feed them into the compiler/VM; also allowing easy access to the ByteCode / IL (the JVM does this fairly well, for example, it is possible to produce class-objects and feed them into the JVM); access to low-level facilities; reflection, ... as well as possibly the ability to register plug in features at most levels, such
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 15/06/2011, at 9:00 AM, Kevin Driedger wrote: I wonder if a thousand years ago the readers of the world thought that only certain people had an aptitude for reading. = As a professional coder and father of young children I find Dethe's anecdote of teaching his children to code/program at an early age has me thinking I need to take another stab at showing Scratch again to my children. The thing that irritates me about this attitude of don't consider kids as equal is that we DO consider them as equal in other frames... we expect so much of them in terms of linguistic and cognitive development... and actually the abstractions (zero-th order abstraction) capable of and exhibited by a 5 year old are used when in the activity called programming all the time... so much so we as adult programmers rarely think about them. Some of the structural patterns that a small child already has at least some mastership of are connection, fitting, representation, indirection, context, mood, physical relationship. These are all used in simple programming. Perhaps they don't have the meta-words, but that's okay - that can come later at about 12 when they begin their next level of abstract cognitive development (ie proper abstract thought). My flatmate's 7 year old daughter is in the process of mastering addition, subtraction, multiplication and division. These things are quite abstract. My flatmate's THREE year old (!!) understands in a non-verbal way the idea of a pointer and mouse connection. Do you realise how advanced that idea is? Consider that he's only really begun to talk in sentences properly in the last 6 to 8 weeks. It's very simple in terms of our usage of computers, but it's an incredibly complex structural pattern, really... it's representation and indirection... you move this thing, and it represents this other thing, and we can use it to manipulate yet more things... of course the child doesn't realise that the things on the screen aren't real that they're simply further representations... but you get the gist... the capacity is there... and the ENERGY that is there is amazing... Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 2011-06-14, at 9:36 PM, Julian Leviston wrote: The thing that irritates me about this attitude of don't consider kids as equal is that we DO consider them as equal in other frames... we expect so much of them in terms of linguistic and cognitive development... and actually the abstractions (zero-th order abstraction) capable of and exhibited by a 5 year old are used when in the activity called programming all the time... so much so we as adult programmers rarely think about them. Not equal. Children are very different cognitively from adults and it is important to resist the temptation to treat them as little adults. On the other hand, we shouldn't condescend to them, they are like learning sponges and can absorb ideas far beyond what we generally give them credit for. One problem is immersion. They learn language amazingly fast (in large part) because they are immersed in it constantly. Seymour Papert's book, Mindstorms is one of the best reads I've ever had about software, and he discusses creating worlds for math, physics, and other subjects on the computer so that children can be as immersed in those worlds as they are naturally in the world of language. That was one of the guiding ideas behind the creation of Logo. Some of the structural patterns that a small child already has at least some mastership of are connection, fitting, representation, indirection, context, mood, physical relationship. These are all used in simple programming. Perhaps they don't have the meta-words, but that's okay - that can come later at about 12 when they begin their next level of abstract cognitive development (ie proper abstract thought). My flatmate's 7 year old daughter is in the process of mastering addition, subtraction, multiplication and division. These things are quite abstract. My flatmate's THREE year old (!!) understands in a non-verbal way the idea of a pointer and mouse connection. Do you realise how advanced that idea is? Consider that he's only really begun to talk in sentences properly in the last 6 to 8 weeks. It's very simple in terms of our usage of computers, but it's an incredibly complex structural pattern, really... it's representation and indirection... you move this thing, and it represents this other thing, and we can use it to manipulate yet more things... of course the child doesn't realise that the things on the screen aren't real that they're simply further representations... but you get the gist... the capacity is there... and the ENERGY that is there is amazing... There are some pretty subversive tools out there. Reader Rabbit's math software was teaching my kids algabraic abstraction before they started school. It just used boxes where you fill in a value instead of variables like x. Very concrete and they got it right away. --Dethe ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 12/06/2011, at 1:00 PM, BGB wrote: image-based systems have their own sets of drawbacks though... dynamic reload could be a good enough compromise IMO, if done well... I don't follow this train of thought. Everything runs in an image. That's to say, the source code directly relates to some piece of running code in the system at some point. Smalltalk, Self and the like simply let you interact with the running code in the same place as the artefacts that create the running code. It's akin to programming in a debugger that saves the contents of memory constantly as the source. As it's 2011, surely we can come to a point where we can synthesise these two apparently orthogonal concerns? I think the main issue with smalltalk-like image systems is that the system doesn't as easily let you start from blank like text-file source-code style coding does... thats to say, yes, it's possible to start new worlds, but it's not very easy to reference bits of your worlds from each other... and essentially, that's what text-file coding (ie editing offline code) does for us... because things are in files, it's easy to include a file as one packaged unit, or a group of file, or a package... and then that package can be referred to... separately, and even maintained by someone else, and it's not a COPY of the package, it's a reference to it... you know? This is incredibly powerful. The equivalent in a smalltalk system would need to be some kind of amazing version control system that can version worlds at certain points, and package code in a recursive encapsulation process. Having a global namespace is kind of retarded... because context is everything... ... that's to say, when and as context yields meaning (as I believe it does from my fairly deep ponderings), no token that yields meaning in a given context holds its meaning when decontextualised in the same way, therefore names (as these tokens) are deeply important IN CONTEXT. What kind of relevance, therefore, has a global namespace got? Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 6/13/2011 1:33 AM, Julian Leviston wrote: On 12/06/2011, at 1:00 PM, BGB wrote: image-based systems have their own sets of drawbacks though... dynamic reload could be a good enough compromise IMO, if done well... I don't follow this train of thought. Everything runs in an image. That's to say, the source code directly relates to some piece of running code in the system at some point. Smalltalk, Self and the like simply let you interact with the running code in the same place as the artefacts that create the running code. It's akin to programming in a debugger that saves the contents of memory constantly as the source. except, that traditional source-files have a concrete representation as so many files, and, beyond these files, there is nothing really of relevance (at least, conceptually, a person could print a program to paper, re-type it somewhere else, and expect the result to work). does it rebuild from source? does the rebuilt program work on the target systems of interest? if so, then everything is good. an image based system, OTOH, often means having to drag around the image instead, which may include a bunch of other stuff beyond just the raw text of the program, and may couple the program and the particular development environment used to create it. this coupling may be somewhat undesirable, and it is preferable to have the source as files, so then one can rebuild from source whenever this is needed. also, another risk is of the development image becoming polluted as a result of prior actions or code, which may risk compromising a project. granted, the one major drawback of traditional files-based development is its traditional dependency on the edit/compile/run cycle. scripting languages can often make this cycle a little faster, but don't necessarily eliminate it. however, dynamic reload can stay with using plain text files (thus allowing restarting clean if/when needed), and preserving familiar aspects of the coding process (namely, having ones' code organized into a tree of source files), but allows some of the merits of live-system coding, such as the ability to quickly load their changes back into the app, without having to exit and restart the program... in this case, the currently running program image is partially malleable, and so is subject to hot-patching (within sane limits), so changes to the source can be reflected more immediately (no app restart). however, unlike full image-based development, the app will generally forget everything that was going on once it is exited and restarted. by analogy, it is like running programs in Windows: one can open/close/run programs, edit things, ... in Windows, and so long as it is running, it will remember all this; but, if/when Windows is rebooted, it will forget, and one starts again with a clean slate of sorts (an empty desktop with only their icons and start-up programs to greet them...). but, the merit of rebooting Windows is that it keeps the system clean, as running Windows continuously is prone to cause it to degrade over time, and without an occasional reboot will begin to manifest lots of buggy behavior and eventually crash (IME, much worse in Vista and Win7 than in XP...). As it's 2011, surely we can come to a point where we can synthesise these two apparently orthogonal concerns? I think the main issue with smalltalk-like image systems is that the system doesn't as easily let you start from blank like text-file source-code style coding does... thats to say, yes, it's possible to start new worlds, but it's not very easy to reference bits of your worlds from each other... yes. for many types of project though, this is a potential deal-breaker. another part of the matter may be that of dealing with different libraries being updated independently by different developers. I am not certain how well either image-based development would map to traditional team-based development practices (say, where 5 or 10 people are assigned to work on a particular component, and 5 or 10 others working mostly independently are assigned to an adjacent component, ...). granted, I may be wrong here, as I haven't done a whole lot of development with image-based systems. and essentially, that's what text-file coding (ie editing offline code) does for us... because things are in files, it's easy to include a file as one packaged unit, or a group of file, or a package... and then that package can be referred to... separately, and even maintained by someone else, and it's not a COPY of the package, it's a reference to it... you know? This is incredibly powerful. yep. I am generally mostly in favor of using files. The equivalent in a smalltalk system would need to be some kind of amazing version control system that can version worlds at certain points, and package code in a recursive encapsulation process. Having a global namespace is kind of retarded...
Re: [fonc] Alternative Web programming models?
On 13/06/2011, at 7:50 PM, BGB wrote: On 6/13/2011 1:33 AM, Julian Leviston wrote: On 12/06/2011, at 1:00 PM, BGB wrote: image-based systems have their own sets of drawbacks though... dynamic reload could be a good enough compromise IMO, if done well... I don't follow this train of thought. Everything runs in an image. That's to say, the source code directly relates to some piece of running code in the system at some point. Smalltalk, Self and the like simply let you interact with the running code in the same place as the artefacts that create the running code. It's akin to programming in a debugger that saves the contents of memory constantly as the source. except, that traditional source-files have a concrete representation as so many files, and, beyond these files, there is nothing really of relevance (at least, conceptually, a person could print a program to paper, re-type it somewhere else, and expect the result to work). does it rebuild from source? does the rebuilt program work on the target systems of interest? if so, then everything is good. an image based system, OTOH, often means having to drag around the image instead, which may include a bunch of other stuff beyond just the raw text of the program, and may couple the program and the particular development environment used to create it. [SNIP] or such... This brings up an interesting point for me. Source is an interesting word, isn't it? :) Source of what, exactly? Intention, right? The real code is surely the electricity inside the computer in its various configurations which represent numbers in binary. This is not textual streams, it's binary numbers. The representation is the interesting thing as are the abstractions that we derive from them. I don't think computer programs being represented as text is very appropriate, useful or even interesting. in fact, I'd suffice to say that it's a definite hate/love relationship. I *love* typography, text and typing, but this has little or naught to do with programming. Programming is simply done in this way by me at the moment, begrudgingly because I have nothing better yet. Consider what it'd be like if we didn't represent code as text... and represented it maybe as series of ideograms or icons (TileScript nod). Syntax errors don't really crop up any more, do they? Given a slightly nicer User Interface than tilescript, you could still type your code, (ie use the keyboard to fast-select tokens), but the computer won't validate any input that isn't in its dictionary of known possible syntactically correct items given whatever context you're in. By the way, SmallTalk and Self are perfectly representable in textual forms... (file out nod) just like JVM bytecode is perfectly representable in textual form, or assembler... but text probably isn't the most useful way to interact with these things... just as to edit your text you most likely use some form of IDE (and yes, I'd class VIM or EMACS as an IDE). Do I need to represent here just how idiotic I think compilation is as a process? It's a series of text stream processors that aim at building an artefact that has little or nothing to do with a world that exists entirely in text. TEXT!!! It's a bad way to represent the internal world of computers, in my opinion. It'd be nice to use a system which represents things a few layers closer to what's actually going on, and surely the FoNC project is aimed at a pedagogical direction intending to strip away layers of cruft between the image inside the head of a user ( or programmer) that they have representing how it works, and how it actually works... Mind you, I think human language is fairly silly, too... we communicate using mental bubbles of non-language based patterns, rendered into language, formed into text. It's well retarded... but this might be considered a little out there, so I'll end here. If I'm providing too much noise for the list, please anyone, let me know, and I'll be quiet. Julian.___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
Am 13.06.2011 11:50, schrieb BGB: an image based system, OTOH, often means having to drag around the image instead, which may include a bunch of other stuff beyond just the raw text of the program, and may couple the program and the particular development environment used to create it. this coupling may be somewhat undesirable, and it is preferable to have the source as files, so then one can rebuild from source whenever this is needed. also, another risk is of the development image becoming polluted as a result of prior actions or code, which may risk compromising a project. Just some quick comments from a long-time Smalltalker (25 years): Of course rebuilding from source is desirable at certain points in time. For example, in the project I'm currently working on, every production build is created from a clean image into which the application's source code is loaded. This is a single-click process, just like building a traditional program from source files (except that we use VAST, where the source code is held in an ENVY repository for version and configuration control instead of plain files). However, in the development process we rarely rebuild images from scratch. It's not that we depend on image artefacts created long ago, but we prefer to keep our personal selection of tools and debugging aids. Using ENVY, it's very simple to sync our actual application source with the newest version while keeping all the tools intact. I normally rebuild my development image only when we switch to a completely new base software version, or when I've accidentally damaged it to a point where self-repair is not possible anymore (extremely rare, I've done that maybe 3-4 times during the project's lifetime of about 12 years). So, the risk associated with image-based development is mostly a theoretical one. In practice, it can be controlled just as well as with file-based development, and you get all the advantages of the image on top :-) Cheers, Hans-Martin ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Mon, Jun 13, 2011 at 4:50 AM, BGB cr88...@gmail.com wrote: however, unlike full image-based development, the app will generally forget everything that was going on once it is exited and restarted. I think this is one of the most annoying features of our current computer systems. If I have a project (or 10 or 20 projects) spread out on my workbench, and I leave to have something to eat, or go to sleep, when I return everything is still (more or less) in the state I left it. by analogy, it is like running programs in Windows: one can open/close/run programs, edit things, ... in Windows, and so long as it is running, it will remember all this; but, if/when Windows is rebooted, it will forget, and one starts again with a clean slate of sorts (an empty desktop with only their icons and start-up programs to greet them...). but, the merit of rebooting Windows is that it keeps the system clean, as running Windows continuously is prone to cause it to degrade over time, and without an occasional reboot will begin to manifest lots of buggy behavior and eventually crash (IME, much worse in Vista and Win7 than in XP...). Long-running stability and continuous upgrading (WITHOUT rebooting) should be the norm. There should be no such thing as a boot process. A system should remain stable (and running) throughout a lifetime of gradual evolution/mutation. Of course, we also need a way to branch/fork/clone/version and even start-from-embryo, to build new systems. The next step is to consider how the system (or parts of it) can migrate, or become mobile, among hosts. and essentially, that's what text-file coding (ie editing offline code) does for us... because things are in files, it's easy to include a file as one packaged unit, or a group of file, or a package... and then that package can be referred to... separately, and even maintained by someone else, and it's not a COPY of the package, it's a reference to it... you know? This is incredibly powerful. yep. I am generally mostly in favor of using files. Naming is certainly important, as is contextual reference, but I'm not convinced that files are a necessary part of providing that mechanism. Consider, as a possible alternative, the idea of parametrizing a module with its dependencies. This is just the principle of applying abstractions to allow local naming (aliasing) of externally provided objects. my_module(something_i_need, ...) = ... module specification using something_i_need ... create my_module(provider_of_service, ...) ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Monday 13 Jun 2011 2:03:29 PM Julian Leviston wrote: I think the main issue with smalltalk-like image systems is that the system doesn't as easily let you start from blank like text-file source-code style coding does... thats to say, yes, it's possible to start new worlds, but it's not very easy to reference bits of your worlds from each other... The pre-req for this is a tool to diff two images to generate a delta that can be applied to one to produce another. This is easy to do with line-oriented text files or non-linear xml files but difficult to do with blobs like images. Tools like xdelta operate only at bit level and not object level. Of course, if there was a (normalized) way to transcode .image into .xml and vice versa then xmldiff can be used for that purpose. Subbu ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 14/06/2011, at 1:17 AM, Alan Kay wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. Hi Alan, You might need to elucidate a little more on this for me to personally understand you. Not sure how others feel, but the Worlds work seems to be just a description of a versioning pattern applied to running program state. Why is it especially interesting? In the Ruby community, we have gem which is a package manager and also bundler, the two of which handle dependency management and sets of bundles of dependencies in context and situ elegantly and beautifully. Depending on your requirements when writing code, you can point to a version of a gem, the latest version, or say things like versions greater than 2.3. It works really well. It also fits very neatly with your idea of (Alexander's? ;-)) the arch and biological cellular structure being a scalable system: this system is working in practice extremely well. (Mind you, there's a global namespace, so it will eventually get crowded I'm sure ;-)) What do you mean by an eternal system? Do you mean a system which lasts forever? and what do you mean by amplified? Do you mean amplified as in our energy around this topic, or something else? Sorry for not understanding you straight away, Regards, Julian.___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Jun 13, 2011, at 9:35 AM, Julian Leviston wrote: On 14/06/2011, at 1:17 AM, Alan Kay wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. Hi Alan, You might need to elucidate a little more on this for me to personally understand you. Not sure how others feel, but the Worlds work seems to be just a description of a versioning pattern applied to running program state. It seems like much more than that to me. Why is it especially interesting? In the Ruby community, we have gem which is a package manager and also bundler, the two of which handle dependency management and sets of bundles of dependencies in context and situ elegantly and beautifully. Depending on your requirements when writing code, you can point to a version of a gem, the latest version, or say things like versions greater than 2.3. It works really well. It also fits very neatly with your idea of (Alexander's? ;-)) the arch and biological cellular structure being a scalable system: this system is working in practice extremely well. (Mind you, there's a global namespace, so it will eventually get crowded I'm sure ;-)) Consider that in a Squeak image, the compiled methods are reified as objects. With Worlds, you can make exploratory changes to code in a *complex running system*, and then back out effortlessly if it doesn't work. You just throw away the World containing the modified code as well as the objects that were modified as a side-effect of running the modified code. What do you mean by an eternal system? Do you mean a system which lasts forever? Yes, I believe that's what Alan means. One things that Worlds do are fill in a gap that prevents Smalltalk-80 from being an eternal system. The problem with Smalltalk is that, although it is is possible to make code changes in a running image, it is also possible to easily trash the image by making the wrong code changes. Furthermore, the more complicated the system that you're building, the easier it is to trash the image. To successfully build complex systems in Smalltalk, the typical approach is to periodically bootstrap the system by loading code into a fresh image, and running initialization scripts to bring the image up to a start-state. We employed this approach at Qwaq/Teleplace. Worlds provides a way (or at least points in a direction) to never need to shut down the running system. Any changes made to the system can safely and easily be reverted. I don't know how familiar you are with Croquet, but when I consider this capability in the context of replicated Islands of objects (including code), I find the potential to be breathtaking. and what do you mean by amplified? Do you mean amplified as in our energy around this topic, or something else? I'm not sure that I understood this, either. Cheers, Josh Sorry for not understanding you straight away, Regards, Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
Amplification: if I wagered a guess, I'd go with of human reach or of potential leverage. I also have one amp that goes up to 11, which is really nice because sometimes I like a touch of extra kick for the solo. On Jun 13, 2011, at 9:35 AM, Julian Leviston jul...@leviston.net wrote: On 14/06/2011, at 1:17 AM, Alan Kay wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. Hi Alan, You might need to elucidate a little more on this for me to personally understand you. Not sure how others feel, but the Worlds work seems to be just a description of a versioning pattern applied to running program state. Why is it especially interesting? In the Ruby community, we have gem which is a package manager and also bundler, the two of which handle dependency management and sets of bundles of dependencies in context and situ elegantly and beautifully. Depending on your requirements when writing code, you can point to a version of a gem, the latest version, or say things like versions greater than 2.3. It works really well. It also fits very neatly with your idea of (Alexander's? ;-)) the arch and biological cellular structure being a scalable system: this system is working in practice extremely well. (Mind you, there's a global namespace, so it will eventually get crowded I'm sure ;-)) What do you mean by an eternal system? Do you mean a system which lasts forever? and what do you mean by amplified? Do you mean amplified as in our energy around this topic, or something else? Sorry for not understanding you straight away, Regards, Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 14/06/2011, at 4:07 AM, Josh Gargus wrote: On Jun 13, 2011, at 9:35 AM, Julian Leviston wrote: On 14/06/2011, at 1:17 AM, Alan Kay wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. Hi Alan, You might need to elucidate a little more on this for me to personally understand you. Not sure how others feel, but the Worlds work seems to be just a description of a versioning pattern applied to running program state. It seems like much more than that to me. Cool :) I'm not saying it doesn't have interesting ramifications ;-) Why is it especially interesting? In the Ruby community, we have gem which is a package manager and also bundler, the two of which handle dependency management and sets of bundles of dependencies in context and situ elegantly and beautifully. Depending on your requirements when writing code, you can point to a version of a gem, the latest version, or say things like versions greater than 2.3. It works really well. It also fits very neatly with your idea of (Alexander's? ;-)) the arch and biological cellular structure being a scalable system: this system is working in practice extremely well. (Mind you, there's a global namespace, so it will eventually get crowded I'm sure ;-)) Consider that in a Squeak image, the compiled methods are reified as objects. With Worlds, you can make exploratory changes to code in a *complex running system*, and then back out effortlessly if it doesn't work. You just throw away the World containing the modified code as well as the objects that were modified as a side-effect of running the modified code. Yes, I've considered this. One of the things that crops up, though, is what about data? That is to say, what if one of the world experimentations one ends up doing involves experimenting with modifying some of the model of a particular piece of code... and this necessarily involve mutating a data type (ie model parent object or class implementation)... how does the idea/system apply to this, especially when considering things from the point of view of concurrent simultaneous users... where one person may mutate the state in the discussed manner, but another person is using a different world (a previous one with a different data structure in place)... yet they both still need to use the same data (ie imagine an address book application where one person is mutating the model layer live, and both people are using it live and inputting new data)... ... the idea of published / unpublished (ie published being a particular world that is being pointed to as the current live one) seems to serve well here. ... also, the idea of modelling change ITSELF is an appealing one in this context, and all changes including data entry etc being simply represented as a log of mutations using the command pattern. Thus the data represented in the first world would be mutated and propagated to the new world (actually more like the view of it filtered or some-such) according to the new rules, and the inverse would apply as well... ... of course, the question of irreversible transactions (ie destructive or creationist commands) arises... what to do about when adding or destroying structure inside a data structure when involving those worlds? (in other words, the second, experimental world perhaps has added a title field to a person, and then the second world user adds a new person, with the title field... what does the first world user see?, etc. This is a superficially simple illustration - add some code to the second world which would break if things aren't set up in a particular structure, such as a requirement on the title for a person, and then the first world entry not actually having a title, and we get a bit stickier - this particular example falls apart rather easily, but you get the gist, hopefully?) The worlds idea seems to ignore the fact that the only way to really get the feel for something is to use it... so an experiment (ie a child world) would need to be using real, live data... so a user or programmer would end up with the painful situation of having to migrate their created application objects - the data - back into the parent world but not migrate the code back if the experiment failed... *or* they would have to treat the experimental world as experimental only and not real, but doing this wouldn't actually allow one to know whether the experiment was working or not... *or* they'd have to use two worlds simultaneously - the first, un-experimental world to just use their application, and the second world to test things out until they were happy that it would work as they anticipated (ie the experiment worked). Either way, it could bear more thinking... Julian. ___ fonc mailing list fonc@vpri.org
Re: [fonc] Alternative Web programming models?
I wrote this without reading the very latest http://www.vpri.org/pdf/tr2011001_final_worlds.pdf so if I say anything that is obviously missing that understanding, please bear with me :) I'll read it shortly. Julian. On 14/06/2011, at 5:26 AM, Julian Leviston wrote: On 14/06/2011, at 4:07 AM, Josh Gargus wrote: On Jun 13, 2011, at 9:35 AM, Julian Leviston wrote: On 14/06/2011, at 1:17 AM, Alan Kay wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. Hi Alan, You might need to elucidate a little more on this for me to personally understand you. Not sure how others feel, but the Worlds work seems to be just a description of a versioning pattern applied to running program state. It seems like much more than that to me. Cool :) I'm not saying it doesn't have interesting ramifications ;-) Why is it especially interesting? In the Ruby community, we have gem which is a package manager and also bundler, the two of which handle dependency management and sets of bundles of dependencies in context and situ elegantly and beautifully. Depending on your requirements when writing code, you can point to a version of a gem, the latest version, or say things like versions greater than 2.3. It works really well. It also fits very neatly with your idea of (Alexander's? ;-)) the arch and biological cellular structure being a scalable system: this system is working in practice extremely well. (Mind you, there's a global namespace, so it will eventually get crowded I'm sure ;-)) Consider that in a Squeak image, the compiled methods are reified as objects. With Worlds, you can make exploratory changes to code in a *complex running system*, and then back out effortlessly if it doesn't work. You just throw away the World containing the modified code as well as the objects that were modified as a side-effect of running the modified code. Yes, I've considered this. One of the things that crops up, though, is what about data? That is to say, what if one of the world experimentations one ends up doing involves experimenting with modifying some of the model of a particular piece of code... and this necessarily involve mutating a data type (ie model parent object or class implementation)... how does the idea/system apply to this, especially when considering things from the point of view of concurrent simultaneous users... where one person may mutate the state in the discussed manner, but another person is using a different world (a previous one with a different data structure in place)... yet they both still need to use the same data (ie imagine an address book application where one person is mutating the model layer live, and both people are using it live and inputting new data)... ... the idea of published / unpublished (ie published being a particular world that is being pointed to as the current live one) seems to serve well here. ... also, the idea of modelling change ITSELF is an appealing one in this context, and all changes including data entry etc being simply represented as a log of mutations using the command pattern. Thus the data represented in the first world would be mutated and propagated to the new world (actually more like the view of it filtered or some-such) according to the new rules, and the inverse would apply as well... ... of course, the question of irreversible transactions (ie destructive or creationist commands) arises... what to do about when adding or destroying structure inside a data structure when involving those worlds? (in other words, the second, experimental world perhaps has added a title field to a person, and then the second world user adds a new person, with the title field... what does the first world user see?, etc. This is a superficially simple illustration - add some code to the second world which would break if things aren't set up in a particular structure, such as a requirement on the title for a person, and then the first world entry not actually having a title, and we get a bit stickier - this particular example falls apart rather easily, but you get the gist, hopefully?) The worlds idea seems to ignore the fact that the only way to really get the feel for something is to use it... so an experiment (ie a child world) would need to be using real, live data... so a user or programmer would end up with the painful situation of having to migrate their created application objects - the data - back into the parent world but not migrate the code back if the experiment failed... *or* they would have to treat the experimental world as experimental only and not real, but doing this wouldn't actually allow one to know whether the experiment was working or not... *or* they'd have to use two worlds simultaneously - the first, un-experimental world
Re: [fonc] Alternative Web programming models?
On Mon, Jun 13, 2011 at 9:31 PM, Julian Leviston jul...@leviston.netwrote: I wrote this without reading the very latest http://www.vpri.org/pdf/tr2011001_final_worlds.pdf so if I say anything that is obviously missing that understanding, please bear with me :) I'll read it shortly. I got wondering about commit failure and cases where you needed certain objects in the world child anyway. Or two different worlds merging. Will that be possible ? NB! A link in document http://www.vpri.org/pdf/tr2011001_final_worlds.pdf didnt work http://www.tinlizzie.org/%CB%9Cawarth/worlds this works http://www.tinlizzie.org/~awarth/worlds/ Karl Julian. On 14/06/2011, at 5:26 AM, Julian Leviston wrote: On 14/06/2011, at 4:07 AM, Josh Gargus wrote: On Jun 13, 2011, at 9:35 AM, Julian Leviston wrote: On 14/06/2011, at 1:17 AM, Alan Kay wrote: It would be great if everyone on this list would think deeply about how to have an eternal system, and only be amplified by it. Hi Alan, You might need to elucidate a little more on this for me to personally understand you. Not sure how others feel, but the Worlds work seems to be just a description of a versioning pattern applied to running program state. It seems like much more than that to me. Cool :) I'm not saying it doesn't have interesting ramifications ;-) Why is it especially interesting? In the Ruby community, we have gem which is a package manager and also bundler, the two of which handle dependency management and sets of bundles of dependencies in context and situ elegantly and beautifully. Depending on your requirements when writing code, you can point to a version of a gem, the latest version, or say things like versions greater than 2.3. It works really well. It also fits very neatly with your idea of (Alexander's? ;-)) the arch and biological cellular structure being a scalable system: this system is working in practice extremely well. (Mind you, there's a global namespace, so it will eventually get crowded I'm sure ;-)) Consider that in a Squeak image, the compiled methods are reified as objects. With Worlds, you can make exploratory changes to code in a *complex running system*, and then back out effortlessly if it doesn't work. You just throw away the World containing the modified code as well as the objects that were modified as a side-effect of running the modified code. Yes, I've considered this. One of the things that crops up, though, is what about data? That is to say, what if one of the world experimentations one ends up doing involves experimenting with modifying some of the model of a particular piece of code... and this necessarily involve mutating a data type (ie model parent object or class implementation)... how does the idea/system apply to this, especially when considering things from the point of view of concurrent simultaneous users... where one person may mutate the state in the discussed manner, but another person is using a different world (a previous one with a different data structure in place)... yet they both still need to use the same data (ie imagine an address book application where one person is mutating the model layer live, and both people are using it live and inputting new data)... ... the idea of published / unpublished (ie published being a particular world that is being pointed to as the current live one) seems to serve well here. ... also, the idea of modelling change ITSELF is an appealing one in this context, and all changes including data entry etc being simply represented as a log of mutations using the command pattern. Thus the data represented in the first world would be mutated and propagated to the new world (actually more like the view of it filtered or some-such) according to the new rules, and the inverse would apply as well... ... of course, the question of irreversible transactions (ie destructive or creationist commands) arises... what to do about when adding or destroying structure inside a data structure when involving those worlds? (in other words, the second, experimental world perhaps has added a title field to a person, and then the second world user adds a new person, with the title field... what does the first world user see?, etc. This is a superficially simple illustration - add some code to the second world which would break if things aren't set up in a particular structure, such as a requirement on the title for a person, and then the first world entry not actually having a title, and we get a bit stickier - this particular example falls apart rather easily, but you get the gist, hopefully?) The worlds idea seems to ignore the fact that the only way to really get the feel for something is to use it... so an experiment (ie a child world) would need to be using real, live data... so a user or programmer would end up with the painful situation of having to migrate their created application objects - the data
Re: Persistence and the Great Horse Trade (was Re: [fonc] Alternative Web programming models?)
On Mon, Jun 13, 2011 at 2:21 PM, Casey Ransberger casey.obrie...@gmail.com wrote: Comments below. On Jun 13, 2011, at 6:00 AM, Dale Schumacher dale.schumac...@gmail.com wrote: On Mon, Jun 13, 2011 at 4:50 AM, BGB cr88...@gmail.com wrote: however, unlike full image-based development, the app will generally forget everything that was going on once it is exited and restarted. I think this is one of the most annoying features of our current computer systems. If I have a project (or 10 or 20 projects) spread out on my workbench, and I leave to have something to eat, or go to sleep, when I return everything is still (more or less) in the state I left it. Dale, when read this it wasn't clear to me what you meant to convey. Are you saying it's annoying that when I come back to my bench, I have to swim all the way back to the context I was in before or are you saying when I return to my bench, it's annoying to have to close all of that stuff because what I usually want is a new context anyway? I'm most definitely saying that I prefer the eternal (as Alan said) system, with persistent state. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 6/13/2011 3:19 AM, Julian Leviston wrote: On 13/06/2011, at 7:50 PM, BGB wrote: On 6/13/2011 1:33 AM, Julian Leviston wrote: On 12/06/2011, at 1:00 PM, BGB wrote: image-based systems have their own sets of drawbacks though... dynamic reload could be a good enough compromise IMO, if done well... I don't follow this train of thought. Everything runs in an image. That's to say, the source code directly relates to some piece of running code in the system at some point. Smalltalk, Self and the like simply let you interact with the running code in the same place as the artefacts that create the running code. It's akin to programming in a debugger that saves the contents of memory constantly as the source. except, that traditional source-files have a concrete representation as so many files, and, beyond these files, there is nothing really of relevance (at least, conceptually, a person could print a program to paper, re-type it somewhere else, and expect the result to work). does it rebuild from source? does the rebuilt program work on the target systems of interest? if so, then everything is good. an image based system, OTOH, often means having to drag around the image instead, which may include a bunch of other stuff beyond just the raw text of the program, and may couple the program and the particular development environment used to create it. [SNIP] or such... This brings up an interesting point for me. Source is an interesting word, isn't it? :) Source of what, exactly? Intention, right? The real code is surely the electricity inside the computer in its various configurations which represent numbers in binary. This is not textual streams, it's binary numbers. The representation is the interesting thing as are the abstractions that we derive from them. yes, but as a general rule, this is irrelevant... the OS is responsible for keeping the filesystem intact, and generally does a good enough job, and there one can backups and hard-copies in-case things don't work out (say, a good hard crash, and the OS goes and mince-meats the filesystem...). as far as the user/developer can be concerned, it is all text. more so, it is all ASCII text, given some of the inherent drawbacks of using non-ASCII characters in ones' code... I don't think computer programs being represented as text is very appropriate, useful or even interesting. in fact, I'd suffice to say that it's a definite hate/love relationship. I *love* typography, text and typing, but this has little or naught to do with programming. Programming is simply done in this way by me at the moment, begrudgingly because I have nothing better yet. well, the issue is of course, that there is nothing obviously better. Consider what it'd be like if we didn't represent code as text... and represented it maybe as series of ideograms or icons (TileScript nod). Syntax errors don't really crop up any more, do they? Given a slightly nicer User Interface than tilescript, you could still type your code, (ie use the keyboard to fast-select tokens), but the computer won't validate any input that isn't in its dictionary of known possible syntactically correct items given whatever context you're in. but, what would be the gain?... the major issue with most possible graphical representations, is that they are far less compact. hence, the common use of graphical presentations to represent a small amount in information in a compelling way (say, a bar-chart or line-graph which represents only a small number of data-points). apparently, even despite this, some people believe in things like UML diagrams, but given the time and effort required to produce them, combined with their exceedingly low informational density, and I don't really see the point. also, for most programming tasks, graphical presentation would not offer any real notable advantage over a textual representation. at best, one has a pictographic system with a person new to the system trying to figure out just what the hell all of these intuitive icons mean and do. at that rate, one may almost as well just go make a programming language based on the Chinese writing system. given that most non-Chinese can't read Chinese writing, despite that many of these characters do actually resemble crude line-art drawings of various things and ideas. and meanwhile, many Asian countries either have shifted to, or are in the process of shifting to, the use of phonetic writing systems (Koreans created Hangul, Kanji gradually erodes in favor of Hiragana, ...). even in some places in China (such as Canton) the traditional writing system is degrading, with many elements of their spoken dialect being incorporated into the written language. this could be taken as an indication that their may be some fundamental flaw with pictographic or ideographic systems. or, more directly: many people new to icons-only GUI designs spend some
Re: [fonc] Alternative Web programming models?
On Mon, Jun 13, 2011 at 4:02 PM, BGB cr88...@gmail.com wrote: Consider what it'd be like if we didn't represent code as text... and represented it maybe as series of ideograms or icons (TileScript nod). Syntax errors don't really crop up any more, do they? Given a slightly nicer User Interface than tilescript, you could still type your code, (ie use the keyboard to fast-select tokens), but the computer won't validate any input that isn't in its dictionary of known possible syntactically correct items given whatever context you're in. I think Tiles prevent syntax errors is a red herring. Sure, you can prevent stupid typos by offering only tiles with correctly spelled keywords, but that's not really a major problem in ordinary experience. The more pernicious errors aren't especially affected one way or the other by tile-based systems. (You could just as accurately say that strongly-typed systems prevent errors.) given that most non-Chinese can't read Chinese writing, despite that many of these characters do actually resemble crude line-art drawings of various things and ideas. It is a common linguistic misperception that there is some one-to-one correspondence between an ideogram and the idea it represents. The english letter A was originally a drawing of an ox-head. (http://en.wikipedia.org/wiki/A). It is as accurate to say that English letters resemble crude line-art drawings as to say that Chinese ideograms do. and meanwhile, many Asian countries either have shifted to, or are in the process of shifting to, the use of phonetic writing systems (Koreans created Hangul, Kanji gradually erodes in favor of Hiragana, ...). even in some places in China (such as Canton) the traditional writing system is degrading, with many elements of their spoken dialect being incorporated into the written language. This is also playing fast and loose with linguistics. Let's be wary of drawing analogies to fields where we are not expert. --scott -- ( http://cscott.net ) ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Age and Language (was Re: [fonc] Alternative Web programming models?)
Below. On Jun 13, 2011, at 2:16 PM, C. Scott Ananian csc...@laptop.org wrote: On Mon, Jun 13, 2011 at 4:02 PM, BGB cr88...@gmail.com wrote: Consider what it'd be like if we didn't represent code as text... and represented it maybe as series of ideograms or icons (TileScript nod). Syntax errors don't really crop up any more, do they? Given a slightly nicer User Interface than tilescript, you could still type your code, (ie use the keyboard to fast-select tokens), but the computer won't validate any input that isn't in its dictionary of known possible syntactically correct items given whatever context you're in. I think Tiles prevent syntax errors is a red herring. Sure, you can prevent stupid typos by offering only tiles with correctly spelled keywords, but that's not really a major problem in ordinary experience. The more pernicious errors aren't especially affected one way or the other by tile-based systems. (You could just as accurately say that strongly-typed systems prevent errors.) Agreed, when we're talking about adults, and especially ones who've already learned to code. When it comes to kids and non-programming adults though, I do think that e.g. Scratch is really powerful. I don't have the cognitive science to back up the statement that I'm about to make, so I'm hoping folks will try to shoot some holes in it. Kids may not have the linguistic development out of the way that one needs to do serious programming. Adults who don't already code may find themselves short on some of the core concepts that conventional programming languages expect of the user. In both cases, I think visual systems can get useless syntactic hurdles out of the way, so that users can focus of developing a command of the core concepts at work. Inviting criticism! Fire away, ladies and gentlemen.___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 14/06/2011, at 6:02 AM, BGB wrote: but, what would be the gain?... the major issue with most possible graphical representations, is that they are far less compact. hence, the common use of graphical presentations to represent a small amount in information in a compelling way (say, a bar-chart or line-graph which represents only a small number of data-points). If it gets longer than a page, something's gone wrong somewhere. ;-) Remember, most people on this list will think encapsulation and objects are good things ;-) (ie small bits of code). So you don't need the kind of compactness you're talking about. The gain is that a picture speaks a thousand words. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: Age and Language (was Re: [fonc] Alternative Web programming models?)
On 14/06/2011, at 7:33 AM, Casey Ransberger wrote: Kids may not have the linguistic development out of the way that one needs to do serious programming. Adults who don't already code may find themselves short on some of the core concepts that conventional programming languages expect of the user. In both cases, I think visual systems can get useless syntactic hurdles out of the way, so that users can focus of developing a command of the core concepts at work. In most parts of the world, Monks used to be the only people who could read and write, you know. ;-) Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 14/06/2011, at 7:16 AM, C. Scott Ananian wrote: Consider what it'd be like if we didn't represent code as text... and represented it maybe as series of ideograms or icons (TileScript nod). Syntax errors don't really crop up any more, do they? Given a slightly nicer User Interface than tilescript, you could still type your code, (ie use the keyboard to fast-select tokens), but the computer won't validate any input that isn't in its dictionary of known possible syntactically correct items given whatever context you're in. I think Tiles prevent syntax errors is a red herring. Sure, you can prevent stupid typos by offering only tiles with correctly spelled keywords, but that's not really a major problem in ordinary experience. The more pernicious errors aren't especially affected one way or the other by tile-based systems. (You could just as accurately say that strongly-typed systems prevent errors.) When you're about to type the next tile, you're given options... anything outside of those options is impossible, so the computer doesn't put it in, because syntactically it wouldn't make sense. Do you see the power of options, here? :) It's another level of introspection for the programmer on the system that is possible if they need or want it. shrug some people like the computer to do things like highlight matching parenthesis, provide code syntax highlighting and colouring... others don't. (I'm not sure who doesn't). But we're kind of digressing from the point about the kinds of visual systems that I was originally talking about when mentioning TileScript. This isn't necessarily at all TileScript I'm talking about... it's about visual patterning languages (i'm using the term languages very loosely here). TileScript was simply a nod... If you've used any kind of visual math formula builder like the one that used to be present in Microsoft Word I think (and probably still is, I don't know), then you know what I'm talking about.. the syntax is visually patterned in front of you as soon as it becomes apparent to the computer that you're writing a certain kind of math, so you can see what's going on... this stuff is very useful, I'm not sure why you can't see the benefit of it... perhaps you're just too attached to text? :) As my memory recalls, Alan (and the entire VPRI crew I think) has said in the past, Math wins. Math is not written as a linear text per se, is it? Except, of course, where sequence is important ;-) Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
At Mon, 13 Jun 2011 21:55:54 +0200, karl ramberg wrote: I got wondering about commit failure and cases where you needed certain objects in the world child anyway. Or two different worlds merging. Will that be possible ? Yes. You catch an exception to keep the computation going: a := WPoint2 new x: 1; y: 0. w := WWorld2 thisWorld sprout. w eval: [a y: a y + 1]. a y: 666. [w commit] on: Error do: [:ex | ]. then you can say: b := WPoint2 new. b x: (w eval: [a x]). b y: (w eval: [a y]). to salvage the values of a in w into b in the top level world. There should be more first class operations allowed, and perhaps the serializability checks and commit logic should be customizable... -- Yoshiki ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Mon, Jun 13, 2011 at 11:17 PM, Julian Leviston jul...@leviston.net wrote: I think Tiles prevent syntax errors is a red herring. Sure, you can prevent stupid typos by offering only tiles with correctly spelled keywords, but that's not really a major problem in ordinary experience. The more pernicious errors aren't especially affected one way or the other by tile-based systems. (You could just as accurately say that strongly-typed systems prevent errors.) When you're about to type the next tile, you're given options... anything outside of those options is impossible, so the computer doesn't put it in, because syntactically it wouldn't make sense. There's nothing specific to tiles in what you wrote. You could do the same just as easily with a keyboard-based system. This is what I mean when I say that tiles prevent syntax errors is not accurate; it's confusing two separate things. Again: more accurately you could say, strong typing can prevent syntax errors... tiles have nothing to do with it, really. --scott -- ( http://cscott.net ) ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 14/06/2011, at 1:50 PM, C. Scott Ananian wrote: When you're about to type the next tile, you're given options... anything outside of those options is impossible, so the computer doesn't put it in, because syntactically it wouldn't make sense. There's nothing specific to tiles in what you wrote. You could do the same just as easily with a keyboard-based system. This is what I mean when I say that tiles prevent syntax errors is not accurate; it's confusing two separate things. Again: more accurately you could say, strong typing can prevent syntax errors... tiles have nothing to do with it, really. Assuming a compile after composing type of system. If it's a running, live, system, then type is irrelevant because an object at the point of being talked to will provide its own semantic and therefore syntactic-appropriateness context (ie duck typing for want of a better term). Do you see why I think text-stream based systems are outmoded crappy systems yet? They're not real in the sense of first-level representational. It's the equivalent of me sending you this email by fax, and you running an OCR program across it so it can get into your computer, though obviously less error-prone. However... not to be rude, but you're potentially missing my larger point, which was underneath the two lines you quoted... and you're perhaps getting caught on my bad example of syntax in TileScript - I'm saying the possibilities and ramifications of programming a live system using non-text-stream representation are far greater than that of text-stream ones... either that, or we have to re-engineer the natural possibilities after the fact... (ie Eclipse Java IDE is an example of doing this... where the IDE knows a lot about the language, rather than asking real live objects about themselves). Instead of having actual one-level-linked instantiated objects AT THE POINT of programming, we use multi-layered deferred referencing (ie text-stream based codes which are later processed and further decoded into computer codes by another computer program many times). One of the troubles with computing is that there are so many layers between what's real and the user that we've forgotten how to deal directly with the real. We've forgotten what is happening when we use computers, and this is sad and needs to be addressed. It's the real that's exciting, interesting and impassion-ating... ... granted there will always be those who don't want to see the real, and for those people, we build layers on top (ie Apple products), but still allow the guts to be got at by those who wish it. Presently it's SO DIFFICULT to get at the guts and not because it's hard to fire up GCC... mostly it's the learning that gets in the way... (at least, that's my experience). The sheer amount of education one needs to get through before one can get to the point where one is a true systems expert on our current top-level systems is colossal, and this is mostly due to cruft, IMHO. Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 6/13/2011 8:39 PM, Yoshiki Ohshima wrote: At Mon, 13 Jun 2011 17:16:10 -0400, C. Scott Ananian wrote: given that most non-Chinese can't read Chinese writing, despite that many of these characters do actually resemble crude line-art drawings of various things and ideas. It is a common linguistic misperception that there is some one-to-one correspondence between an ideogram and the idea it represents. The english letter A was originally a drawing of an ox-head. (http://en.wikipedia.org/wiki/A). It is as accurate to say that English letters resemble crude line-art drawings as to say that Chinese ideograms do. except that in the case of the Latin alphabet, all association with the original idea has long since gone away, and alphabetic characters have no real meaning in themselves, besides a loose association with a particular sound. the pictographs generally have meanings more closely associated with particular things and idea. like, a tree sort of resembles a tree, ... and meanwhile, many Asian countries either have shifted to, or are in the process of shifting to, the use of phonetic writing systems (Koreans created Hangul, Kanji gradually erodes in favor of Hiragana, ...). even in some places in China (such as Canton) the traditional writing system is degrading, with many elements of their spoken dialect being incorporated into the written language. This is also playing fast and loose with linguistics. Let's be wary of drawing analogies to fields where we are not expert. Yup. Such as this: http://pugs.blogs.com/audrey/2009/10/our-paroqial-fermament-one-tide-on-another.html is mainly in the context of # of characters, but also illustrates the area it requires to convey the same amount of information. (And yup, I can tell you Japanese aren't erodes in favor of Hiragana...) sorry... just I thought it was that originally nearly all of the writing was using Kanji, but over a long time (many centuries), the use of Kanji has lessened some, and Hiragana has become a larger portion of the text. admittedly, I don't really know Japanese either though... (besides what I can gain from watching lots of anime...). I have had some (limited) amount of personal experience interacting with Chinese people, but don't know Chinese either (can't really read/write/speak it, but can recognize a few of the basic characters...). by complaining about density previously, I wasn't thinking like traditional pictographs though, so much as people doing similar with icons, say 64x64 pixels or so (like, more like Windows icons), and so would lead to a larger portion of the screen being needed than with words, or with the tradition of assigning meaning to particular globs of ASCII characters (say, -, =, =, ++, ...). or, people using UML diagrams and flow charts, which use large amounts of screen or paper space, and often express less than could be stated with a few lines of text. and also, that I don't personally believe a pictographic system to be inherently more intuitive than an equivalent word-based system, and maybe less so, given the general tool tips experience (like, hover mouse to try to figure out just what a given icon on the toolbar is supposed to do...). or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Sat, Jun 11, 2011 at 1:40 AM, BGB cr88...@gmail.com wrote: The responsiveness of exploratory programming environments (such as the Smalltalk programming environment) allows the programmer to concentrate on the task at hand rather than being distracted by long pauses caused by compilation or linking. this is also partly where dynamic script loading and eval can be nifty... say, one is using an app, and then in the console they type in a command, say: ;load(scripts/myscript.bs); and can quickly edit the file, hit the uparrow in the console to re-enter the prior command, and observe the results. or, the ability to directly type script commands into the console to observe results, ... You should spend some time playing around with the Web Inspector in Chrome or other Webkit browser. Console, live code editing, lots of other good stuff. The only big drawback is the complexity of the system: HTML+CSS+JS is quite a hairy beast. but, I was also left recently thinking some about the possible strangeness of me basically creating a vaguely Lisp-like programming environment within C. http://en.wikipedia.org/wiki/Greenspun's_Tenth_Rule --scott -- ( http://cscott.net ) ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 6/11/2011 6:30 PM, C. Scott Ananian wrote: On Sat, Jun 11, 2011 at 1:40 AM, BGBcr88...@gmail.com wrote: The responsiveness of exploratory programming environments (such as the Smalltalk programming environment) allows the programmer to concentrate on the task at hand rather than being distracted by long pauses caused by compilation or linking. this is also partly where dynamic script loading and eval can be nifty... say, one is using an app, and then in the console they type in a command, say: ;load(scripts/myscript.bs); and can quickly edit the file, hit the uparrow in the console to re-enter the prior command, and observe the results. or, the ability to directly type script commands into the console to observe results, ... You should spend some time playing around with the Web Inspector in Chrome or other Webkit browser. Console, live code editing, lots of other good stuff. The only big drawback is the complexity of the system: HTML+CSS+JS is quite a hairy beast. yeah... my current strategy already involves some amount of typing commands into the console... as noted in the other post, the main role that load(...) serves, is that I am limited to about 100 characters at a time I can type into the console, which is a limitation. edit/reload/go is more of a compromise... but, I was also left recently thinking some about the possible strangeness of me basically creating a vaguely Lisp-like programming environment within C. http://en.wikipedia.org/wiki/Greenspun's_Tenth_Rule --scott except, in my case, there is a more direct reason: long ago, I had messed around with Scheme, and implemented a Scheme VM; many Scheme-like facilities and practices have managed to somewhat outlive the original VM, but were just sort of kludged back onto C, and became a part of the baseline coding practice. or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Jun 9, 2011, at 2:38 PM, Casey Ransberger wrote: On Jun 9, 2011, at 11:01 AM, Josh Gargus j...@schwa.ca wrote: Conceptually, yes. In practice, no, because the HTML/DOM render-target is also the lingua franca that makes the Web searchable and mashupable. So I'd like to first point out that you're making a great point here, so I hope it isn't too odd that I'm about to try to tear it down. Devil's advocate? Sure, why not? You said a bunch of interesting things that circle around a point. Rather than respond to some of them individually, which would miss the point, I'm going to have to ruminate about the whole for a while. Cheers, Josh ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Thu, 2011-06-09 at 11:42 -0700, BGB wrote: interesting... less painfully slow than I would have expected from the description... I wasn't thinking exactly like run an emulator, run OS in emulator, but more like, a browser plugin which looked and acted similar to a small Unix (with processes and so on, and a POSIX-like API, and a filesystem), but would likely be different in that it would mount content from the website as part of its local filesystem (probably read-only by default), and possibly each process could have its own local VFS. screen/input/... would be provided by APIs. snip However, such a hypervisor will also host more ambitious OSes, for example, platforms for persistent capability-secure peer-to-peer real-time collaborative end-use-scriptable augmented-reality environments. (again, trying to use word-associations to roughly sketch what I'm referring to, as I did earlier with Croquet-Worlds-Frank-OMeta-whatnot). Does this make my original question clearer? ok. what exactly this would be like is less obvious. I personally have a much easier time imagining what Unix in a browser would look like. with just a plain OS in the browser though, one could run apps... then one could have 3D mostly by having this virtual OS expose OpenGL (or GL ES). possibly, for sake of simplicity, the app could always use OpenGL, just its text mode would just be using OpenGL to draw all the characters. then maybe some special API calls for handling input, and enabling GL (disabling drawing the console UI). I before wondered about the problem of what to do about client-program memory use, but it seems like there is a nifty solution: if a limit is exceeded, allocation calls fail (say, each process is limited to a certain amount of memory). possibly, a given app is also limited to a certain maximum number of child processes, at which point fork() calls will fail (or send out a SIGKILL or similar to all processes belonging to the parent app). or such... I've been following this discussion and it seems there are a lot of very interesting ideas floating around, but I'm afraid I'm finding a lot of it to be getting rather bogged down in details like plugins, processes, etc. Forgive me if I'm missing something fundamental here, but to me Alan's contrast of browser as application vs browser as OS can be roughly translated to the browser is the 'real' application, the pages are just data it reads vs the pages are the 'real' applications, the browser just implements the lower levels of the stack. The latter viewpoint is gradually taking over now, where those lower levels are currently CPU (Javascript engine), storage (cookies, HTML5 local SQL, ...), networking (XMLHttpRequest, WebSockets, ...), display (DOM, canvas, WebGL, SVG, ...), IO interrupts (events) and so on. Can I ask how this is not an OS? Regards, Chris Warburton ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Jun 9, 2011, at 5:58 AM, Julian Leviston jul...@leviston.net wrote: On 09/06/2011, at 7:04 PM, BGB wrote: actually, possibly a relevant question here, would be why Java applets largely fell on their face, but Flash largely took off (in all its uses from YouTube to Punch The Monkey...). My own opinion of this is the same reason that the iPad feels faster than a modern desktop operating system: it was quicker to get to the user interaction point. Julian. The slow startup time is indeed why Sun's own team felt that Java failed to get traction. Unfortunately some basic architecture choices in the standard library made it extremely difficult to fix the problem. (Broadly, how class initialization is handled and used.) The latest Java plugins contain some impressive engineering to mitigate the problem, but Java is still sluggish to start in my experience. Library design matters! --scott -- ( http://cscott.net ) ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 6/10/2011 7:33 AM, Chris Warburton wrote: On Thu, 2011-06-09 at 11:42 -0700, BGB wrote: interesting... less painfully slow than I would have expected from the description... I wasn't thinking exactly like run an emulator, run OS in emulator, but more like, a browser plugin which looked and acted similar to a small Unix (with processes and so on, and a POSIX-like API, and a filesystem), but would likely be different in that it would mount content from the website as part of its local filesystem (probably read-only by default), and possibly each process could have its own local VFS. screen/input/... would be provided by APIs. snip However, such a hypervisor will also host more ambitious OSes, for example, platforms for persistent capability-secure peer-to-peer real-time collaborative end-use-scriptable augmented-reality environments. (again, trying to use word-associations to roughly sketch what I'm referring to, as I did earlier with Croquet-Worlds-Frank-OMeta-whatnot). Does this make my original question clearer? ok. what exactly this would be like is less obvious. I personally have a much easier time imagining what Unix in a browser would look like. with just a plain OS in the browser though, one could run apps... then one could have 3D mostly by having this virtual OS expose OpenGL (or GL ES). possibly, for sake of simplicity, the app could always use OpenGL, just its text mode would just be using OpenGL to draw all the characters. then maybe some special API calls for handling input, and enabling GL (disabling drawing the console UI). I before wondered about the problem of what to do about client-program memory use, but it seems like there is a nifty solution: if a limit is exceeded, allocation calls fail (say, each process is limited to a certain amount of memory). possibly, a given app is also limited to a certain maximum number of child processes, at which point fork() calls will fail (or send out a SIGKILL or similar to all processes belonging to the parent app). or such... I've been following this discussion and it seems there are a lot of very interesting ideas floating around, but I'm afraid I'm finding a lot of it to be getting rather bogged down in details like plugins, processes, etc. Forgive me if I'm missing something fundamental here, but to me Alan's contrast of browser as application vs browser as OS can be roughly translated to the browser is the 'real' application, the pages are just data it reads vs the pages are the 'real' applications, the browser just implements the lower levels of the stack. The latter viewpoint is gradually taking over now, where those lower levels are currently CPU (Javascript engine), storage (cookies, HTML5 local SQL, ...), networking (XMLHttpRequest, WebSockets, ...), display (DOM, canvas, WebGL, SVG, ...), IO interrupts (events) and so on. Can I ask how this is not an OS? errm... I don't know... as for differences from an OS: it doesn't boot up with the hardware; it doesn't have an obvious kernel (say, a core which runs the processor in Ring-0 or similar); it doesn't provide process management or system calls (except maybe builtin functions in JavaScript?...); ... there is not a whole lot that seems in common between a browser and an OS. yes, there is Chrome OS, but I sort of suspect this will (probably) fall on its face (vs... say... installing real Linux on the netbooks...). there is a lot more in common with it being an application: it resides in Program Files or /usr/bin or similar; it starts up after the main OS, and usually by direct action of the user; it lives within a window, or multiple windows (it itself provides the UI); ... it could be compared to a platform though, say similar to .NET or the JDK, which both have OS-like and application-like aspects: they run on top of the underlying OS; they sit around in the background (not generally directly visible to users); they launch other programs on top of themselves; ... otherwise, one would get into issues like, say, how is a modern game engine, such as Steam / Source, not an OS?... (yes, Steam and Source are technically separate product-wise, but share much of the same underlying architecture, and targeting apps to Steam often involves summoning up Source as a sort of a slave backend, such as for VFS and graphics/user-input services). when Source is being used as a game, it may summon up maps, which may have a lot going on internally, and may use mods, many of which used scripts (often Lua), ... however, IMO, they are not really an OS, more 'platforms'... and, many people would likely find the idea of booting a computer directly into the Source Engine to be a little silly... (start computer... start playing Portal 2...). Steam could make a little more sense, since Steam is basically a glorified program downloader and launcher (and, interestingly, does some of its content presentation via HTML, IIRC). Valve Steam OS, coming soon... but,
Re: [fonc] Alternative Web programming models?
On 6/10/2011 10:24 AM, C. Scott Ananian wrote: On Jun 9, 2011, at 5:58 AM, Julian Levistonjul...@leviston.net wrote: On 09/06/2011, at 7:04 PM, BGB wrote: actually, possibly a relevant question here, would be why Java applets largely fell on their face, but Flash largely took off (in all its uses from YouTube to Punch The Monkey...). My own opinion of this is the same reason that the iPad feels faster than a modern desktop operating system: it was quicker to get to the user interaction point. Julian. The slow startup time is indeed why Sun's own team felt that Java failed to get traction. Unfortunately some basic architecture choices in the standard library made it extremely difficult to fix the problem. (Broadly, how class initialization is handled and used.) The latest Java plugins contain some impressive engineering to mitigate the problem, but Java is still sluggish to start in my experience. Library design matters! --scott yep... Java does a lot of things in the library which could generally be considered a bad thing for performance. one thing that took my attention before was noting just how many cases there are of operations taking the form: new Something(...).someMethod(...);. in places which could potentially impact performance if one is not careful (at least presuming the VM doesn't infer that the object is one-off and micro-optimize it some). just had an idle thought of a JVM starting up as a prebuilt image (say, methods are pre-JIT'ed and pre-linked, static fields are pre-initialized, ...). unless of course, they already started doing this (sadly, I am not much an expert on the JVM). AFAIK, the main strategy generally used is to demand-load classes one-at-a-time from the JAR files, potentially validate them, JIT their methods, and call the sinit or similar static method. this process then may partly play out recursively, each class causing demand-loading more classes, ... until all relevant classes are loaded. or, maybe it is that, within the class library, most classes are tangled up with many other classes, essentially turning the class library into some large bulk-loaded glob?... well, not that my VM can say that much... sadly, in the present architecture, the toplevel is executed, which may in-turn load more code (the toplevel is itself a giant static initializer, and any functions/classes/... are built when their code is executed). a sad result of this is that using executable statements/expressions in the toplevel, it is possible to fetch 'null' from slots prior to them being initialized, creating ordering issues in some cases. say: var foo=[bar, bar]; function bar() { ... } foo[0] will currently hold null... this is not an issue for normal calls though, since the call will generally happen following any needed functions having been assigned to their slots. addressing the issue at present would likely require ugly hacks. or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Fri, Jun 10, 2011 at 2:45 PM, BGB cr88...@gmail.com wrote: just had an idle thought of a JVM starting up as a prebuilt image (say, methods are pre-JIT'ed and pre-linked, static fields are pre-initialized, ...). unless of course, they already started doing this (sadly, I am not much an expert on the JVM). Yes, they do this already; but this was part of the startup-time optimizations which weren't initially present in the JVM. or, maybe it is that, within the class library, most classes are tangled up with many other classes, essentially turning the class library into some large bulk-loaded glob?... Yes, that was a large part of the initial problem. A particular culprit was the String class, which wanted to have lots of convenient hooks for different features (including locale-specific stuff like uppercase/lowercase sorting, regexs, etc) but that tangled it up with everything else. The basic JVM bytecode demanded intern'ed strings, which required String class initialization, which then required on-the-fly locale loaded based on environment variables (removing the ability to precompile and image), and things went rapidly downhill from there. a sad result of this is that using executable statements/expressions in the toplevel, it is possible to fetch 'null' from slots prior to them being initialized, creating ordering issues in some cases. Yes, this was another fundamental problem with the JVM. You needed intimate knowledge of the library implementation in order to do initial class initialization in the proper order to avoid crashes. --scott -- ( http://cscott.net ) ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Fri, Jun 10, 2011 at 11:09 AM, BGB cr88...@gmail.com wrote: snip ... there is not a whole lot that seems in common between a browser and an OS. yes, there is Chrome OS, but I sort of suspect this will (probably) fall on its face (vs... say... installing real Linux on the netbooks...). BGB, you're being waay too literal-minded! This thread was (I thought) about architecture, rather than implementation details of current technologies. Chrome OS is a case in point, and FWIW, I expect it to succeed, maybe even beyond Android, because it's been carefully built to give a seamless, painless end-user experience. That's what most people want. Almost everyone who casually uses a computer day-to-day doesn't give a damn about how powerful or configurable it is. They just want it to work, get out of their way, and not irritate them unnecessarily. Increasingly, most people spend most of their computer time in a browser anyway. For quite a few, that is (or easily could be) *all* of their time. Chrome OS just trims away several layers of what these users would consider pointless complexity. As others here have mentioned, the Web has *already* become the de-facto universal communications medium. The interesting question to me is, how do we help ordinary people (like, you know, children) *use* this powerful new medium to learn, experiment, express and communicate powerful ideas? As far as this question is concerned Chrome OS and the Lively Kernel bring us back up to almost the level of Smalltalk (plus or minus some semantic noise from Javascript, but hey). Surely we can do better... -- Max ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
This vs. That (was Re: [fonc] Alternative Web programming models?)
Hahaha, this is it exactly! Perpendicular, but a poignant friend/mentor of mine said real software engineering hasn't emerged because there aren't enough people dying yet. He said that after I made my bid on what the difference is. My angle was: the difference between software and engineering is just that when the real bridge you designed falls over with people on it, you probably won't work again, whereas in software we just apologize to the users and just ship a nice hotfix for them. In any event it seems that he and I agree that the difference is usually one of consequence, or lack thereof. I must tip my hat, however, to Alan's argument that we haven't even found our arches yet. This just resonates with me, especially after stomaching all of this best-practice-as-religion crap in industry; I really want more evidence that we haven't got a clue what we're doing yet, because it would be lovely to dispel the myth that we do. On Jun 10, 2011, at 3:00 PM, Craig Latta cr...@netjam.org wrote: Can I ask how this is not an OS? Operating systems have more entertaining failure modes... if a really bad crash can render the hardware unbootable, it's an operating system. :) -C -- Craig Latta www.netjam.org/resume +31 6 2757 7177 + 1 415 287 3547 ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
history (Re: [fonc] Alternative Web programming models?)
(sorry, I don't know if this belongs on-list or not...). On 6/10/2011 1:44 PM, Max OrHai wrote: Well, INTP here, so at least we have /some/ common ground. yeah... I think I generally get along well enough with most people, in general... well, except Q's, which are basically people who act sort of like Q from Star Trek and generally start being all condescending about how stupid I supposedly am, ... well, and females... things are just not generally prone to go well in this area... nothing immoral, mostly just they just tend to either be scared off, or things quickly get really awkward, so things tend to go nowhere... well, me and working with people, sadly, doesn't usually go well... although I guess, as great as the idea of people working together for a common goal and a common good may seem, cooperative projects soon turn into lots of arguing and people stepping all over each other. so, it has often usually just been me by myself, mostly doing my own thing... For me it was: Apple II BASIC -- Classic Macintosh with HyperCard -- BASH / C / Python on Linux -- disgusted with computers entirely and more or less Luddite for about 5 years -- Blackberry OS on my phone -- Smalltalk, Scheme, Haskell, and JavaScript/HTML on slightly better Linuxes -- Same stuff on Mac OS X, mostly. Also, NetLogo. I write this from work, where I'm juggling Fedora and WinXP, neither of which quite just work for the fairly simple tasks I expect of them. yeah... well, as noted before: MS-DOS, QBasic, ... I also ran Win 3.11 and Win32s, IIRC because I think for some reason I didn't really like Win95, and Win32s ran many Win95 apps. later on, I jumped ship to Linux, which generally forced a complete switch over to C for coding (I could no longer use QBasic, being it was Linux and all...). later on, came across Scheme (late 90s), and at first used Guile, and then ended up doing my own implementation, partly because at the time Guile did stuff that I personally found really annoying (generally, it was hard-coded to call abort() at the first sign of trouble, ...). by a few years later (2003), this had turned unmaintainable (complex and nasty code), and so I dropped the VM and most code which was built around it. at the time, I had figured well, I am just going to write crap in plain C then later (maybe at most a few months) was like, doing everything in plain C is lame... at first, I implemented a PostScript variant, then realized that it was unusably terrible (trying to write code in PS, OMG this sucks...). basically, tokens were parsed and converted fairly directly into bytecode. I also ran across JavaScript, and was like oh wow, this is cool so, I threw together a few things, and then had my own makeshift JavaScript imitation (I first called it PDScript, but later renamed it BGBScript...). this was in early 2004. actually, parts that went into it originally: most of the machinery from the original PostScript interpreter (this formed the lower levels); a lot of XML-processing code (a DOM-like system); a recursive-descent parser, doing a JS-like syntax (parsing directly into XML nodes). so, basically: BGBScript - XML - PostScript (sort of...) the GC was also conservative mark/sweep with raw pointers. it was also teh slow and spewed huge amounts of garbage, which was not good with a slow conservative GC. a later partial rewrite (in 2006) re-incorporated a number of parts from the original Scheme VM (and made a number of language-level changes), and switched over to using S-Expressions as the internal representation for the ASTs, as well as re-using a variant of the Scheme-VM's GC (precise mark/sweep with reference-counting and tagged references). the 2006 VM also had a working JIT. in 2007, a C compiler was written, which switched back to XML for the ASTs (it was built more from code from the 2004 BGBScript implementation). the initial motivation was mostly that dynamically-compiled C could probably interface much better with native C. but, the compiler was very slow and buggy... in 2008, BGBScript was partly rewritten again, mostly switching back to the other GC (conservative mark/sweep), mostly as the precise-GC was painful to work with. sadly, this broke the JIT, and made it all a bit slower, and I have not (as of yet) fixed it (the interpreter is fast enough...). stuck with S-Expressions for the ASTs as well. and, in early 2010, added a bunch of spiffy new FFI stuff (mostly to eliminate most of the boilerplate needed to call into C code...). the FFI is itself partly built on parts of the C compiler though. late 2010/early 2011, tried to make a spiffy new VM and a new language (BGBScript2), but this effort fell on its face (too much effort and not getting working fast enough), and I later just reincorporated a lot of the planned features back into
Re: [fonc] Alternative Web programming models?
On May 31, 2011, at 7:30 AM, Alan Kay wrote: Hi Cornelius There are lots of egregiously wrong things in the web design. Perhaps one of the simplest is that the browser folks have lacked the perspective to see that the browser is not like an application, but like an OS. i.e. what it really needs to do is to take in and run foreign code (including low level code) safely and coordinate outputs to the screen (Google is just starting to realize this with NaCl after much prodding and beating.) I think everyone can see the implications of these two perspectives and what they enable or block Some of the implications, anyway. The benefits of the OS-perspective are clear. Once it hits its stride, there will be no (technical) barriers to deploying the sorts of systems that we talk about here (Croquet-Worlds-Frank-OMeta-whatnot). Others will be doing their own cool things, and there will be much creativity and innovation. However, elsewhere in this thread it is noted that the HTML-web is structured-enough to be indexable, mashupable, and so forth. It makes me wonder: is there a risk that the searchability, etc. of the web will be degraded by the appearance of a number of mutually-incompatible better-than-HTML web technologies? Probably not... in the worst case, someone who wants to be searchable can also publish in the legacy format. However, can we do better than that? I guess the answer depends on which aspect of the status quo we're trying to improve on (searchability, mashups, etc). For search, there must be plenty of technologies that can improve on HTML by decoupling search-metadata from presentation/interaction (such as OpenSearch, mentioned elsewhere in this thread). Mashups seem harder... maybe it needs to happen organically as some of the newly-possible systems find themselves converging in some areas. But I'm not writing because I know the answers, but rather the opposite. What do you think? Cheers, Josh Cheers, Alan From: Cornelius Toole cornelius.to...@gmail.com To: Fundamentals of New Computing fonc@vpri.org Sent: Tue, May 31, 2011 7:16:20 AM Subject: Re: [fonc] Alternative Web programming models? Thanks Merik, I've read/watch the OOPSLA'97 keynote before, but hadn't seen the first video. I'm having problems with the first one(the talk at UIUC). Has anyone been able to watch past the first hour. I get up to the point where Alex speaks and it freezes. I've just recently read Roy Fielding's dissertation on the architecture of the Web. Two prominent features of web architecture are the (1) client-server hierarchical style and (2) the layering abstraction style. My take away from that is how all of abstraction layers of the web software stack get in the way of the applications that want to use the machine. Style 1 is counter to the notion of the 'no centers' principle and is very limiting when you consider different classes of applications that might involve many entities with ill-defined relationships. Style 2, provides for separation of concerns and supports integration with legacy systems, but incurs so much overhead in terms of structural complexity and performance. I think the stuff about web sockets and what was discussed in the Erlang interview that Micheal linked to in the 1st reply is relevant here. The web was designed for large grain interaction between entities, but many application domain problems don't map to that. Some people just want pipes or channels to exchange messages for fine-grained interactions, but the layer cake doesn't allow it. This is where you get the feeling that the architecture for rich web apps is no-architecture, just piling big stones atop one another. I think it would be very interesting for someone to take the same approach to networked-based application as Gezira did with graphics (or the STEP project in general) as far assessing what's needed in a modern Internet-scale hypermedia architecture. On Thu, May 26, 2011 at 4:53 PM, Merik Voswinkel a...@knoware.nl wrote: Dr Alan Kay addressed the html design a number of times in his lectures and keynotes. Here are two: [1] Alan Kay, How Complex is Personal Computing?. Normal Considered Harmful. October 22, 2009, Computer Science department at UIUC. http://media.cs.uiuc.edu/seminars/StateFarm-Kay-2009-10-22b.asx (also see http://www.smalltalk.org.br/movies/ ) [2] Alan Kay, The Computer Revolution Hasn't Happened Yet, October 7, 1997, OOPSLA'97 Keynote. Transcript http://blog.moryton.net/2007/12/computer-revolution-hasnt-happened-yet.html Video http://ftp.squeak.org/Media/AlanKay/Alan%20Kay%20at%20OOPSLA%201997%20-%20The%20computer%20revolution%20hasnt%20happened%20yet.avi (also see http://www.smalltalk.org.br/movies/ ) Merik On May 26, 2011, at 8:38 PM, Cornelius Toole wrote: All, A criticism by Dr. Kay, has really stuck with me. I
Re: [fonc] Alternative Web programming models?
On 6/9/2011 12:56 AM, Josh Gargus wrote: On May 31, 2011, at 7:30 AM, Alan Kay wrote: Hi Cornelius There are lots of egregiously wrong things in the web design. Perhaps one of the simplest is that the browser folks have lacked the perspective to see that the browser is not like an application, but like an OS. i.e. what it really needs to do is to take in and run foreign code (including low level code) safely and coordinate outputs to the screen (Google is just starting to realize this with NaCl after much prodding and beating.) I think everyone can see the implications of these two perspectives and what they enable or block Some of the implications, anyway. The benefits of the OS-perspective are clear. Once it hits its stride, there will be no (technical) barriers to deploying the sorts of systems that we talk about here (Croquet-Worlds-Frank-OMeta-whatnot). Others will be doing their own cool things, and there will be much creativity and innovation. However, elsewhere in this thread it is noted that the HTML-web is structured-enough to be indexable, mashupable, and so forth. It makes me wonder: is there a risk that the searchability, etc. of the web will be degraded by the appearance of a number of mutually-incompatible better-than-HTML web technologies? Probably not... in the worst case, someone who wants to be searchable can also publish in the legacy format. However, can we do better than that? I guess the answer depends on which aspect of the status quo we're trying to improve on (searchability, mashups, etc). For search, there must be plenty of technologies that can improve on HTML by decoupling search-metadata from presentation/interaction (such as OpenSearch, mentioned elsewhere in this thread). Mashups seem harder... maybe it needs to happen organically as some of the newly-possible systems find themselves converging in some areas. But I'm not writing because I know the answers, but rather the opposite. What do you think? hmm... it is a mystery actually, possibly a relevant question here, would be why Java applets largely fell on their face, but Flash largely took off (in all its uses from YouTube to Punch The Monkey...). but, yeah, there is another downside to deploying ones' technology in a browser: writing browser plug-ins... and, for browser-as-OS, what exactly will this mean, technically?... network-based filesystem and client-side binaries and virtual processes?... like, say, if one runs a tiny sand-boxed Unix-like system inside the browser, then push or pull binary files, which are executed, and may perform tasks?... could be interesting though, as then a tab can be either an open page or document, or a running application. hopefully, these could be nicer to target, and more capable, than either Flash or Java Applets, although probably would require some sort of VM. NaCl is not a perfect solution, if anything, because, say, x86 NaCl apps don't work on x86-64 or ARM. nicer would be able to be able to run it natively, if possible, or JIT it to the native ISA if not. I did my own x86-based VM before, which basically just ran x86 in an interpreted (via translation to threaded code) environment. technically, I just sort of did a basic POSIX-like architecture, albeit I used PE/COFF for binaries and libraries (compiled via MinGW...). it was written in such a way that likely it wont care what the host architecture is (it was all plain C, with no real ASM or architecture-specific hacks...). so, I guess, if something like this existed inside a browser, and was isolated from the host OS?... in my case, I wrote the VM and soon realized I personally had no particular use for it... and, meanwhile, for my own site, it is generally plain HTML... I did basic CGI-scripts before as a test, but couldn't think up much to use them for (I don't personally really do much of anything that really needs CGI-scripts). about the most I would likely do with it would be to perform simple surveys, say, a form that is like: favorite programming language?, MBTI type?, ... then I could analyze the results to conclude which types of personality are more associated with being a programmer, and which prefer which sorts of programming languages, ... for example... how common are other xSTP (ISTP or ESTP) programmers, and how many like C?... in general though, I use HTML for much of my documentation, but generally because it is currently one of the least-effort ways to provide structured and formatted documentation and have it be readily accessible (online or offline). at least, currently I use SeaMonkey Composer, which is not that much more effort than using a word-processor, and IMO a little less silly in terms of how it behaves (vs Word or OpenOffice Writer which seem at times brain-damaged...). not that Composer is perfect either though. for editing documentation, a WYSIWYG editor works fine, since ones'
Re: [fonc] Alternative Web programming models?
On 09/06/2011, at 5:56 PM, Josh Gargus wrote: However, can we do better than that? I guess the answer depends on which aspect of the status quo we're trying to improve on (searchability, mashups, etc). For search, there must be plenty of technologies that can improve on HTML by decoupling search-metadata from presentation/interaction (such as OpenSearch, mentioned elsewhere in this thread). Mashups seem harder... maybe it needs to happen organically as some of the newly-possible systems find themselves converging in some areas. But I'm not writing because I know the answers, but rather the opposite. What do you think? I'm left wondering about the Adapter design pattern... could it be adapted to apply here? Can we take OMeta, which is basically the adapter pattern to end all adapter patterns and apply it to the web, and end up with two inter-communicable network protocols? Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 09/06/2011, at 7:04 PM, BGB wrote: actually, possibly a relevant question here, would be why Java applets largely fell on their face, but Flash largely took off (in all its uses from YouTube to Punch The Monkey...). My own opinion of this is the same reason that the iPad feels faster than a modern desktop operating system: it was quicker to get to the user interaction point. Julian. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
it hits its stride, there will be no (technical) barriers to deploying the sorts of systems that we talk about here (Croquet-Worlds-Frank-OMeta-whatnot). Others will be doing their own cool things, and there will be much creativity and innovation. However, elsewhere in this thread it is noted that the HTML-web is structured-enough to be indexable, mashupable, and so forth. It makes me wonder: is there a risk that the searchability, etc. of the web will be degraded by the appearance of a number of mutually-incompatible better-than-HTML web technologies? Probably not... in the worst case, someone who wants to be searchable can also publish in the legacy format. However, can we do better than that? I guess the answer depends on which aspect of the status quo we're trying to improve on (searchability, mashups, etc). For search, there must be plenty of technologies that can improve on HTML by decoupling search-metadata from presentation/interaction (such as OpenSearch, mentioned elsewhere in this thread). Mashups seem harder... maybe it needs to happen organically as some of the newly-possible systems find themselves converging in some areas. But I'm not writing because I know the answers, but rather the opposite. What do you think? Cheers, Josh Cheers, Alan -- *From:* Cornelius Toole cornelius.to...@gmail.com *To:* Fundamentals of New Computing fonc@vpri.org *Sent:* Tue, May 31, 2011 7:16:20 AM *Subject:* Re: [fonc] Alternative Web programming models? Thanks Merik, I've read/watch the OOPSLA'97 keynote before, but hadn't seen the first video. I'm having problems with the first one(the talk at UIUC). Has anyone been able to watch past the first hour. I get up to the point where Alex speaks and it freezes. I've just recently read Roy Fielding's dissertation on the architecture of the Web. Two prominent features of web architecture are the (1) client-server hierarchical style and (2) the layering abstraction style. My take away from that is how all of abstraction layers of the web software stack get in the way of the applications that want to use the machine. Style 1 is counter to the notion of the 'no centers' principle and is very limiting when you consider different classes of applications that might involve many entities with ill-defined relationships. Style 2, provides for separation of concerns and supports integration with legacy systems, but incurs so much overhead in terms of structural complexity and performance. I think the stuff about web sockets and what was discussed in the Erlang interview that Micheal linked to in the 1st reply is relevant here. The web was designed for large grain interaction between entities, but many application domain problems don't map to that. Some people just want pipes or channels to exchange messages for fine-grained interactions, but the layer cake doesn't allow it. This is where you get the feeling that the architecture for rich web apps is no-architecture, just piling big stones atop one another. I think it would be very interesting for someone to take the same approach to networked-based application as Gezira did with graphics (or the STEP project in general) as far assessing what's needed in a modern Internet-scale hypermedia architecture. On Thu, May 26, 2011 at 4:53 PM, Merik Voswinkel a...@knoware.nl wrote: Dr Alan Kay addressed the html design a number of times in his lectures and keynotes. Here are two: [1] Alan Kay, How Complex is Personal Computing?. Normal Considered Harmful. October 22, 2009, Computer Science department at UIUC. http://media.cs.uiuc.edu/seminars/StateFarm-Kay-2009-10-22b.asx (also see http://www.smalltalk.org.br/movies/ ) [2] Alan Kay, The Computer Revolution Hasn't Happened Yet, October 7, 1997, OOPSLA'97 Keynote. Transcript http://blog.moryton.net/2007/12/computer-revolution-hasnt-happened-yet.html Video http://ftp.squeak.org/Media/AlanKay/Alan%20Kay%20at%20OOPSLA%201997%20-%20The%20computer%20revolution%20hasnt%20happened%20yet.avi (also see http://www.smalltalk.org.br/movies/ ) Merik On May 26, 2011, at 8:38 PM, Cornelius Toole wrote: All, A criticism by Dr. Kay, has really stuck with me. I can't remember the specific criticism and where it's from, but I recall it being about the how wrong the web programming model is. I imagine he was referring to how disjointed, resource inefficient it is and how it only exposes a fraction of the power and capability inherent in the average personal computer. So Alan, anyone else, what's wrong with the web programming mode and application architecture? What programming model would work for a global-scale hypermedia system? What prior research or commercial systems have any of these properties? The web is about the closest we've seen to a ubiquitous deployment platform for software, but the confluence of market forces and technical
Re: [fonc] Alternative Web programming models?
On Jun 9, 2011, at 2:04 AM, BGB wrote: On 6/9/2011 12:56 AM, Josh Gargus wrote: On May 31, 2011, at 7:30 AM, Alan Kay wrote: Hi Cornelius There are lots of egregiously wrong things in the web design. Perhaps one of the simplest is that the browser folks have lacked the perspective to see that the browser is not like an application, but like an OS. i.e. what it really needs to do is to take in and run foreign code (including low level code) safely and coordinate outputs to the screen (Google is just starting to realize this with NaCl after much prodding and beating.) I think everyone can see the implications of these two perspectives and what they enable or block Some of the implications, anyway. The benefits of the OS-perspective are clear. Once it hits its stride, there will be no (technical) barriers to deploying the sorts of systems that we talk about here (Croquet-Worlds-Frank-OMeta-whatnot). Others will be doing their own cool things, and there will be much creativity and innovation. However, elsewhere in this thread it is noted that the HTML-web is structured-enough to be indexable, mashupable, and so forth. It makes me wonder: is there a risk that the searchability, etc. of the web will be degraded by the appearance of a number of mutually-incompatible better-than-HTML web technologies? Probably not... in the worst case, someone who wants to be searchable can also publish in the legacy format. However, can we do better than that? I guess the answer depends on which aspect of the status quo we're trying to improve on (searchability, mashups, etc). For search, there must be plenty of technologies that can improve on HTML by decoupling search-metadata from presentation/interaction (such as OpenSearch, mentioned elsewhere in this thread). Mashups seem harder... maybe it needs to happen organically as some of the newly-possible systems find themselves converging in some areas. But I'm not writing because I know the answers, but rather the opposite. What do you think? hmm... it is a mystery actually, possibly a relevant question here, would be why Java applets largely fell on their face, but Flash largely took off (in all its uses from YouTube to Punch The Monkey...). but, yeah, there is another downside to deploying ones' technology in a browser: writing browser plug-ins... and, for browser-as-OS, what exactly will this mean, technically?... network-based filesystem and client-side binaries and virtual processes?... like, say, if one runs a tiny sand-boxed Unix-like system inside the browser, then push or pull binary files, which are executed, and may perform tasks?... This isn't quite what I had in mind. Perhaps hypervisor is better than OS to describe what I'm talking about, and I believe Alan too: a thin-as-possible platform that provides access to computing resources such as end-user I/O (mouse, multitouch, speakers, display, webcam, etc.), CPU/GPU, local persistant storage, and network. Just enough to enable others to run OSes on top of this hypervisor. If it tickles you fancy, then by all means use it to run a sand-boxed Unix. Undoubtedly someone will; witness the cool hack to run Linux in the browser, accomplished by writing an x86 emulator in Javascript (http://bellard.org/jslinux/). However, such a hypervisor will also host more ambitious OSes, for example, platforms for persistent capability-secure peer-to-peer real-time collaborative end-use-scriptable augmented-reality environments. (again, trying to use word-associations to roughly sketch what I'm referring to, as I did earlier with Croquet-Worlds-Frank-OMeta-whatnot). Does this make my original question clearer? Cheers, Josh ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
How about _recursive_ VM/JITs *beneath* the level that HTML/JS is implemented. So the browser that ships only supports this recursive VM. HTML is an application of this that can be evolved by open source at internet scale / time. Web pages can point at a specific HTML implementation or a general redirector like google apis to get the commonly agreed standard version. Other containers/'plugins', Squeak, Flash, Java run as VMs, can run their native bytecode/images but also, potentially, expose the VM interface up again. Nesting VMs is useful also. Though you won't spare the use-case any love, Flash video players often load multiple ads SDKs, an arrangement that could benefit from isolation, i.e. browser-more-like-OS. If the top and bottom VM interfaces are the same then we can stack them (as well as nesting them). Base VM would have exokernel / NaCL like exposure of the native capabilities of the device. Exokernel FluxOS have some nifty tricks to punch through layers so performance is not so impacted by stacking. An intermediate VM layer could provide ISA / hardware abstraction so that everything above that looks the same. I re-read history of Smalltalk recently and was reminded of this from Alan, 'Bob Barton, the main designer of the B5000 and a professor at Utah had said in one of his talks a few days earlier: The basic principal of recursive design is to make the parts have the same power as the whole. For the first time I thought of the whole as the entire computer and wondered why anyone would want to divide it up into weaker things called data structures and procedures. Why not divide it up into little computers, as time sharing was starting to? But not in dozens. Why not thousands of them, each simulating a useful structure?' Toby On 9 June 2011 10:25, Josh Gargus j...@schwa.ca wrote: On Jun 9, 2011, at 2:04 AM, BGB wrote: On 6/9/2011 12:56 AM, Josh Gargus wrote: On May 31, 2011, at 7:30 AM, Alan Kay wrote: Hi Cornelius There are lots of egregiously wrong things in the web design. Perhaps one of the simplest is that the browser folks have lacked the perspective to see that the browser is not like an application, but like an OS. i.e. what it really needs to do is to take in and run foreign code (including low level code) safely and coordinate outputs to the screen (Google is just starting to realize this with NaCl after much prodding and beating.) I think everyone can see the implications of these two perspectives and what they enable or block Some of the implications, anyway. The benefits of the OS-perspective are clear. Once it hits its stride, there will be no (technical) barriers to deploying the sorts of systems that we talk about here (Croquet-Worlds-Frank-OMeta-whatnot). Others will be doing their own cool things, and there will be much creativity and innovation. However, elsewhere in this thread it is noted that the HTML-web is structured-enough to be indexable, mashupable, and so forth. It makes me wonder: is there a risk that the searchability, etc. of the web will be degraded by the appearance of a number of mutually-incompatible better-than-HTML web technologies? Probably not... in the worst case, someone who wants to be searchable can also publish in the legacy format. However, can we do better than that? I guess the answer depends on which aspect of the status quo we're trying to improve on (searchability, mashups, etc). For search, there must be plenty of technologies that can improve on HTML by decoupling search-metadata from presentation/interaction (such as OpenSearch, mentioned elsewhere in this thread). Mashups seem harder... maybe it needs to happen organically as some of the newly-possible systems find themselves converging in some areas. But I'm not writing because I know the answers, but rather the opposite. What do you think? hmm... it is a mystery actually, possibly a relevant question here, would be why Java applets largely fell on their face, but Flash largely took off (in all its uses from YouTube to Punch The Monkey...). but, yeah, there is another downside to deploying ones' technology in a browser: writing browser plug-ins... and, for browser-as-OS, what exactly will this mean, technically?... network-based filesystem and client-side binaries and virtual processes?... like, say, if one runs a tiny sand-boxed Unix-like system inside the browser, then push or pull binary files, which are executed, and may perform tasks?... This isn't quite what I had in mind. Perhaps hypervisor is better than OS to describe what I'm talking about, and I believe Alan too: a thin-as-possible platform that provides access to computing resources such as end-user I/O (mouse, multitouch, speakers, display, webcam, etc.), CPU/GPU, local persistant storage, and network. Just enough to enable others to run OSes on top of this hypervisor. If it tickles you fancy, then by
Re: [fonc] Alternative Web programming models?
. Perhaps a theme of the developments around HTML5 is evolving the Web architecture to better support connecting applications. But because the Web was designed for exchanging representations of application state (basically large-grained data), so many applications won't fit this model. Imagine trying to run a high-frequency equity trading network atop the FedEx air freight network, or worse the US Postal Service (or chose your local postal service). Add to the fact of a client-server hierarchy and now you have to deal with bottlenecks at those endpoints. Many web-based applications are designed around this bottleneck, and so I see us running into conceptual and structural scaling issues. Agreed. It appears that I was re-asking a variant of your original question. Cheers, Josh On Thu, Jun 9, 2011 at 2:56 AM, Josh Gargus j...@schwa.ca wrote: On May 31, 2011, at 7:30 AM, Alan Kay wrote: Hi Cornelius There are lots of egregiously wrong things in the web design. Perhaps one of the simplest is that the browser folks have lacked the perspective to see that the browser is not like an application, but like an OS. i.e. what it really needs to do is to take in and run foreign code (including low level code) safely and coordinate outputs to the screen (Google is just starting to realize this with NaCl after much prodding and beating.) I think everyone can see the implications of these two perspectives and what they enable or block Some of the implications, anyway. The benefits of the OS-perspective are clear. Once it hits its stride, there will be no (technical) barriers to deploying the sorts of systems that we talk about here (Croquet-Worlds-Frank-OMeta-whatnot). Others will be doing their own cool things, and there will be much creativity and innovation. However, elsewhere in this thread it is noted that the HTML-web is structured-enough to be indexable, mashupable, and so forth. It makes me wonder: is there a risk that the searchability, etc. of the web will be degraded by the appearance of a number of mutually-incompatible better-than-HTML web technologies? Probably not... in the worst case, someone who wants to be searchable can also publish in the legacy format. However, can we do better than that? I guess the answer depends on which aspect of the status quo we're trying to improve on (searchability, mashups, etc). For search, there must be plenty of technologies that can improve on HTML by decoupling search-metadata from presentation/interaction (such as OpenSearch, mentioned elsewhere in this thread). Mashups seem harder... maybe it needs to happen organically as some of the newly-possible systems find themselves converging in some areas. But I'm not writing because I know the answers, but rather the opposite. What do you think? Cheers, Josh Cheers, Alan From: Cornelius Toole cornelius.to...@gmail.com To: Fundamentals of New Computing fonc@vpri.org Sent: Tue, May 31, 2011 7:16:20 AM Subject: Re: [fonc] Alternative Web programming models? Thanks Merik, I've read/watch the OOPSLA'97 keynote before, but hadn't seen the first video. I'm having problems with the first one(the talk at UIUC). Has anyone been able to watch past the first hour. I get up to the point where Alex speaks and it freezes. I've just recently read Roy Fielding's dissertation on the architecture of the Web. Two prominent features of web architecture are the (1) client-server hierarchical style and (2) the layering abstraction style. My take away from that is how all of abstraction layers of the web software stack get in the way of the applications that want to use the machine. Style 1 is counter to the notion of the 'no centers' principle and is very limiting when you consider different classes of applications that might involve many entities with ill-defined relationships. Style 2, provides for separation of concerns and supports integration with legacy systems, but incurs so much overhead in terms of structural complexity and performance. I think the stuff about web sockets and what was discussed in the Erlang interview that Micheal linked to in the 1st reply is relevant here. The web was designed for large grain interaction between entities, but many application domain problems don't map to that. Some people just want pipes or channels to exchange messages for fine-grained interactions, but the layer cake doesn't allow it. This is where you get the feeling that the architecture for rich web apps is no-architecture, just piling big stones atop one another. I think it would be very interesting for someone to take the same approach to networked-based application as Gezira did with graphics (or the STEP project in general) as far assessing what's needed in a modern Internet-scale hypermedia architecture. On Thu, May 26, 2011 at 4:53 PM
Re: [fonc] Alternative Web programming models?
That all sounds very cool. However, I don't think that it's feasible to try to ship something like this as standard in all browsers, if only for political reasons. It would be impossible to get Mozilla, Google, Apple, and Microsoft to agree on it. That's what's cool about NaCl. It's minimal enough to be a feasible candidate for universal adoption. If it's adopted, then an ecosystem springs up with people inventing recursive exokernels to run in the browser. Cheers, Josh On Jun 9, 2011, at 10:56 AM, Toby Watson wrote: How about _recursive_ VM/JITs *beneath* the level that HTML/JS is implemented. So the browser that ships only supports this recursive VM. HTML is an application of this that can be evolved by open source at internet scale / time. Web pages can point at a specific HTML implementation or a general redirector like google apis to get the commonly agreed standard version. Other containers/'plugins', Squeak, Flash, Java run as VMs, can run their native bytecode/images but also, potentially, expose the VM interface up again. Nesting VMs is useful also. Though you won't spare the use-case any love, Flash video players often load multiple ads SDKs, an arrangement that could benefit from isolation, i.e. browser-more-like-OS. If the top and bottom VM interfaces are the same then we can stack them (as well as nesting them). Base VM would have exokernel / NaCL like exposure of the native capabilities of the device. Exokernel FluxOS have some nifty tricks to punch through layers so performance is not so impacted by stacking. An intermediate VM layer could provide ISA / hardware abstraction so that everything above that looks the same. I re-read history of Smalltalk recently and was reminded of this from Alan, 'Bob Barton, the main designer of the B5000 and a professor at Utah had said in one of his talks a few days earlier: The basic principal of recursive design is to make the parts have the same power as the whole. For the first time I thought of the whole as the entire computer and wondered why anyone would want to divide it up into weaker things called data structures and procedures. Why not divide it up into little computers, as time sharing was starting to? But not in dozens. Why not thousands of them, each simulating a useful structure?' Toby On 9 June 2011 10:25, Josh Gargus j...@schwa.ca wrote: On Jun 9, 2011, at 2:04 AM, BGB wrote: On 6/9/2011 12:56 AM, Josh Gargus wrote: On May 31, 2011, at 7:30 AM, Alan Kay wrote: Hi Cornelius There are lots of egregiously wrong things in the web design. Perhaps one of the simplest is that the browser folks have lacked the perspective to see that the browser is not like an application, but like an OS. i.e. what it really needs to do is to take in and run foreign code (including low level code) safely and coordinate outputs to the screen (Google is just starting to realize this with NaCl after much prodding and beating.) I think everyone can see the implications of these two perspectives and what they enable or block Some of the implications, anyway. The benefits of the OS-perspective are clear. Once it hits its stride, there will be no (technical) barriers to deploying the sorts of systems that we talk about here (Croquet-Worlds-Frank-OMeta-whatnot). Others will be doing their own cool things, and there will be much creativity and innovation. However, elsewhere in this thread it is noted that the HTML-web is structured-enough to be indexable, mashupable, and so forth. It makes me wonder: is there a risk that the searchability, etc. of the web will be degraded by the appearance of a number of mutually-incompatible better-than-HTML web technologies? Probably not... in the worst case, someone who wants to be searchable can also publish in the legacy format. However, can we do better than that? I guess the answer depends on which aspect of the status quo we're trying to improve on (searchability, mashups, etc). For search, there must be plenty of technologies that can improve on HTML by decoupling search-metadata from presentation/interaction (such as OpenSearch, mentioned elsewhere in this thread). Mashups seem harder... maybe it needs to happen organically as some of the newly-possible systems find themselves converging in some areas. But I'm not writing because I know the answers, but rather the opposite. What do you think? hmm... it is a mystery actually, possibly a relevant question here, would be why Java applets largely fell on their face, but Flash largely took off (in all its uses from YouTube to Punch The Monkey...). but, yeah, there is another downside to deploying ones' technology in a browser: writing browser plug-ins... and, for browser-as-OS, what exactly will this mean, technically?... network-based filesystem and client-side binaries and virtual processes?... like,
Re: [fonc] Alternative Web programming models?
On Jun 9, 2011, at 11:42 AM, BGB wrote: OSes on top of this hypervisor. If it tickles you fancy, then by all means use it to run a sand-boxed Unix. Undoubtedly someone will; witness the cool hack to run Linux in the browser, accomplished by writing an x86 emulator in Javascript (http://bellard.org/jslinux/). interesting... less painfully slow than I would have expected from the description... I wasn't thinking exactly like run an emulator, run OS in emulator, but more like, a browser plugin which looked and acted similar to a small Unix (with processes and so on, and a POSIX-like API, and a filesystem), but would likely be different in that it would mount content from the website as part of its local filesystem (probably read-only by default), and possibly each process could have its own local VFS. I know. I was just saying that if someone has written a Javascript x86 emulator to run Linux in the browser, that it's a near-certainty that someone will eventually use NaCl to host a POSIX-like environment in the browser. Cheers, Josh___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On Jun 9, 2011, at 12:06 PM, BGB wrote: On 6/9/2011 11:10 AM, Josh Gargus wrote: That all sounds very cool. However, I don't think that it's feasible to try to ship something like this as standard in all browsers, if only for political reasons. It would be impossible to get Mozilla, Google, Apple, and Microsoft to agree on it. That's what's cool about NaCl. It's minimal enough to be a feasible candidate for universal adoption. If it's adopted, then an ecosystem springs up with people inventing recursive exokernels to run in the browser. Cheers, Josh I don't understand though why one needs recursive exokernels though... You're taking me too literally. My point is that the first goal is to get widespread adoption of something like NaCl that is good enough to host a POSIX environment, a recursive exokernel, or whatever. Once that first goal is achieved, well, let a hundred flowers bloom. Cheers, Josh ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
On 6/9/2011 12:20 PM, Josh Gargus wrote: On Jun 9, 2011, at 12:06 PM, BGB wrote: On 6/9/2011 11:10 AM, Josh Gargus wrote: That all sounds very cool. However, I don't think that it's feasible to try to ship something like this as standard in all browsers, if only for political reasons. It would be impossible to get Mozilla, Google, Apple, and Microsoft to agree on it. That's what's cool about NaCl. It's minimal enough to be a feasible candidate for universal adoption. If it's adopted, then an ecosystem springs up with people inventing recursive exokernels to run in the browser. Cheers, Josh I don't understand though why one needs recursive exokernels though... You're taking me too literally. My point is that the first goal is to get widespread adoption of something like NaCl that is good enough to host a POSIX environment, a recursive exokernel, or whatever. Once that first goal is achieved, well, let a hundred flowers bloom. yes, ok. FWIW, I suspect I tend to be fairly literal/concrete minded in general (although I can still imagine lots of stuff as well...). however, I guess I am just not very good at dealing with abstract thinking/concepts/... but, yeah, widespread Unix-like NaCl would be cool (and personally less off-putting than the idea of having to go do apps with all CGI+JavaScript or by using Flash... although before I saw something where Adobe was showing off a C - AVM2 compiler, and demoing Quake running on top of Flash...). or such... ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
of a number of mutually-incompatible better-than-HTML web technologies? Probably not... in the worst case, someone who wants to be searchable can also publish in the legacy format. However, can we do better than that? I guess the answer depends on which aspect of the status quo we're trying to improve on (searchability, mashups, etc). For search, there must be plenty of technologies that can improve on HTML by decoupling search-metadata from presentation/interaction (such as OpenSearch, mentioned elsewhere in this thread). Mashups seem harder... maybe it needs to happen organically as some of the newly-possible systems find themselves converging in some areas. But I'm not writing because I know the answers, but rather the opposite. What do you think? Cheers, Josh Cheers, Alan -- *From:* Cornelius Toole cornelius.to...@gmail.com *To:* Fundamentals of New Computing fonc@vpri.org *Sent:* Tue, May 31, 2011 7:16:20 AM *Subject:* Re: [fonc] Alternative Web programming models? Thanks Merik, I've read/watch the OOPSLA'97 keynote before, but hadn't seen the first video. I'm having problems with the first one(the talk at UIUC). Has anyone been able to watch past the first hour. I get up to the point where Alex speaks and it freezes. I've just recently read Roy Fielding's dissertation on the architecture of the Web. Two prominent features of web architecture are the (1) client-server hierarchical style and (2) the layering abstraction style. My take away from that is how all of abstraction layers of the web software stack get in the way of the applications that want to use the machine. Style 1 is counter to the notion of the 'no centers' principle and is very limiting when you consider different classes of applications that might involve many entities with ill-defined relationships. Style 2, provides for separation of concerns and supports integration with legacy systems, but incurs so much overhead in terms of structural complexity and performance. I think the stuff about web sockets and what was discussed in the Erlang interview that Micheal linked to in the 1st reply is relevant here. The web was designed for large grain interaction between entities, but many application domain problems don't map to that. Some people just want pipes or channels to exchange messages for fine-grained interactions, but the layer cake doesn't allow it. This is where you get the feeling that the architecture for rich web apps is no-architecture, just piling big stones atop one another. I think it would be very interesting for someone to take the same approach to networked-based application as Gezira did with graphics (or the STEP project in general) as far assessing what's needed in a modern Internet-scale hypermedia architecture. On Thu, May 26, 2011 at 4:53 PM, Merik Voswinkel a...@knoware.nl wrote: Dr Alan Kay addressed the html design a number of times in his lectures and keynotes. Here are two: [1] Alan Kay, How Complex is Personal Computing?. Normal Considered Harmful. October 22, 2009, Computer Science department at UIUC. http://media.cs.uiuc.edu/seminars/StateFarm-Kay-2009-10-22b.asx (also see http://www.smalltalk.org.br/movies/ ) [2] Alan Kay, The Computer Revolution Hasn't Happened Yet, October 7, 1997, OOPSLA'97 Keynote. Transcript http://blog.moryton.net/2007/12/computer-revolution-hasnt-happened-yet.html Video http://ftp.squeak.org/Media/AlanKay/Alan%20Kay%20at%20OOPSLA%201997%20-%20The%20computer%20revolution%20hasnt%20happened%20yet.avi (also see http://www.smalltalk.org.br/movies/ ) Merik On May 26, 2011, at 8:38 PM, Cornelius Toole wrote: All, A criticism by Dr. Kay, has really stuck with me. I can't remember the specific criticism and where it's from, but I recall it being about the how wrong the web programming model is. I imagine he was referring to how disjointed, resource inefficient it is and how it only exposes a fraction of the power and capability inherent in the average personal computer. So Alan, anyone else, what's wrong with the web programming mode and application architecture? What programming model would work for a global-scale hypermedia system? What prior research or commercial systems have any of these properties? The web is about the closest we've seen to a ubiquitous deployment platform for software, but the confluence of market forces and technical realities endanger that ubiquity because users want full power of their devices plus the availability of Internet connectivity. -Cornelius -- cornelius toole, jr. | ctoo...@tigers.lsu.edu | mobile: 601.212.3045 ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc -- cornelius toole, jr
Re: [fonc] Alternative Web programming models?
On Jun 9, 2011, at 11:01 AM, Josh Gargus j...@schwa.ca wrote: Conceptually, yes. In practice, no, because the HTML/DOM render-target is also the lingua franca that makes the Web searchable and mashupable. So I'd like to first point out that you're making a great point here, so I hope it isn't too odd that I'm about to try to tear it down. Devil's advocate? While the markup language has proven quite mashable/searchable, I think it's worth noting that just about *any* structured, broadly applied _convention_ will give you that; it could have been CSV, if SGML hadn't been tapped. One of the nicest things about markup has been free-to-cheap accessibility for blind folks... with most languages you can embed in a web page, this tends to go out the door quickly, and AJAX probably doesn't help either. If the browser was an operating system, I imagine we'd find a more traditional route to this kind of accessibility, which is about text-to-speech, and if you have the text, you should be able to search it too. Take a moment to imagine how different the world might be today if the convention had been e.g. s-exprs. How many linguistic context shifts do you think you'd need to build a web application in that world? While I love programming languages, when I have a deadline? bouncing back and forth between five or six languages probably hurts my productivity. Not to mention that we end up compensating in industry by hyperspecializing. I wish it was easier to hire people who just knew how to code, instead of having to qualify them as backend vs. frontend. I mean seriously. It's like specializing in putting a patty that someone else cooked on a bun, in terms of personal empowerment. Factory work, factory thinking. I'm the button pusher and your job is to assemble the two parts that I send down the line every five seconds when I push the button. Patty, bun. I hoped Seaside might help a touch, and the backend guys all seem to really dig it (hey, now we can make web apps all by ourselves, without the burden of the wrangling boring markup-goop) but the frontend folks I've talked to (in-trench, not online) are hard pressed to have time to learn a whole new system. Since they build the part that the stakeholders actually see, I think they end up with more in the way of random asks from business folks, which have this way of making it clear over engineering managers, etc. There's also the problem wherein you have a whole bunch of people out there who've never seen anything else and don't have any context for why someone like me might be displeased with the current state of affairs. It'd be nice to be able to sort out how many of these problems are cognitive+technical versus cultural/social. The most interesting thing I've seen so far was when I was at a (now sold/defunct) company called Snapvine. We integrated telephony with social networking sites. Anyway, I spent more time looking at MySpace than I wanted to, and was stunned to discover: Kids with MySpace pages were learning HTML and CSS just to trick out and add something unique to their profiles, and didn't seem to relate what they were doing to software at all. I wasn't sure if I was supposed to smile or frown when that realization hit me. That's about when I started talking to people about HyperCard again, which is ultimately how I found my way to Squeak, and then this list. ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
Re: [fonc] Alternative Web programming models?
You know this isn't usable with the browser I have handy at the moment, but I can already see it. Really interesting, I can imagine it would look more or less like this. Thanks for putting me onto this, Ian. On Jun 9, 2011, at 2:52 PM, Ian Piumarta piuma...@speakeasy.net wrote: On Jun 9, 2011, at 14:38 , Casey Ransberger wrote: Take a moment to imagine how different the world might be today if the convention had been e.g. s-exprs. http://hop.inria.fr/ ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc
RE: [fonc] Alternative Web programming models?
They have their payment story together. They will contact you will all the arrangements. I think they cover flights and hotel and pay different fees for different services (e.g. teaching a course verses giving a talk). I may be off base if you are only giving a talk because I have always done the combo deal. I suggest you ping Lee directly. Unlike other conference organizers we know, he will respond. -Original Message- From: fonc-boun...@vpri.org [mailto:fonc-boun...@vpri.org] On Behalf Of Michael Forster Sent: Friday, June 03, 2011 1:19 PM To: Fundamentals of New Computing Subject: Re: [fonc] Alternative Web programming models? On Fri, Jun 3, 2011 at 12:58 PM, C. Scott Ananian csc...@laptop.org wrote: [...] The web is not *only* an OS. It also provides the backing data for a very large unstructured database. Google of course realize this, as their company rests on a search engine. The semantic web folks have tried in vain to get people to add more structure to the database. What the web OS must do is allow the efficient export of additional *unstructured and ad hoc* data. HTML+CSS web applications today are [...] Sorry for the tanget, but there is no such thing as an unstructured database. Whether talking about the logical or physical level, a database is a specfication of data structure (and constraints upon that data). Dr. Kay once characterised computing as a pop culture, and statements such as the above reflect that. Regards, Mike ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc ___ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc