IRC channel logs

2017-01-11.log

back to list of logs

<paroneayea>YES
<paroneayea>I have a working <web-server> actor
<paroneayea>based heavily off the guile de-facto web-server and the fibers one
<paroneayea>seems to work just fine
<janneke>yay!
<daviid>can not find an easy simp-le example 1 png image usaing texinfo that works
<sirgazil>davexunit: I get an error trying the bundle on Debian 8: https://paste.gnome.org/p0bkhjofl
<davexunit>sirgazil: that's an odd error
<davexunit>sirgazil: does /lib64/ld-linux-x86-64.so.2 exist?
<davexunit>there's definitely not a syntax error
<sirgazil>davexunit: let me see...
<sirgazil>davexunit: where should be located that so file?
<davexunit>sirgazil: it was an absolute file name
<davexunit>/lib64/ld-linux-x86-64.so.2
<sirgazil>davexunit: Ah, I dont have lib64 in this machine, just /lib
<davexunit>is it a 32-bit machine?
<sirgazil>yes
<davexunit>ah
<davexunit>that's why
<sirgazil>:D
<davexunit>I forgot to mention that this is an x86_64 build
<davexunit>thanks for trying it out, though.
<sirgazil>Yeah, I noticed the tech world is leaving me behind :D
<sirgazil>davexunit: good luck with the bundling, it sure is convenient for games ;)
<davexunit>thanks :)
<davexunit>it should be easy enough to make an i686 build
<davexunit>I would just need a couple of hours to build everything, provided stuff "just works"
<sirgazil>If you do, ask again here and I'll test :)
<sirgazil>Night!
<ArneBab>davexunit: I tried your wrapper but it killed my kwin
<ArneBab>no error message
<davexunit>ArneBab: 64 bit system? what distribution?
***heroux_ is now known as heroux
<daviid>heya!
***logicmoo is now known as dmiles
<ArneBab>daviid: gentoo
<ArneBab>davexunit: gentoo
<davexunit>ArneBab: x86_64?
<davexunit>does the file /lib64/ld-linux-x86-64.so.2 exist?
<davexunit>if both of those conditions are true then you'd be the first person that this hasn't worked for. I'm not too worried about gentoo support because gentoo users would want to compile things for themselves anyhow, and that option works great already.
<paroneayea>davexunit: skimming your websocket code
<paroneayea>davexunit: now that we have a <web-server> actor, maybe it's time for a websocket actor too
<davexunit>:)
<paroneayea>davexunit: I see that normal http servers can "switch" modes over to websocket. I wonder if the websocket actor should be a specialization of the normal web server
<davexunit>yeah that would be up to the server to decide
<davexunit>my websocket implementation should be usable in either case
<paroneayea>davexunit: cool. Well, maybe I'll get to it soon or not
<paroneayea>I've thought about maybe it would be easiest for my FOSDEM talk to have a web interface to the MUD
<paroneayea>I mean, people can use telnet, or a specialized MUD client like tintin++
<davexunit>AFAIK I've implemented the server side protocol completely
<paroneayea>but if you use telnet, which "everyone has" so participants could all probably jump in
<paroneayea>there's a downside
<davexunit>a web interface using websockets would be fun!
<paroneayea>incoming text can clobber your input via telnet
<davexunit>yeah
<davexunit>I was annoyed by that
<paroneayea>a web interface would me to give something I could point to that users don't have to either run into troubles on or have a special client
<davexunit>it seems pretty easy to do, as well.
<paroneayea>yeah
<paroneayea>not the highest priority given everything I need to do before the talki
<davexunit>text output console + input widget
<paroneayea>but
<paroneayea>it would be nice
<paroneayea>yep
<paroneayea>but, your websocket code is pretty small
<paroneayea>I could probably do it
<paroneayea>would be cool to get both http and websocket support in 0.4.2
<paroneayea>that would make 8sync a lot more exciting
<davexunit>I was pretty disclipined when I wrote that code
<paroneayea>:)
<davexunit>it even has unit tests
<paroneayea>davexunit: nice!
<davexunit>that use examples from the spec
<paroneayea>davexunit: I'll try to preserve them :)
<davexunit>I wrote a simplistic server and it worked wondefully with the javascript client
<davexunit>basically if it's not dead simple for you to use then I really screwed up and you should let me know.
<paroneayea>:)
<paroneayea>davexunit: cool
<paroneayea>davexunit: I'll probably ping you as I give it a go
<davexunit>sounds good
<paroneayea>meanwhile, doing actual real client work, like a good contractor ;)
<paroneayea>getting paid is good
<davexunit>hehe
<davexunit>indeed!
<davexunit>paroneayea: here's the server implementation https://git.dthompson.us/guile-websocket.git/blob/HEAD:/web/socket/server.scm
<davexunit>you'd want to take this and tweak it to fit into async and non-blocking IO stuff
<paroneayea>davexunit: yeah, I cloned that and am looking at it :)
<davexunit>great
<paroneayea>I had a dream last night that 8sync had name collisions with all these other projects and I had to rebrand it
<paroneayea>and I was like wtf I checked that before I started this project
<davexunit>lol
<paroneayea>I also dreamed that rekado_ was reviewing my code over irc
<paroneayea>it was a very mundane guile dream I guess
<paroneayea>mundane enough that it took me a while to figure out if it was a memory or dream fragmentt
<paroneayea>and that's my boring dream story. I'm here all week!
<davexunit>hehe
<davexunit>I am familiar with those sorts of dreams
<davexunit>I have the college dreams that everyone has
<davexunit>end of semester and you forgot that you had a class the whole time
<davexunit>and then I wake up and need a minute to realize it was just a dream
<paroneayea>yeah I have those too
<paroneayea>or "I thought I graduated and I've been mistaken for years"
<davexunit>never had that one. sounds worse!
<paroneayea>sometimes I have the combined "I think I'm about to graduate and whoops I forgot I had classes the whole time"
<amz3>I always look for my bag at work before leaving
<amz3>except I don't have any bag nowdays
<wingo>meep
<wingo>yarr
<wingo>one of linas's bugs is effectively that pthread_create doesn't mark the void* argument
<wingo>irritating!
<wleslie>mark?
<wingo>i mean in a gc sense
<wingo>like it doesn't protect that data
<wleslie>ah
<civodul>weird
<bgardner>Hey all; I installed guile-dbi-2.1.6 and guile-dbd-sqlite3-2.1.6 (using config/make/sudo make install). That all ran fine, but my test code throws "ERROR: no code for module (dbi dbi)" on "(use-modules (dbi dbi))". Any pointers?
<OrangeShark>bgardner: guile is from your distro?
<bgardner>Yes, guile-2.0 (had to symlink libguile.h for that to fly)
<OrangeShark>by default, config/make/sudo make install for packages tend to install in a different directory
<OrangeShark>then what is set for search path for guile
<OrangeShark>there is an environment variable or a guile variable you can add the path to
<bgardner>OrangeShark: Hm. Okay, is my best move to config/make/make install guile, or can I 'teach' guile where to find guile-dbi?
<bgardner>What's that variable name?
<OrangeShark>bgardner: let me check, I think it was something like GUILE_LOAD_PATH for the environment variable
<bgardner>OrangeShark: Okay, that variable is currently unset for me.
<OrangeShark>bgardner: https://www.gnu.org/software/guile/manual/html_node/Installing-Site-Packages.html#Installing-Site-Packages here is about site packages
<OrangeShark> https://www.gnu.org/software/guile/manual/html_node/Load-Paths.html#Load-Paths Load paths
<bgardner>OrangeShark: Fantastic, thank you! I appreciate the guidance.
<OrangeShark>bgardner: no problem, I don't recall seeing any specific method being the common practice, but I think Guix uses GUILE_LOAD_PATH to set up the location to find guile modules.
<paroneayea>damn
<paroneayea>emacs printing of long lines from repl hacking
<paroneayea>still a killer
<paroneayea>ACTION doing api requests to a json API
<paroneayea>and it's long, not pretty-printed json
<paroneayea>and I keep checking values
<paroneayea>and there goes emacs
<paroneayea>60k characters into a line and emacs is crying
<wingo>:)
<wingo>sooooooooooooooooooooooooooooooooooooooooo
<wingo>should guile install a segv handler to see if someone is trying to mutate literal memory?
<wingo>it could fall back to the default handler.
<paroneayea>ACTION looks into what that means before holding an opinion ;)
<wingo>this is the (string-set! "foo" 0 #\\b) case
<wingo>put that in your repl and smoke it
<paroneayea>oh
<civodul>segfaulting is better than what 2.0 does :-)
<wingo>hehe
<civodul>but not great, i admit
<wingo>well, we are not immune in that regard, there are some cases where we do the 2.0 thing still...
<wingo>i guess we could mprotect the static data after runtime init/relink
<wingo>dunno
<civodul>yeah
<wingo>actually in the string-set! case we win
<civodul>so anyway, a SIGSEGV handler could provide nicer error reporting
<wingo>because the string is marked immutable
<civodul>ah right
<wingo>it's the pair / vector / etc case that's an issue...
<civodul>but for pairs maybe?
<civodul>yeah
<wingo>better of course if we handle this all ourselves...
<wingo>like in the string-set! case
<wingo>dunno
<wingo>another project i work on has a segv handler for even more evil purposes
<wingo>it lazily pages in shared memory to multiple processes :)
<wingo>ACTION did not write that code and is a little scared of it but it seems to work :)
<wingo>so it's possible to use segv handlers is all i meant to say i guess.
<wingo>it would be easy to have immutable vectors, with a flag; and possibly for bytevectors etc too
<bgardner>OrangeShark: Root cause of my issue looks to be that configure only appeared to work, but in reality set site-package-location to /, so the relevant scm got "sudo make install"-ed into /dbi/. Your info was key, thanks again!
<ArneBab>davexunit: the file exists, but my X11 setup is somewhat borked since I updated to KDE plasma, so that might be a reason.
<civodul>wingo: a flag is more portable/less risky, but requires explicit checks
<civodul>there are pros and cons, dunno what's best
<wleslie>growing immutable pears is much more difficult, isn't it?
<wingo>is this a horticulture joke
<wleslie>I mean because of how pairs are tagged
<wingo>i am here for that
<wleslie>it was inevitable
<wingo>to grow good pears you need the ability to freeze
<wingo>but yeah.
<wingo>racket's pairs are four words :)
<wleslie>wow
<wingo>tag, hash code, car, cdr.
<paroneayea>four words!
<paroneayea>isn't the history of car and cdr manipulating two parts of a single word? :)
<wingo>:)
<wingo>but! racket's thing could be the right thing for us too. dunno.
<wingo>i would hope to avoid the hash code where it's not needed but you never know.
<paroneayea>how many words is a cons cell in guile currentlY/
<paroneayea>currently?
<wleslie>two
<wingo>three words is not much better than four fwiw, to most gcs it will allocate in same block sizes
<wingo>yea guile is 2
<wingo>a cons cell holds 2 scm values, each one 1 word
<paroneayea>the bird's the word
<paroneayea>anyway, interesting
<wleslie>there's a tag nestled in the first scm value
<paroneayea>I guess that means that cons-heavy lisp programs will double in memory
<wingo>yep
<wingo>but there are fewer of those these days than there once were
<paroneayea>that's true
<paroneayea>well, I trust people who aren't me to know what's best here :)
<wleslie>wingo is still asking questions. good questions.
<wleslie> http://wingolog.org/archives/2011/05/18/value-representation-in-javascript-implementations
<wingo>surely the ongoing existence of v8/jsc/sm just indicates that anything is fine
<wingo>v8 still with pointer-sized values and low bit tagging, and jsc/sm with nan boxing
<wingo>dunno :)
<wingo>the dart people still believe in pointer-sized values apparently
<wleslie>pypy tag nothing and box everything, except in some special cases (eg, you've built a list of ints and floats)
<paroneayea>hm
<paroneayea>hamt's and fash'es
<wleslie>yummy
<paroneayea>they do both sound kind of foodlike
<paroneayea>diner-food like even
<wleslie>I should get to dive into hamts at some point and figure out how they get balanced
<paroneayea>wleslie: I have ijp's implementation pulled up
<paroneayea> https://github.com/ijp/pfds/blob/master/hamts.sls
<wleslie>so strange, all these define where I expect to find let