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>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>dthompson made the much better thing <cwebber>flatwhatson: guile-goblin-chat public again ty <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. <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 ... <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 🫢 <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 <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>(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 <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. <drakonis>are the online docs out of date right now? <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 <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]>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 <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: <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 <Fare>What's the performance difference between Racket and Guile for Goblins? <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 :) <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. <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") <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>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>you can use the compiler to get an object that can be disassembled <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>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 <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 <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 <vv[m]1>Understandable; I am mainly attempting to do it as a learning exercise <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! <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>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>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 <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>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 <dthompson>ACTION just realized it says "OCAP" in cabbages <dthompson>you're working with a pretty limited palette <vv[m]1>This is a wondeful guix cabbage manager, thank you for creating it