Re: [fonc] visual environments created by present/former VPRI staff

2011-04-11 Thread Craig Latta

 Scratch already has higher ceiling forks: Build Your Own Blocks and
 Panther.
 http://byob.berkeley.edu/
 http://inst.eecs.berkeley.edu/~cs10
 http://pantherprogramming.weebly.com/

 Alright! Go Brian Harvey! :)


-C

--
Craig Latta
www.netjam.org/resume
+31  06 2757 7177
+ 1 415  287 3547



___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] Question about OMeta

2011-04-11 Thread John Zabroski
Thanks Julian.

I covered Migrations above. See reference [4].

I would view migrations as a way to encapsulate formed meanings.

Something that has always struck me as funny about the NoSQL movement
is the complaints about how much of a PITA they find schema versioning
in an RDBMS. I've never served millions of pages a day, but I've
always been deeply suspicious of the cause-effect relationship
described by the engineers at the biggest sites. Put simply, it
doesn't make any sense.  It's a bad correlation. The next big
architectural step forward will rectify this with a better
correlation.

On 4/10/11, Julian Leviston jul...@leviston.net wrote:
 You should probably have a look at ActiveRecord::Migration which is part of
 Rails if you're interested in SQL-based systems, and in fact ActiveRecord in
 general is a really wonderful abstraction system - and a very good mix of
 do what you *can* in a programming-language based DSL, and what you can't
 in direct SQL.

 http://api.rubyonrails.org/classes/ActiveRecord/Migration.html

 Julian.

 On 11/04/2011, at 2:58 AM, John Nilsson wrote:

 Wow, thanks. This will keep me occupied for a while ;-)

 Regarding AI completness and the quest for automation. In my mind its
 better to start with making it simpler for humans to do, and just keep
 making it simpler until you can remove the human element. This way you
 can put something out there much quicker and get feedback on what
 works, and what doesn't. Most importantly something out there for
 other developers (people smarter than me) to extend and improve.

 Regarding the database I have some ideas of experimenting with a
 persistent approach to data storage, employing a scheme with
 branching and human assisted merging to handle evolution of the
 system. For a fast moving target such as a typical OLTP-system there
 must be automated merging of course, but I see no reason for the
 algorithms to be either general or completley automatic. I think we
 can safley assume that there will be some competend people around to
 assist with the merging. Afterall there must be humans involved to
 trigger the evolution to being with.

 To solve the impedance missmatch between the dynamic world of the
 databse and the static world of application development I'm thinking
 the best approach is to simply remove it. Why have a static,
 unconnected, version of the application at all? After all code is
 data, and data belongs in the database.

 To have any hope of getting any kind of prototype out there I have,
 for now, decided to avoid thinking of distributed systems and/or
 untrusted systemcomponents. I guess this will be a 3.0 concern ;-)

 BR,
 John

 On Sun, Apr 10, 2011 at 4:40 PM, John Zabroski johnzabro...@gmail.com
 wrote:
 John,

 Disagree it is a simple thing, but it is a good example.

 It also demonstrates blending well, since analogies are used all the
 time in this domain to circumvent impedance mismatches.

 For example, versioning very large database systems' schema is
 non-trivial since the default methods don't scale:
 alter table BigTable add /*column*/ foo int

 This will lock out all readers and writers until it completes.
 Effectively it is a denial of service attack. Predicting its
 completion time is difficult, since it will depend on how the table
 was previously built (e.g. if anything fancy was done storing sparse
 columns; if there is still storage space available in-row to store the
 int required by this new column thus avoiding a complete rebuild; if
 the table needs to be completely rebuilt, then so do its indices; if
 the table is sharded across many independent disks, then the storage
 engine can parallelize the task). The *intention* is to add a column
 to a table, presumably for some new requirement. But there is a latent
 requirement on the intention, forming a new meaning, that nobody
 should observe a delay during the schema upgrade.

 Now, if the default method isn't robust enough, then What is? and What
 do we call it?

 Well, what I did to solve this problem was type in how to add a
 column to a large table into Google [1].

 As for naming it, well, the enterprise software community came up with
 this concept called Database Refactorings [2] [3] or simply
 Migrations [4], which are a heuristic system for approximating the
 Holy Grail of having a reversible logic for schema operations
 (generally difficult due to destructive changes and other problems).
  Programmers procedurally embed knowledge on how to change the schema,
 and then just pass messages to a server that has all of this
 procedural knowledge embedded in it. It i interesting (to me, anyway)
 that programmers have developed a human process for working around a
 complex theoretical problem (e.g., see [5] for a discussion of the
 challenges in building a lingua franca for data integration, schema
 evolution, database design, and model management), without ever
 knowing the problems.  Good designers realize there is a structural
 

Re: [fonc] Question about OMeta

2011-04-11 Thread John Zabroski
On Sat, Apr 9, 2011 at 12:09 AM, Alan Kay alan.n...@yahoo.com wrote:

 But now you are adding some side conditions :)

 For example, if you want comparable or even better abstractions in the
 target language, then there is a lot more work that has to be done (and I
 don't know of a great system that has ever been able to do this well e.g. to
 go from an understandable low level meaning to really nice code using the
 best abstractions of the target language). Maybe John Z knows?


Alan,

There was a guy at SPLASH 2010 that was talking about wanting to build such
a system.  I think he was a researcher at Boeing, but he came across as so
practically minded that I thought he was a programmer just like me.

I don't know why you thought I specifically would have any ideas on this...
but...

Tell me your thoughts on
http://www.ics.uci.edu/~nlopezgi/flexitools/papers/douglass_flexitools_splash2010.pdf

I am surprised you didn't mention this above since he uses Squeak for the
bootstrap.  I suggested at SPLASH that he contact you (VPRI, really),
especially when you consider how close by you are.

As for UNCOL, I have Sammet's book on programming and there are some really
interesting conferences from the 1950s that are covered in the
preface/disclaimer.  Well, at least I think it's the book that mentions it.
Either way I couldn't easily look up these references or find proceedings
from conferences in the 1950s.
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] Question about OMeta

2011-04-11 Thread John Zabroski
On Sat, Apr 9, 2011 at 12:09 AM, Alan Kay alan.n...@yahoo.com wrote:

 The larger problems will require something like negotiation between
 modules (this idea goes back to some of the agent ideas at PARC, and was
 partially catalyzed by the AM and Eurisko work by Doug Lenat).


Separate thread of thought:

Some rather successful designs do recursive negotiation for request
resolution.  I gave an HTTP example on LtU awhile back [1], explaining why
REST is such a good design for an Interpreter pattern to handle very
large-scale systems.  I also link it to the best solution to Wadler's
Expression Problem that I've seen yet (and, according to Wadler, the best
he's seen in Haskell [2]; the reader comments there are pretty good as
well): Data Types a la Carte.

Also, Sameer Sundresh recently completed his Ph.D. thesis, Request-Based
Mediated Execution [3], under Jose' Meseguer.  I spoke with him about how
broadly applicable I felt his ideas were, but we seemed to part views on the
best practical demonstrations for his work.

For example, Sameer is now a founder at Djangy which provides cloud hosting
for Django apps.  He thought that the ideas in his thesis we good building
blocks for automatically sandboxing system resources, such as in a
multi-tenancy cloud app.  I disagreed, since I would prefer a system built
from first principles using an ocaps system.  What I meant was that his
good example would become obsolete in 50 years, and so I was pushing for
examples that I thought would be timeless.  I suggested an Object-Relational
Mapper architecture built using this sort of recursive negotiation, since it
doesn't work that way today in any ORM implementation and would emphasize
the biggest feature of his thesis: Giving the power to the programmer,
rather than the language's interpreter.

But a big challenge is figuring out how to verify this sort of
call-by-intention is correct.

[1] http://lambda-the-ultimate.org/node/3846#comment-57350
[2] http://wadler.blogspot.com/2008/02/data-types-la-carte.html
[3]
http://www-osl.cs.uiuc.edu/docs/sundresh-dissertation-2009/sundresh-dissertation-2009.pdf
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc