IRC channel logs


back to list of logs

<davexunit>geiser really is a wonderful thing
<davexunit>and learning about new functions that I haven't yet used
<paroneayea>davexunit: \\o/
<paroneayea><3 geiser
<paroneayea>geiser makes hacking in guile so seamless that it's hard to be satisfied hacking in anything else.
<davexunit>wow, C-c C-m C-x
<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>davexunit: wow
<paroneayea>ACTION just tried C-c C-m C-x
<paroneayea>I occasionally re-dive into info manuals when looking to stretch my skills. maybe another geiser delve would be good.
<paroneayea>I love C-c C-a
<paroneayea>jump right into hacking in a module at the repl
<davexunit>yes I just learned about that one
<davexunit>ooh, geiser-smart-tab-mode
<davexunit>tab completion
<davexunit>now this is pod racing
<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?
<paroneayea>or something is.
<paroneayea>oh no
<paroneayea>it was auto-complete-mode doing it
<davexunit>yeah auto-complete-mode is an ugly hack :)
<davexunit>when your programming environment isn't cold and dead you can just ask it for things instead of parsing strings
<davexunit>wow C-c C-i
<paroneayea>davexunit: what's that? I don't have it bound here...
<davexunit>module import prompt with completion
<paroneayea>oh no wonder I didn't see it bound
<paroneayea>it's for the repl stuff :)
<paroneayea>geiser is the shit
<paroneayea>I'm going to try switching from autocomplete to company-mode having read a bit more just now
<paroneayea>oh yeah, okay, I'm switching to company-mode
<davexunit>I haven't looked into that mode yet
<davexunit>but I've gotta head out now
***michel_mno_afk is now known as michel_mno
<amz3>héllo :)
<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?
<qdavex>arm7, i think
<amz3>it's written armhf
<amz3>not sure what it mean
<qdavex>neither do i
<amz3>i looks like armv6 is hf
<amz3>so it might be ok
<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
<qdavex>how do i check this?
<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>the unstable debian has guile 2.0.11
<amz3>you rather ask #guix,
<amz3>it's very easy to do that
<amz3>I have to leave I will be back in a minute
<nalaginrut>qdavex: no problem, I'm using Artanis on Rpi
<nalaginrut>qdavex: sudo apt-get install guile-2.0
<qdavex>great, nala
<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??? :)
<qdavex>log = long
<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>0.1 has MVC and CLI tools
<nalaginrut>0.2 will have brand new async server core
<nalaginrut>qdavex: you can use master branch anyway, it works fine
<nalaginrut>and 0.2 is in wip-server-core branch
<qdavex>are there any documentation for new features since january 30? ( )
<nalaginrut>I confess I haven't committed code for weeks
<nalaginrut>qdavex: well, no, I put all my effort on code, but the manual will update when 0.1 release
<nalaginrut>0.1 is a big update, so it's slow
<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
<qdavex>it's fantastic!
<nalaginrut>qdavex: at present, I'm working on it alone
<nalaginrut>but I got many suggestions and various contributions so far
<nalaginrut>so it's not "alone" ;-P
<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>now they could ;-)
<nalaginrut>of course, someone wrote real useful compilers...
<amz3>o/ nalaginrut
<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 just lov it! :)
<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>qdavex: you can do that, webapps or mobile apps
<nalaginrut>thanks, please try it with what you've learned from SICP
<qdavex>of course i will! :)
<nalaginrut>qdavex: it could be simpler to use in the future ;-)
<nalaginrut>close future
<qdavex>oh, just one thing: what is the case with https???
<qdavex>is https supported?
<nalaginrut>qdavex: I will do it in 0.2, in new server core, for current server core it's impossible
<nalaginrut>qdavex: but don't worry, we have guile-gnutls
<qdavex>oh, ok
<nalaginrut>qdavex: but before that, I would recommend you always use Nginx as reverse-proxy
<nalaginrut>for better performance and https
<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
<nalaginrut>amz3: it's a so-called "smart campus" project
<qdavex>oh, for the beginning, classical CRUD app: I'm writing software for bublic library (Books, Customers, Borrowings, etc)
<nalaginrut>amz3: I write all server side in Artanis
<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>RESTful is very cool to decouple C/S
<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>qdavex: yes it should be
<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>now it'
<nalaginrut>now it's fast
<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
<nalaginrut>IMO, 1~2G files should be uploaded with FTP
<amz3>nalaginrut: you QT ou Kivy ?
<nalaginrut>amz3: I don't understand
<nalaginrut>I'm fans of HTML5, IMO native GUI is painful
<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 it matters)
<amz3>(if you only have html + css, once you start using animations and effects... raspberry can't handle it)
<nalaginrut>amz3: no there's no client UI in their needs
<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>each nodes transfer data acquired from sensors
<nalaginrut>BTW, I would like to write the firmware of these IoT nodes with Scheme
<nalaginrut>a special Scheme for embedded device
<nalaginrut>sounds big project huh?
<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>nalaginrut: Hmm, that's pretty interesting.
<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>but nothing releasedyet
<artyom-poptsov>BTW, there's Microscheme project for Arduinos:
<amz3>qdavex: so can you guix with raspberry?
<qdavex>nalaginrut: please, have a look at this: In ASP.NET MVC, that's the feature so you don’t have to dig post parameters manually from the Request. Maybe something like that you can introduce in artanis, too?
<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>so do Database
<nalaginrut>you just play closures (in OOP, objects_
<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>but in 0.1, you're in Rails way
<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
<nalaginrut>I mean it can't be a toy from SICP graduate
<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>that's bad
<qdavex>framework can have that features, but, on my opinion, it must allow users to go lower "to the metal" if they want
<amz3>qdavex: they can
<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")))
<qdavex>with (params rc ...)
<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
<nalaginrut>s/don't/don't know
<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
<nalaginrut>unless it's impossible for technical reasons
<nalaginrut>qdavex: sessions module used such hooks
<nalaginrut>hmm...I have to polish sessions before 0.1...
<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
<qdavex>for nostarch press
<nalaginrut>some features can't be done in current built-in server
<nalaginrut>qdavex: nice~I'm looking forward to it
<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
<qdavex>major os
<nalaginrut>at that time, I believe we can use Guix for Artanis
<nalaginrut>and hope other distros have the package too
<nalaginrut>I understand why now there's no one
<qdavex>and someone have to make guile 2.0 package for cygwin
<nalaginrut>because it's still in Alpha
<qdavex>(windows users are still the good book buyrs :)
<nalaginrut>my point is no hurry, we have to do it best as possible
<nalaginrut>then advocate it
<qdavex>ok, i agree!
<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
<nalaginrut>me too ;-)
<civodul>artyom-poptsov: thumbs up for (ssh dist)!
<civodul>really cool
<civodul>just emailed you a couple of comments
<artyom-poptsov>civodul: Hello. Thanks for the feedback.
<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).
<artyom-poptsov>civodul: Great, thanks. I'll answer the email later.
<taylanub>is there any solution to the auto-compile cache remaining dirty when one uses include or include-from-path?
<civodul>taylanub: i'm afraid not
<civodul>Guile doesn't track that
<dsmith-work>Tuesday Greetings, Guilers
<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.
<sneek>Will do.
<daviid>which one is best practice:
<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)
<taylanub>looks good to me
<civodul>'error' doesn't support format strings, though
<sneek>Welcome back civodul, you have 1 message.
<sneek>civodul, paroneayea says: got the blogpost up about receiving the O'Reilly Open Source Award
<taylanub>oh right, have to (error (format ...))
<daviid>oh, I thought it did :)
<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
<ArneBab_>no probs :)
<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 ? 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.)
<taylanub>don't look very nice*
<ArneBab_>paroneayea: wow!
<daviid>paroneayea: cool! congrat!!
<daviid>"Pretty cool hunk of glass, right?" I think so too!
<civodul>impressive, indeed!
<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>is this expected:
<daviid>(scm-error 'out-of-range "get-row" "row id ~A is out of bounds" (list 2) '())
<daviid>ERROR: In procedure scm-error:
<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 ?
<ecraven>does guile support restarts?
<amz3>restarts ?
<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
<ecraven>ah, there is
<ecraven>a second
<ecraven>a very useful thing :0
<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
<civodul> has a list, but it's incomplete and possibly outdated
<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>taylanub: I don't think so :)
<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)
<paroneayea>thanks taylanub
<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).
<civodul>ecraven: yes it's a library, see
<ecraven>civodul: great, thank you!
<daviid>ecraven: i recommend you clone the source repo, the tarball is [very] old, see for an explanation about guile-cairo
<ecraven>daviid: thanks, I just did that and looked around :)
<ecraven>it builds fine
<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 ...
<ecraven>does anyone have guile-tcod?
<ecraven>that one:
<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?
<daviid>I doubt
<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 (Foreign Variables) of the Guile manual