<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On 12 Nov 2014, at 8:07 pm, Casey Ransberger <a href="mailto:casey.obrien.r@gmail.com" class="">casey.obrien.r@gmail.com</a> [self-interest] <<a href="mailto:self-interest@yahoogroups.com" class="">self-interest@yahoogroups.com</a>> wrote:</div><div class=""><div id="ygrp-mlmsg" style="font-size: 13px; font-family: Arial, helvetica, clean, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); position: relative;" class=""><div id="ygrp-msg" style="line-height: 1.22em; z-index: 1;" class=""><div id="ygrp-text" style="line-height: 1.22em; font-family: Georgia;" class=""></div></div></div></div></blockquote><br class=""><blockquote type="cite" class=""><div class=""><div id="ygrp-mlmsg" style="font-size: 13px; font-family: Arial, helvetica, clean, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); position: relative;" class=""><div id="ygrp-msg" style="line-height: 1.22em; z-index: 1;" class=""><div id="ygrp-text" style="line-height: 1.22em; font-family: Georgia;" class=""><div style="line-height: 1.22em;" class="">Did Self do the thing (at any point) where multiple people (say, a teacher and a student) could connect to the same Self world and interact with separate "hands" (mouse pointers?)</div><div style="line-height: 1.22em;" class=""><br style="line-height: 1.22em;" class=""></div><div style="line-height: 1.22em;" class="">I thought I'd read that this was done at one point. Could be wrong. Okay, but if right, are there any ways that collaboration of this sort might be taken in new directions with the new "toy cloud?" Like, maybe it goes both ways. </div><div style="line-height: 1.22em;" class=""><br style="line-height: 1.22em;" class=""></div><div style="line-height: 1.22em;" class="">You're showing me something you don't understand in your image, and then I show you an example of said thing's use in my image to help you understand it. We can jump back and forth and such. Wander one another's worlds.</div><div style="line-height: 1.22em;" class=""><br style="line-height: 1.22em;" class=""></div></div></div></div></div></blockquote><div><br class=""></div><div>This is definitely something I’m working towards, but there are some features we need first though. (As an aside, Self is the finest system for Yak Shaving [<a href="http://www.catb.org/~esr/jargon/html/Y/yak-shaving.html" class="">http://www.catb.org/~esr/jargon/html/Y/yak-shaving.html</a>] that I’ve ever encountered! Everything is possible and nothing is done :)</div><div><br class=""></div><div>As Chris says, there are two ways Self currently can share a morphic session, via X and via a custom Java applet.</div><div><br class=""></div><div>Using X would mean exposing a X client to each sandboxed snapshot, as well as something like Xpra to cope with all the people on flakey Wifi with connections dropping out who can’t be allowed to kill the VM, then pipe it all over TLS or SSH. And in the end the user has to install a X server. (Alternatively run xvnc and <a href="http://guac-dev.org" class="">guac-dev.org</a> but VNC has always been an annoying experience for me)  This is a lot of complex moving partsl </div><div><br class=""></div><div>The Java code works completely differently. It is sort of like an ad-hoc manual version of the Islands concept in Squeak’s Croquet. It creates a mirror of the morphs within the JVM on each client and keeps that tree in sync with the tree on the server. But this requires fairly invasive reworking of the morphic code,  and also requires writing java versions of each type of morph. It also requires the user to install Java. We also would still need to run it over TLS/SSH.</div><div><br class=""></div><div>For both of these there is another issue: multiple Self worlds will necessarily share IP addresses. We can’t assume one snapshot <-> one IP address while we’re stuck on IPv4. This is OK for HTTP because we can use a proxy server like nginx to forward HTTP requests onto the correct running Self webserver. We also have to take into account corporate and ISP firewalls and NATs blocking ports other than the common HTTP/SHTTP/SSH ones.</div><div><br class=""></div><div>Aaanyway, my current plan for doing this ‘right’ is roughly:</div><div><br class=""></div><div>1.   Shave Yak</div><div>2.   Merge ‘native’ functionality so we can write on the fly primitives</div><div>3.   Write binding to libsodium [<a href="http://www" class="">http://www</a>.<a href="http://libsodium.org" class="">libsodium.org</a>]. This gives us fast simple cypto</div><div>4.   Write Self Websockets server [<a href="https://en.wikipedia.org/wiki/WebSocket" class="">https://en.wikipedia.org/wiki/WebSocket</a>] This gives us bidirectional messaging which nginx can proxy for</div><div>5.   Write Self code which hooks in at morphic’s canvas level and forwards messages onto a canvas in another Self image over websockets using libsodium crypto</div><div>5a  Write JS wrapper to HTML5 canvas so we can access running Self images in our web browsers (but how to we do crypto?)</div><div><br class=""></div><div>Open to suggestions and offers of help :)</div><div><br class=""></div><div>There are far too many technical terms in this email :)</div><div>Russell</div><div><br class=""></div><div><br class=""></div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div id="ygrp-mlmsg" style="font-size: 13px; font-family: Arial, helvetica, clean, sans-serif; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); position: relative;" class=""><div id="ygrp-msg" style="line-height: 1.22em; z-index: 1;" class=""><div id="ygrp-text" style="line-height: 1.22em; font-family: Georgia;" class=""><div style="line-height: 1.22em;" class="">That could be interesting. </div><div style="line-height: 1.22em;" class=""><br style="line-height: 1.22em;" class=""></div><div style="line-height: 1.22em;" class="">Just a thought:)</div><div style="line-height: 1.22em;" class=""><br style="line-height: 1.22em;" class=""></div><div style="line-height: 1.22em;" class="">Casey</div><div style="line-height: 1.22em;" class=""><br style="line-height: 1.22em;" class="">On Nov 2, 2014, at 5:10 PM, "Russell Allen<span class="Apple-converted-space"> </span><a href="mailto:mail@russell-allen.com" style="line-height: 1.22em;" class="">mail@russell-allen.com</a><span class="Apple-converted-space"> </span>[self-interest]" <<a href="mailto:self-interest@yahoogroups.com" style="line-height: 1.22em;" class="">self-interest@yahoogroups.com</a>> wrote:<br style="line-height: 1.22em;" class=""><br style="line-height: 1.22em;" class=""></div><blockquote type="cite" style="margin: 0px 0px 0px 4px; line-height: 1.22em;" class=""><div style="line-height: 1.22em;" class=""><span style="line-height: 1.22em;" class=""> </span><div id="ygrp-text" style="line-height: 1.22em; font-family: Georgia;" class=""><div style="line-height: 1.22em; margin: 0px 0px 1em;" class=""><br class="webkit-block-placeholder"></div><div class="" style="line-height: 1.22em;">All the cool kids have a cloud, so we should have one too!</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">Announcing<span class="Apple-converted-space"> </span><a href="http://larrikin.org/" class="" style="line-height: 1.22em;">LARRIKIN.ORG</a><span class="Apple-converted-space"> </span>- the Self cloud (tada!)</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">NBAQ: (Never Before Asked Questions)</div><div class="" style="line-height: 1.22em;">------------------------------------</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">* What is it?</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">A cluster of Linux images which you can run Self snapshots on. When I say cluster, I mean two, currently small instances on Digital Ocean. Each Linux instance can run multiple Self worlds. A coodinator at<span class="Apple-converted-space"> </span><a href="https://manager.larrikin.org/" class="" style="line-height: 1.22em;">https://manager.larrikin.org</a><span class="Apple-converted-space"> </span>keeps track of stuff. It is much simpler than the big clouds but also has obvious drawbacks. </div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">* How does it work?</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">You go to<span class="Apple-converted-space"> </span><a href="https://manager.larrikin.org/" class="" style="line-height: 1.22em;">https://manager.larrikin.org</a><span class="Apple-converted-space"> </span>and sign up, then you can upload, download, wake, sleep, delete etc snapshots.  You will need the secret Self mailing list invitation: "ourselves"</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">* How do I interact with my running Self world?</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">You can interact with the stdin/stdout of your Self world through the manager. Also, if you run a webserver in your Self world on port 8000 then it will be exposed the web on port 80 of<span class="Apple-converted-space"> </span><a href="http://worldname.username.larrikin.org/" class="" style="line-height: 1.22em;">http://worldname.username.larrikin.org</a> I’m working on allowing people to point other domain names to their worlds. </div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">* Why didn't you just use OpenStack/Docker/Puppet/CoreOS/Mesos/Vagrant/Zookeeper</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">I don't even know what these things are but they sound fiendlishly complex. Seriously though, cluster of two machines, remember?  Some of these might become relevant if I end up trying to run many many snapshots over many instances. I am a bear of very little brain and long words bother me, so I've tried to keep moving parts to a minimum. Current moving parts are: Self, Centos 7, DigitalOcean, Amazon Route 53, nginx, FireJail and a very little python.</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">*<span class="Apple-converted-space"> </span><a href="http://larrikin.org/" class="" style="line-height: 1.22em;">Larrikin.org</a>?</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">Shug. I happened to have the domain name. I'll move it to something better in due course.</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">* For the love of all that is good and holy, why?</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">To meet the large un-met demand for cloud hosting of Self snapshots, of course!</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">Ground Rules:</div><div class="" style="line-height: 1.22em;">-------------</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">I. Your running worlds are in a sandbox and shouldn't be able to do anything harmful. Please try and let me know if you succeed in breaking anything!</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">II. The system may restart your running worlds at any time without warning, so if you are running, for example, a webserver make sure it starts up when the snapshot starts.</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">III. If you save your snapshot the system should keep track of the change. </div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">IV. If you look around you will see your snapshot is able to read and write files to disk. These files will disappear every snapshot restart so don't rely on them.</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">V. Even with very small TTL values, DNS sometimes takes time to propogate so if your webserver isn’t immediately available that is probably why. </div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">VI. This is just for fun! Don't do anything which you care too much about without talking to me first because as far as I know the code has a bug which will send all your data to the NSA, eat all your snapshots, then burn down the data centre.</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">VIII. Please please USE A UNIQUE PASSWORD to access the system. That way when the hackers break in they won't be able to use that password on your Top Secret Important Account.</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;">:) Russell</div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div class="" style="line-height: 1.22em;"><br class="" style="line-height: 1.22em;"></div><div style="line-height: 1.22em; margin: 0px 0px 1em;" class=""><br class="webkit-block-placeholder"></div></div></div></blockquote><div style="line-height: 1.22em; margin: 0px 0px 1em;" class=""><br class="webkit-block-placeholder"></div></div><div style="line-height: 1.22em; color: rgb(255, 255, 255); height: 0px;" class=""></div></div></blockquote></div><br class=""></body></html>