<davexunit>and learning about new functions that I haven't yet used <paroneayea>geiser makes hacking in guile so seamless that it's hard to be satisfied hacking in anything else. <davexunit>paroneayea: I'm with ya. Rubyists think Pry is the best thing ever <davexunit>and it's certainly awesome compared to other Ruby REPLs, but it can't hold a candle to Geiser <paroneayea>I occasionally re-dive into info manuals when looking to stretch my skills. maybe another geiser delve would be good. <paroneayea>yeah I think somehow yasnippet did magic where it's making use of that automagically here or *something*, because somehow it's making use of it even with that symbol off, I think? <davexunit>when your programming environment isn't cold and dead you can just ask it for things instead of parsing strings <paroneayea>davexunit: what's that? I don't have it bound here... <paroneayea>I'm going to try switching from autocomplete to company-mode having read a bit more just now ***michel_mno_afk is now known as michel_mno
<qdavex>hallo guys, is it possible to install latest guile on Raspberry PI? <qdavex>I want to try artanis web framework on Raspberry, but it requires the latest version of guile <amz3>qdavex: maybe it is possible with guix <amz3>what the proc architecture of the raspberry? <amz3>i looks like armv6 is hf <amz3>but you'd better ask on #guix <qdavex>it would be really nice if someone could make apt-get guile package (latest version) for raspberry <qdavex>because i don't know how to install <amz3>it might me available on unstable <amz3>the usual cli dance: ./configure, make make install <amz3>qdavex: what rapsberry distro are you using? <amz3>commands to install guile from source: ./configure && make && make install <qdavex>ok, i'll try this when i come home <qdavex>but package would be nice. then i can uninstall it also... <amz3>it's very easy to do that <amz3>I have to leave I will be back in a minute <qdavex>nalaginrut: and are there any performance problems on Raspberry? <nalaginrut>qdavex: for now, I haven't test the performance on rpi yet, but IMO it meets most of needs <nalaginrut>actually, I'm writing a new server core for better performance, I would suggest that maybe you don't have to think about performance too much at present <qdavex>nalaginrut: Thanx. Also, I've notice that artanis web page isn't updated log time... Are you still working on it? When we could expect the 1.0 version??? :) <nalaginrut>qdavex: yes it's under heavy working for months, I'll release 0.1 when Model is done, I've done Controller & View <nalaginrut>Artanis will not go 1.0 in near future, since my plan is 0.0.1 -> 0.1 -> 0.2, in a slow version number refresh ;-) <qdavex>I really like your work, man, and can't wait further development! It's maybe the first web framework that immediately "click" with me... <nalaginrut>qdavex: you can use master branch anyway, it works fine <nalaginrut>qdavex: well, no, I put all my effort on code, but the manual will update when 0.1 release <qdavex>sorry for bothering you, but when 0.1 release will be published (approximately)? <qdavex>is it true that RMS "blessed" your project? Are you working on that alone??? <nalaginrut>I can't promise, the code part is easier to be done for 0.1, but you know I have to write manual <nalaginrut>qdavex: heh, RMS did say "it's cool I like it", I kept the mail ;-) And Artanis is GNU official project now <nalaginrut>but I got many suggestions and various contributions so far <qdavex>eh, I'm just a beginner in scheme (just finished reading SICP), i'm a little sad that i can contribute right now... <qdavex>but, maybi in the future, who knows?? <nalaginrut>qdavex: yes, I know, Artanis is created for SICP learner, that's one of the purpose <nalaginrut>in the past, SICP learner has no way to do real useful project when then don't the course <nalaginrut>of course, someone wrote real useful compilers... <qdavex>Yeah, it's great! You do terrific job, man! <qdavex>ZThank you for this little chat! Now going to learn further... <nalaginrut>I have to say that Artanis is not a toy, I use it in real project and made some money <nalaginrut>I hope folks can get benefit from it, after learned SICP <qdavex>are there some public apps written in it? <nalaginrut>qdavex: it's not public general project, but what I want to say is that it works for real need <qdavex>great news. I'm planning to build all my web apps in the future with artanis <qdavex>I like the way it is put together, like simplicity etc <nalaginrut>I'm trying to persuade the customer free the code, but not so easy, anyway, I will write some examples for folks <qdavex>Keep going Man, it's so grreat project! <nalaginrut>thanks, please try it with what you've learned from SICP <nalaginrut>qdavex: it could be simpler to use in the future ;-) <qdavex>oh, just one thing: what is the case with https??? <nalaginrut>qdavex: I will do it in 0.2, in new server core, for current server core it's impossible <nalaginrut>qdavex: but before that, I would recommend you always use Nginx as reverse-proxy <qdavex>yeah, this little built-in server is just for development, right? <amz3>nalaginrut: what kind of app, did you develop using artanis ? <nalaginrut>yes, the current built-in server is just for that <qdavex>oh, for the beginning, classical CRUD app: I'm writing software for bublic library (Books, Customers, Borrowings, etc) <nalaginrut>but the client part, my customer afraid of the maintain problem, so I have to use Python <qdavex>right now, i'm doing this in ruby, but i don't like ruby very much, so i'm looking to switch to scheme <nalaginrut>so I can persuade them to write serve in my way, with Artanis <nalaginrut>and online webapp and mobile app can take advantage of Artanis as server side <qdavex>for most people it's just more important that "the thing looks good" than on which technology is built <nalaginrut>yes, they want me write it as quickly as I can, I said "unless the framework is mine", then they said"do what you like" <nalaginrut>anyway, they are happy with this project, it works fine now <qdavex>nalaginrut: why you are'nt "nalagnirut"??? I mean, that's turing reversed? <nalaginrut>it's me who write it wrong in the beginning, so... <qdavex>but "nalaginrut" sounds a little better! :) <nalaginrut>it become legacy now, and yes, you can pronounce it easier <nalaginrut>qdavex: I recommend you try master branch, I've optimized uploading for the project I mentioned <nalaginrut>my customer wants to upload 1~2G video, so I have to optimize it <nalaginrut>and it's better to use Nginx for faster uploading, and Artanis parses multiform/data quicker <qdavex>surely i will, immediately today <nalaginrut>I think it's as fast as PHP now, maybe little slower, but I know how to fill the gap, I just leave it at present <amz3>nalaginrut: you QT ou Kivy ? <adhoc>native widget toolkits like QT and Gnome/GTK are horrible to work with. <amz3>you said you write client side using Python, so you need to use native GUI no? <amz3>adhoc: native is more performant <amz3>(if you only have html + css, once you start using animations and effects... raspberry can't handle it) <nalaginrut>I provide UI in server that they could operate it on web <amz3>looks like an interesting project, this must be a good test for artanis <amz3>you will also be able to test performance against a real workload (!) <qdavex>will you have so called "model binding" feature in v0.1 (something like ASp:NET MVC have)? <nalaginrut>yes, the performance is a point that I have to concern later, since there'll be at least 2000 nodes in the campus for IoT experiment <nalaginrut>BTW, I would like to write the firmware of these IoT nodes with Scheme <nalaginrut>it's fine for me, but it's paid, why not try, maybe a chance to bring Scheme to real projects <nalaginrut>for future IoT may not be a good choice, Artanis will support MQTT, but it's fine to use HTTP at present... <artyom-poptsov>Do you planning to implement some kind of IoT framework in Scheme? <amz3>I think someone is working on a microship guile <amz3>qdavex: so can you guix with raspberry? <amz3>qdavex: I highly recommend it because a lot of guile project are packaged for guix <qdavex>it's a really convenient feature, saves a lot of time <amz3>qdavex: regarding Model binder, it basically transform the request into another object that is easier to deal with ? <qdavex>it collects your post data and make model object from that <qdavex>it's convenient if you have a big form with many data entry fields... <qdavex>and it also have html helpers, for example Html.TextBoxFor(m => m.Name) and that can automatically extract data from the model so you don't have to manually populate controls again on postback <nalaginrut>qdavex: yes, the aim is that users treat query-string as low-level transparently, the framework should do all the things for you <nalaginrut>qdavex: the things you may played in Artanis-0.0.3 is low-level in 0.1, you don't have to handle them manually <nalaginrut>for example, (get "/rule" (lambda (rc) ...)), you don't have to write them manually, it's generated <nalaginrut>but it's fine if you really want to, sometimes folks just want to write some quick code <nalaginrut>well, Scheme for AVR, terrible, I mean "cool" ;-) I have to speed up <nalaginrut>what I want is a optimizing Scheme compiler for specific ARM defice <amz3>qdavex: in python Model binding, is the standard except it using IoC, which means you have to explicitly call the wrapper class <amz3>qdavex: there is advanced pratice, which elimiates almost all of request, using some kind of pattern matching <amz3>qdavex: but you have less control over how URLS are built.. <qdavex>framework can have that features, but, on my opinion, it must allow users to go lower "to the metal" if they want <qdavex>if i want manually collect my post data, framework should'nt stop me <qdavex>but it would be nice if framework offer me some choices <amz3>I wait, to see what Artanis 0.3 will be. Choice kills. <amz3>I mean it makes things difficult, but I have little xp with those kind of framework <qdavex>just right now, the situation is that i have to manually collect all the parameters with (get "/hello/:who" (lambda (rc) (params rc "who"))) <nalaginrut>qdavex: in Artanis, you can use any level things if you really want, it won't stop you, and if you don't like the way the framework handles data for you, you can customize the handler <nalaginrut>I don't if the current Artanis code promise this, but that's the design principle <qdavex>if i have dropdown (select) control on the page, i must manually adjust selected item on postback <qdavex>i would like that framework could do that form me <qdavex>nalaginrut: i like that design principle - this is the RIGHT way :) <nalaginrut>anyway, there're two hooks, one is before passing request to handler, one is after calling the handler, you have chances to so something <qdavex>it's good to have such hooks... that could be used to make some like "automatic binder" <nalaginrut>the principle is simple, "we don't stop anyone", if one really know what he want <nalaginrut>well, things can't be perfect, Artanis will do it as possible <qdavex>When 0.1 is out, i will write a book about Artanis! :) <nalaginrut>qdavex: please! and maybe you want to write it for 0.2, the new server core will bring more features <nalaginrut>some features can't be done in current built-in server <qdavex>But, installation of guile and artanis should be as smooth as possible... (i don't want to describe installation process in a half of a book!) <qdavex>there must be packages for ubuntu, redhat and all the major apps <nalaginrut>at that time, I believe we can use Guix for Artanis <qdavex>and someone have to make guile 2.0 package for cygwin <qdavex>(windows users are still the good book buyrs :) <nalaginrut>my point is no hurry, we have to do it best as possible <nalaginrut>I have to stop talking, since I have a post to write, folks will like it <qdavex>i have to persuade my wife to translate the book in english when once it is completed <qdavex>because my english is really bad <civodul>artyom-poptsov: thumbs up for (ssh dist)! <civodul>just emailed you a couple of comments <civodul>maybe the manual should mention exceptions and serialization of non-trivial objects <artyom-poptsov>Unfortunately I hadn't enough time to hack on Guile-SSH in the last few weeks, and I confess that there's plenty of room for improvements. <artyom-poptsov>I'll check your comments when I get the email (haven't received it yet). <taylanub>is there any solution to the auto-compile cache remaining dirty when one uses include or include-from-path? <dsmith-work>sneek: later tell qdavex FWIW: sneek used to live on an rpi. Had several issues with sdcards flaking out. Now live on a beaglebone black. <daviid>(error "~A: id ~A is > to the number of rows" ...) <daviid>(error "~A: id ~A is out of bound." ...) <taylanub>daviid: depends on whether the meaning of "out of bounds" is clear within context IMO. if so, it's nicer, otherwise, the other is more informative. <taylanub>maybe "row id ~A is out of bounds" or "row ~A is out of bounds" <daviid>taylanub: I see, it would be the result of a bad call upon a grid-layout method like (define-method (get-row (self <clus-grid>) id) ... <daviid>"row id ~A is out of bounds" <- looks bettrer to me <daviid>(error "~A: row id ~A is out of bounds" self id) <civodul>'error' doesn't support format strings, though <sneek>Welcome back civodul, you have 1 message. <taylanub>hmm, supporting formatting directly there wouldn't necessarily breach any standard. maybe it would be nice to support (and turn into a new SRFI). <ArneBab_>daviid: I think it would be nice to include the bounds. <daviid>ArneBab_: it does not seem to be the practice, don't know <ArneBab_>(error "~A: row id ~A is out of bounds. max row ~A." self id limit) <ArneBab_>(error "~A: row id ~A is out of bounds. max row is ~A." self id limit) <daviid>ArneBab_: understand, tx, but i'll stick to the short one <ArneBab_>that helps for example to catch off-by-one errors <daviid>taylanub: in the mean time i'll write a quick grip/perso error function, no big deal <taylanub>different topic: anyone else ever wished for their SRFI-64 test suites' output to look a bit nicer? like http://sprunge.us/MgPb ? this is an R7RS library, but I'm able to make it work on Guile trivially, so maybe I'll offer a patch replacing the SRFI-64 in Guile. it's more maintainable too I think. <taylanub>(yes, you see SRFI-64 testing itself there, among other SRFIs :P and yeah, the test groups in the SRFI-64 test suite are named very verbosely so they don't very nice.) <daviid>"Pretty cool hunk of glass, right?" I think so too! <daviid>that's why I thought error did handle format strings: /glib/gnome/gobject/gtype.scm:(define (gruntime-error format-string . args) ... <daviid>/glib/gnome/gobject/gtype.scm: (scm-error 'gruntime-error #f format-string args '())) <daviid>will write such for my grip toolbox then <daviid>but civodul why does error [guile I mean] does not support format strings? any reason <daviid>(scm-error 'out-of-range "get-row" "row id ~A is out of bounds" (list 2) '()) <daviid>ERROR: In procedure get-row: row id 2 is out of bounds <daviid>why the first ERROR: In procedure scm-error: ? <daviid>where are the accepted scm-error accepted keys ? <taylanub>ecraven: what sort of restarts? like dumping an image to disk and restarting it later? if so, don't think so. <taylanub>paroneayea: very impressive, congrats! :-) <ecraven>taylanub: no, like common lisp restarts.. MIT/GNU Scheme supports them for example <ecraven>interesting, there's no decent info in the manual about restarts <civodul>ecraven: Guile's REPL has a limited version of that, basically "nested REPLs", similar to Emacs <ecraven>if I wanted to find out whether an ffi-based binding to libcairo exists for guile, is there any sort of centralized repository? <civodul>guile-cairo exists, it's not FFI-based, but it's complete <taylanub>ecraven: might it be that these restarts are just a special-case of (delimited) continuations? <ecraven>civodul: not that it matters, but for example it does not include the streaming output functions from libcairo (at least according to the documentation) <ecraven>I haven't looked at the implementation yet, but at least Common Lisp has them and does not support (delimited) continuations <ecraven>civodul: do I understand correctly that guile-cairo is a separate program? can I use it as an extension or library in a larger guile project? <taylanub>AFAIK, CL supports recoverable and non-recoverable conditions directly, where Scheme supports their generalizations which are delimited and non-delimited continuations. dunno if restarts are something different from recoverable conditions? (couldn't figure out from a quick skim, also tired) <ecraven>taylanub: I think you could use continuations to implement restarts, but you don't necessarily need to (they could be implemented in a simpler way, maybe) <taylanub>well, in any case there seems to be some complex machinery under this Restarts system (i.e. even if it can be implemented with continuations). <ecraven>daviid: thanks, I just did that and looked around :) <daviid>yeah, master builds fione and there has been very important patches since the tarball, so really worth it <daviid>ecraven: guile-cairo master gives you a cairo 1.10.0 binding, fyi <daviid>it's a bit old but that's what we have for now :) <ecraven>daviid: do I understand correctly that all the wrapper C code is not generated, but hand-written? <ecraven>so it'd be a bit of work to update it? <daviid>in guile-cairo yes, but guile-gnome guile-clutter is largelly generated from the .h files <ecraven>so many interesting C libraries to interface with :-/ <daviid>ecraven: what civodul ment is that none of these projects use the modern dynamic ffi, just for info [at that time it did not existed yet] <ecraven>daviid: well, they are probably faster than the dynamic ffi? <civodul>i don't think it makes much of a difference in these cases <daviid>ecraven: for a modern ffi implentation example, see guile-opengl, sly ... <ecraven>hm.. many guile projects seem to be on gitorious, just being migrated, and not available <daviid>true, ask here, we have lcal copies ... <daviid>ecraven: I would write an email to his author [note that he did say in 2012 he will move to scala and no longer ad features, but supporting it] <ecraven>oh, the gitorious migration won't be finished anytime soon? <ecraven>I thought I was just unlucky right now :-) <ecraven>is there a way to bind things that are not functions with the dynamic ffi? like global variables? <mark_weaver>ecraven: yes. see section 6.20.5.2 (Foreign Variables) of the Guile manual