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

2013-09-23 Thread John Nilsson
A thought about bytecode: One problem with distributing things in a
compiled version is that it doesnt really afford collaboration. If the
primary means of distribution instead would be the source as such it's much
easier to debug and fix issues discovered in imported modules. If something
like a github fork was the standard way of importing it would be even
better, then you are basically just a pull request away from contributing
tweaks too.
Things like minification as in the javascript world would have to be
discouraged though, so compilation and caching should be designers so
as not to be a performance problem.
But, like git, this should be easy if things are based on immutable content
adressable fragments. See f.ex. Datomic and/or camlistore as an approach to
this. ( and docker for that matter)


BR
John


Den söndagen den 22:e september 2013 skrev David Barbour:

 Mark,

 You ask some good questions! I've been taking some concrete actions to
 realize my vision, but I haven't much considered how easily others might
 get involved.

 As I've written, I think a tactic concatenative (TC) language is the key
 to making it all work great. A TC language can provide a uniformly safe and
 simple foundation for understanding and manipulating streaming updates.
 User actions must be formally translated to TC commands, though I can start
 at a higher level and work my way down. However, the artifacts constructed
 and operated upon by this language must be concretely visualizable,
 composable, and manipulable - e.g. documents, diagrams, graphs, geometries.
 Homoiconic this is not.

 My own plan is to implement a streamable, strongly typed,
 capability-secure TC bytecode (Awelon Bytecode, ABC) and build up from
 there, perhaps targeting Unity and/or developing a web-app IDE for
 visualization. (Unity is a tempting target for me due to my interest in AR
 and VR environments, and Meta's support for Unity.)

 I would very much favor a lightweight toolkit approach, similar to what
 the REBOL/Red community has achieved -fitting entire desktops and
 webservices as tiny apps built upon portable OS/runtime ( 1MB).  BTW, if
 you are a big believer in tools, I strongly recommend you look into what
 the REBOL http://www.rebol.com/what-rebol.html community has achieved,
 and its offshoot Red http://www.red-lang.org/p/about.html. These people
 have already achieved and commercialized a fair portion of the FoNC ideals
 through their use of dialects. They make emacs look like a bloated,
 outdated, arcane behemoth.

 (If REBOL/Red used capability-based security, pervasive reactivity, live
 programming, strong types, substructural types, external state, and...
 well, there are a lot of reasons I don't favor the languages. But what
 they've accomplished is very impressive!)

 I think the toolkit approach quite feasible. ABC is designed for
 continuous reactive behaviors, but it turns out that it can be very
 effectively used for one-off functions and imperative code, depending only
 on how the capability invocations are interpreted. ABC can also be used for
 efficient serialization, i.e. as the protocol to maintain values in a
 reactive model. So it should be feasible to target Unity or build my own
 visualization/UI toolkit. (ABC will be relatively inefficient until I have
 a good compiler for it, but getting started should be easy once ABC is
 fully defined and Agda-sanitized.)

 Best,

 Dave


 On Sep 21, 2013 10:52 PM, Mark Haniford 
 markhanif...@gmail.comjavascript:_e({}, 'cvml', 'markhanif...@gmail.com');
 wrote:

 David,

 Great Writeup.  To get down to more practical terms for laymen software
 engineers such as myself,  what can we do in immediate terms to realize
 your vision?

 I'm a big believer in tools( even though I'm installing emacs 24 and
 live-tool).  Is there currently a rich IDE environment core in which we can
 start exploring visualization tools?

 Here's what I'm getting at. We have rich IDEs (in relative terms),
 Intellij, Resharper, VS, Eclipse, whatever..  I think they are still very
 archaic in programmer productivity.  The problem I see is that we have a
 dichotomy with scripting ennviroments (Emacs) as opposed to heavy IDEs.
  e.g.  we can't easily script these IDEs for expermination.

 thought?




 I find myself agreeing with most of your intermediate reasoning and
 then failing to understand the jump to the conclusion of tactic
 concatenative programming and the appeal of viewing user interfaces as
 programs.


 Tacit concatenative makes it all work smoothly.

 TC is very effective for:
 * automatic visualization and animation
 * streaming programs
 * pattern detection (simple matching)
 * simple rewrite rules
 * search-based code generation
 * Markov model predictions (user anticipation)
 * genetic programming and tuning
 * typesafe dataflow for linear or modal

 Individually, each of these may look like an incremental improvement
 that could be achieved without TC.

 But every little point, every 

Re: [fonc] Final STEP progress report abandoned?

2013-09-06 Thread John Nilsson
In a sense, but on a higher level, it's more focused on the stretegic
desgin.

http://impactmapping.org/drawing.php

Also take a look at for related modelling technique
http://www.b-mc2.com/2013/04/26/from-business-strategy-to-solution-a-unified-conceptual-framework/

And for that matter
http://en.wikipedia.org/wiki/Thinking_processes_%28theory_of_constraints%29


BR,
John


On Thu, Sep 5, 2013 at 8:00 PM, John Carlson yottz...@gmail.com wrote:

 What is an impact map model?  Is it something like a use case?
 On Sep 5, 2013 12:33 PM, John Nilsson j...@milsson.nu wrote:

 Even if the different domains are different it should still be possible
 to generalize the basic framework and strategy used.
 I imagine layers of models each constrained by the upper metamodel and a
 fitness function feeding a generator to create the next layer down until
 you reach the bottom executable layer.
 In a sense this is what humans do no? Begin with the impact map model ,
 derive from that an activity model, derive from that a high level activity
 support model, derive from that acceptance criteria, derive from that
 acceptance test examples, derive from that a low level interaction state
 machine an so on...

 In the human case I belive the approach modelled by the kanban katas
 seems appropriate. Nested stacks of hypotheses to try in a disciplined PDCA
 cycle.

 BR
 John

 ___
 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: [fonc] Final STEP progress report abandoned?

2013-09-05 Thread John Nilsson
Even if the different domains are different it should still be possible to
generalize the basic framework and strategy used.
I imagine layers of models each constrained by the upper metamodel and a
fitness function feeding a generator to create the next layer down until
you reach the bottom executable layer.
In a sense this is what humans do no? Begin with the impact map model ,
derive from that an activity model, derive from that a high level activity
support model, derive from that acceptance criteria, derive from that
acceptance test examples, derive from that a low level interaction state
machine an so on...

In the human case I belive the approach modelled by the kanban katas seems
appropriate. Nested stacks of hypotheses to try in a disciplined PDCA
cycle.

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


Re: [fonc] Final STEP progress report abandoned?

2013-09-04 Thread John Nilsson
Check out http://www.cat-language.com/

BR
John

Skickat från min iPhone

4 sep 2013 kl. 01:43 skrev Casey Ransberger casey.obrie...@gmail.com:

 I've heavily abridged your message David; sorry if I've dropped important 
 context. My words below...
 
 On Sep 3, 2013, at 3:04 PM, David Barbour dmbarb...@gmail.com wrote:
 
 Even better if the languages are good for exploration by genetic programming 
 - i.e. easily sliced, spliced, rearranged, mutated.
 
 I've only seen this done with two languages. Certainly it's possible in any 
 language with the right semantic chops but so far it seems like we're 
 looking at Lisp (et al) and FORTH. 
 
 My observation has been that the main quality that yields (ease of 
 recombination? I don't even know what it is for sure) is syntaxlessness.
 
 I'd love to know about other languages and qualities of languages that are 
 conducive to this sort of thing, especially if anyone has seen interesting 
 work done with one of the logic languages.
 ___
 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] Why Mind Uploading could be horrible

2013-04-23 Thread John Nilsson
It's not so much if a copy is the same as the real thing, but rather how do
you define the difference between an all-at-once copy with a simultaneous
destruction of the original and a piece by piece replacement of the parts?
It seems to me they only differ by the size of the part replaced.
BR
John
 Den 23 apr 2013 18:13 skrev Tristan Slominski 
tristan.slomin...@gmail.com:

 With great trepidation, I will try to keep this to computing :D

 It may revolve around the meaning of uploading, but my problem with the
 uploading approach, is that it makes a copy. Whether a copy is the same as
 the real thing I feel is beyond the scope of a computing discussion in this
 particular sense. I assert, that I am not interested in a copy of Me (in
 legal style, I will use capitals for defined terms).

 The next thing is the definition of Me. For the purpose of this, Me is
 defined as the pattern of interaction of physical processes that happens
 within the volume bound by my skin. I will further refine to a concept of
 Sensory Me, which I will define as the pattern of interaction of physical
 processes that happens within my nervous system. I will further refine to a
 concept of the Conscious Me, which I will define as the pattern of
 interaction from the definition of Sensory Me, and it is separate from the
 physical processes of the same.

 With the definition of Conscious Me in place, what I am interested in is
 preserving the Conscious Me whether in its original form (i.e. implemented
 on top of original physical processes, that is embodied in a human body),
 or over a different substrate.

 Side note: if you disagree with my definitions, then please don't argue
 the conclusions using your own definitions. I consider it axiomatic that
 from different definitions we'll likely arrive at something different, so
 no argument is to be had really.

 It seems to me to be possible to one by one replace various physical
 processes with a different type that would result in supporting the same
 pattern of interaction (Conscious Me).  The distinction I am making, is
 that I am interested in continuing the existing pattern (Conscious Me),
 hot-swapping, so to speak, the physical processes implementing it. This is
 the best illustration of why I feel uploading, which to me implies a
 copy, would be wrong and horrible. Because the existing pattern would then
 be discontinued as the uploaded pattern would be permitted to endure.

 More on computation...

 There is ample evidence, that I will sort of assume and handwave, that our
 Conscious Me's are capable of great flexibility and plasticity. For
 example, when I drive a car, my concept of me incorporates the machine I
 am operating. This effect is even more pronounced when piloting an
 aircraft. Or our ability to train our brains to see with our 
 toungeshttp://www.scientificamerican.com/article.cfm?id=device-lets-blind-see-with-tongues

 I am very interested in the Hierarchical Temporal 
 Memoryhttps://www.numenta.com/technology.html#cla-whitepaper(the HTM) 
 model of how the human neocortex computes and a lot of my views
 about Conscious Me are informed by the HTM model. HTM proposes one
 algorithm, implemented on a certain physical architecture, that can give a
 rise to Metaphors We Live 
 Byhttp://www.amazon.com/Metaphors-We-Live-By-ebook/dp/B006KYECYA/ref=tmm_kin_title_0types
  of thinking that human beings seem to have.

 The reason I am very interested in dynamic objects all the way down (types
 of systems VPRI is building) is because I am looking at them through the
 lens of preserving the Conscious Me. Fully dynamic objects running on
 hardware seem promising in this regard. The Actor Model also helps to frame
 some of the things through a slightly different lens, and hence my interest
 in it. Both seem to allow emergent behavior for processes that may in the
 future support Conscious Me.

 Admittedly, the interface between the two physical processes remains as a
 subject for future research.



 On Tue, Apr 23, 2013 at 10:11 AM, Loup Vaillant-David 
 l...@loup-vaillant.frwrote:

 On Tue, Apr 23, 2013 at 04:01:20PM +0200, Eugen Leitl wrote:
  On Fri, Apr 19, 2013 at 02:05:07PM -0500, Tristan Slominski wrote:
 
   That alone seems to me to dismiss the concern that mind uploading
 would not
   be possible (despite that I think it's a wrong and a horrible idea
   personally :D)

 Personally, I can think of 2 objections:

  1. It may turn out that mind uploading doesn't actually transfer your
 mind in a new environment, but actually makes a *copy* of you,
 which will behave the same, but isn't actually you.  From the
 outside, it would make virtually no difference, but from the
 inside, you wouldn't get to live in the Matrix.

  2. There's those cool things called privacy, and free will that
 can get seriously compromised if anyone but a saint ever get root
 access to the Matrix you live in.  And we have plenty of reasons
 to abuse such a system.  

Re: [fonc] Use case for graphical problem oriented widgets (POW, DSW)

2013-04-21 Thread John Nilsson
I think Excel is interesting in this regard. The common idiom in excel is
to employ user triggered code generation by fill formula to adapt the ui to
dynamically resized collections.
Not exactly automatic, but is it sufficiently trivial to group with or
trivial ui operations such as scroll or resize window that might also be
needed to not interfere with the display of the dynamic collection?
BR
John
Den 21 apr 2013 07:59 skrev John Carlson yottz...@gmail.com:

 If you want a more complex use case,  create a loop 10 times around the
 collection add loop to insert a calculator into the collection.
 On Apr 21, 2013 12:48 AM, John Carlson yottz...@gmail.com wrote:

 Here's a semipractical use case: add 1 to the display in each of a
 dynamic collection of calculators (math domain widgets).  What can do this
 as end-user programming?  It's fairly obvious that a textual language can
 do this.  Can any graphical ones?  Can something like lively kernel do this
 by demonstration?  How about excel?  With a dynamic collection?  What will
 work on android jelly bean?  I'm away from my desktop right now.
 On Apr 21, 2013 12:22 AM, John Carlson yottz...@gmail.com wrote:

 Looking for systems like this I found app-inventor activity starter on my
 phone.  Has anyone tried this?
 On Apr 21, 2013 12:14 AM, John Carlson yottz...@gmail.com wrote:

 I believe the key to this is to create domain widgets.  I am not sure if
 this needs to be something like etoys, maybe a combination between forth
 and etoys.  I believe collections can make for interesting domain widgets.
 I have only programmed systems with collections of text.  What systems work
 on collections of domain widgets?
 On Apr 21, 2013 12:02 AM, John Carlson yottz...@gmail.com wrote:

 Yeah, you're right.  The theory is coming up with a syntax free
 language.  Can you?
 On Apr 21, 2013 12:00 AM, David Barbour dmbarb...@gmail.com wrote:

 How is that a theory? Sounds like a design principle.


 On Sat, Apr 20, 2013 at 9:42 PM, John Carlson yottz...@gmail.comwrote:

 Here's my theory: reduce arguing with the compiler to minimum.  This
 means reducing programmers' syntax errors.  Only add syntax to reduce
 errors (the famous FORTRAN do loop error).  The syntax that creates 
 errors
 should be removed.
 On Apr 20, 2013 11:18 PM, John Carlson yottz...@gmail.com wrote:

 I think it's better to work from examples, ala JUnit and end-user
 programming than come up with a theory that solves nothing.  One can
 compare EGGG to GDL in scope and expressiveness.  One interesting part 
 of
 gaming is arguing about rules.  What computer systems do that?
 On Apr 20, 2013 11:09 PM, John Carlson yottz...@gmail.com wrote:

 Practice or practical?  Maybe there's space for practical theory,
 instead of relying on things that don't exist.  Why do we distinguish
 practice from theory?  Seems like a fallacy there.
 On Apr 20, 2013 10:51 PM, David Barbour dmbarb...@gmail.com
 wrote:

 only in practice


 On Sat, Apr 20, 2013 at 8:23 PM, John Carlson 
 yottz...@gmail.comwrote:

 Take my word for it, theory comes down to Monday Night Football
 on ESPN.
 On Apr 20, 2013 10:13 PM, John Carlson yottz...@gmail.com
 wrote:

 I think that concepts in some sense transcend the universe.  Are
 there more digits in pi than there are atoms  in the universe?  I 
 guess we
 are asking if there are transcendental volumes which are bigger or 
 more
 complex than the universe.  If the universe contains the 
 transcendental as
 symbols then how many transcendental symbols are there?  I think 
 you still
 run into Russell's Paradox.
 On Apr 20, 2013 9:15 PM, Simon Forman forman.si...@gmail.com
 wrote:

 On 4/20/13, John Carlson yottz...@gmail.com wrote:
  Do you need one symbol for the number infinity and another
 for denoting
  that a set is inifinite?  Or do you just reason about the
 size of the set?
  Is there a difference between a set that is countably
 infinite and one that
  isn't countable?  I barely know Russell's paradox... you're
 ahead of me.

 Well, for what it's worth, quoting from Meguire's 2007 Boundary
 Algebra: A Simple Notation for Boolean Algebra and the Truth
 Functors:

 Let U be the universal set, a,b∈U, and ∅ be the null set. Then
 the
 columns headed by “Sets” show how the algebra of sets and the
 pa are
 equivalent.

 Table 4-2. The 10 Nontrivial Binary Connectives (Functors).

 NameLogic  Sets BA

 Alternation  a∨b   a∪b  ab
 Conditional  a→b   a⊆b  (a)b
 Converse a←b   a⊇b  a(b)
 Conjunction  a∧b   a∩b  ((a)(b))
___
 NOR  a↓b   a∪b   (ab)
___
 Sheffer stroke   a|b   a∩b  (a)(b)

 Biconditionala↔b   a⊆b⊆a  (((a)b)(a(b))) -or- ((a)(b))(ab)

 (Apologies if the Unicode characters got mangled!)

 Check out http://www.markability.net/sets.htm also.


 I don't know much about set theory but I think the Universal
 set
 stands for the set of everything, no?

 Cheers,
 ~Simon





 The history of 

Re: [fonc] Use case for graphical problem oriented widgets (POW, DSW)

2013-04-21 Thread John Nilsson
I know those do, and I would expect any application claiming to be a
spreadsheet to have that.
Google spreadsheet actually have an interesting hybrid with its continue
function that is automatically inserted to expand array results over a
range of cells.
BR
John
Den 21 apr 2013 10:00 skrev John Carlson yottz...@gmail.com:

 Excel is indeed interesting.  Can google docs/libreoffice/OpenOffice do
 something similar?
 On Apr 21, 2013 2:52 AM, John Nilsson j...@milsson.nu wrote:

 I think Excel is interesting in this regard. The common idiom in excel is
 to employ user triggered code generation by fill formula to adapt the ui to
 dynamically resized collections.
 Not exactly automatic, but is it sufficiently trivial to group with or
 trivial ui operations such as scroll or resize window that might also be
 needed to not interfere with the display of the dynamic collection?
 BR
 John
 Den 21 apr 2013 07:59 skrev John Carlson yottz...@gmail.com:

 If you want a more complex use case,  create a loop 10 times around the
 collection add loop to insert a calculator into the collection.
 On Apr 21, 2013 12:48 AM, John Carlson yottz...@gmail.com wrote:

 Here's a semipractical use case: add 1 to the display in each of a
 dynamic collection of calculators (math domain widgets).  What can do this
 as end-user programming?  It's fairly obvious that a textual language can
 do this.  Can any graphical ones?  Can something like lively kernel do this
 by demonstration?  How about excel?  With a dynamic collection?  What will
 work on android jelly bean?  I'm away from my desktop right now.
 On Apr 21, 2013 12:22 AM, John Carlson yottz...@gmail.com wrote:

 Looking for systems like this I found app-inventor activity starter on
 my phone.  Has anyone tried this?
 On Apr 21, 2013 12:14 AM, John Carlson yottz...@gmail.com wrote:

 I believe the key to this is to create domain widgets.  I am not sure
 if this needs to be something like etoys, maybe a combination between 
 forth
 and etoys.  I believe collections can make for interesting domain widgets.
 I have only programmed systems with collections of text.  What systems 
 work
 on collections of domain widgets?
 On Apr 21, 2013 12:02 AM, John Carlson yottz...@gmail.com wrote:

 Yeah, you're right.  The theory is coming up with a syntax free
 language.  Can you?
 On Apr 21, 2013 12:00 AM, David Barbour dmbarb...@gmail.com
 wrote:

 How is that a theory? Sounds like a design principle.


 On Sat, Apr 20, 2013 at 9:42 PM, John Carlson yottz...@gmail.comwrote:

 Here's my theory: reduce arguing with the compiler to minimum.
 This means reducing programmers' syntax errors.  Only add syntax to 
 reduce
 errors (the famous FORTRAN do loop error).  The syntax that creates 
 errors
 should be removed.
 On Apr 20, 2013 11:18 PM, John Carlson yottz...@gmail.com
 wrote:

 I think it's better to work from examples, ala JUnit and end-user
 programming than come up with a theory that solves nothing.  One can
 compare EGGG to GDL in scope and expressiveness.  One interesting 
 part of
 gaming is arguing about rules.  What computer systems do that?
 On Apr 20, 2013 11:09 PM, John Carlson yottz...@gmail.com
 wrote:

 Practice or practical?  Maybe there's space for practical theory,
 instead of relying on things that don't exist.  Why do we distinguish
 practice from theory?  Seems like a fallacy there.
 On Apr 20, 2013 10:51 PM, David Barbour dmbarb...@gmail.com
 wrote:

 only in practice


 On Sat, Apr 20, 2013 at 8:23 PM, John Carlson 
 yottz...@gmail.com wrote:

 Take my word for it, theory comes down to Monday Night Football
 on ESPN.
 On Apr 20, 2013 10:13 PM, John Carlson yottz...@gmail.com
 wrote:

 I think that concepts in some sense transcend the universe.
 Are there more digits in pi than there are atoms  in the 
 universe?  I guess
 we are asking if there are transcendental volumes which are 
 bigger or more
 complex than the universe.  If the universe contains the 
 transcendental as
 symbols then how many transcendental symbols are there?  I think 
 you still
 run into Russell's Paradox.
 On Apr 20, 2013 9:15 PM, Simon Forman 
 forman.si...@gmail.com wrote:

 On 4/20/13, John Carlson yottz...@gmail.com wrote:
  Do you need one symbol for the number infinity and another
 for denoting
  that a set is inifinite?  Or do you just reason about the
 size of the set?
  Is there a difference between a set that is countably
 infinite and one that
  isn't countable?  I barely know Russell's paradox... you're
 ahead of me.

 Well, for what it's worth, quoting from Meguire's 2007
 Boundary
 Algebra: A Simple Notation for Boolean Algebra and the Truth
 Functors:

 Let U be the universal set, a,b∈U, and ∅ be the null set.
 Then the
 columns headed by “Sets” show how the algebra of sets and the
 pa are
 equivalent.

 Table 4-2. The 10 Nontrivial Binary Connectives (Functors).

 NameLogic  Sets BA

 Alternation  a∨b   a∪b  ab
 Conditional  a→b   a⊆b  (a)b
 Converse a←b

Re: [fonc] 90% glue code

2013-04-20 Thread John Nilsson
One approach I've been thinking about is to invert the information hiding
principle.

The problem with information hiding is that the interface and properties
exposed by a module is determined by the module: I am a... And some line
is drawn between which properties are implementation details, and which are
the contract.

So I was thinking, what if the roles were swapped. What if modules could
not declare a public contract but instead just had to conform to any type,
interface or property that a client depending on it would care to declare
as a requirement. In effect changing the module description into a
collection of You are a... statements. Kind of similar to how a
structural type allow any module conforming to the interface without the
module having to implement a particular nominal type.

For one, declaring a contract for a dependency is rather easy as it is
based on local reasoning: What do I do, what do I need? as compared to
What do I do, what do others need?

Another benefit would be that there is no arbitrary reduction of the
modules full capabilities. For example a Java List only implementing
Iterable couldn't be used by clients requiring an ordered and finite
sequence.

I would expect this to encourage module writers to declare the smallest set
of properties possible to depend on so that there would be more focus on
information shielding, what information to expose one self to, rather
than what information not to expose to others.


The problem with this approach is that the proof of conformance can't come
from the module, and it's hardly productive to require each client to
provide one. I guess in some sense this is partly solved by a mechanism
such as type classes as done in Scala or Haskell. One problem with this
scheme though is that they do this by means of a static dispatch, making it
impossible to specialize implementations by runtime polymorphism. While I
haven't played with it, I do believe that Clojure has solved it while
preserving runtime polymorphism.


BR,
John


On Thu, Apr 18, 2013 at 3:13 AM, David Barbour dmbarb...@gmail.com wrote:

 Sounds like you want stone soup 
 programminghttp://awelonblue.wordpress.com/2012/09/12/stone-soup-programming/.
 :D

 In retrospect, I've been disappointed with most techniques that involve
 providing information about module capabilities to some external
 configurator (e.g. linkers as constraint solvers). Developers are asked
 to grok at least two very different programming models. Hand annotations or
 hints become common practice because many properties cannot be inferred.
 The resulting system isn't elegantly metacircular, i.e. you need that
 'configurator' in the loop and the metada with the inputs.

 An alternative I've been thinking about recently is to shift the link
 logic to the modules themselves. Instead of being passive bearers of
 information that some external linker glues together, the modules become
 active agents in a link environment that collaboratively construct the
 runtime behavior (which may afterwards be extracted). Developers would have
 some freedom to abstract and separate problem-specific link logic
 (including decision-making) rather than having a one-size-fits-all solution.

 Re: In my mind powerful languages thus means 98% requirements

 To me, power means something much more graduated: that I can get as much
 power as I need, that I can do so late in development without rewriting
 everything, that my language will grow with me and my projects.


 On Wed, Apr 17, 2013 at 2:04 PM, John Nilsson j...@milsson.nu wrote:

 Maybe not. If there is enough information about different modules'
 capabilities, suitability for solving various problems and requirements,
 such that the required glue can be generated or configured automatically
 at run time. Then what is left is the input to such a generator or
 configurator. At some level of abstraction the input should transition from
 being glue and better be described as design.
 Design could be seen as kind of a gray area if thought of mainly as
 picking what to glue together as it still involves a significant amount of
 gluing ;)
 But even design should be possible to formalize enough to minimize the
 amount of actual design decisions required to encode in the source and what
 decisions to leave to algorithms though. So what's left is to encode the
 requirements as input to the designer.
 In my mind powerful languages thus means 98% requirements, 2% design
 and 0% glue.
 BR
 John
 Den 17 apr 2013 05:04 skrev Miles Fidelman mfidel...@meetinghouse.net
 :

  So let's ask the obvious question, if we have powerful languages, and/or
 powerful libraries, is not an application comprised primarily of glue code
 that ties all the piece parts together in an application-specific way?

 David Barbour wrote:


 On Tue, Apr 16, 2013 at 2:25 PM, Steve Wart st...@wart.ca mailto:
 st...@wart.ca wrote:

  On Sun, Apr 14, 2013 at 1:44 PM, Gath-Gealaich
  In real systems, 90% of code

Re: [fonc] 90% glue code

2013-04-17 Thread John Nilsson
Maybe not. If there is enough information about different modules'
capabilities, suitability for solving various problems and requirements,
such that the required glue can be generated or configured automatically
at run time. Then what is left is the input to such a generator or
configurator. At some level of abstraction the input should transition from
being glue and better be described as design.
Design could be seen as kind of a gray area if thought of mainly as picking
what to glue together as it still involves a significant amount of gluing
;)
But even design should be possible to formalize enough to minimize the
amount of actual design decisions required to encode in the source and what
decisions to leave to algorithms though. So what's left is to encode the
requirements as input to the designer.
In my mind powerful languages thus means 98% requirements, 2% design and
0% glue.
BR
John
Den 17 apr 2013 05:04 skrev Miles Fidelman mfidel...@meetinghouse.net:

 So let's ask the obvious question, if we have powerful languages, and/or
 powerful libraries, is not an application comprised primarily of glue code
 that ties all the piece parts together in an application-specific way?

 David Barbour wrote:


 On Tue, Apr 16, 2013 at 2:25 PM, Steve Wart st...@wart.ca mailto:
 st...@wart.ca wrote:

  On Sun, Apr 14, 2013 at 1:44 PM, Gath-Gealaich
  In real systems, 90% of code (conservatively) is glue code.

 What is the origin of this claim?


 I claimed it from observation and experience. But I'm sure there are
 other people who have claimed it, too. Do you doubt its veracity?



 On Mon, Apr 15, 2013 at 12:15 PM, David Barbour
 dmbarb...@gmail.com mailto:dmbarb...@gmail.com wrote:


 On Mon, Apr 15, 2013 at 11:57 AM, David Barbour
 dmbarb...@gmail.com mailto:dmbarb...@gmail.com wrote:


 On Mon, Apr 15, 2013 at 10:40 AM, Loup Vaillant-David
 l...@loup-vaillant.fr mailto:l...@loup-vaillant.fr wrote:

 On Sun, Apr 14, 2013 at 04:17:48PM -0700, David
 Barbour wrote:
  On Sun, Apr 14, 2013 at 1:44 PM, Gath-Gealaich
  In real systems, 90% of code (conservatively) is
 glue code.

 Does this *have* to be the case?  Real systems also
 use C++ (or
 Java).  Better languages may require less glue, (even
 if they require
 just as much core logic).


 Yes.

 The prevalence of glue code is a natural consequence of
 combinatorial effects. E.g. there are many ways to
 partition and summarize properties into data-structures.
 Unless we uniformly make the same decisions - and we won't
 (due to context-dependent variations in convenience or
 performance) - then we will eventually have many
 heterogeneous data models. Similarly can be said of event
 models.

 We can't avoid this problem. At best, we can delay it a
 little.


 I should clarify: a potential answer to the glue-code issue is
 to *infer* much more of it, i.e. auto-wiring, constraint
 models, searches. We could automatically build pipelines that
 convert one type to another, given smaller steps (though this
 does risk aggregate lossiness due to intermediate summaries or
 subtle incompatibilities).  Machine-learning could be
 leveraged to find correspondences between structures, perhaps
 aiding humans. 90% or more of code will be glue-code, but it
 doesn't all need to be hand-written. I am certainly pursuing
 such techniques in my current language development.


 __**_
 fonc mailing list
 fonc@vpri.org mailto:fonc@vpri.org
 
 http://vpri.org/mailman/**listinfo/fonchttp://vpri.org/mailman/listinfo/fonc



 __**_
 fonc mailing list
 fonc@vpri.org mailto: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/fonchttp://vpri.org/mailman/listinfo/fonc



 --
 In theory, there is no difference between theory and practice.
 In practice, there is.    Yogi Berra

 __**_
 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: [fonc] Layering, Thinking and Computing

2013-04-13 Thread John Nilsson
This discussion reminds me of
http://www.ageofsignificance.org/

It's a philosophical analysis of what computation means and how, or if, it
can be separated from the machine implementing it. The author argues that
it cannot.

If you haven't read it you might find it interesting. Unfortunately only
the introduction is published as of today.

BR
John
Den 12 apr 2013 20:08 skrev Tristan Slominski tristan.slomin...@gmail.com
:

 I had this long response drafted criticizing Bloom/CALM and Lightweight
 Time Warps, when I realized that we are probably again not aligned as to
 which meta level we're discussing.

 (my main criticism of Bloom/CALM was assumption of timesteps, which is an
 indicator of a meta-framework relying on something else to implement it
 within reality; and my criticism of Lightweight Time Warps had to do with
 that it is a protocol for message-driven simulation, which also needs an
 implementor that touches reality; synchronous reactive programming has
 the word synchronous in it) - hence my assertion that this is more meta
 level than actors.

 I think you and I personally care about different things. I want a
 computational model that is as close to how the Universe works as possible,
 with a minimalistic set of constructs from which everything else can be
 built. Hence my references to cellular automata and Wolfram's hobby of
 searching for the Universe. Anything which starts as synchronous cannot
 be minimalistic because that's not what we observe in the world, our world
 is asynchronous, and if we disagree on this axiom, then so much for that :D

 But actors model fails with regards to extensibility(*) and reasoning


 Those are concerns of an imperator, are they not? Again, I'm not saying
 you're wrong, I'm trying to highlight that our goals differ.

 But, without invasive code changes or some other form of cheating (e.g.
 global reflection) it can be difficult to obtain the name of an actor that
 is part of an actor configuration.


 Again, this is ignorance of the power of Object Capability and the Actor
 Model itself. The above is forbidden in the actor model unless the
 configuration explicitly sends you an address in the message. My earlier
 comment about Akka refers to this same mistake.

 However, you do bring up interesting meta-level reasoning complaints
 against the actor model. I'm not trying to dismiss them away or anything.
 As I mentioned before, that list is a good guide as to what meta-level
 programmers care about when writing programs. It would be great if actors
 could make it easier... and I'm probably starting to get lost here between
 the meta-levels again :/

 Which brings me to a question. Am I the only one that loses track of which
 meta-level I'm reasoning or is this a common occurrence  Bringing it back
 to the topic somewhat, how do people handle reasoning about all the
 different layers (meta-levels) when thinking about computing?


 On Wed, Apr 10, 2013 at 12:21 PM, David Barbour dmbarb...@gmail.comwrote:

 On Wed, Apr 10, 2013 at 5:35 AM, Tristan Slominski 
 tristan.slomin...@gmail.com wrote:

 I think it's more of a pessimism about other models. [..] My
 non-pessimism about actors is linked to Wolfram's cellular automata turing
 machine [..] overwhelming consideration across all those hints is
 unbounded scalability.


 I'm confused. Why would you be pessimistic about non-actor models when
 your argument is essentially that very simple, deterministic, non-actor
 models can be both Turing complete and address unbounded scalability?

 Hmm. Perhaps what you're really arguing is pessimistic about procedural
 - which today is the mainstream paradigm of choice. The imperial nature of
 procedures makes it difficult to compose or integrate them in any
 extensional or collaborative manner - imperative works best when there is
 exactly one imperator (emperor). I can agree with that pessimism.

 In practice, the limits of scalability are very often limits of reasoning
 (too hard to reason about the interactions, safety, security, consistency,
 progress, process control, partial failure) or limits of extensibility (to
 inject or integrate new behaviors with existing systems requires invasive
 changes that are inconvenient or unauthorized). If either of those limits
 exist, scaling will stall. E.g. pure functional programming fails to scale
 for extensibility reasons, even though it admits a lot of natural
 parallelism.

 Of course, scalable performance is sometimes the issue, especially in
 models that have global 'instantaneous' relationships (e.g. ad-hoc
 non-modular logic programming) or global maintenance issues (like garbage
 collection). Unbounded scalability requires a consideration for locality of
 computation, and that it takes time for information to propagate.

 Actors model is one (of many) models that provides some of the
 considerations necessary for unbounded performance scalability. But actors
 model fails with regards to extensibility(*) and 

Re: [fonc] Layering, Thinking and Computing

2013-04-07 Thread John Nilsson
Layering kind of implies a one dimensional space: lower vs. higher
abstraction. Although we try hard to project other dimensions such as the
why-how onto this dimension the end result is complex mess of concepts from
different domains trying to fit in a way to small space. So besides
layering we should probably also spend some effort in untangling those
other dimensions and formalize how to map and compose things in all
relevant dimensions without complecting them.

BR
John
Den 7 apr 2013 06:00 skrev David Barbour dmbarb...@gmail.com:

 On Sat, Apr 6, 2013 at 7:10 PM, Julian Leviston jul...@leviston.netwrote:

 LISP is perfectly precise. It's completely unambiguous. Of course, this
 makes it incredibly difficult to use or understand sometimes.


 LISP isn't completely unambiguous. First, anything that is *implementation
 dependent* is ambiguous or non-deterministic from the pure language
 perspective. This includes a lot of things, such as evaluation order for
 modules. Second, anything that is *context dependent* (e.g. deep
 structure-walking macros, advanced uses of special vars, the common-lisp
 object system, OS and configuration-dependent structure) is not entirely
 specified or unambiguous when studied in isolation. Third, any operation
 that is non-deterministic (e.g. due to threading or heuristic search) is
 naturally ambiguous; to the extent you model and use such operations, your
 LISP code will be ambiguous.

 Ambiguity isn't necessarily a bad thing, mind. One can consider it an
 opportunity: For live coding or conversational programming, ambiguity
 enables a rich form of iterative refinement and conversational programming
 styles, where the compiler/interpreter fills the gaps with something that
 seems reasonable then the programmer edits if the results aren't quite
 those desired. For mobile code, or portable code, ambiguity can provide
 some flexibility for a program to adapt to its environment. One can
 consider it a form of contextual abstraction. Ambiguity could even make a
 decent target for machine-learning, e.g. to find optimal results or improve
 system stability [1].

 [1] http://awelonblue.wordpress.com/2012/03/14/stability-without-state/



 is it possible to build a series of tiny LISPs on top of each other such
 that we could arrive at incredibly precise and yet also incredibly concise,
 but [[easily able to be traversed] meanings].


 It depends on what you want to say. Look up Kolmogorov Complexity [2].
 There is a limit to how concise you can make a given meaning upon a given
 language, no matter how you structure things.

 [2] http://en.wikipedia.org/wiki/Kolmogorov_complexity

 If you want to say a broad variety of simple things, you can find a
 language that allows you to say them concisely.

 We can, of course, create a language for any meaning Foo that allows us to
 represent Foo concisely, even if Foo is complicated. But the representation
 of this language becomes the bulk of the program. Indeed, I often think of
 modular programming as language-design: abstraction is modifying the
 language from within - adding new words, structures, interpreters,
 frameworks - ultimately allowing me express my meaning in just one line.

 Of course, the alleged advantage of little problem-oriented languages is
 that they're reusable in different contexts. Consider that critically: it
 isn't often that languages easily work together because they often have
 different assumptions or models for cross-cutting concerns (such as
 concurrency, persistence, reactivity, security, dependency injection,
 modularity, live coding). Consider, for example, the challenge involved
 with fusing three or more frameworks, each of which have different callback
 models and concurrency.

 Your proposal is effectively that we develop a series (or stack) of little
 languages for specific problem. But even if you can express your meaning
 concisely on a given stack, you will encounter severe difficulty when comes
 time to *integrate* different stacks that solve different problems.

 (Some people are seeking solutions to the general problem of language
 composition, e.g. with Algebraic Effects or modeling languages as
 Generalized Arrows.)


 one could replace any part of the system because one could understand any
 part of it


 Sadly, the former does not follow the latter.

 The ability to understand any part of a system does not imply the
 ability to understand how replacing that part (in a substantive way) will
 affect the greater system. E.g. one might look into a Car engine and say:
 hmm. I understand this tube, and that bolt, and this piston... but not
 really grok the issues of vibration, friction and wear, pressure, heat,
 etc.. For such a person, a simple fix is okay, since the replacement part
 does the same thing as the original. But substantive modifications would be
 risky without more knowledge.

 Today, much software is monolithic for exactly that reason: to understand
 a block of code often 

Re: [fonc] [talk] Cool Code - Kevlin Henney

2012-12-02 Thread John Nilsson
Isn't the pattern language literature exactly that? An effort to typeset
and edit interesting design artifacts.

BR
John
Den 2 dec 2012 10:30 skrev Iian Neill iian.d.ne...@gmail.com:

 Benoit,

 I would very much like to read source code more often, as I suspect would
 many others, but I think the problem lies in the fact that few coders or
 publishers seem to think that code is worth studying.  I know that sounds
 outrageous but the simple fact is that there are many intellectual
 artefacts as difficult as source code that are published and read avidly -
 e.g., scientific articles, mathematical proofs, philosophical essays,
 musicological analysis, poetry, etc. in these fields publication is
 considered essential to the culture and energy and creativity is found to
 typeset and edit these artefacts. In programming, the written analysis of
 programme design only ever seems to happen in computer science textbooks,
 such as SICP, etc.

 I am often curious enough to look at the source code of some library, but
 are usually discouraged by the lack of organisation in the presentation.
 Object oriented code is particularly hard to get a handle on, compared to
 structured programme examples in textbooks, as there an awful lot of
 boilerplate that obscures the architecture. Technical documentation seems
 to be the only way to get a mental map but it is often a dry overview that
 fails to capture the thought process that went into the design. Sometimes
 I'm lead to the melancholy conclusion that programme analysis -- I mean
 analysis in the sense of a critical analysis of poetry (like William
 Empson's) or of art (like John Ruskin or Kenneth Clark) -- isn't done
 because the programmer and the community thinks of the code artefacts as
 obscolescent -- i.e., it will be out of date soon, so why bother. Why else
 no serious critical activity devoted to such a serious mental activity?
 Where are the software critics?

 Regards,
 Iian

 Sent from my iPhone

 On 02/12/2012, at 11:41 AM, Benoît Fleury benoit.fle...@gmail.com wrote:

  Although programming is a discipline with a very large canon of
  existing work to draw from, the only code most programmers read is the
  code they maintain.
 
  This topic came up a few times on this mailing list so I thought I
  would share this talk I found interesting.
 
  https://yow.eventer.com/yow-2012-1012/cool-code-by-kevlin-henney-1181
 
  - Benoit
  ___
  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: [fonc] [talk] Cool Code - Kevlin Henney

2012-12-02 Thread John Nilsson
Yes.

Hence you write a pattern language and spare people the agony of reading
the programs it was discovered in.

Which was precisely my point. Maybe this is is why we dont read programs
and why we instead have pattern literature as our primary means of
communicating interesting design ideas.

BR
John
Den 2 dec 2012 14:18 skrev Pascal J. Bourguignon p...@informatimago.com:

 John Nilsson j...@milsson.nu writes:

  Isn't the pattern language literature exactly that? An effort to
  typeset and edit interesting design artifacts.

 Unless you're programming in lisp(*), reading a program written with
 patterns is like looking at the wave form of Hello world! said aloud.


 (*) See:
 http://groups.google.com/group/comp.lang.lisp/msg/ee09f8475bc7b2a0
 http://groups.google.com/group/comp.programming/msg/9e7b8aaec1794126

 --
 __Pascal Bourguignon__ http://www.informatimago.com/
 A bad day in () is better than a good day in {}.
 ___
 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] [talk] Cool Code - Kevlin Henney

2012-12-02 Thread John Nilsson
Agreed.

A program is very context dependent in my experience thought. So you'd
probably also want a pretty good record of the people and the environment
in which it was created to make sens of it.

BR
John
Den 2 dec 2012 14:37 skrev Julian Leviston jul...@leviston.net:

 Concrete is better than abstract for learning.

 Julian


 On 03/12/2012, at 12:23 AM, John Nilsson j...@milsson.nu wrote:

 Yes.

 Hence you write a pattern language and spare people the agony of reading
 the programs it was discovered in.

 Which was precisely my point. Maybe this is is why we dont read programs
 and why we instead have pattern literature as our primary means of
 communicating interesting design ideas.

 BR
 John
 Den 2 dec 2012 14:18 skrev Pascal J. Bourguignon p...@informatimago.com
 :

 John Nilsson j...@milsson.nu writes:

  Isn't the pattern language literature exactly that? An effort to
  typeset and edit interesting design artifacts.

 Unless you're programming in lisp(*), reading a program written with
 patterns is like looking at the wave form of Hello world! said aloud.


 (*) See:
 http://groups.google.com/group/comp.lang.lisp/msg/ee09f8475bc7b2a0
 http://groups.google.com/group/comp.programming/msg/9e7b8aaec1794126

 --
 __Pascal Bourguignon__ http://www.informatimago.com/
 A bad day in () is better than a good day in {}.
 ___
 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


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


Re: [fonc] How it is

2012-10-03 Thread John Nilsson
I read that post about constraints and kept thinking that it should be
the infrastructure for the next generation of systems development, not
art assets :)

In my mind it should be possible to input really fuzzy constraints
like It should have a good looking, blog-like design
A search engine would find a set of implications from that statement
created by designers and vetted by their peers. Some browsing and
light tweaking and there, I have a full front-end design provided for
the system.

Then I add further constraints. Available via http://blahblah.com/
and be really cheap, again the search engine will find the implied
constrains and provide options among the cheaper cloud providers. I
pick one of them and there provisioning is taken care of.

I guess the problem is to come up with a way to formalize all this
knowledge experts are sitting on into a representation usable by that
search engine. But could this not be done implicitly from the act of
selecting a match after a search?

Say some solution S derived from constrains A,B,C is selected in my
search. I have constraint A,B and D as input. By implication the
system now knows that S is a solution to D.

BR,
John


On Wed, Oct 3, 2012 at 11:09 PM, David Barbour dmbarb...@gmail.com wrote:
 I discuss a similar vision in:

 http://awelonblue.wordpress.com/2012/09/12/stone-soup-programming/

 My preferred glue is soft stable constraint logics and my reactive paradigm,
 RDP. I discuss a particular application of this technique with regards to
 game art development:

 http://awelonblue.wordpress.com/2012/09/07/stateless-stable-arts-for-game-development/

 Regards,

 Dave



 On Wed, Oct 3, 2012 at 8:10 AM, Loup Vaillant l...@loup-vaillant.fr wrote:

 De : Paul Homer paul_ho...@yahoo.ca

 If instead, programmers just built little pieces, and it was the
 computer itself that was responsible for assembling it all together into
 mega-systems, then we could reach scales that are unimaginable today.
 […]


 Sounds neat, but I cannot visualize an instantiation of this.  Meaning,
 I have no idea what assembling mechanisms could be used.  Could you
 sketch a trivial example?

 Loup.


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




 --
 bringing s-words to a pen fight

 ___
 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] How it is

2012-10-03 Thread John Nilsson
On Thu, Oct 4, 2012 at 1:06 AM, Pascal J. Bourguignon
p...@informatimago.com wrote:
 And who has the resources to do this work: it seems to me to be a big
 endeavour.  Collecting the research prototype developed during the
 last 50 years, and develop a such a product.

I'm not sure it has to be that big of an effort. Most of the work is
already being performed. From my previous examples we have projects
like twitter bootstrap and htm5 boilerplate being created for the
infrastructure, and surrounding that people are creating templates for
various frameworks. In the middle we have organizations like google to
keep it all accessible to the people gluing it together. Provided even
a remote possibility of being indexed and somewhat intelligently
filtered I'm sure google will solve the search part. So what's needed
could be just the right type of glue for automating scaffolding and
bootstrap tasks in a more general sense and some software to take
advantage of it. Given that this software makes some step easier for
people it could be enough to direct efforts toward formalizing the
required meta data.
And then you iterate :)

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


Re: [fonc] Deployment by virus

2012-07-19 Thread John Nilsson
More work relative to an approach where full specification and controll is
feasible. I was thinking that in a not to distant future we'll want to
build systems of such complexity that we need to let go of such dreams.

It could be enough with one system. How do you evolve a system that has
emerged from som initial condition directed by user input. Even with only
one instance of it running you might have no way to recreate it so you must
patch it, and given sufficient complexity you might have no way to know how
a binary diff should be created.

BR,
John
Den 19 jul 2012 13:54 skrev Pascal J. Bourguignon p...@informatimago.com:
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


[fonc] Deployment by virus

2012-07-18 Thread John Nilsson
I just had a weird though, maybe there is some precedence?

If we were to do software development in a more organic manner,
accepting the nature of complex systems as being... complex. In such a
setting we might have no blue-print (static source code) to usable for
instantiating new live systems ex nihilo, or the option to take down
existing systems to deploy an upgrade. The code running the nodes
can be the result of wild mutation or complex generative algorithms.

A mode of development could be to work on prototypes in a lab, a clone
or an isolated node from the production system. When the desired
properties are created in the prototype they would then spread through
the production system by means of a virus which would adapt the new
properties to the running instances individually according to their
unique configuration.

Is it feasible? Would it provide new options? Any research done in
this direction?

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


Re: [fonc] Deployment by virus

2012-07-18 Thread John Nilsson
Random as in where it's applied or random in what's applied?

I was thinking that the viral part was a means to counter the seeming
randomness in an otherwise chaotic system. Similar in spirit in how
gardening creates some amount of order and predictability, a gardener
who can apply DNA tweaks as well as pruning.

As I understand it CFEngine does something like this wile limited to
simple configuration.

BR,
John

On Thu, Jul 19, 2012 at 3:55 AM, Pascal J. Bourguignon
p...@informatimago.com wrote:
 Joke apart, people are still resiting a lot to stochastic software.
 One problem with random spreading of updates is that its random.
___
fonc mailing list
fonc@vpri.org
http://vpri.org/mailman/listinfo/fonc


Re: [fonc] Historical lessons to escape the current sorry state of personal computing?

2012-07-16 Thread John Nilsson
On Mon, Jul 16, 2012 at 2:20 PM, Miles Fidelman
mfidel...@meetinghouse.net wrote:
 question becomes: is this a separate discipline, or is it something to be
 incorporated into math and science?

This question is examined at length here: http://www.ageofsignificance.org/

(Unfortunately something seems to have derailed the plan to publish
the chapters)

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


Re: [fonc] Scala Days 2012 and ACP

2012-04-20 Thread John Nilsson
I think one of the video links are wrong, should they both be the same?
BR,
John
Den 20 apr 2012 01:57 skrev Andre van Delft andre.vande...@gmail.com:

 Scala Days 2012 was held this week in London; 400 passionate developers;
 many presentations on DSLs, parallelism, concurrency, FP, compiler
 technology and much other stuff. http://days2012.scala-lang.org/ Enthusiastic
 tweets: https://twitter.com/search/scaladays

 The keynotes were by Guy Steele, Simon Peyton-Jones, Anthony Rose (
 http://zeebox.com/) and Martin Odersky; I warmly recommend these, but
 right now the videos are not yet online.

 Twelve year old Shadaj Laddad had an awesome talk; he is a real good
 programmer, and maybe even better teacher. The video is here:

 http://skillsmatter.com/podcast/scala/subscript-extending-scala-with-the-algebra-of-communicating-processes

 I presented my language extension based on the Algebra of Communicating
 Processes; I have mentioned this theory a couple of times here the Fonc
 list. ACP may be viewed as extending Boolean Algebra with actions, and from
 there parallelism and communication. With some syntactic sugar added, it
 has much of the power of BNF, CCS, Linda, pipes in Unix command shell.
 Implementation as a language extension turns out to be fairly easy. I think
 ACP deserves much more attention than it currently gets; it might IMO
 become as important as the object-oriented and functional paradigms.

 The video of my talk is here:

 http://skillsmatter.com/podcast/scala/subscript-extending-scala-with-the-algebra-of-communicating-processes
 The sheets and accompanying paper are at
 http://code.google.com/p/subscript/downloads/list

 André


 ___
 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] Naive question

2012-03-19 Thread John Nilsson
Maybe not what you are looking for, but you might find
http://awelon.org/ interesting.

BR,
John

2012/3/19 Benoît Fleury benoit.fle...@gmail.com:
 Hi,

 I was wondering if there is any language out there that lets you describe
 the behavior of an object as a grammar.

 An object would receive a stream of events. The rules of the grammar
 describe the sequence of events the object can respond to. The semantic
 actions inside these rules can change the internal state of the object or
 emit other events.

 We don't want the objects to send message to each other. A bus-like
 structure would collect events and dispatch them to all interested objects.
 To avoid pushing an event to all objects, the bus would ask first to all
 objects what kind of event they're waiting for. These events are the
 possible alternatives in the object's grammar based on the current internal
 state of the object.

 It's different from object-oriented programming since objects don't talk
 directly to each other.

 A few questions the come up when thinking about this:
  - do we want backtracking? probably not, if the semantic actions are
 different, it might be awkward or impossible to undo them. If the semantic
 actions are the same in the grammar, we might want to do some factoring to
 remove repeated semantic actions.
  - how to represent time? Do all objects need to share the same clock? Do we
 have to send tick events to all objects?
  - should we allow the parallel execution of multiple scenarios for the same
 object? What does it make more complex in the design of the object's
 behavior? What does it make simpler?

 If we assume an object receive a tick event to represent time, and using a
 syntax similar to ometa, we could write a simplistic behavior of an ant this
 way:

 # the ant find food when there is a food event raised and the ant's position
 is in the area of the food
 # food indicates an event of type food, the question mark starts a
 semantic predicate
 findFood    = food ?(this.position.inRect(food.area))

 # similar rule to find the nest
 findNest     = nest ?(this.position.inRect(nest.area))

 # at every step, the ant move
 move         = tick (= move 1 unit in current direction (or pick random
 direction if no direction))

 # the gatherFood scenario can then be described as finding food then finding
 the nest
 gatherFood = findFood (= pick up food, change direction to nest)
                     findNest (= drop food, change direction to food source)

 There is probably a lot of thing missing and not thought through.

 But I was just wondering if you know a language to do this kind of things?

 Thanks,
 Benoit.

 ___
 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] Alan Kay talk at HPI in Potsdam

2011-07-26 Thread John Nilsson
On Tue, Jul 26, 2011 at 8:16 AM, BGB cr88...@gmail.com wrote:

 the main merit of a bytecode format is that it could shorten the path in
 getting to native code, potentially allowing it to be faster.


It seems to me that there is a lot of derivation of information going on
when interpreting source code. First a one dimensional stream of characters
is transformed into some kind of structured representation, possibly in
several steps. From the structural representation a lot of inference about
the program happens to deduce types and other properties of the structure.
Once inside a VM even more information is gathered such as determining if
call sites are typically monomorphic or not, and so on.

In other words a _lot_ of CPU cycles are spend on deriving the same
information, again and again, each time a program is loaded. Not only is
this a waste of energy it also means that each interpreter of the program
needs to be able to derive all this information on their own, which leads to
very complex programs (expensive to develop).

Would it not be a big improvement if we could move from representing
programs as text-strings into representing them in some format capable of
representing all this derived information? Does any one know of attempts in
this direction?

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


Re: [fonc] Alternative Web programming models?

2011-06-14 Thread John Nilsson
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?

2011-06-14 Thread John Nilsson
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?

2011-06-14 Thread John Nilsson
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?

2011-06-14 Thread John Nilsson
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?

2011-06-14 Thread John Nilsson
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: [fonc] Alternative Web programming models?

2011-06-14 Thread John Nilsson
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] Question about OMeta

2011-04-10 Thread John Nilsson
, e,g, imagine a SQL injection attack.  Likewise, we
 might wish to re-use validation logic in multiple places, such as in
 an HTML form, and it is not sufficient to depend on the HTML form's
 JavaScript validation logic, since JavaScript can be disabled and the
 browser can be bypassed completely using raw encoding of HTTP PUT/POST
 form actions and sending that directly to the server.

 Food for thought.

 [1] http://www.google.com/search?q=how+to+add+a+column+to+a+large+table
 [2] http://martinfowler.com/articles/evodb.html
 [3] http://databaserefactoring.com/
 [4] http://guides.rubyonrails.org/migrations.html
 [5] http://www.mecs-press.org/ijigsp/ijigsp-200901007.pdf
 [6] http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.134.6252
 [7] 
 http://z-bo.tumblr.com/post/454811730/learning-to-map-between-structured-representations-of

 On 4/10/11, John Nilsson j...@milsson.nu wrote:
 Hello John,

 Thanks for the pointers, I will indeed have a look at this.

 I have a pet project of mine trying to create a platform and
 prgramming model to handle this kind of problem. Such a simple thing
 as keeping referential integritey between static Java code, the
 embedded SQL and over to the dynamic databas is one of those
 irritating problems I intend to address with this approach.

 I enviosion a system with a meta-language and some standard
 transformation to editor views, compilation stages and type-systems,
 implemented in terms of this meta-language.

 BR,
 John

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

 It is true you can't know exact intention but that hasn't stopped
 computer scientists from trying to answer the question. For example,
 Joe Goguen's work on algebraic semiotics resulted in Joe developing a
 few basic rules for mapping information from one medium to another.
 Joe's first rule was Wherever possible, preserve the structure of the
 content.

 I could think of... and have thought of... a lot of techniques for
 automatically porting code (an extremely difficult problem,
 considering it covers correct live migration from an Intel to an
 adversarial AMD processor with possibly deliberately incompatible
 Instruction Set Architecture), including ways to automatically
 trade-off structure with other goals in a controlled fashion.  One
 that Goguen was interested in was content mixing or predictive
 modeling - hot buzzwords before the AI Winter came and dried up lots
 of interesting funding. It is starting to re-emerge because of the
 multi-core kerfluffle, since it can achieve the sorts of
 parallel-busyness chipmaker's crave. I'd recommend Mark Turner's
 paper Forging Connections, which suggests some meaning belong to the
 mapping itself, rather the source-target approaches.  In other words,
 we tend to construct meaning in a blend between the source and target.
 We don't just have mappings-as-meanings , but forge meaning *from*
 mapping. (I hope I explained that well.)

 On 4/9/11, John Nilsson j...@milsson.nu wrote:
 I would think that it is generally impossible to automatically extract
 intentions from code. I run into this wall every day at work, I know
 _what_ the code is doing. But there is often little information as to
 _why_ it does what it does. It's not only due to the fact that the
 program is shaped by the idioms and constraints by the host language
 it is also the fact that the host language in general is a machine
 description language not a general problem statment language.

 I guess you are referring to the first problem when you talk about
 expressibility.

 To address the second problem I'm thinking that you have to seperate
 the problem description, and solution from machine specifications.
 That is have a programming model where you create languages
 specifically to encode the problem, and then create an intepreter for
 the language to create machines solving it.

 BR,
 John


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


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

2011-03-30 Thread John Nilsson
I think Subetextual[1] deserves a mention.

[1] http://www.subtextual.org/

BR,
John

On Wed, Mar 30, 2011 at 4:09 PM, John Zabroski johnzabro...@gmail.com wrote:
 I am trying to round up all visual programming kit research written by you
 folks, so that I can then compile a biography that I can read in one
 sitting.

 So far I have:
 CIA Agent
 Playground
 Squeak Skeleton
 Fabrik

 What else should I include?

 Thanks,
 Z-Bo

 ___
 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] Program representation

2010-05-10 Thread John Nilsson
Hi,

When reading about the TCP/IP implementation in OMeta it strikes me that
parsing the ASCII-art is still text. Isn't it kind of silly to spend all
that syntax on representing something as fundamental as a table?

So I was wondering, have you, at vpri, been contemplating alternative
program representations besides text? It seems to me that if you had a
richer model of representation it would be easier to make readable code.

The stuff that Jonathan Edwards been working on at http://subtextual.org/ has
been very inspiring for my own thinking on these matters. Representing
conditionals as tables seems like a brilliant approach.

For my self I was thinking that maybe one could embed a programming language
on top of a more graphical language, like HTML and see what comes out of it.

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


Re: [fonc] Program representation

2010-05-10 Thread John Nilsson
On Mon, May 10, 2010 at 6:54 PM, John Zabroski johnzabro...@gmail.comwrote:

 Schematic tables are a separate issue entirely.


First of all. Thanks for the explanation about the thinking wrt the TCP/IP
implementation. I'll have to peruse the code with that in mind.

My questions was, as you pointed out, about a separate issue entirely. The
ASCII-art was just the trigger for my question.

My concern/thinking was rather that the if the aim of the project is to make
programs simpler, one dimension worth exploring is the media used to convey
the program to humans. In the end it all boils down to communication between
humans.

I'm mainly involved in ERP-development, an area I understand is not
addressed by this project, which focuses more on the desktop. I do think
most of the thinking is transferable though, and in my experience one of the
biggest code smells is when one basically transcribes requirements and
specifications perfectly legible for humans into something legible for the
computer, a process that unfortunately results in lots of information loss.

I can for example imagine that instead of writing some comments about where
a piece of code comes from one could ideally just include the entire
discussion thread that resulted in the code, complete with presence
indicators and all. Maybe even have the system suggest updates when involved
parties leaves the organisation.

Another thing worth exploring is to add graphical examples executing the
code in question. The elusive sine functions would probably be better
described by a simple wave plot, or a unit circle diagram with the
relationships plotted on it, than a formal description of its algebraic
properties.

Basically code is not only about computing, it's also about communicating
with humans. So if the code can be expressed in a rich media I think lots
could be made about it's simplicity.

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


Re: [fonc] Program representation

2010-05-10 Thread John Nilsson
On Mon, May 10, 2010 at 8:55 PM, John Zabroski johnzabro...@gmail.comwrote:

 Can you provide an end-to-end exemplary situation in Enterprise Resource
 Planning (ERP) software where FONC ideas are relevant?  You sort of jumped
 off that stream of thought and onto modeling sine waves graphically, etc.


Depends on what you mean with end-to-end. I can definitely see how a meta
language like OMeta or M can come in handy to define up DSL for various
tasks like data transfer or GUI definitions.

The chain of meaning is really important to separate the meanings that are
tied to actual business meaning from the technical approach. I envision a
system where you describe high level business goals and flows in a language
entirely free of technical junk. I wonder how much of the architecture and
implementation that could be derived from such a high level.

Another thought is that I think a good business system should be flexible
enough to allow users to program it according to their whims. Possibly with
the assistance of a department specific developer. To enable this while
still maintaining the integrity of the system will be a interesting
challenge.

I work in various roles of ERP/CRM/BI software, and so I understand the
 domain very well

When I said ERP I was actually thinking the whole suite of applications like
CRM and BI too. The system I base my experience on is a rather simple
system. A single webserver against a single rdbms handling a few hundred
users developed and maintained by a single team of developers, but enough
interfacing with other systems and teams to feel the pain.

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


Re: [fonc] Program representation

2010-05-10 Thread John Nilsson
On Mon, May 10, 2010 at 11:29 PM, BGB cr88...@hotmail.com wrote:

 like having documentation in a hypertext form, and having code contain
 links into the docs, and from the docs back into the code?...

For example.


 I guess it would be a notable improvement on having to edit external files
 for the documents, and an improvement on javadocs-style comments (which make
 code less readable by sticking large gobs of text in the middle of it...).

Another improvement would be to get rid of the inherent ordering and context
of a text file. Instead one could surround a piece of code, i.e. a method,
with context relevant that piece such as dependencies, usages, supplements
and complements. The code bubbles project is very interesting in that
regard.


 well, I guess some people like flowcharts/..., but personally I don't like
 them all that much (or, at least on the small-scale). I can more easily
 imagine them being used to describe things like library dependencies, ...
 but, when used to describe code, one almost may as well just be using
 assembler...


Have a look at Conal Elliotts Tangible Functional Programming
http://conal.net/blog/posts/tangible-functional-programming-a-modern-marriage-of-usability-and-composability/
he
has some interesting examples of a style of visual programming that might
actually be useful.

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