IRC channel logs

2023-01-31.log

back to list of logs

<mfiano>I fail at email. Pretty sure I hit reply instead of group-reply in mutt, so only cwebber got the thanks to all of the Spritely team.
<cwebber>malaclyps: where does it say ,vr? that's a thing
<cwebber>but I don't see it on there
<cwebber>I thought I had eliminated all use of ,vr / ,vat-run in favor of ,enter-vat
<cwebber>,vr is a not-as-good-as-enter-vat way to run some code inside a vat
<cwebber>however you have to prefix every command with it and you can't changge the vat
<cwebber>and it's finnicky
<cwebber>dthompson made the much better thing
<cwebber>flatwhatson: guile-goblin-chat public again ty
<flatwhatson>awesome thx :)
<dthompson>ACTION updated https://gitlab.com/spritely/community-garden to use the new goblins release
<dthompson>the chickadee vat implementation lives there
<daviid>is vat an acronym or just 'event loop ...'?
<daviid>ACTION can't stop thinking of 'value added tax' which is annoying :)
<dthompson>daviid: a vat is an event loop that manages messages to a group of actors
<daviid>dthompson: ok, but is vat an acronym - where does this name come from, curious ... couldn't find the origin of the name anywhere i looked
<RandyFarmer[m]>Think "brain in a vat" instead, daviid - That's what MarkM said when we coined the term.
<RandyFarmer[m]>I was there at EC when we came up with it. Brain in a vat.
<RandyFarmer[m]> https://en.wikipedia.org/wiki/Brain_in_a_vat
<RandyFarmer[m]>It's kinda metaphorical.
<daviid>RandyFarmer[m]: ah ok, thanks
<RandyFarmer[m]>My pleasure.
<daviid>RandyFarmer[m]: i think a note in the doc might be good (and fun), i was looking at your doc and still couldn't answer my quiz ...
<RandyFarmer[m]>Good idea.
<ocdtrekkie>ACTION notes this for the eventual "ErightsLI5 glossary site I want to see someday
<ocdtrekkie>Or was it eli5rights? That one seems more understandable even if all lowercase.
<isd>I like the latter better.
<ocdtrekkie>I would need to figure out all the things it needs to explain and then actually figure out what those things are myself, cuz I don't know 🫢
<sneek>Zarutian_iPad: Greetings :D
<Zarutian_iPad>sneek, botsnack.
<sneek>:)
<malaclyps>cwebber, sorry -- it's here: https://spritely.institute/files/docs/guile-goblins/0.10/Spawning-objects.html
<vv[m]1>hullo hullo hullo, just want to mention that I successfully got 0.10 to do the alice/bob example with captp and was very happy about this. i have also made a MR to fix some typos I found in the docs ^_^
<tsyesika>wooo :) I'm glad it worked for you, fixing typos and stuff is always appreciated!
<vv[m]1>i am on Gentoo and getting guix shell to behave and such was a nightmare, but I think I've finally figured out how to get it working
<vv[m]1>* it working reliably
<tsyesika>glad you got it working, it'd be neat if there was an ebuild for guix or maybe even goblins!
<vv[m]1>I was able to find a third party overlay ebuild for guix and that's how I got guix to install, but yeah I was considering trying to make a goblins ebuild - possibly at some point
<tsyesika>looks like guile-fibers and guile-gcrypt are in the main gentoo repos so I think it'd just be goblins which needs to be packaged
<vv[m]1>nice. I'm no expert at making ebuilds but I might be able to fumble my way through making one
<vv[m]1>I was wondering if the community garden guix package is going to be updated since it seems to still be on .9, which dismayed me when I tried to run it
<tsyesika>I think dthompson said yesterday he had updated it last night
<tsyesika>looks like he updated it 11 hours ago, when did you try?
<vv[m]1>I see a commit about the API being updated but seems the guix.scm still references version 0.9 - though perhaps that's just a visual sort of thing since the commit hash is updated
<vv[m]1>(name "guile-goblins")
<vv[m]1> (version "0.9")
<vv[m]1>(apologies, I know nothing about guix ^_^)
<tsyesika>ah yeah it does seem like the guix.scm needs updating :)
<tsyesika>0.9 doesn't actually exist, we jumped directly to 0.10 so it might still work as it's a very recent dev version
<tsyesika>but it probably should just point to the newly released guile-goblins package :)
<tsyesika>he should be online in 1-2h so hopefully he can update it today
<vv[m]1>no rush, of course! Also I am actually on the end of a late night thing (west coast USA) so will be offline shortly
<tsyesika>oh it's actually just pointing at the very latest commit of guile-goblins so feel free to play with it, it's the latest version :)
<vv[m]1>cool! thanks for double-checking
<vv[m]1>I got it opened up! Worth mentioning, the error message is very confusing if you forget to start the tor daemon
<sneek>Welcome back Zarutian_iPad :D
<Zarutian_iPad>sneek, botsnack.
<sneek>:)
<dthompson>vv[m]1: hey thanks for trying out the garden demo! it's a little clunky but glad it works on someone else's machine :)
<dthompson>I build guile-goblins from git in the guix.scm there but I should have updated the version number to be less confusing even though it's kinda irrelevant there.
<dthompson>pushed a change to make that more clear.
<drakonis> https://lobste.rs/s/vna6dx/spritely_goblins_0_10_released
<drakonis>are the online docs out of date right now?
<drakonis> https://spritely.institute/files/docs/guile-goblins/0.10/TEMPORARY-Live-hacking-_0060_0060fix_0027_0027.html#TEMPORARY-Live-hacking-_0060_0060fix_0027_0027 wasnt this fixed already?
<dthompson>drakonis: not completely, unfortunately.
<dthompson>geiser added a "fix" that didn't really fix the issue
<dthompson>so we need to revisit the issue and work with geiser to fix it for real
<drakonis>ah, fair enough.
<dthompson>we really wanted to remove that text!
<Zarutian_iPad>sneek, botsnack!
<sneek>:)
<acenovo[m]>Loving the update and the new docs
<sneek>Zarutian_iPad: Greetings :D
<dthompson>acenovo[m]: thanks! :)
<acenovo[m]>Welcome. Quick question...
<acenovo[m]>Is it possible to make an actor that can add other actors to the same vat or do I need our of band communion to do that sort of thing?
<acenovo[m]>Out of band communication
<dthompson>acenovo[m]: actors can spawn other actors.
<acenovo[m]>Perfect. Thank you
<dthompson>a lot of actor composition happens this way
<dthompson>relevant page of our docs: https://spritely.institute/files/docs/guile-goblins/0.10/Objects-which-contain-objects.html#Objects-which-contain-objects
<acenovo[m]>I'm redesigning a game to be 'native' to Goblins. Vats are locations and actors are entities. Some entities need to change locations, so that's perfect
<acenovo[m]>I'm on chapter 2 of the docs right now
<dthompson>we'd be curious to see what you come up with! we like to make games, too. :)
<acenovo[m]>I'll be sure to share. It's "@50htz@cathode.church" on Fedi. I'm already mutual with cwebber:
<dthompson>cool :)
<cwebber>hi hi
<cwebber>oh hey acenovo[m]
<cwebber>hope you're enjoying the docs
<cwebber>and the new release :)
<Fare>new release? nice. Where?
<acenovo[m]>Oh yeah. I'll get to cutting code soon. The first thing I'm doing is a time travel game scenario called "Guns of August" based on the triggering event for WWI
<acenovo[m]> https://spritely.institute/news/spritely-goblins-v010-for-guile-and-racket.html
<acenovo[m]>It was on my clipboard :D
<dthompson>thanks for linking acenovo[m] :)
<dthompson>Fare: see the link above for details ^
<Fare>thanks!
<Fare>and congratulations!
<dthompson>thank you :D
<Fare>What's the performance difference between Racket and Guile for Goblins?
<Fare>I suppose you guys know https://dosgames.com/game/gobliiins (they actually made 4 games in this series)
<tsyesika>the ocapn pre-standardization meeting is today if folks want to come along, details in this issue https://github.com/ocapn/ocapn/issues/28#issuecomment-1402019760
<tsyesika>it's in 15 minutes
<dthompson>Fare: I don't know if we have any stats on that. if we do I don't know them!
<tsyesika>I think there are some performance tests but I don't remember the results :)
<tsyesika>maybe christine knows
<Fare>Reminds me that... I need a persistent VM on which to run Scheme code. I'm wondering which implementation to base it on. I suppose Gambit at this point, considering how heavily I'm invested in Gerbil.
<Fare>But if you have advice, I'm all ears.
<Fare>I'd like Goblins to run on that persistent Scheme.
<dthompson>we're all-in on guile over here
<Fare>does guile still have a bytecode interpreter in addition to native code, these days?
<dthompson>yes, the bytecode interpreter is the main thing and there's a JIT compiler for hot code.
<dthompson>no ahead-of-time native compilation quite yet
<Zarutian_iPad>can one, via something skin to Lua debug.dump() dump the bytecode for a function out?
<Fare>Zarutian_iPad, (apropos "disassemble")
<Zarutian_iPad>danke
<Fare>dammit, maybe you need to load some modules first
<Fare>(define (foo x) (1+ x)) ,disassemble foo
<Zarutian_iPad>Fare: this ,disassemble is accessible to programs? or just to the terminal console?
<dthompson>Zarutian_iPad: it's a REPL command.
<Zarutian_iPad>so not quite like js someFunc.toString() then
<dthompson>which likely has a corresponding procedure that you could use instead
<Zarutian_iPad>I take though that closures remain properly encapsulated though?
<dthompson>looked it up: check out disassemble-program in (system vm disassembler)
<dthompson>and disassemble-image in that same module
<dthompson>you can use the compiler to get an object that can be disassembled
<dthompson>(disassemble-program (lambda (x) x))
<dthompson>contrived example ^
<Zarutian_iPad>I have somewhere in my gists or other notes something I have been calling Nomads. Which is pretty much a closure that can travel between runtimes
<Zarutian_iPad>in js`Nomad((a, b) => { E(c).foo(a, b, 42) }, (i) => eval(i))` where both functions must be declared in the same scope otherwise the Nomad cannot get its luggage
<Zarutian_iPad>the (i) => eval(i) acts like an accessor for the Nomad machinery to prepare the luggage
<Zarutian_iPad>which is c in the above example
<Zarutian_iPad>in travel the nomad would be a tuple of the source text of the function and a map/dict of its luggage
<dthompson>I'm unsure how to answer the closure encapsulation question. I suspect we might be talking about slightly different things.
<Zarutian_iPad>got a refernce to a closure. Can I, as an object, look and see its environment? if not then the closure is encapsulated
<dthompson>ah okay. yeah they're encapsulated.
<Zarutian_iPad>(in js it is so hence the (i) => eval(i) accessor for the Nomad thing)
<Zarutian_iPad>the Nomad mechanism, during marshalling for a captp connection, uses acor.js or esprima to parse the nomad function to find all the free references that function makes. Then goes through those and uses the accessor to get direct references to the refered things. Then it determine what each thing is. Is it a frozen primordial? is it transitively
<Zarutian_iPad>immutable and transparent? and at last is it what Agoric folks call Remotable
<Zarutian_iPad>basically the Nomad mechanism is packing the luggage for the nomad closure
<Zarutian_iPad>I am thinking of having a Nomad mechanism constructor. Then I might call those Nomad mechanisms Nomad Tribes as they do/pack their luggage their way
<Zarutian_iPad>too wierd of a metaphor?
<Zarutian_iPad>sneek, botsnack.
<sneek>:)
<vv[m]1>I am curious how one would go about changing the error handling of the community garden and / or the Tor connection, so that it's clearer that the tor socket isn't there. I tried to wrap some code in with-exception-handler as a test but it didn't seem to change the output to print a message as I expected. I will probably have to learn more about guile for this one.
<dthompson>yeah error handling for that kind of stuff isn't so great right now
<dthompson>more to come on that front
<vv[m]1>Understandable; I am mainly attempting to do it as a learning exercise
<dthompson>go for it!
<dthompson>my demo was hastily written in my first week and I thought it was just to show christine that I learned something but then everyone liked it and wanted to share so now I am burdened with eventually cleaning up the code and stuff ;)
<vv[m]1>For sure, it's very cool as an example!
<sneek>Zarutian_iPad: Greetings
<vv[m]1>kinda sorta got an error print working
<Parnikkapore_m>In systems where objects flow between lots of devices, are there ways to design Goblins systems such that one message does not trigger large amounts of requests throughout the network, one per involved device?
<dthompson>vv[m]1: hey cool! :)
<dthompson>Parnikkapore_m: maybe someone else has a better answer but given how freely actors can be composed I don't know if there is any way to have such a guarantee, generally speaking. just like any other type of distributed programming.
<dthompson>if I'm on machine A and I send a message to an actor on machine B, I have no way of knowing what messages that may trigger in turn.
<Parnikkapore_m>Yea, I think I phrased the question a bit badly too
<Parnikkapore_m>So let's say we have the town newsletter example from the paper; Alice wants to grant Bob a revokable capability to write a message to the blog. Is there a way to do this so that Bob can send messages when Alice is offline (maybe she's using a phone)? There is an always-on server that's serving the blog to viewers
<dthompson>my so far limited understanding is that if the captp connection to alice's machine fails then messages can't be sent. in a production system alice would want a more available machin e than a phone.
<acenovo[m]>Someone in my book group said that some routes supported can fail without notice, so you may want an onion address as a hub
<acenovo[m]>Since there's not always a failure message, there's not a retry strategy that'll work consistently across all supported routes
<Parnikkapore_m>ok, thanks!
<dthompson>thanks for chiming in acenovo[m]
<acenovo[m]>In his informal testing with goblin chat, Tor was the more reliable protocol
<vv[m]1>I am currently playing with the garden with someone else over Tor and it is working!
<vv[m]1>so cool
<dthompson>vv[m]1: wow!! that's great!
<dthompson>so glad it works!
<vv[m]1>me too. We were worried for a moment it wasn't working but it turned out to be an issue with the tor daemon on her machine
<dthompson>I always think that maybe it's broken because tor services are sloooow to establish
<juliana[m]>ACTION uploaded an image: (33KiB) < https://libera.ems.host/_matrix/media/v3/download/solarpunk.moe/1848506096b83728de9acdbc9c6322c12250c9f859e1adb2aca796d31d0131c0/Capture%20d%E2%80%99%C3%A9cran%20du%202023-01-31%2020-46-08.png >
<vv[m]1>voilà!
<dthompson>beautiful :)
<dthompson>ACTION just realized it says "OCAP" in cabbages
<dthompson>lol love it
<Zarutian_iPad>ocabs, eh?
<dthompson>object cabbages
<juliana[m]>listen cabbage art is hard okay XD
<dthompson>you're working with a pretty limited palette
<dthompson>ACTION is sleepy
<dthompson>thanks for sharing vv[m]1 and juliana[m]
<juliana[m]>hey, thanks for making a fun cool thing!
<dthompson>:)
<cwebber> https://share.tube/w/44DhG6pcEyCFgnUHhxnUTn
<cwebber> https://www.youtube.com/watch?v=rQJB6MSmang
<vv[m]1>This is a wondeful guix cabbage manager, thank you for creating it