IRC channel logs
2023-02-15.log
back to list of logs
<cwebber>this is in addition to the position we're hiring for <drakonis>i'm hoping to get started with a project that uses goblins at work <drakonis>cwebber: how does it feel to be the first corporate sponsor for guile? <cwebber>drakonis: ha. interesting point, we probably are! it feels good! <drakonis>the wasm proposal hasnt been accepted yet <dthompson>the plan is to use them since they're already shipped in chrom(e|ium) <dthompson>andy is confident that they will become part of what is shipped in all browsers in a reasonable amount of time. <drakonis>it is, after all, something quite desirable <ekaitz>cwebber: can you belive that i lost the invitation code for the community? <Zarutian_iPad>ACTION throws away the riddle draft for figguring out the invite code <jryans>I am curious what triggered the move from Racket to Guile... The recent blog post suggests it was less about technical factors and more about preferring the Guile community? <drakonis>racket is also extremely opinionated about things <garbados>i can’t speak for anyone but myself but felleisen’s “maverick centrism” and associated behaviors convinced me to avoid racket entirely <juliana[m]>Gonna add my two cents that I saw firsthand at this past RacketCon the kind of community tolerating people like Felleisen engenders and it's bad. Senior members of the community interrupting presenters to tell them they're wrong or to simply belittle them is unacceptable. This behavior was modeled by Felleisen himself, as can be seen in the video archives of past RacketCons. <juliana[m]>I haven't spent enough time around the Guile community to speak to it, but I'm regularly involved in the Guix community, which seems to overlap significantly, and they're cool and nice from what I can tell. <cwebber>There are multiple factors. Community communication is indeed one. <cwebber>Uncertainty about what parts of the language might become "legacy code" with Rhombus in Racket another <cwebber>but also Guile and Guix are very positive communities to be involved in, are a bit closer to "standard" scheme out of the box, and we wanted to do the port <cwebber>and Guile is also better from a debugging perspective <cwebber>it's real hard to debug Goblins on Racket <vv[m]>I would be very very interested in learning how to debug goblins. if I learn I could write a blog post about it. would help me in my tic tac toe adventures ^_^ <cwebber>vv[m]: the stuf dthompson is actively doing will help a lot there <cwebber>we haven't posted about it yet but it's getting pretty interesting <cwebber>tracing "causality" across vats for asynchronous message sends, etc <vv[m]>Sadly I have found guile stack traces to be... lacking. hopefully this helps! <cwebber>the ,enter-vat stuff in 0.10 helps a bit with the debugging environment. but that ain't perfect obviously <cwebber>vv[m]: let me give you one more thing for that hten <vv[m]>they are very verbose and hard to parse <cwebber> (use-modules (system base compile)) <cwebber>well this will make them more verbose ;) <cwebber>if you compile modules with that on (C-c C-k is a quick shortcut in standard geiser bindings btw) it'll carry more information <cwebber>this disables certain optimizations which make procedures "disappear" <cwebber>dthompson is working on more things which should make "time traveling" to the source of an error and debugging against that actormap state more possible, we think. <vv[m]>also I am hoping that future versions of goblins will stop hanging as much as it has in my experience using the repl. I have to say whatever I'm doing right now is probably wrong because the experience has been a tad frustrating. a lot of little things to remember. <cwebber>unfortunately it's *still* true that the *first* thing you need to do when hacking goblins is `(use-modules (goblins))` from the repl <vv[m]>that said, I'm very much used to compiled languages so that's a thing as well. I'm used to the computer yelling at me much earlier <cwebber>without it, the geiser fix isn't put in place <vv[m]>I had a question about that actually <cwebber>I submitted a fix to geiser, but they modified my fix <cwebber>and I think it wasn't fully fixed :P <vv[m]>if I'm using the socket thing, do I do it in the geiser repl or the original repl? <cwebber>the socket thing should hopefully not have that problem <cwebber>vv[m]: I think though that dthompson responded to your community post about input. I didn't see if you replied in turn <cwebber>but "how to handle input/output" is indeed something we need to document better in the manual <vv[m]>yes, I saw the reply and looked into it a bit. I was going to reply, but am in the middle of figuring out the right approach. the suggestions were helpful but didn't completely fix the issue without additional changes <vv[m]>it seems it's not just the fibers, but also the repl itself that fucks up stdin <vv[m]>fibers+repl= pain, it would seem. <cwebber>hm okay yeah I think I would see how that could do it. <vv[m]>running without the repl everything seemed to work as expected, even with my original code. but also using the fibrous vow code worked. <cwebber>I think fibrous-vow is going to be our usual "easiest route" for people getting i/o stuff to work right <vv[m]>I think I will restructure my code such that when I use the repl I don't need to worry about stdin. cleaner that way, anyway <cwebber>vv[m]: "obviously" what you should do is launch a repl in chickadee #yakshaving ;) <vv[m]>but yeah, fibrous vow did not work as a fix for input when using the repl. at least, in my tests. it may be that I need to find another place to fetch and cache the input port <cwebber>or just make the actual game in chickadee <dthompson>heh but then we'd have to get into repl servers... <vv[m]>yeah. it's funny because I thought it would be easier to just use the console purely but it seems maybe it is not. <cwebber>vv[m]: one other path is to have the program's main loop drive i/o, separate from goblins <cwebber>and use call-with-vat to send input over after someone enters something <vv[m]>I'm still learning how to be modular in scheme! <cwebber>at any rate. yes, input/output is a tricky problem to make "easy", and surprisingly, "simple" IO the way you were doing it, maybe harder than most! <vv[m]>aside: is a fibrous vow when a woolly mammoth gets married? <vv[m]>anyway I'm hoping to hack on this again tonight. hopefully with a bit more luck <vv[m]>oh. another last thing. geiser likes to get very confused. a lot of the time it forgets about the active repl and makes multiple. also it's frustrating to have to keep setting up the socket connection in a specific order <vv[m]>I'm probably doing things wrong somehow. but so far I have to create the socketed instance inside guix shell, then do geiser-connect-local and find the socket, then ctrl-c ctrl-k, then in the geiser repl ctrl-c enter, pick out my module, then create a vat. I probably should create a bind to do it all at once. <vv[m]>sometimes geiser just gives up and dies without warning, and other times I just have too many open files. probably because I'm not cleaning up my actors xD <jryans>Thanks for all the replies on Racket vs. Guile, it’s helpful context. 🙂 <jryans>About debugging in Guile, what makes easier there? Just a better language level debugger interface, or something else…? <jryans>(My recent work is focused on making debugging more reliable in various ecosystems, so that’s why I am wondering about these details.) <EWEW>Been reading and thinking about Goblins for a week now. Interestingly it's a perfect fit for a small game I had an idea for a few weeks ago. Gonna attempt some implementation today! <EWEW>A lot of parallels can be drawn between the ideas from each. <vv[m]>EWEW: would love to hear about how it goes. I am currently in the midst of attempting tic tac toe. a few silly issues making it hard. mostly my newness to schemes. <momoninja>I like that spritely is growing so fast. Observing that spritely is now moving in the direction of webassembly I wonder if the future will be applications developed in guile and provided in webassembly? <vv[m]>seems that's the main direction it's likely to go <EWEW>vv[m] I'll let you know! So the basic idea was. I wanted to capture how far my mouse travels each day while I use it. As it travels I collect "pixels" which are awarded to me that I can use to draw some item and/or animate some item. Then I can add it to my own little virtual pixel world. A big part of where Goblins could help (for sure!) is that I wanted people to be able to share access to their worlds <EWEW>with friends, trade items created by each other, and so on. <vv[m]>ooh, seems fun! though, rewarding mouse usage? as an emacs/vim user.... 🤔 /j <EWEW>Never heard of it but seems like something I should take a look at. <Zarutian_iPad>ACTION has just looked it up, turns out it was the hatchery in Pokémon Go <EWEW>vv[m] okay i'm laughing because i had the same thought. It's definitely for the mortals among us :) It somehow came out of building a small task tracking program for a friend who's a freelancing video editor <EWEW>For keyboard users, we can have cats paw at a mouse on our desk to collect pixels. <vv[m]>also, I'm on to you: I bet it's really secretly a keylogger! <EWEW>momoninja: I mean really they can be provided anywhere guile can be provided. Webassembly just gives a few new places. That's how I see it anyways. And what's nice (imo) is the WASM runtime is "simple" (programmer hubris) to implement in a lot of places. <EWEW>It totally could be. I actually wanted to have it collect the color information of pixels too to make it harder to game the system to collect bajillions of pixels by some bad actor. But then I was like.. someone could maybe abuse that extra information to reconstruct confidential info somehow. <EWEW>current idea is i do a system wide normalization of how many pixels you can get in any given day <EWEW>based on how many other people are collecting, inflation is a hard problem. <EWEW>Maybe the Eve online economists have ideas for some "sinks" for pixels to get them out of circulation. <momoninja>EWEW: I am not a fond user of web applications. But since guile-code just gets compiled to webassembly, guile code can also be run directly. :) <EWEW>It's becoming kind of a nisnomer that wasm has "web" in the front. <vv[m]>I'm very interested to try out wasm containers, myself. sounds kick ass <vv[m]>no more messing around with Alpine