***shinra-chiron_ is now known as shinra-chiron
<paroneayea><amz3> AFAIK paroneayea successfully integrated guile-fibers with 8sync so it must be possible to integrate with guile-websocket <paroneayea>I spent the weekend up in the woods doing a prototype <paroneayea>and I got a prototype of 8sync under guile-fibers working :) <paroneayea>and yes I'm confident guile-websocket could work with fibers <davexunit>does anyone know how to identify where a continuation barrier is? <davexunit>trying and failing once again to integrate fibers with a program of mine :( <paroneayea>davexunit: iirc you can now set up some sort of warning when your program *would* fail to suspend <davexunit>I can see where fibers fails to resume a fiber <davexunit>but I don't now where a contiuation barrier was introduced. <davexunit>oh well. I'll try again some other day. g'nite! <paroneayea>davexunit: since Fibers 0.4.0, it should warn you when it suspends rather than when it resumes IIUC, which is a bit better info, but not by a ton... as for where to narrow it down, that's trickier <paroneayea>davexunit: good luck... IME these are the least fun things to debug <magnicida>what are the best practices for writing guile unit tests? <quigonjinn>magnicida: i've heard that srfi-64 is being used <shinra-chiron>yep, even if it's not «out of the box» integrable with auto-regression test system <magnicida>yea i took a lot at srfi-64 but was not impressed ***shinra-chiron_ is now known as shinra-chiron
***dsmith is now known as dsmith-work
<paroneayea>*thinking out loud* so my prototype of 8sync running on fibers has actors now using the Hive a lot less as a central delivery system, and has them communicating with other actors' delivery agents directly <paroneayea>previously if you tried delivering to an actor that removed itself from the system, the hive as a central delivery system would see that it no longer exists and inform the sender of an error <paroneayea>but, if an actor has as another actor's address a channel which may be shut down in the future, and tries delivering to it and nobody is there to receive it, they'll block <paroneayea>so the intermediate structure may still be needed? <davexunit>I thought you could signal them over and over <paroneayea>I also tried using it in something where I assumed you could re-signal <davexunit>I switched to a channel instead and hit the continuation barrier issue <davexunit>I assume that I will need to implement my own custom operation to make things truly work nicely <paroneayea>I think the hive will still be useful in my system for two other reasons though: <paroneayea> - as a way to shut down all actors and let them clean up <paroneayea> - as a way to invisibly route messages to remote processes <davexunit>you may want a custom operation that integrates the hive, as well. <paroneayea>I came to realize that a) the dequeue I built with mutexes had a race condition :) <paroneayea>b) the reason I wasn't able to understand how to do the asynchronous buffered queue using fibers primitives was <paroneayea>I didn't really understand/value how cool choice-operation is! <paroneayea>that's where that "essential nondeterminism" comes in :) <davexunit>if you mean that fibers is nondeterministic that's a dealbreaker for me <paroneayea>davexunit: any asynchronous system *needs* a certain amount of nondeterminism, but in fibers it's controlled in scope <paroneayea>and you have no idea when you send something if/when it may be received, or if there will be network fragmentation, etc, or especially you don't know about ordering of time <paroneayea>I watched a lecture with Carl Hewitt where he was replying to the earlier conclusion Sussman and Steele had come to that the actor model and the lambda calculus "were the same" and iirc he said something like, the key thing the lambda calculus can't do is handle nondeterminism in a distributed system <paroneayea>so I think in a sense, the actor model and CSP both provide a way to deal with that <paroneayea>davexunit: so to reverse, here's why I thought I couldn't do a buffered queue in fibers (which is necessary in the actor model to handle an actor's inbox) <paroneayea>my misunderstanding... imagine you have three fuzzy creatures that all like to send each other complimentary messages... "you look nice!" "great hair!" etc <paroneayea>now in the actor model, the actors would simply drop it off in the other actor's inbox and the other actor gets to reading their mail (full of who knows how many compliments!) when they get to it <paroneayea>so imagine A is delivering to B and waiting for B to get their message <paroneayea>and B is delivering to C, waiting for C to get their message <paroneayea>all fuzzy creatures are standing, arm outstretched, with a letter in hand <paroneayea>waiting for the other creature to take their letter <paroneayea>unless we can add some nondeterminism into their system! <cmaloney>Isn't this a variation of the dining philosophers? <paroneayea>but it's easier to think of how message passing happens with this one <cmaloney>ACTION congratulates himself for at least remembering parts of that CS degree <paroneayea>our fuzzy creatures can now move into a state where they're *either* delivering a message to the other person, or accepting one from someone else <cmaloney>assuming all actors don't move into a accepting state <paroneayea>you can (choice-op receive-a-message deliver-my-message) <paroneayea>and one of them will happen but you don't know which. <paroneayea>worst problem is, all actors move to accepting-only <paroneayea>and that just means nobody has any messages to send <paroneayea>probably you're at the end of your simulation or etc, but maybe someone outside that network can still send them stuff, and then that can prompt a whole new chain of message delivery, or the simulation could be over <cmaloney>(until you have a third state to maintain. ;)) <paroneayea>cmaloney: well then you can (choice-op state-a state-b state-c) :) <paroneayea>it's enough there for me to implement the asynchronous queue <paroneayea>because now actors can both attempt to send and receive at the same time <cmaloney>Yeah, having them default to accept unless there's a message ... <paroneayea>cmaloney: then the scheduler will handle one rondevouz action after another <paroneayea>cmaloney: I ain't gonna explain it because I don't understand it fully, but basically you've walked into the promises of how ConcurrentML and CSP work :) <cmaloney>but wouldn't this algorithm put them all into "not listening, only speaking" <paroneayea>cmaloney: well I haven't modeled that in my system :) <paroneayea>(perform-op (choice-op send-message receive-message)) ; got something to send but maybe I need to receive too <paroneayea>the scheduler takes care of hooking together available channels which can rondevouz <paroneayea>but if you'r wondering if you can easily model systems in CSP where there's live-lock <paroneayea>without the buffered queue I can't imagine implementing something like mudsync <paroneayea>I think you have to be a lot more careful in CSP than you do with actors, because a fiber can sit waiting for a rondevouz that never happens <paroneayea>but, choice-op at least means that you can model systems that allow for the nondeterminism you need <paroneayea>the lesson here to functional programmers: you control the whole state of your program, but in an asynchronous environment, you don't control the world! you have no idea when another process will complete its task. asynchronous systems means time has leaked back into your model. oops! better figure out how to control it... and CSP's key method of controlling it is choice-op afaict. <paroneayea>(and let's not even talk about *if* another process will complete its task, which is particularly nasty in async environments... Fibers doesn't give a method for that out of the box, but 8sync and Erlang both do error propagation) <paroneayea>but... I'm a CSP newbie. wingo may come along and correct me on everything ;) <wingo>:) glad you're having fun with that stuff & sorry I'm not around as much to cheer you on :) phases, phases. <wingo>will come back sometime soonish <paroneayea>I look forward on a fibers and 8sync rondevouz though ;) <wingo>"rendezvous" :) you can remember how to spell it because it's like "render yourself", as in, "show up" -- rendez-vous. i had to go to the prefecture today and it was all like "rendez-vous à la préfecture..." the noun comes from there. in english you can just say "meet" or "meeting" tho :) <reepca>the debugging options (namely the backtrace width and depth) seem to be not responding... would they by any chance do very poorly with cloned processes for some reason? <civodul>reepca: i'm not sure why that happens <civodul>usually truncation adjusts to the terminal width, doesn't it? <wingo>does it depend on whether the backtrace comes from the repl (call-with-error-handling) or from scm_backtrace ? <wingo>i don't recall how that works but sometimes i see the width being the wrong thing <reepca>the width defaulted to 79 columns for me, and setting it to 200 didn't change the output. Or rather, it didn't change the output when I needed it to - after some new processes were spawned. Perhaps all that namespace stuff has something to do with it. <shinra-chiron>(notice that «rendez-vous» is a noun and «rendez vous» a verb/subject) <wingo>rendez-vous may be a verb as well (imperative or interrogative) <daviid>davexunit: ok tx, do you know what languages are accepted <daviid>ah, how does the gnupg team manage (their donate page.. which I'm trying to setup for guile-cv...) <daviid>they probably have their own server then I guess and asked for rerouting requests... <daviid>davexunit: I see some projects have their own 'system', others use the fsf donate 'page', like mediagoblin for example <daviid>anyway sorry for the noise folks <daviid>ACTION wish he knew how to setup a donate page in 5min... what a boring thing to do, and yet so essential... <davexunit>if you want to get donations for a gnu project, talk to the fsf <davexunit>mediagoblin has a page on the fsf's civicrm instance, which is a php application <daviid>davexunit: i did ask about cgi because gnupg donate page uses cgi scripts... <daviid>davexunit: yes, indeed and I wonder if I should do that to as well (or donate with the fsf) because I own a free sw micro consultancy, so I can provide donators with ibvoices if/when they need it (like donation from other companies for example..) <daviid>on the other hand, maybe I would receive more donations if the page is at the fsf ... I really don't know no exprerience what so ever, I wish I did know and had experience with this but that's not the case... <daviid>davexunit: do you know an eail address at the fsf I could talk to? <daviid>davexunit: for info, someone on gnu just wrote: "I think "static pages" usually means static on the serverside, but javascript would run on the clientside. so if what you want to accomplish can be done without serverside resources like databases it might be fine" <paroneayea>wingo: did you read all of the csp book? I've started on it and have made some headway <davexunit>daviid: again, it sounded like you wanted to host a dynamic web application <daviid>davexunit: no, i confess i know next to nothing about all this and hence even my quizz are not very well expressed: I thought I needed cgi script to handle the form, input ... nd i thought that ment 'dynamic' ... oh well exposing my ignotance <davexunit>daviid: you do need that... if you need to write the server processing it <davexunit>I presume a third-party because you probably aren't writing your own credit card handling software <daviid>davexunit: that is another quizz: credit card handling software, do we have a free s/w to do that? <amz3>dynamic web pages can mean both dynamic client side or dynamic server side <amz3>yes daviid you need server side code <daviid>I don't want bitcoin, paypal ... I want to donation to land on the account of my free s/w micro consultancy directly (I will use gnu taler when it is in prod but i think it will have to wait another year or so...) <daviid>davexunit: would you be interested to setup this for me? I could contribute financially of course, if the quote is reasonable... if so we could continue the talk through email... <daviid>amz3: ah, both davexunit and AliciaC n #gnu tells me I don't need server sde resources to implement a donate page <davexunit>I think you should just use something that already exists <davexunit>you're overthinking it. a simple paypal donate button would be enough, or a patreon page, or something <daviid>davexunit: but i don't wna to use paypal, ... just gnu taler but it is not ready yet <davexunit>sounds like you have some prioritizing to do <paroneayea>gnu taler has a cool design but no practical users yet <paroneayea>I'd like to see it succeed but, what's your objective? <paroneayea>you could set up both a taler endpoint and also something else <daviid>paroneayea: I want to setup a donate page, using credit card or wiretransfer (when the donor is in europe the transfer is free of charge by law), and that the donation lands in the bank account of my free s/w micro consultancy <daviid>the donation 'buttons' (there are (a (@ (class ...) (href ...))) which temporarily route to another page, so I can 'try and design' then call someoneto program it for 'real' <daviid>maybe I can hire someone at the fsf, even though I would not use the fsf donate page, because obviously they know how to program that ... <davexunit>I mean they did some work to integrate with their payment gateway but they are just using CiviCRM <OrangeShark>amz3: seems interesting, the C api is sort of string based? It looks like you create the different type of stuff like indices or tables by whatever was in the contents of the string? <OrangeShark>amz3: is there anything you recommend reading to understand more about WiredTiger or is the documentation good enough on their site? <daviid>hum, but I'd need to run a CiviCRM server myself then, big hammer for a little donation button :) <daviid>but i'm going to write to the fsf anyway <davexunit>this is why I suggest leveraging someone else's donation system <davexunit>either the fsf's, using a paypal donate link, etc. <davexunit>I personally don't want to be in the business of handling monetary transactions for my spare time projects <paroneayea>there were some challenges at times with using the fsf with mediagoblin, but also a lot of benefits <paroneayea>most notably that yeah, managing that stuff is a ton of work. I'd rather be hacking software. <daviid>davexunit: guile-cv is a full time 10y to 20y project, and I'm unemployed ... so i have a free s/w micro consultancy, and I want to try to finance the project, to compare, imagej has a kernel of developers entirely financed by institutions ... but anyway let' see how I can handle it <paroneayea>funding free software is hard (and sometimes a job of its own...) <daviid>paroneayea: I already have the infrastructure with my free s/w micro consustancy, so if the money lands in the account of the company, all i have to do is handle the meter and had the donator name on the web site, sometimes write an invoice (that is extremely easy for me), so really my problem now is to hire someone who can implement a button <paroneayea>you also likely have to think about taxes, but maybe you already know all that. <daviid>paroneayea: of course the 'raising money' is the very very very very hard part, but designing the page and program the button should be easy <daviid>paroneayea: I live in Brasil (was born in Belgium), my free s/w micro consultancy is in Belgium <daviid>how do we start a private talk using erc in emacs? <amz3>OrangeShark: AFAIK, there is no other documentation outside official documentation <amz3>some people seem to use it outside mongo, but not much <amz3>I had a failure during the development of sotoki <amz3>I don't know if it's was a hardware failure <amz3>or a software failure in wiredtiger itself <amz3>I will run the script that crashed <amz3>and see if I can reproduce <amz3>I will do that right now <amz3>the thing is that the script run for several hours <amz3>that's why I did not run it again since february <amz3>even deleting the files takes forever... <amz3>tips: don't delete the files, just move them somewhere else on the same HDD ;) <amz3>so it's running, tomorrow we will know better :)