IRC channel logs

2015-05-03.log

back to list of logs

*davexunit comes back from being afk and catches up
<davexunit>paroneayea: ah yes, services and state. as I dig into writing service definitions more, I think activation scripts are the right place for managing stateful things.
<davexunit>for example, postgresql-service creates /var/lib/postgresql/data and runs the 'initdb' program if necessary.
<paroneayea>davexunit: great :)
<paroneayea>davexunit: so, maybe before starting/restarting mediagoblin each time, "gmg dbupdate" is run?
<davexunit>paroneayea: yeah.
<paroneayea>that's a good route.
<davexunit>a more "serious" setup could take care to do a backup first, somehow.
<paroneayea>I was just typing that
<davexunit>via another service or something.
<paroneayea>though
<paroneayea>we might want to incorporate ways to declare "here's how to backup my stuff for this service" fairly generically
<paroneayea>I don't know what that is
<paroneayea>but it would be nice for figuring out where the state is and how it can be backed up to be a pretty "smart" operation
<paroneayea>I shouldn't have to say "back up here, and back up here, and back up here" generally if we can compose a set of functions that can extract that data to be backed up
<paroneayea>davexunit: http://blog.liw.fi/posts/debian-backups-by-defaut/
<paroneayea>great post by the obnam author trying to think of a user story for backups happening without users having to think too much about it
<davexunit>paroneayea: yeah, there's room for automation here.
<paroneayea>how much in guix can we programmatically specify that?
<paroneayea>certainly the current story for users of having to reproduce the structure of their system *and* back up their mutable state is a sorry one
<paroneayea>guix is already solving the former
<paroneayea>if it could help also with the latter, making it easy to figure out how to back up
<paroneayea>that would be a killer feature.
<paroneayea>davexunit: anyway, obviously the above thoughts aren't immediately actionable in that raw form
<davexunit>I think that the "what" would be defined by each service somehow
<paroneayea>but I think there's ways we can structure making it easier into the system
<paroneayea>davexunit: yes I agree
<davexunit>and a more generic backup service could run the backup jobs for everything
<paroneayea>yes!
<civodul>+1
<davexunit>needs exploration
*civodul -> zZz
<davexunit>good night civodul
<civodul>good afternoon/night!
<paroneayea>gnite civodul :)
<davexunit>kid tested, civodul approved
<paroneayea>;D
<paroneayea>oh man, can we set the topic in here
<davexunit>I'm not an op
<paroneayea>aw, needs ops
<paroneayea>(set! topic (string-append topic "| <davexunit> kid tested, civodul approved"))
<davexunit>;)
<davexunit>but good, I think we've identified the appropriate layer for imperative tasks.
<paroneayea>yes I think so davexunit
<paroneayea>exciting!
<paroneayea>davexunit: now I need to explore with dmd :)
<paroneayea>but first I need to finish my replacing virtualenv+bower thing :)
<davexunit>I really want to use dmd as a user service manager
<davexunit>I really wanted such a thing a year ago at my last job
<davexunit>I had a lot of rails servers up in a screen sessions
<davexunit>session*
<paroneayea>uhoh :)
<paroneayea>never a good sign ;)
<paroneayea>I've done that too at some jobs ;)
<davexunit>yeah, wacky dev environments
<paroneayea>"oh well, I'll just prop this up here as a solution for the moment"
<paroneayea>*that stick you prop it up with becomes the cornerstone of a towering deployment monstrosity*
<paroneayea>your job eventually becomes reinforcing that stick
<davexunit>hehehe
<davexunit>thankfully production was not like that
<paroneayea>:)
<davexunit>but it made rebooting a really undesirable thing
<davexunit>"fuck, have to start 6 servers by hand"
<paroneayea>davexunit: I'm currently supporting code in contracting that has the equivalent of a "many to many" of users' "group" permissions
<paroneayea>except
<paroneayea>the application has one database per client
<paroneayea>and
<paroneayea>each client's "group" type table is differently structured
<paroneayea>so you can imagine what this code is like.
<davexunit>oof, yeah.
<paroneayea>it's a good thing I drink caffeine, not alcohol, when stressed and tyring to get through things :)
<davexunit>haha yes
<davexunit>for one thing, I want a user dmd service for running offlineimap
<davexunit>and mpd
<davexunit>dmd is fun :)
<davexunit>easy to make a basic config file for user services
*davexunit is wondering if he should be going through all this trouble to write an interface around postgresql config
<davexunit>perhaps I should just let the user do the necessary (text-file* ...) stuff
<davexunit>but on the other hand it's really convenient to have an abstraction for this stuff...
<vmlinuz88>Hello all.
<kete>hi
<paroneayea>hey kete!
<paroneayea>how goes?
<kete>:D good! how are you doing?
<paroneayea>good, kinda tired and restless, too much to get things done at this very second :)
<vmlinuz88>Hi kete, paroneayea :)
<kete>I'm tired too. I've seen you working
<kete>is that supposed to be like paranoia?
<paroneayea>kete: the username is a pun on paranoia, yes
<paroneayea>it swaps two of the vowels, pronunciation-wise
<paroneayea>and ends up pair-oh-nye-ah
<paroneayea>instead of pair-ah-noi-ah
<vmlinuz88>So it is pronounced similar to how a New Yorker would say it.
<vmlinuz88>or someone from Boston
<kete>funny stuff
<paroneayea>vmlinuz88: heh!
<vmlinuz88>paroneayea What have you been working on? Guix-related?
<paroneayea>vmlinuz88: I've gotten some guix patches in, and am trying to work towards the 0.8.0 release, and doing some contracting
<vmlinuz88>Ah, nice
<paroneayea>trying to figure out how to make deployment better while also exploring guix, and finding those might go hand in hand
<paroneayea>but, there are some hurdles, as I blogged last night: http://dustycloud.org/blog/javascript-packaging-dystopia/
<kete>did you mean 0.9?
<paroneayea>sorry, 0.8.0 of mediagoblin
<kete>ok
<paroneayea>kete: and you? what are you hacking on? anything within the context of guix? or otherwise?
<kete>final exams, graduating with bachelors. borrowed the scheme book in case I need something to read after finals. could review changes to guix manual
<vmlinuz88>paroneayea I'd love to start hacking and helping out the Guix project. I'm familiar with scheme syntax but I don't know much about the API. I'm willing to learn, of course. Is there anything in particular that would be suitable for me?
<paroneayea>hey vmlinuz88, I might not be the best person to ask, I'm new to hacking myself!
<paroneayea>civodul, mark_weaver, and davexunit may have better ideas than I do
<paroneayea>that said
<paroneayea>a great direction, I think
<paroneayea>is to set up a local dev environment, test installing some packages
<paroneayea>then find a package you want
<paroneayea>and package it!
<paroneayea> http://dustycloud.org/blog/guix-package-manager-without-make-install/ I wrote up how I installed guix for hacking without doing a "make install" if that's helpful
<vmlinuz88>I'm installing guix in a vm right now, it's still running the guix system init command as I install it to a vmdk
<kete>oh wow - a schemer!
<paroneayea>ah cool :)
<paroneayea>what I like about the route I suggested for installing above is it's easy to modify guix from the git checkout of guix that you have
<paroneayea>installing from a vm should give you a nice experience of what guixsd is like though
<vmlinuz88>awesome :)
<vmlinuz88>the host system I'm currently running is Fedora 21
<vmlinuz88>I'm thinking about installing guix via get (as per your suggestion)
<paroneayea>I imagine the route I suggested above would work for fedora as well
<vmlinuz88>hmm
<vmlinuz88>when running the ./bootstrap command in guix directory, it says "autopoint: no such file or directory"
<vmlinuz88>ah, it looks like it's part of the gettext package.
<vmlinuz88>paroneayea Your guix install method is working like a charm :)
<marxy>I've attempted installing GuixSD a few times on the same PC (Different USBs, re-downloaded the image, etc.) and always get the same error-- that the build of system.drv failed. I'm not exactly sure where to go from this error message, though, and I was wondering if someone did... http://pastebin.com/3vG5GE4f
<rekado->re wordpress: it also works when run through php-fpm; it does not need Apache. It would be best if we didn't link these "servlets" too tightly with the HTTP server.
<vmlinuz88>marxy I have the same issue
***amirouche|bis is now known as amiruc
<paroneayea>vmlinuz88: yay!
<cehteh>mhm
<vmlinuz88>Hi cehteh
<vmlinuz88>Hu paroneayea
<vmlinuz88>*Hi
<Sleep_Walker>1] it seems the git package is corrupted
<Sleep_Walker>(always fails on position 1877 kb)
<cehteh>yesterday it was stoll ok :D
<cehteh>there is really some need for snapshotting releases and let hydra or some other server cache them for enough time
*davexunit tries to create netlink datagrams in Scheme code, fun fun
<paroneayea>morning everyone
<paroneayea>hi vmlinuz88
<paroneayea>hey davexunit, I was thinking
<paroneayea>I wonder if guix ops could be useful for something like compiling stuff for a beaglebone black or etc, some mini-computer, and then sending it off
<paroneayea>you can calculate the derivations locally... but can you send the built stuff across the wire too?
<davexunit>paroneayea: yes, you can send the closure of the system over the wire in a nix archive
<paroneayea>oh yeah, and davexunit, sadly I was told that what we feared was true:
<paroneayea>that each package can have a different and incompatible version of a dependency in its own namespace
<paroneayea>hence the nesting
<paroneayea>for the javascript / npm stuff
<davexunit>paroneayea: yeah, that makes sense.
<davexunit>you can have the same thing in guix, too.
<davexunit>but by virtue of us preparing a distro, we keep things sane.
<paroneayea>davexunit: yeah I suppose one could do it, but what a mess :|
<davexunit>in the free for all of nodejs, you end up with like 10 different versions of underscore to make things work.
<davexunit>what a mess, indeed.
<a_e>Hello!
<davexunit>hey a_e!
<paroneayea>hm interesting
<paroneayea>I expected that installing dmd would install the info files
<paroneayea>but it doesn't...
<davexunit>paroneayea: hmm, it should, judging by the Makefile
*davexunit checks
<paroneayea>oh
<paroneayea>I see
<paroneayea>.info.gz
<paroneayea>I did a find for .info :)
<paroneayea>sorry!
<davexunit>oh good
<paroneayea>sorry for the distraction davexunit
<davexunit>it's all good
<davexunit>mpd is a lovely little user service manager
<davexunit>lol I mean dmd
*davexunit is currently writing a service to start mpd from dmd
<kete>:D
*kete was confused.
<davexunit>me too :P
<paroneayea>:)
<davexunit> http://paste.lisp.org/display/147787
<davexunit>a nice little config :)
<rekado->davexunit: inspiring.
<rekado->I guess I should write a service file for JACK.
<davexunit>rekado-: you run JACK as a user service?
<rekado->currently I start JACK manually on my recording workstation
<rekado->as a user.
<davexunit>ah, I see.
<davexunit>yeah, perfect use for unprivileged dmd
<civodul>nice indeed
<civodul>i use it for mcron, privoxy, and a couple other things
<davexunit>civodul: how much abstraction do you feel is appropriate for guix system services? I have this postgresql-service, but I'm unsure how much extra work I should do around handling config for the user.
<davexunit>a postgresql.conf file is just a list of "key = value" lines, so I thought, "well, I'll just have the user pass in an list and write out the correct file"
<davexunit>but perhaps this is trying to be too clever
<paroneayea>davexunit: it might be nice to have that as an option, but also allow users to specify their own file
<paroneayea>or even better
<paroneayea>have a function that generates such a file from a list
<paroneayea>and let them pass it in as a parameter
<davexunit>yeah I'm thinking of something along those lines
<davexunit>I will have 3 such functions in the end.
<davexunit>since postgresql actually has 3 main configuration files
<civodul>davexunit: if the list doesn't lose any expressivity, go for that
<civodul>otherwise, if the syntax is complex and changing, just let the user pass a plain file
<civodul>with 'local-file'
<civodul>what i did for nsswitch.conf is a bit extreme :-), but the underlying syntax is set in stone anyway
<paroneayea>I challenge someone to try to find a universal sexp structure that can be serialized to any apache configuration ;)
<davexunit>civodul: I'll go the local-file route
<davexunit>thanks
<davexunit>civodul: oh yeah, the complicating factor here is that there's a few state directories that need to be created, so I have to formalize those somehow
<civodul>in the 'activate' field i guess?
<davexunit>yeah
<davexunit>I could make those parameters to the procedure as I have now, but the user will have to redundantly specify them in their config file.
<civodul>oh, i see
<civodul>you could still have parameters with the expected default values
<civodul>and if someone really wants to change them, they can
<davexunit>I guess they should be set to what postgresql uses by default
<civodul>yeah
<davexunit>actually, it looks like I can specify these directories as command line switches
<davexunit>so that works out.