IRC channel logs

2017-05-18.log

back to list of logs

<amz3`>do you urbit?
<amz3`>do you know orbit?
<amz3`>do you know urbit?
<paroneayea>I know the urbit founder is a total asshole
<OrangeShark>amz3`: whenever I decide to try to understand urbit, I just get more confused
<daviid>i use tox, actually toxic (ncurse based), would use utox if the interface would allow me different (and tiny fonts, vertical list only...) organisation, but toxic is prety cool. tox is written in C, we could write a guile binding ...
<daviid>hi all! (will to leave soon, but bbl of course...)
<OrangeShark>daviid: I think I recall seeing guile bindings for tox somewhere
<OrangeShark>daviid: oh it was davexunit https://git.dthompson.us/guile-toxcore.git
<daviid>OrangeShark: iirc, davexunit once looked at it, then for some reason did not persue the project (not enough release or 'bad' project management... something like that
<OrangeShark>daviid: toxcore would never do a release, so it was always expected to build from latest master. I think that has changed though
<daviid>I see that debian releases utox alomost everyday :) (pre stretch intensive work I guess), and I see very ver libtox releases as well, so maybe it would be cool to look at it agai (not me though)
<daviid>but anyway, i quite like toxic, would prefer an etox (emacs tox) buffer mode but i won't write it :)
<daviid>have to leave, bbl
<reepca>Where could one find documentation for guile-sqlite3?
<daviid>folks, native speakers please: in guile-cv procedure names, arg names, the documentation, ..., I used the term 'grey', or 'GREY', like in im-rgb->grey ... but I see that X11 terminolgy (the colour names for example), other libraries, including Vigra (but theya re from Germany :)), developers use 'gray' and 'GRAY', would this be preferable?
<dsmith>daviid: Depends. Gray is US, Grey is UK.
<daviid>dsmith: that is probably where I got it from then, becuse I lived in both countries, but in the UK first ...
<daviid>I beleive it would be better (so to speak) for a GNU library, to follow american english conventions? also because somehow it has to be consistant, like when we write authorize (authorise) ...
<dsmith>I always wondered why the Brits always spelled stuff funny. I mean, England should be using English, right?
<dsmith>;^)
<daviid>dsmith: :) I have no idea why there are so many diffences in spelling, I guess americans wanted New (York), New Orlean, ... New spelling :)
<dsmith>I think maybe spelling was much more loose in the past. Things just crystallized differently.
<dsmith>Pure speculation.
<daviid>yeah, not a big deal anyway, but i think i'll try to stick to one convention (if I can, proof reading will be welcome of course...)
<dsmith>At the risk of sounding arrogantly American, I think the US spellings might be more correct as GNU started in the US.
<dsmith>For fun, alternate US and UK spellings thoughout..
<ryanwatkins>Hey guilers, I am trying to build a guix package for a guile module called guile-curl but having some issues, namely I can't use the module after successful package installation... the package definition is here: http://paste.lisp.org/display/346976 -
<ryanwatkins>Any ideas?
<daviid>if it was just for fun... but for users, having some procedures or arguments in US, others in UK, colour (by the way I think it is color in US?) may not be the best invitation to use the library :)
<dsmith>ryanwatkins: None from me. Except maybe also ask in #guix ?
<ryanwatkins>dsmith: already did :(
<daviid>ryanwatkins: paste a peice of code and the error trying to import the module?
<dsmith>In other news, if the background check and stuff all goes well, I should be starting a new job on Monday. (Whoo!)
<daviid>dsmith: good news! I've just lost my contract (I was aware it would happen, I'm a freelance ...) but I have a hard time finding a new contract ...
<ryanwatkins>do you guys work as lispers?
<ryanwatkins>I also lost my work sometime ago unfortunately, congrats dsmith
<dsmith>Not I. Mostly C. Embedded stuff mostly.
<ryanwatkins>dsmith: sounds cool *thumbsup*
<daviid>ryanwatkins: in my case, till now yes, lisp for a while and scheme after that, gule scheme (only) actually, a bit of kawa but now aday everything in guile and C (when I need to)
<dsmith>thanks. Yeah, I'm really looking forward to it.
<daviid>kawa because of computer vision stuff, the I decided to write a computer vision lib for guile, which is a titanesque project, like building a cathedral, I won't see it finished :)
<dsmith>(in case anyone is curious: http://www.avid-tech.com/ )
<daviid>dsmith: cool
<Niac>how to use the 'local-definitions-in' ?
<Niac> │ERROR: In procedure %record-type-check: Wrong type record (want `module'): #<struct:600922eb0 pr 60089c520>
<nalaginrut>morning guilers~
<nikita1>good morning!
<nikita1>Niac: can you provide more context -- how do you call local-definitions-in? the first argument you should provide is the module f.e. (current-module), then a list of names you want to get definitions: '(aa bbb ccc)
<wingo>moin
<amz3`>urbit use lisp
<amz3`>a lisp
<wingo>urbit is a nerdsnipe to try to get tech people to participate in a fascist project. don't fall for it.
<manumanumanu>it also seems a bit vapourwarish
<manumanumanu>wingo: jeez. I read what the original author has written before, and that puts the whole "urbit and collective authority" in a different light.
<wingo>manumanumanu: yeah, it's that bad :P
<manumanumanu>and what's up with the source code? it is quite inpenetrable
<xvilka>what is urbit?
<wingo>it's a positivist attempt to build a new totalizing programming environment and societal organization, led by a racist fascist. it's a bet that if tech determines society and he can get a fascist group to determine tech, then he can remake the world. technically it's not all that much, some interesting ideas but cloaked in impenetrable jargon designed to obscure what the project is really about.
<wingo>search google for more details.
<wingo>sounds crazy but that's literally what it is
<jlicht>wingo: wow. I just started reading into urbit, and I have to agree
<xvilka>I see
<xvilka>thx
<brendyyn>wingo: I'd like to build guile bindings for wayland. Do you know how I could learn how to do that from scratch?
<wingo>brendyyn: good question! i don't know. would you bind a c library or implement the protocol directly?
<wingo>i understand wayland is a protocol but i could be getting that wrong
<brendyyn>wingo: I found a blog which says there is a libwayland project, and they wrote bindings connecting it to java instead of reimplementing it
<brendyyn>We need guile to speak the "wire protocol"
<wingo>i would implement the protocol if it were me. it's more fundamental and probably not more work than dealing with a binding. dunno tho
<wingo>otherwise you have two options, you can implement the ffi in scheme or using libguile's api
<wingo>for the former, maybe take a look at guile-opengl or so; you might be able to generate the scheme from some kind of api description
<wingo>for the latter, look at guile-cairo
<brendyyn>Not even sure where to start atm
<wingo>do you have an idea of which one you want to do?
<wingo>are you comfortable in c? do you prefer everything in scheme?
<brendyyn>Scheme. Never written a line of C before
<brendyyn>Appartently we still need a bit of C to support EGL
<brendyyn>I wonder if I could study and translate an implementation from another language https://github.com/abooij/sudbury
<phant0mas>hey civodul there is a bug with the test-guild-compile on Hurd
<phant0mas>it fails with this http://paste.lisp.org/display/347018
<phant0mas>any idea what could be causing this?
<civodul>phant0mas: IIRC this test runs 'guild compile foo.scm', does "kill -INT" on that process, and then makes sure temporary files have been removed
<civodul>here the temporary has not been removed
<phant0mas>but after I run the test I cannot find the file
<phant0mas>could it be possible it is deleted after guile checks?
<civodul>one thing you could do is check whether the SIGINT handler in modules/scripts/compile.scm gets called
<civodul>normally 'guild compile' catches SIGINT and deletes temporary files before exiting
<civodul>so you should see that "interrupted by the user" message
<phant0mas>ok
<civodul>there could be a bug in the Hurd's signal delivery mechanism, or in Guile's, or both :-)
<civodul>wingo: didn't you have an Org parser somewhere?
<civodul>in guile-present maybe?
<civodul>yes, that's the one, thanks :-)
<wingo>civodul: yeah that's the one. it's not very good though :)
<ryanwatkins>Hey guys, does anybody know how one might save a "application/pdf" response object I get from calling (http-get (string-uri ...)) to a given file?
<ryanwatkins>I am trying to build a lecture downloader web scraper in Guile
<wingo>the http-get returns two values
<wingo>the second should be a bytevector that is the file; write it to disk with put-bytevector
<ryanwatkins>wingo: okay, for the first argument, how can I pass an output port?
<ryanwatkins>wingo: the first argument to put-bytevector
<wingo>either do (call-with-output-file filename (lambda (port) (put-bytevector port bv)))
<wingo>that's probably best b/c it will close the file afterwards
<wingo>anyway see this: https://www.gnu.org/software/guile/manual/html_node/Input-and-Output.html#Input-and-Output
<wingo>specifically https://www.gnu.org/software/guile/manual/html_node/File-Ports.html#File-Ports
<ryanwatkins>wingo: wow it worked, fantastic!
<wingo>:) happy hacking :)
<paroneayea>oh hello
<paroneayea>wingo: something I was thinking about in guile's webserver as it is now
<paroneayea>the body can either be a string or a bytevector
<paroneayea>but maybe there are some cases where you'd rather have a port?
<paroneayea>wingo: specifically, when really large files are being uploaded
<paroneayea>so you don't have to load the whole thing into memory
<wingo>sure
<paroneayea>wingo: however, I can't think of a good way to signal to guile "use a bytevector in this case, use a port in that one"
<wingo>i think for the web server, the right thing is to use fibers
<wingo>otherwise for large uploads you block many things
<wingo>so i would probably solve that problem there, dunno
<paroneayea>wingo: right...
<paroneayea>ACTION was also thinking about this while playing with rekado's multipart message stuff
<paroneayea>if you're going to split a message, which may contain big files, into multiple pieces
<paroneayea>you won't be able to read the keys probably until you've already split it up
<paroneayea>but you also might not want to read it into memory there either
<paroneayea>in most python libraries they stream big uploads to a temporary file
<paroneayea>which can be a waste if you write out to a temporary file, only to then copy it out again to another io system, but doing that interface right seems hard
<wingo>i think nginx will also use disk as needed
<paroneayea>maybe not such a bad direction, then.
<paroneayea>at this point I should probably refactor some of this code into a guile-webutils module
<paroneayea>signed cookie based sessions are probably something others want to use too, and maybe the form data code
<paroneayea>wow! how did I not know about match-let(*)?
<davexunit>ACTION also didn't know about that
<davexunit>where has that been hiding this whole time?
<davexunit>the match module needs more docs
<paroneayea>yeah
<paroneayea>match-lamba(*) is also a glorious hidden feature
<davexunit>I guess it's kind of like how in zelda you can place bombs next to random walls and open doors to secret rooms
<davexunit>except you don't hear the cool music when you find an undocumented guile feature
<paroneayea>davexunit: ooh! you've made not documenting these things sound cool enough that I'm now against documenting them ;)
<paroneayea>jk jk
<davexunit>it's like writing hard to understand code at work for job security
<manumanumanu>davexunit: job security is (mis-)using macros that introduce weird, seemingly unrelated variable names. esoteric anaphoric macros is my favourite
<manumanumanu>anaphoric macros seem like such a nice idea until the day they don't :)
<davexunit>manumanumanu: what's an anaphoric macro again? a macro that introduces variable bindings that aren't specified?
<davexunit>like if I had a 'with-this' macro that binded a value to the variable 'this' unhygienicly? (with-this 6 (+ this 4))
<manumanumanu>davexunit: exactly. aif being the most common example. (aif expr then else) expands into (let ([it expl]) (if it then else)
<manumanumanu>which is fine if it only introduces local bindings to a body, but I inherited a project that introduced many bindings with macros that introduced bindings for stuff like (does-file-exist? "path") and suddenly you have 3 variables with info about the file
<davexunit>I think about how javascript has 'this' and how much I hate that
<davexunit>and how much trouble and confusion it causes. I have had countless experiences with coworkers trying to figure out exactly what 'this' meant in a variety of situations.
<manumanumanu>well, the moral of the story is clear: I only had to work on the project because the guy who wrote the macros in the first place came to me and called it a monstrosity.
<davexunit>haha
<manumanumanu>I think aif is OK for short if's, but it is probably better to use if-let.
<davexunit>well at least he realized he had created a monster :)
<davexunit>yeah I always just go for full hygiene even though it is more verbose
<davexunit>I mainly work with ruby at work and there's a lot of headache caused by people trying to be clever
<davexunit>you'll see a method call and try to find its implementation... but you can't find it because that method isn't defined but someone makes clever use of the method_missing hook to parse the method name and do something based on that.
<davexunit>Rails does this *a lot*
<manumanumanu>how can people even think that is a good idea?
<davexunit>it's a widespread acceptable practice in the Ruby community
<davexunit>the Schemer in me has an allergic reaction to it
<paroneayea>so terrible!
<paroneayea>ACTION writes a cond using => and else :)
<paroneayea>though at least => and else are consistent in what they mean, syntactically, within a cond
<paroneayea>but yeah, some common lisp macros also do such things... defmacro style things make it a bit easier to be unhygienic
<paroneayea>guile does occasionally have such things though
<paroneayea>(next-method) in goops, for example
<davexunit>that's not really anaphoric or unhygienic, though
<davexunit>it's dynamic, but not unhygienic.
<paroneayea>davexunit: how is next-method different than this? It's also something that appears in your environment "out of nowhere"
<davexunit>in my head I distinguish dynamic state from unhygienic bindings.
<davexunit>the 'aif' example defines an 'it' variable that is *never* mentioned in the source.
<davexunit>with goops, there must be a notion of the current object and current method for next-method to work.
<davexunit>I think 'next-method' itself is a procedure that comes from the goops module. is that true?
<davexunit>like, it's not a special procedure that is only bound within a method call?
<dsmith>There was this quote I read somewhere about being clever.
<dsmith>Since debugging is twice as hard has coding, if you make your code as clever as you can by definition you are unable to debug it.
<dsmith>Ah, Brian Kerngihan
<dsmith>"Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?"
<paroneayea>davexunit: yes that's true
<paroneayea>it's bound within the method call
<paroneayea>it's just kind of invisibly inserted by the macro
<davexunit>ahhh that's the piece of the puzzle I was missing.
<davexunit>perhaps it's a syntax parameter
<manumanumanu>dsmith: debugging weird side-effects that show themselves 4 years because a defmacro writer was too lazy to use gensym is nothing I wish upon my worst enemy.
<manumanumanu>that was 10 hours I will never get back
<manumanumanu>wingo: about the delimited continuation syntax: it is really a delight i guile, and I was curious where the syntax came from. I am only used to reset/shift, which is IMO not as elegant. Is it Racket?
<manumanumanu>wow. racket has a lot of control operators.
<amz3`>wingo: tx!
<reggggieee>ACTION just discovered switching languages keeps the same variables/functions - so cool!
<civodul>wingo: my reading of 'release_port' is that it's not possible for a port's 'close' method to be called more than once
<civodul>is that correct?
<amz3`>in some lisp they have let/cc as macro made of call/cc
<amz3`> http://reinvanderwoerd.nl/blog/2017/05/16/writing-a-lisp-continuations/
<rekado>paroneayea: I don’t know much about how web stuff should be done.
<amz3`>I do the way that works
<amz3`>to get started
<rekado>paroneayea: I repeatedly thought to myself when writing this that it would be so nice if I could just use ports and not care about the implementation details…
<amz3`>and think later
<paroneayea>rekado: heh, yeah. that may be the right long term plan
<paroneayea>rekado: btw, I just started the guile-webutils library
<paroneayea>I'm pushing to gitlab.com right now because I'm lazy? If you'd prefer I could use notabug?
<paroneayea>rekado: it's going to include your stuff, and probably soonish the signed cookie based sessions and web forms library I have
<paroneayea>and probably not toooo far in the future, a routes pattern matcher which is reversible along the lines of what was discussed in here not too long ago
<amz3`>neat
<amz3`>I am wondering about concept search, I think that looking up the best match of a document is scoring the other set of documents using the entity names co-occurrences similary measure
<paroneayea>civodul: in order to break out the signed cookie based sessions, I also need to eventually start that guile-gcrypt library based off of the combined guix + pubstrate code...
<paroneayea>civodul: might be worth asking you as well there if you have strong feelings on where that's hosted. Right now my feeling is mostly "I don't care, and thus I'm just throwing repos at gitlab.com/notabug"
<civodul>paroneayea: yeah i have a slight preference for notabug.org but that's it
<paroneayea>civodul: cool, ok
<paroneayea>civodul: I'll put it there then!
<civodul>would be nice to see a proper guile-gcrypt :-)
<paroneayea>civodul: do you have an account there?
<civodul>yes
<paroneayea>I should add you as a committer / admin
<civodul>if you're not afraid ;-)
<paroneayea>civodul: email me your userid and gpg sign it :)
<paroneayea>er, username
<paroneayea>I'm sure it's probably civodul
<paroneayea>but :)
<civodul>it's civodul indeed :-)
<civodul>well i can send a signed message
<paroneayea>civodul: am I being too paranoid? probably :)
<paroneayea>the chances of someone compromising by paying attention to what's going down in #guile town is pretty low admittedly ;)
<paroneayea>civodul: you're an admin!
<paroneayea> https://notabug.org/cwebber/guile-gcrypt nothing there yet ;)
<paroneayea>I'll start putthing things in place and let you know
<paroneayea>putting
<paroneayea>yarg
<civodul>awesome!
***ertesx is now known as ertes