Re: [fonc] Personal Programming Environment as Extension of Self

2013-09-24 Thread Pavel Bažant
I don't know the details of your language, but I see two possibilities:
1) If the textual representation of your language is parenthesis-balanced
by definition, just do what Lisp does.
2) If not, format quoted text like quote number_of_chars char char char 
Yes I know 2) is fragile, but so is escaping.


On Tue, Sep 24, 2013 at 7:24 AM, David Barbour dmbarb...@gmail.com wrote:

 Oh, I see. As I mentioned in the first message, I plan on UTF-8 text being
 one of the three basic types in ABC. There is text, rational numbers, and
 blocks. Even if I'm not using names, I think text is very useful for tagged
 values and such.

   {Hello, World!}

 Text is also one of the problems I've been banging my head against since
 Friday. Thing is, I really hate escapes. They have this nasty geometric
 progression when dealing with deeply quoted code:

  {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} -
 {\\\}\\\}\\\}\}}

 I feel escapes are too easy to handle incorrectly, and too difficult to
 inspect for correctness. I'm currently contemplating a potential solution:
 require all literal text to use balanced `{` and `}` characters, and use
 post-processing in ABC to introduce any imbalance. This could be performed
 in a streaming manner. Inductively, all quoted code would be balanced.

 Best,

 Dave





 On Mon, Sep 23, 2013 at 9:28 PM, John Carlson yottz...@gmail.com wrote:

 I don't really have a big concern.  If you just support numbers, people
 will find clever, but potentially incompatible ways of doing strings.  I
 recall in the pre-STL days supporting 6 different string classes.  I
 understand that a name is different than a string, but I come from a perl
 background.  People don't reinvent strings in perl to my knowledge.
  On Sep 23, 2013 11:15 PM, David Barbour dmbarb...@gmail.com wrote:

 I think it's fine if people model names, text, documents, association
 lists, wikis, etc. -- and processing thereof.

 And I do envision use of graphics as a common artifact structure, and
 just as easily leveraged for any explanation as text (though I imagine most
 such graphics will also have text associated).

 Can you explain your concern?
  On Sep 23, 2013 8:16 PM, John Carlson yottz...@gmail.com wrote:

 Don't forget that words can be images, vector graphics or 3D graphics.
 If you have an open system, then people will incorporate names/symbols.
 I'm not sure you want to avoid symbolic processing, but that's your choice.

 I'm reminded of the omgcraft ad for cachefly.
 John
 On Sep 23, 2013 8:11 PM, David Barbour dmbarb...@gmail.com wrote:

 Okay, so if I understand correctly you want everyone to see the same
 thing, and just deal with the collisions when they occur.

 You also plan to mitigate this by using some visual indicators when
 that word doesn't mean what you think it means.  This would require
 search before rendering, but perhaps it could be a search of the user's
 personal dictionary - i.e. ambiguity only within a learned set. I wonder 
 if
 we could use colors or icons to help disambiguate.

 A concern I have about this design is when words have meanings that
 are subtly but significantly different. Selecting among these distinctions
 takes extra labor compared to using different words or parameterizing the
 distinctions. But perhaps this also could be mitigated, through automatic
 refactoring of the personal dictionary (such that future exposure to a
 given word will automatically translate it).

 I titled this Personal Programming Environment as Extension of Self
 because I think it should reflect our own metaphors, our own thoughts,
 while still being formally precise when we share values. Allowing me to 
 use
 your words, your meanings, your macros is one thing - a learning
 experience. Asking me to stick with it, when I have different subtle
 distinctions I favor, is something else.

 Personally, I think making the community see the same things is less
 important so long as they can share and discover by *meaning* of content
 rather than by the words used to describe it. Translator packages could be
 partially automated and further maintained implicitly with permission from
 the people who explore different projects and small communities.

 Can we create systems that enable people to use the same words and
 metaphors with subtly different meanings, but still interact efficiently,
 precisely, and unambiguously?

 Best,

 Dave


 On Mon, Sep 23, 2013 at 5:26 PM, Sean McDirmid 
 smcd...@microsoft.comwrote:

  The names are for people, and should favor readability over
 uniqueness in the namespace; like ambiguous English words context should 
 go
 a long way in helping the reader understand on their own (if not, they 
 can
 do some mouse over). We can even do fancy things with the names when they
 are being rendered, like, if they are ambiguous, underlay them with a
 dis-ambiguating qualifier. The world is wide open once you’ve mastered 
 how
 to build a code editor! 

Re: [fonc] Personal Programming Environment as Extension of Self

2013-09-24 Thread Chris Warburton
David Barbour dmbarb...@gmail.com writes:

 Text is also one of the problems I've been banging my head against since
 Friday. Thing is, I really hate escapes. They have this nasty geometric
 progression when dealing with deeply quoted code:

  {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} -
 {\\\}\\\}\\\}\}}

 I feel escapes are too easy to handle incorrectly, and too difficult to
 inspect for correctness. I'm currently contemplating a potential solution:
 require all literal text to use balanced `{` and `}` characters, and use
 post-processing in ABC to introduce any imbalance. This could be performed
 in a streaming manner. Inductively, all quoted code would be balanced.

The geometric explosion comes from the unary nature of escaping. It
wouldn't be too difficult to add a 'level', for example:

{} - {{\0}} - {{{\1}\0}} - \2}\1}\0}} -
 {\3}\2}\1}\0}}

The main problem with escaping is that it is homomorphic: ie. it is
usually String - String. This is basically the source of all code
injection attacks. It wouldn't be too bad if escaping were idempotent,
since we could add extra escapes just in case, but it's not so we end up
keeping track manually, and failing.

There's a good post on this at
http://blog.moertel.com/posts/2006-10-18-a-type-based-solution-to-the-strings-problem.html

It would be tricky to implement a solution to this in a way that's open
and extensible; if we're be passing around first-class functions anyway,
we could do Haskell's dictionary-passing manually.

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


Re: [fonc] Personal Programming Environment as Extension of Self

2013-09-24 Thread David Barbour
Thanks for the ref, Chris. I'll take some time to absorb it.

On Tue, Sep 24, 2013 at 1:46 AM, Chris Warburton
chriswa...@googlemail.comwrote:

 David Barbour dmbarb...@gmail.com writes:

  Text is also one of the problems I've been banging my head against since
  Friday. Thing is, I really hate escapes. They have this nasty geometric
  progression when dealing with deeply quoted code:
 
   {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} -
  {\\\}\\\}\\\}\}}
 
  I feel escapes are too easy to handle incorrectly, and too difficult to
  inspect for correctness. I'm currently contemplating a potential
 solution:
  require all literal text to use balanced `{` and `}` characters, and use
  post-processing in ABC to introduce any imbalance. This could be
 performed
  in a streaming manner. Inductively, all quoted code would be balanced.

 The geometric explosion comes from the unary nature of escaping. It
 wouldn't be too difficult to add a 'level', for example:

 {} - {{\0}} - {{{\1}\0}} - \2}\1}\0}} -
  {\3}\2}\1}\0}}

 The main problem with escaping is that it is homomorphic: ie. it is
 usually String - String. This is basically the source of all code
 injection attacks. It wouldn't be too bad if escaping were idempotent,
 since we could add extra escapes just in case, but it's not so we end up
 keeping track manually, and failing.

 There's a good post on this at

 http://blog.moertel.com/posts/2006-10-18-a-type-based-solution-to-the-strings-problem.html

 It would be tricky to implement a solution to this in a way that's open
 and extensible; if we're be passing around first-class functions anyway,
 we could do Haskell's dictionary-passing manually.

 Cheers,
 Chris
 ___
 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] Personal Programming Environment as Extension of Self

2013-09-24 Thread David Barbour
I have nothing against name resolution at edit-time. My concern is that
giving the user a list of 108 subtly different definitions of 'OOP' and
saying I can't resolve this in context. Which one do you mean here? every
single time would be insufferable, even if the benefit is that everyone
'sees' the same code.


On Sep 24, 2013 7:15 AM, Matt M mclelland.m...@gmail.com wrote:

   Person.draw(object) -- What do I mean by this? Am I drawing a picture?
 a gun? a curtain?

 And the way this works in conversation is that your partner stops you and
 says wait, what do you mean by 'draw'?  Similarly an IDE can underline
 the ambiguity and leave it to the user to resolve, either explicitly or
 implicitly by continuing to write more (often ambiguity is removed with
 further context).

 I completely agree with Sean's quote (of Johnathan Edwards?) that names
 are for people, and that name resolution should almost never be part of the
 dynamics of a language.  Names should be resolved statically (preferably at
 edit time).

 Matt


 On Monday, September 23, 2013 9:24:52 PM UTC-5, dmbarbour wrote:

 Ambiguity in English is often a problem. The Artist vs. Cowboy example
 shows that ambiguity is in some cases not a problem. I think it reasonable
 to argue that: when the context for two meanings of a word is obviously
 different, you can easily disambiguate using context. The same is true for
 types. But review my concern below: when words have meanings that are *
 subtly* but significantly different. In many cases the difference is *
 subtle* but important. It is these cases where ambiguity can be
 troublesome.

 Person.draw(object) -- What do I mean by this? Am I drawing a picture? a
 gun? a curtain?

 Regarding conversations with coworkers:

 I think in the traditional KVM programming environment, the common view
 does seem important - e.g. for design discussions or over-the-shoulder
 debugging. At the moment, there is no easy way to use visual aides and
 demonstrations when communicating structure or meaning.

 In an AR or VR environment, I hypothesize this pressure would be
 alleviated a great deal, since the code could be shown to each participant
 in his or her own form and allow various 
 meaning-by-demonstration/**exploration
 forms of communication. I'm curious whether having different 'ways' of
 seeing the code might even help for debugging. Multiple views could also be
 juxtaposed if there are just a few people involved, enabling them to more
 quickly understand the other person's point of view.

 Best,

 Dave

 On Mon, Sep 23, 2013 at 6:21 PM, Sean McDirmid smc...@microsoft.comwrote:

  Ambiguity is common in English and it’s not a big problem: words have
 many different definitions, but when read in context we can usually tell
 what they mean. For “Cowboy.Draw(Gun)” and “Artist.Draw(Picture)”, we can
 get a clue about what Draw means; ambiguity is natural! For my language,
 choosing what Draw is meant drives type inference, so I can’t rely on types
 driving name lookup. But really, the displayed annotation goes in the type
 of the variables surrounding the Draw call (Cowboy, Gun) rather than the
 Draw Call itself. 

 ** **

 Language is an important part of society. Though I can use translation
 to talks to my Chinese speaking colleagues, that we all speak in English at
 work and share the names for things is very important for collaboration
 (and suffers when we don’t). For code, we might be taking about it even
 when we are not reading it, so standardizing the universe of names is still
 very important. 

 ** **

 *From:* augmented-...@**googlegroups.com [mailto:augmented-...@**
 googlegroups.com] *On Behalf Of *David Barbour
 *Sent:* Tuesday, September 24, 2013 9:11 AM
 *To:* augmented-...@**googlegroups.com; reactiv...@googlegroups.**com;
 Fundamentals of New Computing

 *Subject:* Re: Personal Programming Environment as Extension of Self

 ** **

 Okay, so if I understand correctly you want everyone to see the same
 thing, and just deal with the collisions when they occur. 

 ** **

 You also plan to mitigate this by using some visual indicators when
 that word doesn't mean what you think it means.  This would require
 search before rendering, but perhaps it could be a search of the user's
 personal dictionary - i.e. ambiguity only within a learned set. I wonder if
 we could use colors or icons to help disambiguate.

 ** **

 A concern I have about this design is when words have meanings that are
 subtly but significantly different. Selecting among these distinctions
 takes extra labor compared to using different words or parameterizing the
 distinctions. But perhaps this also could be mitigated, through automatic
 refactoring of the personal dictionary (such that future exposure to a
 given word will automatically translate it). 

 ** **

 I titled this Personal Programming Environment as Extension of Self
 because I think it should reflect our own metaphors, our own thoughts,
 

Re: [fonc] Personal Programming Environment as Extension of Self

2013-09-24 Thread David Barbour
Even Lisp isn't parentheses balanced by definition, because you can do this:

'())

In that same sense my bytecode is block balanced, except in text.

  [ [ [] [] ] [] ]

 { ] }

The idea of using number of chars is possible, something like:

  {42|forty two characters here.

But that would also be very difficult to use in a streaming bytecode. It's
also difficult to read. I've always felt that bytecode should at least be
slightly legible, so I can easily get a sense of what's happening just by
looking at the raw streams, even though I don't expect people to program in
bytecode directly (nor read it that way often).

On Tue, Sep 24, 2013 at 12:49 AM, Pavel Bažant pbaz...@gmail.com wrote:

 I don't know the details of your language, but I see two possibilities:
 1) If the textual representation of your language is parenthesis-balanced
 by definition, just do what Lisp does.
 2) If not, format quoted text like quote number_of_chars char char char
 
 Yes I know 2) is fragile, but so is escaping.


 On Tue, Sep 24, 2013 at 7:24 AM, David Barbour dmbarb...@gmail.comwrote:

 Oh, I see. As I mentioned in the first message, I plan on UTF-8 text
 being one of the three basic types in ABC. There is text, rational numbers,
 and blocks. Even if I'm not using names, I think text is very useful for
 tagged values and such.

   {Hello, World!}

 Text is also one of the problems I've been banging my head against since
 Friday. Thing is, I really hate escapes. They have this nasty geometric
 progression when dealing with deeply quoted code:

  {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} -
 {\\\}\\\}\\\}\}}

 I feel escapes are too easy to handle incorrectly, and too difficult to
 inspect for correctness. I'm currently contemplating a potential solution:
 require all literal text to use balanced `{` and `}` characters, and use
 post-processing in ABC to introduce any imbalance. This could be performed
 in a streaming manner. Inductively, all quoted code would be balanced.

 Best,

 Dave





 On Mon, Sep 23, 2013 at 9:28 PM, John Carlson yottz...@gmail.com wrote:

 I don't really have a big concern.  If you just support numbers, people
 will find clever, but potentially incompatible ways of doing strings.  I
 recall in the pre-STL days supporting 6 different string classes.  I
 understand that a name is different than a string, but I come from a perl
 background.  People don't reinvent strings in perl to my knowledge.
  On Sep 23, 2013 11:15 PM, David Barbour dmbarb...@gmail.com wrote:

 I think it's fine if people model names, text, documents, association
 lists, wikis, etc. -- and processing thereof.

 And I do envision use of graphics as a common artifact structure, and
 just as easily leveraged for any explanation as text (though I imagine most
 such graphics will also have text associated).

 Can you explain your concern?
  On Sep 23, 2013 8:16 PM, John Carlson yottz...@gmail.com wrote:

 Don't forget that words can be images, vector graphics or 3D
 graphics.  If you have an open system, then people will incorporate
 names/symbols.  I'm not sure you want to avoid symbolic processing, but
 that's your choice.

 I'm reminded of the omgcraft ad for cachefly.
 John
 On Sep 23, 2013 8:11 PM, David Barbour dmbarb...@gmail.com wrote:

 Okay, so if I understand correctly you want everyone to see the same
 thing, and just deal with the collisions when they occur.

 You also plan to mitigate this by using some visual indicators when
 that word doesn't mean what you think it means.  This would require
 search before rendering, but perhaps it could be a search of the user's
 personal dictionary - i.e. ambiguity only within a learned set. I wonder 
 if
 we could use colors or icons to help disambiguate.

 A concern I have about this design is when words have meanings that
 are subtly but significantly different. Selecting among these 
 distinctions
 takes extra labor compared to using different words or parameterizing the
 distinctions. But perhaps this also could be mitigated, through automatic
 refactoring of the personal dictionary (such that future exposure to a
 given word will automatically translate it).

 I titled this Personal Programming Environment as Extension of Self
 because I think it should reflect our own metaphors, our own thoughts,
 while still being formally precise when we share values. Allowing me to 
 use
 your words, your meanings, your macros is one thing - a learning
 experience. Asking me to stick with it, when I have different subtle
 distinctions I favor, is something else.

 Personally, I think making the community see the same things is
 less important so long as they can share and discover by *meaning* of
 content rather than by the words used to describe it. Translator packages
 could be partially automated and further maintained implicitly with
 permission from the people who explore different projects and small
 communities.

 Can we 

Re: [fonc] Personal Programming Environment as Extension of Self

2013-09-24 Thread John Carlson
We developed an s-expression-like client-server based UI protocol.  We used
class ids and object ids.  It was very difficult to debug.  So much so that
I developed a non distributed version (well it used X11).  Note that we
used string length for our strings.  It was more of an issue of numbers
everywhere that caused the confusion.  When HTML came out, we abandoned our
protocol.  Learn from the past.  HTML also knocked out other distributed
options like NeWS and Display PostScript.  These were lower level than HTML
for a long time.  I encourage you to leverage HTML and JavaScript to the
extent you need to, but beware of more understandable protocols happening
at the same level or above.  Sometimes giving up expressive power can be
better in the short run to gain market share.  That is, the best product
doesn't always win.

John
On Sep 24, 2013 10:54 AM, David Barbour dmbarb...@gmail.com wrote:

 Even Lisp isn't parentheses balanced by definition, because you can do
 this:

 '())

 In that same sense my bytecode is block balanced, except in text.

   [ [ [] [] ] [] ]

  { ] }

 The idea of using number of chars is possible, something like:

   {42|forty two characters here.

 But that would also be very difficult to use in a streaming bytecode. It's
 also difficult to read. I've always felt that bytecode should at least be
 slightly legible, so I can easily get a sense of what's happening just by
 looking at the raw streams, even though I don't expect people to program in
 bytecode directly (nor read it that way often).

 On Tue, Sep 24, 2013 at 12:49 AM, Pavel Bažant pbaz...@gmail.com wrote:

 I don't know the details of your language, but I see two possibilities:
 1) If the textual representation of your language is parenthesis-balanced
 by definition, just do what Lisp does.
 2) If not, format quoted text like quote number_of_chars char char char
 
 Yes I know 2) is fragile, but so is escaping.


 On Tue, Sep 24, 2013 at 7:24 AM, David Barbour dmbarb...@gmail.comwrote:

 Oh, I see. As I mentioned in the first message, I plan on UTF-8 text
 being one of the three basic types in ABC. There is text, rational numbers,
 and blocks. Even if I'm not using names, I think text is very useful for
 tagged values and such.

   {Hello, World!}

 Text is also one of the problems I've been banging my head against since
 Friday. Thing is, I really hate escapes. They have this nasty geometric
 progression when dealing with deeply quoted code:

  {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} -
 {\\\}\\\}\\\}\}}

 I feel escapes are too easy to handle incorrectly, and too difficult to
 inspect for correctness. I'm currently contemplating a potential solution:
 require all literal text to use balanced `{` and `}` characters, and use
 post-processing in ABC to introduce any imbalance. This could be performed
 in a streaming manner. Inductively, all quoted code would be balanced.

 Best,

 Dave





 On Mon, Sep 23, 2013 at 9:28 PM, John Carlson yottz...@gmail.comwrote:

 I don't really have a big concern.  If you just support numbers, people
 will find clever, but potentially incompatible ways of doing strings.  I
 recall in the pre-STL days supporting 6 different string classes.  I
 understand that a name is different than a string, but I come from a perl
 background.  People don't reinvent strings in perl to my knowledge.
  On Sep 23, 2013 11:15 PM, David Barbour dmbarb...@gmail.com wrote:

 I think it's fine if people model names, text, documents, association
 lists, wikis, etc. -- and processing thereof.

 And I do envision use of graphics as a common artifact structure, and
 just as easily leveraged for any explanation as text (though I imagine 
 most
 such graphics will also have text associated).

 Can you explain your concern?
  On Sep 23, 2013 8:16 PM, John Carlson yottz...@gmail.com wrote:

 Don't forget that words can be images, vector graphics or 3D
 graphics.  If you have an open system, then people will incorporate
 names/symbols.  I'm not sure you want to avoid symbolic processing, but
 that's your choice.

 I'm reminded of the omgcraft ad for cachefly.
 John
 On Sep 23, 2013 8:11 PM, David Barbour dmbarb...@gmail.com wrote:

 Okay, so if I understand correctly you want everyone to see the same
 thing, and just deal with the collisions when they occur.

 You also plan to mitigate this by using some visual indicators when
 that word doesn't mean what you think it means.  This would require
 search before rendering, but perhaps it could be a search of the user's
 personal dictionary - i.e. ambiguity only within a learned set. I 
 wonder if
 we could use colors or icons to help disambiguate.

 A concern I have about this design is when words have meanings that
 are subtly but significantly different. Selecting among these 
 distinctions
 takes extra labor compared to using different words or parameterizing 
 the
 distinctions. But perhaps this also 

Re: [fonc] Personal Programming Environment as Extension of Self

2013-09-24 Thread Loup Vaillant-David
One way of escaping is indentation, like Markdown.

This is arbitrary code
This is arbitrary code *in* arbitrary code.
and so on.

No more escape sequences in the quotation.  You just have the
inconvenience of prefixing each line with a tab or something.

Loup.


On Mon, Sep 23, 2013 at 10:24:20PM -0700, David Barbour wrote:
 Text is also one of the problems I've been banging my head against since
 Friday. Thing is, I really hate escapes. They have this nasty geometric
 progression when dealing with deeply quoted code:
 
  {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} -
 {\\\}\\\}\\\}\}}
 
 I feel escapes are too easy to handle incorrectly, and too difficult to
 inspect for correctness. I'm currently contemplating a potential solution:
 require all literal text to use balanced `{` and `}` characters, and use
 post-processing in ABC to introduce any imbalance. This could be performed
 in a streaming manner. Inductively, all quoted code would be balanced.
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] Personal Programming Environment as Extension of Self

2013-09-24 Thread David Barbour
Hmm. Indentation - i.e. newline as a default escape, then using spacing
after newline as a sort of counter-escape - is a possibility I hadn't
considered. It seems a little awkward in context of a bytecode, but I won't
dismiss it out of hand. I'd need to change my open-quote character, of
course. I'll give this some thought. Thanks.

On Tue, Sep 24, 2013 at 4:19 PM, Loup Vaillant-David 
l...@loup-vaillant.frwrote:

 One way of escaping is indentation, like Markdown.

 This is arbitrary code
 This is arbitrary code *in* arbitrary code.
 and so on.

 No more escape sequences in the quotation.  You just have the
 inconvenience of prefixing each line with a tab or something.

 Loup.


 On Mon, Sep 23, 2013 at 10:24:20PM -0700, David Barbour wrote:
  Text is also one of the problems I've been banging my head against since
  Friday. Thing is, I really hate escapes. They have this nasty geometric
  progression when dealing with deeply quoted code:
 
   {} - {{\}} - {{{\\\}\}} - \\\}\\\}\}} -
  {\\\}\\\}\\\}\}}
 
  I feel escapes are too easy to handle incorrectly, and too difficult to
  inspect for correctness. I'm currently contemplating a potential
 solution:
  require all literal text to use balanced `{` and `}` characters, and use
  post-processing in ABC to introduce any imbalance. This could be
 performed
  in a streaming manner. Inductively, all quoted code would be balanced.
 ___
 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] Urbit, Nock, Hoon

2013-09-24 Thread Julian Leviston
http://www.urbit.org/2013/08/22/Chapter-0-intro.html

Interesting?

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