The idea of implementing client-side data binding is something that really 
appeals to me, and I think it can really spur innovation in the world of 
tech.  So, I  wanted to give each terminal window the ability to have its 
own arbitrarily sophisticated  environment that could be persisted between 
 page loads. 

In normal command line mode, everything is really just treated like a 
string that must  be interpreted based upon the particular command that has 
been invoked. 

Try doing:

$ echo 1 2 3 4 5

And then:

$ echo "1 2 3 4 5"

...there's really no difference between the  two. 

But then you can interact with the terminal's environment object by running 
the "eval" command as such:  

$ eval one=1 

This is much different than saying:

$ eval two="2"

After running both of these commands, you can do this: 

$ env

...in order to see a nicely formatted  representation of the environment in 
which you are running.  You will see that there is indeed a fundamental 
difference in terms of the internal representations of the  variables, 
"one" and "two". 

Now the thing that really makes this stand  apart from, for example, a bash 
environment,  is that you can create arbitrarily sophisticated object 
trees. 

One way to create an object is by using variable names that you've already 
declared like this: 

$ eval myobj={one,two}

This will create a JSON object with the keys  set to "one" and "two", and 
the values set  to the values that you've given them. 

But to start having real fun, you can do  something like this: 

$ eval myobj.childobj={}
$ eval myobj.childobj.which=true

Then you can also make pure arrays with this  kind of notation: 

$ eval arr=[1, "two", myobj, 4, false]

Okay, writing all of these eval's seems  pretty tedious, no?  How about 
running the  command: 

$ evalon

...in order to make the initial "eval"  implicit.  And the commands will 
look like  this: 

> myobituary = "Goodbye cruel world"

You can exit from this mode just by pressing ctrl+c, or simply by typing a 
period into the prompt and pressing enter. 

My motivation for all of the above is simply to allow for easy typed data 
binding between remote machines, whether the machines are clients or 
servers. That is, you can define a data structure in your browser, and then 
have it unambiguously persisted on the serverside, or even in other 
clientside desktops.  

I so far have done some work in  terms of keeping these JSON objects on the 
server as python dict types, and then being able to remotely manipulate 
these objects via xhr POST requests. This will allow for the rapid 
development of  application specific data structures within the browser, 
and then deploying these same structures with just a couple of key strokes 
from the browser's own terminal. 

Give it a try!

On Wednesday, January 22, 2014 8:28:16 AM UTC-5, Dennis Kane wrote:
>
> It has been kind of an obsession for me to create the kind of end-user 
> experience that will really allow node to start actually being put to use. 
>  I've spent pretty much an entire year of full time coding getting this 
> thing ready for prime time.  The only caveat is that you need a Chrome 
> browser, as it crucially depends on the filesystem API.  I won't get into 
> the details of how to user it.  For now, just go there and start clicking 
> around.  As people show interest, I'll start giving instructions.
>
> Where is "there"?
>
> HERE --> http://urdesk.net
>
> urdesk means: "yoUR DESK" and "Uniform Resource DESK".
>

-- 
-- 
Job Board: http://jobs.nodejs.org/
Posting guidelines: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en

--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to