IRC channel logs

2024-05-10.log

back to list of logs

<dckc>so excited about the shepherd project!
<dckc>I'm installing guix on my ThinkPad (the one I got to run genode)
<dckc>installation image weighs in at 853.5mb...
<dckc>sha256: 087a97dba2319477185471a28812949cc165e60e58863403e4a606c1baa05f81
<flatwhatson>great post thanks juli- :)
<flatwhatson>goblinetes
<dthompson>twice now there's been a time when I've pulled a module out of chickadee and into a spritely project. last year I used chickadee's ring buffer implementation for goblins' vat event log, and I just snarfed the binary heap module to use for hoot's test async scheduler.
<dthompson>perhaps this is an indicator that they would be useful to include in guile itself...
<civodul>quite possibly!
<civodul>i rolled my own ring buffer in the Shepherd, also for event logging
<civodul>:-)
<dthompson>ooh we should compare
<dthompson>the binary heap is useful for priority queues
<civodul>not brilliant: https://git.savannah.gnu.org/cgit/shepherd.git/tree/modules/shepherd/support.scm#n148
<dthompson>which is what a scheduler needs... and usually programs that roll their own event loop need a scheduler
<dthompson>civodul: ah but it's persistent! for chickadee/goblins I wanted a mutable one
<dthompson>so that the ring buffer itself didn't add to gc pressure
<civodul>right
<civodul>yeah in this case i thought it’s okay to cons a bit
<dthompson>would be good to have mutable and persistent variants of many data structures
<civodul>ACTION nods
<dthompson>for goblins, persistent is always preferred for using within an actor because you get the time-travel property
<dthompson>civodul: I forgot to send my link! https://gitlab.com/spritely/guile-goblins/-/blob/main/goblins/utils/ring-buffer.scm?ref_type=heads
<civodul>nice
<dthompson>tsyesika, cwebber, and I all just joined in on a little prototype text-based virtual world during our daily meeting and it was a lot of fun! things are getting very exciting over here!
<dthompson>thanks to tsyesika for making it all happen
<dpk>metaverse, Scheme edition :P
<dthompson>you're not wrong!
<dpk>a programmable MUD type thing in Scheme would be cool. i miss MUDs (i mostly hung out on MOOs, which were programmable from within as a central element of their design. some notable Lispers and Smalltalkers worked on it)
<dthompson>programmable from within is what we want!
<dthompson>for that we'll just little wasm modules that run in the hoot interpreter (jk jk... unless?)
<dthompson>just use*
<dckc>dthompson, that does sound fun! kriskowal and I played rock-paper-scissors between 2 endo daemons connected by TCP recently. https://github.com/endojs/playground/pull/14#issuecomment-2080052771
<dthompson>dckc: oh that's awesome!
<dthompson>I love the overlap we're having with this
<dthompson>we want to add some games to the thing we're making
<dthompson>we got on a bit of a tangent about games this morning lol
<dckc>congrats on funding for the shepherd thing! that's been on my wish-list for a few years.
<dckc>Of course, it's all your fault: I was up into the wee hours last night installing guix on my thinkpad, and studying the shepherd code.
<dthompson>oh wow! didn't know you were "one of us" over in guix land
<dckc>well, I've dipped a toe in the water. wishlist item: https://github.com/dckc/madmode-blog/issues/144
<dthompson>I think shepherd may have something like socket activation now
<dthompson>civodul can speak to whether or not I'm right ;)
<dckc>the guix crowd is a hearty one... willing to forgo support for the thinkpad's wifi chip, keybase, and various other things I bumped into
<dthompson>the solution is to add in the nonguix channel ;)
<dckc>ssshhh!
<dckc>:)
<dthompson>I use that for plain ol' linux and firefox and chrome
<dthompson>I use firefox mainly but chrome has become important for hoot testing
<dthompson>lol
<dthompson>this isn't #guix we can talk about it
<dthompson>guix has come a long way... I became a user back when you basically also had to be a guix developer because you always needed to package stuff
<cwebber>dckc: ehehe
<cwebber>yay
<dthompson>still plenty of stuff to package but the selection feels pretty good these days
<dckc>perhaps my main point was how slow it was to download packages. i'm spoiled by 1G fiber and the bandwidth that gets donated to projects like nix
<cwebber>Guix could definitely use more resources
<cwebber>but more importantly
<cwebber>we should have p2p package distribution
<cwebber>it's a big expense for Nix, PyPi, etc to make their packages so available
<dthompson>yeah it's definitely slower
<dthompson>however I also remember the bad old days (that were still good) when downloading was *very slow*
<dthompson>so I'm grateful for the speed that's there now
<dckc>I thought about p2p distribution... it seems like there are a _lot_ of different packages, and the odds that lots of peers have the one I want aren't great.
<dthompson>would be an interesting research area. I know at least some people in the guix community have looked into this.
<dckc>there's a project to distribute nix stuff over IPFS. made lots of progress... but I think it's kind of a long way from critical mass
<dthompson>I wrote the initial version of a tool called 'guix publish', which lets *anyone* quickly start up a guix substitute server
<dthompson>it's been improved by others since, but I'd say that's the place where something p2p could be inserted
<dckc>cachix is something to aspire to... `guix publish` reminded me of that.
<cwebber>distribute packages over Goblins and OCapN! (libp2p netlayer maybe?
<cwebber>)
<dckc>obv.
<dthompson>so many possibilities here
<dckc>so the shepherd thing... is there a code repository to watch yet?
<dckc>(my experience with funding is: one typically has 1/3rd of 2/3rds of the thing done by the time you can announce it :)
<dthompson>nothing yet! stay tuned :)
<dckc>ok. any clues on where to stay tuned? is https://social.coop/@spritelyinst@octodon.social likely to suffice?
<dthompson>yeah I think our socials, blog, and this channel are places where you'll hear about major milestones
<dthompson>we blast our news to everything
<jfred>goblins-y MUD programmable from within would be *amazing*
<jfred>I did a little spelunking on lambdamoo a few years back and the kinds of things people built were wild
<civodul>dthompson: shepherd has socket activation, like any cool init system: https://www.gnu.org/software/shepherd/manual/html_node/Service-De_002d-and-Constructors.html#index-socket-activation_002c-starting-services
<dthompson>civodul: cool that's what I thought :)
<civodul>re p2p distribution, there’s been a lot of work by pukkamustard
<cwebber>yes we're very interested in pukkamustard's work here
<dthompson>yes indeed
<qeqpep>How do I use use ,hoot-compile-file? I ,use and ,m (hoot repl) from geiser, but get Unknown meta command
<dthompson>',use (hoot repl)' should be sufficient
<qeqpep>I'll try replicating from guix shell -C
<dthompson>and ',help hoot' will list the hoot commands if they are available
<dthompson>these are only available in the main branch right now
<dthompson>just added, potentially buggy, etc.e tc.
<dthompson>if you're using 0.4.1 that would explain why you don't see them
<qeqpep>oh yeah. my garbados
<qeqpep>whoops, autocompletion
<qeqpep>I have guile-hoot-game-jam-template/modules in %load-path, but (compile-file "game.scm") says: module not found (dom canvas)
<dthompson>hoot doesn't use the guile load path
<dthompson>I recommend using the provided makefile
<qeqpep>Thanks.
<dckc>tempting: port rock-paper-scissors to scheme with https://github.com/cwebber/rockit . I wonder if the correspondence is sufficient to fit with goblins. I suspect mutable state might be a sticking point. but maybe there's a JS dialect that corresponds
<cwebber>dckc: I think you'll make more success with Hoot
<cwebber>which actually the news is that core Goblins is now compiling with!
<cwebber>the core transactional version, enough to do eg Terminal Phase that is. vats probably coming next week or so
<cwebber>I mostly consider rockit deprecated now that Hoot is functioning
<dckc>I'm not sure how Hoot helps. I want to re-use JS code.
<dckc>maybe rockit is backwards too, for that goal
<dthompson>I don't have much context here but generally speaking reusing JS code is possible with hoot
<dthompson>like if you had a js library you didn't want to rewrite you could call it from scheme
<dthompson>not sure if that helps here
<dckc>oh. it does.
<dthompson>hoot has an ffi for this and it's how most interesting things are done
<dthompson>hook into some browser apis and do stuff
<dckc>rock-paper-scissors.js makes an actor. it sort of expect to run isolated, connected to the rest of the world only via captp.
<dckc> https://github.com/endojs/playground/blob/dc-fun-games/packages/fun-games/src/rock-paper-scissors.js
<dthompson>an example of the hoot ffi declaring some imports for the browser window api https://gitlab.com/spritely/guile-hoot-game-jam-template/-/blob/main/modules/dom/window.scm?ref_type=heads
<dthompson>and the actual implementation of those bindings on the js side https://gitlab.com/spritely/guile-hoot-game-jam-template/-/blob/main/game.js?ref_type=heads#L4
<dthompson>the code for rock paper scissors is cool :)
<daviwil>G O B L I N S M U D
<dthompson>it's happenin'
<dthompson>basically already better than matrix ;)
<daviwil>I'm now switching to be a full time MUD streamer
<dthompson>that is sure to get the twitch affiliate bucks