[08:19] <dholbach> good morning
[08:19] <mvo> asac: you mentioned that the webdm store is empty. with what version of snappy do you see this? 15.04? or rolling?
[08:20] <mvo> hey dholbach, good morning
[08:20] <dholbach> hey mvo
[08:20] <mvo> asac: I have a rebuild of webdm ready now but want to reproduce the issue first before blindly uploading
[09:45] <mvo> fgimenez: hi, I uploaded a fix for the /tmp issue from yesterday, buildig a new image now
[09:45] <mvo> fgimenez: to verify the fix
[09:50] <zyga> good morning!
[09:51] <fgimenez> mvo, ok thanks a lot! let me know when i can give a try
[09:51] <fgimenez> hey zyga :)
[09:51]  * zyga prefers to stick to irc
[10:10] <zyga> Chipaca: can we please land http://github.com/ubuntu-core/snappy/pull/212
[10:10] <zyga> Chipaca: I think everything is addressed now
[10:32] <mvo> zyga: I followed up with a question, I'm sorry if the question is dumb
[10:34] <zyga> mvo: no questions are, thanks, I've replied
[10:40] <Chipaca> zyga: something something inquisitive idiots?
[10:40] <zyga> Chipaca: hehe :)
[10:41] <zyga> Chipaca: do you know that mvo helped me out in my first days of ubuntu?
[10:41] <zyga> Chipaca: mvo is awesome!
[10:41] <Chipaca> zyga: i'd be more surprised if he hadn't, because yes
[10:41] <Chipaca> also, a joy to work with
[10:42] <Chipaca> even when he asks dumb questions :-p
[10:44] <Chipaca> zyga: landed
[10:45]  * mvo blushes
[10:55] <fgimenez> mvo, test suite passing locally with 272 \o/
[11:01] <Chipaca> zyga: do you have a link to that reflects-using monstrosity again?
[11:02] <Chipaca> zyga: outside of a hangout i'd like to look at it to show you a more gothic way of doing it, even if you won't use that code because of the simplification
[11:05] <Chipaca> zyga: got it
[11:10] <zyga> Chipaca: sure
[11:10] <zyga> Chipaca: oh, sorry, I was slow
[11:10] <zyga> Chipaca: I went to remove some code from https://github.com/ubuntu-core/snappy/pull/205
[11:10] <zyga> Chipaca: I think that fixes all of the comments now
[11:11] <Chipaca> zyga: so, in this case https://github.com/zyga/snappy/blob/caps-api-assign/daemon/api.go#L1016
[11:12] <Chipaca> zyga: because you're racing to have a vertical working, it's fine to use reflect.DeepEqual to save time
[11:12] <Chipaca> zyga: but the "right" way would be to implement an Equals or whatever yourself
[11:12] <zyga> Chipaca: on Assignment struct?
[11:12] <zyga> Chipaca: will that make comparison on two slices work?
[11:12] <zyga> Chipaca: (not that this code is staying but I'm curious how to do it in go in general)
[11:13] <Chipaca> either on Assignment or on Caps, depending on the usage
[11:13] <zyga> Chipaca: I mean I only used deep equals because AFAIR go's doesn't compare slices
[11:13] <Chipaca> zyga: e.g., newCap.Assignments.Equals(oldCap.Assignments)
[11:14] <Chipaca> zyga: fwiw, in the general case, DeepEquals will not do what you want
[11:14] <Chipaca> zyga: it only works there because you're only letting Assignments have 0 or 1 elements
[11:14] <zyga> Chipaca: oh?
[11:14] <Chipaca> zyga: but given that it's more like a set, order shouldn't be important
[11:14] <zyga> Chipaca: can you explain why it would not work?
[11:14] <Chipaca> zyga: (unless i'm misunderstanding)
[11:14] <zyga> Chipaca: ah,I see
[11:14] <zyga> Chipaca: yes, I really miss basic collections here
[11:14] <Chipaca> so [ass1, ass2] should be equal to [ass2, ass1]
[11:15] <zyga> Chipaca: yep, you are correect
[11:15] <zyga> Chipaca: this is a Set[Assignment] in python's 3.5 parlance
[11:15] <Chipaca> zyga: even more reason to punt that work to after the demo
[11:17] <Chipaca> zyga: is an assignment ever going to be more than a snap name and a slot name?
[11:18] <zyga> Chipaca: I don't believe so
[11:18] <zyga> Chipaca: it's sufficient for anything I was imagining much further down the linre
[11:19] <zyga> mvo, Chipaca: it would really help me if you could re-check and land https://github.com/ubuntu-core/snappy/pull/205 that I didn't miss anything
[11:19] <Chipaca> zyga: Assignments is a set, not a multiset?
[11:25] <Chipaca> er
[11:25] <zyga> this blocks https://github.com/ubuntu-core/snappy/pull/206
[11:25] <Chipaca> zyga: i mean, if Assignment A == Assignment B only if A's snap and slot == B's snap and slot
[11:25] <Chipaca> zyga: then, if A == B, A and B can't both be in Assignments?
[11:25] <zyga> Chipaca: it is a set, not a multi-set
[11:25] <zyga> Chipaca: Set[Tuple[str, sr]] in python's typing
[11:25] <zyga> Chipaca: you are exactly right
[11:29] <Chipaca> zyga: https://play.golang.org/p/YZm8ETL5gS
[11:31] <Chipaca> zyga: actually, ignore that for a bit
[11:31]  * Chipaca adds stuff
[11:35] <Chipaca> zyga: https://play.golang.org/p/en_H4bVD7x
[11:40] <zyga> Chipaca: looking
[11:41] <zyga> Chipaca: why a map?
[11:41] <zyga> Chipaca: and can a map use Assignment keys? I assume go somehow makes that struct comparable beause it has trivial fields
[11:41] <Chipaca> zyga: because a set is a map without values
[11:42] <zyga> Chipaca: ah, right, that makes sesnse
[11:42] <zyga> Chipaca: thanks!
[11:43] <zyga> Chipaca: I'm looking at https://github.com/ubuntu-core/snappy/pull/208#discussion_r46454533
[11:43] <zyga> Chipaca: it seems the gustavo wants .err() on the deaemon.response (or was it resp) type
[11:43] <Chipaca> zyga: https://golang.org/ref/spec#Comparison_operators
[11:43] <zyga> Chipaca: not sure though
[11:44] <Chipaca> zyga: best to ask gustavo what gustavo wants :)
[11:44] <Chipaca> zyga: “Struct values are comparable if all their fields are comparable. Two struct values are equal if their corresponding non-blank fields are equal.”
[11:44] <zyga> Chipaca: right, I remember reading that a few weeks ago, I was just double checking
[11:45] <Chipaca> zyga: meaning that as long as the structs contain things that compare by value, it'll work as expected
[11:45] <Chipaca> meaning: no pointers, no slices
[11:45] <zyga> Chipaca: how would you feel if I added daemon.resp.err() method
[11:45] <Chipaca> zyga: puzzled
[11:45] <zyga> Chipaca: that conjures an error if the stuff is right
[11:46] <Chipaca> zyga: puzzled because client doesn't use daemon, and shouldn't
[11:46] <zyga> Chipaca: but gustavo pointed out a test case for api.go
[11:47] <zyga> Chipaca: so this is pure server side stuff
[11:48] <Chipaca> hrmm
[11:49] <Chipaca> i guess i'm going to go *read*
[11:49] <Chipaca> you meanie
[11:49] <zyga> Chipaca: well, I can go ahead and just do it
[11:49] <zyga> Chipaca: but it feels somewhat weird since it's just for testing
[11:49] <zyga> Chipaca: and this structure never becomes an error otherwise, as far as I can see
[11:49] <Chipaca> zyga: there was a different comment from gustavo about err(), but i can't see it now
[11:49] <Chipaca> where was taht?
[11:49] <Chipaca> that*
[11:50] <zyga> Chipaca: it was about client side stuff and it's done now
[11:50] <zyga> Chipaca: it was about processErrorResponse()
[11:50] <Chipaca> right, i think that might be where my confusion comes from (and i suspect, his too)
[11:50] <zyga> Chipaca: there are similar comments involving .err() in several branches AFAIR
[11:53]  * zyga wonders what to do about pending requests as stuff is blocked
[11:53] <zyga> Chipaca: I'll work on assign changes we've discussed
[11:53] <zyga> Chipaca: even if it doesn't land before end of week, I'd like to have something that works to show
[12:01] <Chipaca> zyga: there ya go
[12:02] <Chipaca> zyga: i think that one's ready to land with this, yes?
[12:06] <zyga> Chipaca: https://github.com/ubuntu-core/snappy/pull/208 ? I'd like to improve the test for client.AddCapability() to observe the POST being made
[12:06] <zyga> Chipaca: I'm just reading how to mock that with SetDoer
[12:07] <asac> mvo: 15.04
[12:07] <asac> mvo: if you have a snap i can test it
[12:07] <mvo> asac: what version of webdm is installed for you?
[12:08] <Chipaca> zyga: so you want an integration-ish test
[12:08] <asac> mvo: http://104.196.33.52:4200/
[12:08] <ogra_> lol
[12:08] <ogra_> yay security !
[12:08] <Chipaca> ogra_: ?
[12:08]  * ogra_ goes and installs transmission in asac'S machine 
[12:08] <asac> thats great
[12:08] <asac> do it :)
[12:09]  * ogra_ does
[12:09] <Chipaca> *gasp*
[12:09]  * Chipaca installs windows 10 on ogra's machine
[12:09] <asac> tell me if you can do anything with it
[12:09] <ogra_> http://104.196.33.52:9091/ seems blocked by your firewall
[12:09] <asac> see :P
[12:09] <Chipaca> asac: i uninstalled http.chipaca
[12:10] <Chipaca> asac: you can't trust that chipaca person
[12:10] <mvo> asac: please run "sudo snappy install webdm/edge" and see if that installs version 0.11
[12:10]  * ogra_ removes transmission again ... useless :P
[12:10] <asac> seems hackers have some sense of clean room :)
[12:10] <ogra_> do we have a bu for the "ubuntu-core is -1B big"
[12:10] <ogra_> ?
[12:11] <ogra_> *bug
[12:11] <asac> mvo: sudo snappy install webdm/edge
[12:11] <asac> Installing webdm/edge
[12:11] <asac> webdm/edge failed to install: a package by that name is already installed
[12:11] <mvo> asac: hm, sudo snappy update webdm/edge maybe ? if not you need to uninstall first and then reinstall webdm/edge
[12:12] <mvo> (sorry for that)
[12:12] <Chipaca> hah!
[12:12] <Chipaca> the url for channels in webdm needs to be *triple* escaped
[12:12] <Chipaca> e.g. http://104.196.33.52:4200/snap/http.chipaca%25252fstable/
[12:12] <ogra_> third time is the charm :)
[12:13] <ogra_> "Mode.fetch() failed"
[12:13] <ogra_> heh, and reloading it works :P
[12:13] <asac> mvo: update did nothing
[12:14] <mvo> asac: ok, please remove install again
[12:14] <asac> doing
[12:14] <asac> looks good
[12:14] <asac> see yourself
[12:15] <ogra_> nethack installed !
[12:15] <asac> just saw that :)
[12:15] <mvo> asac: yay
[12:15] <Chipaca> zyga: sorry, getting back to you now
[12:15] <mvo> asac: ok, if you don't find anything bad I will promote to stable after lunch
[12:15] <asac> mvo: so chnnels are now happy?
[12:15]  * Chipaca was having too much fun breaking asac's stuff
[12:16] <Chipaca> zyga: that test is supposed to check that the client made the right request, correct?
[12:16] <zyga> Chipaca: yes
[12:16] <Chipaca> zyga: in which case, grab cs.req and check it
[12:16] <zyga> Chipaca: I just figured that out
[12:16] <zyga> Chipaca: :D
[12:16] <zyga> Chipaca: it's a bit convoluted at first when you're not familiar
[12:16] <zyga> Chipaca: personally I would unabbreviate some of the variables
[12:16] <mvo> asac: yes, it seems to be. if you don't see anything breaking I will promote to stable
[12:16] <zyga> Chipaca: rsp,req,resp all look too similar
[12:16] <Chipaca> but they line up so nicely when everything uses just three letters :-p
[12:16] <mvo> nethack!
[12:17]  * asac installs lxd curl and mosquitto
[12:17] <ogra_> you have been eaten by a grue !
[12:17] <asac> hmm. lxd failed to install it tells me
[12:17] <zyga> Chipaca: I think it's because it's not my first language
[12:18] <ogra_> asac, it does that for docker too but in fact the install works
[12:18] <ogra_> asac, check on cmdline
[12:18] <asac> ok seems it doesnt really like concurrent installs :)
[12:18] <ogra_> i think the timeout is to sowrt or some such, bot do some setup
[12:18] <asac> lxd really failed
[12:18] <asac> but i think i just clicked too fast
[12:19] <asac> now it workd
[12:19] <Chipaca> zyga: i'm bad with names, everybody knows that
[12:19]  * ogra_ installs moon-buggy too ... now you have a true snappy gamer system !
[12:19] <asac> haha
[12:19] <asac> moon buggy is buggy :P
[12:19] <asac> nice game
[12:19] <asac>  moon-buggy.moon-buggy
[12:19] <asac> mkdir: cannot create directory ‘/home/ubuntu/apps/moon-buggy.dholbach’: Permission denied
[12:19] <ogra_> is it ?
[12:20] <ogra_> wow
[12:20] <asac> that feels like a bug
[12:20] <asac> in snappy
[12:20] <ogra_> yeah, it should use the version there
[12:20] <asac> the version?
[12:20] <asac> i have http.chipaca in that dir
[12:20] <asac> that has a version indeed
[12:20] <ogra_> /home/ubuntu/apps/moon-buggy.dholbach/$version/
[12:21] <asac> maybe
[12:21] <asac> who is creating that directory?
[12:21] <asac> snappy?
[12:21] <ogra_> the launcher i think
[12:21] <Chipaca> um
[12:21] <Chipaca> that'll happen
[12:21] <Chipaca> if you run the app once as root, and then as the user
[12:21] <asac> i didnt run it as root
[12:21] <Chipaca> hmm
[12:21] <zyga> Chipaca: /me wonders how to get the request body out of the "mock" doer code
[12:21] <Chipaca> ah, cannot create, not cannot read
[12:22] <asac> yes
[12:22] <Chipaca> zyga: req.Body
[12:22] <asac> we shouldnt have reomved http.chipaca i am sure
[12:22] <Chipaca> zyga: cs.req.Body
[12:22] <Chipaca> asac: I did that one
[12:22] <zyga> ahhh
[12:22]  * zyga is dumb
[12:22] <Chipaca> asac: i mean, i removed that
[12:22] <zyga> Chipaca: my code did cs.req.Body
[12:22] <zyga> note the req :/
[12:22] <zyga> wait
[12:22] <zyga> no
[12:22] <zyga> what's wrong?
[12:22]  * zyga looks
[12:23] <Chipaca> zyga: no, not dumb. inquisitive :-p
[12:23] <Chipaca> zyga: um, that looks right
[12:23] <asac> mosquitto seems to not register binaries
[12:23] <Chipaca> do you want the response body, or the request body
[12:23] <asac> e.g. there is nothing in PATH with mosq*
[12:23] <ogra_> should there ?
[12:23] <ogra_> (does it actually ship any binaries)
[12:23] <zyga> Chipaca: it doesn't work, see:
[12:23] <asac> curl works
[12:23] <zyga>     c.Check(cs.req.Body, check.Equals, "foo")
[12:23] <zyga> ... obtained ioutil.nopCloser = ioutil.nopCloser{Reader:(*bytes.Reader)(0xc820013650)}
[12:23] <zyga> ... expected string = "foo"
[12:23] <asac> ogra_: well, i think it does
[12:24] <asac> /apps/mosquitto.kartben/current/magic-bin/
[12:24] <asac> arm-linux-gnueabihf  mosquitto	x86_64-linux-gnu
[12:24] <ogra_> i thought it has a web UI
[12:24] <asac> nah its a mqtt CLI thingy
[12:24] <ogra_> ah, k
[12:24] <asac> at least i think
[12:24] <ogra_> the package is from may
[12:24] <asac> maybe i am wrong
[12:24] <asac> syre
[12:24] <asac> yes
[12:24] <ogra_> might need an update
[12:24] <asac> do we break old packages?
[12:25] <ogra_> well, the yaml formats all changed a lot in the last months
[12:25] <asac> so you are right
[12:25] <asac> there is a daemon running
[12:25] <asac> ok seems its really the broker
[12:25] <asac> not the cli
[12:25] <Chipaca> zyga: cs.req.Body is a ReadCloser
[12:25] <Chipaca> zyga: you need to read it
[12:26] <ogra_> ah, right
[12:26] <asac> so false-warning\
[12:26] <zyga> Chipaca: thanks
[12:29] <asac> ok i opened port mosquitto-1883 so you can now use that as your mqtt message broker
[12:30] <ogra_> asac, open 80 too ;)
[12:30] <asac> whats on 80?
[12:30] <ogra_> upnp-server
[12:30]  * ogra_ wants to see if webdav works via internet 
[12:30] <asac> ogra_: will this allow you to hack that tghing?
[12:31] <asac> lighthttp is running on it
[12:31] <ogra_> nah, it will only allow my nautilus to connect to dav://104.196.33.52/
[12:31] <asac> okk 80 should be open soon
[12:32] <ogra_> hmm
[12:32] <ogra_> ha ! works :)
[12:33] <ogra_> if you open vlc (or any other upnp/dlna capable player in your lan) you should see a snappy upnp server now
[12:33] <ogra_> with one song
[12:33] <asac> ogra_: this is not running in my lan
[12:34] <ogra_> ah
[12:34] <ogra_> well dav://104.196.33.52/ works at least :)
[12:34] <asac> yeah
[12:34] <asac> dont share illegal files there please :{
[12:34] <ogra_> heh
[12:34]  * ogra_ removes the file
[12:34] <asac> wait
[12:34] <asac> let me get it first :
[12:35] <ogra_> lol
[12:35] <ogra_> oh, bug !
[12:35] <ogra_> i cant delete it
[12:35] <asac> lol
[12:35] <asac> its a honeypot
[12:35] <asac> i called the police now
[12:35] <asac> with clear evidence
[12:35] <ogra_> haha
[12:35] <asac> where do i find that stuff?
[12:36] <asac> ok found it
[12:36] <ogra_> /var/lib/apps/upnp-server-armhf.ogra/0.1.0/Media/
[12:36] <asac> thats legal isnt it?
[12:36] <asac> its gone :P
[12:36] <ogra_> well, i paid for the mp3 ... spreding it isnt legal i think
[12:36] <ogra_> *spreading
[12:36] <asac> u can also pay for gpl software
[12:37] <ogra_> christams is coming soon !
[12:37] <ogra_> :)
[12:40] <asac> odd i can publish to that mosquitto thing
[12:40] <asac> but if i sub i dont see the message
[12:44]  * zyga fixed tests with Chipaca's advice!
[12:45] <zyga> Chipaca: https://github.com/ubuntu-core/snappy/commit/fe8ddc2c933db716ab9890f8c35b5315451786f6
[12:45] <ogra_> hmm
[12:45] <zyga> Chipaca: that's the new test, if you agree it's sufficient then let's land it
[12:45] <Chipaca> dude
[12:45] <Chipaca> duuuude
[12:46] <ogra_> why does snappy list on the RPi show generic-i386 and generic-amd64 ?
[12:46] <ogra_> webdm hides them i thnk
[12:46] <Chipaca> zyga: if you were going to unmarshal it, just pass json.NewDecoder(req.Body) ftw
[12:47] <Chipaca> snappy just spits out everything the store tells it
[12:47] <Chipaca> webdm is more cautious
[12:47] <Chipaca> maybe :-p
[12:48] <ogra_> i thought webdm just uses snappy as backend ...
[12:48] <ogra_> but apparently it adds extra filtering
[12:48] <zyga> Chipaca: oh, nice, I can tweak that
[12:48] <Chipaca> ogra_: it's also possible that one of the two is using the wrong store headers
[12:49] <ogra_> yeah
[12:49] <Chipaca> ogra_: webdm is linked against a version of snappy that might not be the system snappy
[12:49] <ogra_> yup
[12:49] <Chipaca> ogra_: (this is one of the things the rest api is trying to fix)
[12:49]  * Chipaca expects to get there before EOY
[12:49] <ogra_> +1
[12:52] <zyga> Chipaca: simplified https://github.com/ubuntu-core/snappy/commit/db9343ccda229cc40a0c676a3b10469bab2a2541
[12:55] <Chipaca> zyga: \o/
[12:55] <Chipaca> zyga: except for the bit about all tests failing
[12:56] <zyga> oh
[12:56] <zyga> yes, bits landed in the meantime
[12:56] <zyga> no worries, just merge
[12:59] <Chipaca> zyga: meaning i should just merge, or meaning it's just a merge that you're doing?
[12:59] <zyga> fixed
[12:59] <zyga> Chipaca: no, merge removed the carpet from under this branch's feet
[12:59] <zyga> Chipaca: I just pushed the fix for that, two trivial patches
[12:59] <Chipaca> k
[13:00] <zyga> Chipaca: https://github.com/zyga/snappy/commit/10fcafb771c5002bc9831714de0b6573fc4c45f1 and https://github.com/zyga/snappy/commit/3e458f3208f565ad327a1285912930d07326412c
[13:11] <sergiusens> kyrofa, are you up? I have some PRs and thought of bugging you instead of Chipaca ;-)
[13:11] <kyrofa> sergiusens, yeah man, hit me
[13:11] <kyrofa> sergiusens, snapcraft? Heading there now
[13:13] <sergiusens> kyrofa, yeah, one already reviewed by elopio but I left it there so you can go over it too; as soon as that is done, there are 3 more down the pipe
[13:14] <sergiusens> kyrofa, I would create them already but the PR doesn't update with the commit id's that have been merged :-/
[13:15] <kyrofa> sergiusens, looking at it now
[13:15] <elopio> sergiusens: kyrofa: I have one too: https://github.com/ubuntu-core/snapcraft/pull/137
[13:15] <elopio> sergiusens: this is the one you deleted before. Maybe it's still there because you hate it and want it to die.
[13:17] <kyrofa> Wait a minute... elopio why are you up?
[13:18] <elopio> I don't know. I can't sleep anymore.
[13:21] <kyrofa> Poor guy
[13:37] <mvo> asac: I updated webdm in the stable channel now to 0.11 too
[13:38] <Chipaca> zyga: you're going to push a merge to caps-api-remove-capability ?
[13:41] <kyrofa> sergiusens, now that we have two release branches, what is the process for getting a fix into both of them?
[13:42] <kyrofa> sergiusens, we might want to consider a CONTRIBUTING.md so github will provide guidance before anyone creates a PR
[13:43] <kyrofa> For instance, dholbach's PR would probably be useful to both branches, no?
[13:44] <asac> mvo: great!
[13:45] <zyga> Chipaca: yes
[13:45] <zyga> Chipaca: just fixing tests to mean stuff
[13:46] <Chipaca> k
[13:47]  * zyga starts to feel better about how requests work
[13:49] <sergiusens> elopio kyrofa, thanks
[13:49] <sergiusens> elopio, kyrofa here's another one https://github.com/ubuntu-core/snapcraft/pull/144
[13:49] <zyga> Chipaca: https://github.com/ubuntu-core/snappy/pull/211#commits-pushed-5d934ac
[13:50] <sergiusens> kyrofa, that is a good idea, I saw it would be picked up by github; want to craft one or should I?
[13:52] <zyga> Chipaca: I've added a TODO to document all the new REST calls
[13:52] <Chipaca> zyga: good :) the one around attributes will change soon, right?
[13:53] <Chipaca> meaning, dunno if it's worth documenting it until the whole thing is stable
[13:53] <kyrofa> sergiusens, I'll take a crack at it
[13:53] <zyga> Chipaca: attributes or assignments?
[13:53] <Chipaca> assignments, sorry
[13:53] <zyga> Chipaca: yes
[13:53] <zyga> Chipaca: very much so :)
[13:53] <Chipaca> and error handling overall
[13:54] <Chipaca> so don't worry *too* much about it :)
[13:54] <Chipaca> a little worry: ok. a lottle worry: very no
[13:54] <Chipaca> :)
[13:54] <kyrofa> sergiusens, but we still need to decide how we'll do it. Make a PR to both? Backport as needed from master to 1.x?
[13:54] <zyga> Chipaca: yes, I want to fix all the error handling on both client and daemon side
[13:55] <sergiusens> kyrofa, I'd say master first, and if it is supposed to go to 1.x make it as cherry pickable as possible (== less commits)
[13:56] <kyrofa> sergiusens, what if we suggested that PRs be squashed?
[13:56] <kyrofa> Too much?
[13:59] <sergiusens> kyrofa, yeah, I'm +1 there
[14:00] <kyrofa> sergiusens, alright I'll get on that as soon as I finish up this roslaunch thing
[14:03] <sergiusens> kyrofa, elopio ok, feel free to entertain yourself with this one https://github.com/ubuntu-core/snapcraft/pull/145 ;-)
[14:04] <filmee24> hello from germanmy
[14:04] <filmee24> *germany
[14:05] <elopio> filmee24: hello.
[14:05] <filmee24> where are you from?
[14:06] <elopio> filmee24: costa rica.
[14:06] <filmee24> cool. are you an developer?
[14:07] <davmor2> elopio: I still have my hat :)
[14:07] <elopio> filmee24: a quality assurance developer.
[14:08] <elopio> davmor2: I have mine too, but I can't wear it when I have long hair, it doesn't fit any more :(
[14:08] <davmor2> elopio: Ha I don't have that issue :D
[14:08] <dholbach> sergiusens, so 'vendor' for master should go away but for 1.x it can stay?
[14:08] <elopio> davmor2: I know. Lucky you!
[14:09] <davmor2> elopio: Yeah well you live in a country where you don't necessarily need a hat to keep warm either so fairs fair ;)
[14:10] <elopio> davmor2: it's not to keep you warn, it's to block the sun. I live in a country with sun, so yes, I win ;)
[14:12] <sergiusens> dholbach, yeah, for 1.x it needs to stay as 15.04 requires it
[14:13] <davmor2> elopio: but if you spray it with gortex it becomes waterproof and is the ideal hat to keep you warm and dry :D
[14:13] <sergiusens> kyrofa, sorry, I didn't wait for your review :-/
[14:13] <sergiusens> kyrofa, it is a good point and I will add that as part of the test
[14:13] <davmor2> elopio: although you still win you have sun
[14:13] <kyrofa> sergiusens, haha, no problem
[14:19] <dholbach> sergiusens, done
[14:20] <kyrofa> Oh, sergiusens elopio I have another meeting clashing with standup today. Any chance we can push it back an hour?
[14:24] <elopio> kyrofa: works for me. It will clash with my meeting with fgimenez, but we can just invite him today.
[14:24] <kyrofa> Hey sounds good to me
[14:24] <sergiusens> elopio, kyrofa hmm, I'll see how I can make it then
[14:25] <kyrofa> sergiusens, if that's difficult, would pushing it back a half an hour be better?
[14:26] <sergiusens> kyrofa, nah, an hour is easier, it just needs to last 15 minutes tops ;-)
[14:26] <kyrofa> And worst case I just miss it today if you guys want to just hold it at 0930. I've finished the ROS install bits and am working on upping the catkin plugin test coverage... which isn't so good
[14:26] <kyrofa> Okay we can do that!
[14:32] <dholbach> sergiusens, are you going to be on vacation at 21st Dec already?
[14:33] <sergiusens> dholbach, oh, I'll be avail on the 21st
[14:33] <sergiusens> dholbach, forgot to mention; I'll be off all other days though ;-)
[14:33] <dholbach> sergiusens, ok, cool - let me do some timezone math
[14:33] <sergiusens> dholbach, sure, I can wiggle time around and about
[14:34] <sergiusens> dholbach, just try to not make it 3AM my time :-) but I'm fine with 6AM or 10PM ;-)
[14:34] <sergiusens> even midnight is fine if must be
[14:36] <elopio> sergiusens: I'm playing with hard stuff now, cloud9 that's nodejs. It ends up with the modules in /apps/cloud9.sideload/current/lib/node_modules/ls
[14:36] <elopio> sorry, hit enter too soon.
[14:37] <elopio> It ends up with modules in /apps/cloud9.sideload/current/lib/node_modules/c9/node_modules, but it's not finding them.
[14:37] <elopio> on require, it says that the module is not found.
[14:37] <elopio> sergiusens: should I move the modules from node_modules/c9/node_modules to node_modules ?
[14:38] <zyga> mvo: do you want some more action on https://github.com/ubuntu-core/snappy/pull/211
[14:39] <sergiusens> elopio, show me the yaml
[14:39] <elopio> sergiusens: https://github.com/elopio/core/blob/snapcraft/snapcraft.yaml
[14:40] <dholbach> sergiusens, if I checked correctly your 8:00 should be 19:00 in Taipeh - that might be a compromise?
[14:40] <mvo> zyga: I was mostly wondering if any name needs quoting, but if its only [a-zA-Z0-9] this is a non-issue of course
[14:40] <sergiusens> dholbach, that's fne
[14:49] <elopio> balloons: I've sent a google task. Can you please check if it's ok?
[14:49] <balloons> sure thing elopio
[14:50] <balloons> elopio, looks good, but you'll need to add some links in the description to where snappy lives, the code to check out, etc
[14:51] <balloons> if you write a little blurb, you can probably include it in all the tasks you write
[14:51] <elopio> ah, right. I hate this description box.
[14:51] <balloons> elopio, yea, me too. very much. It's intended you use there API to bulk create tasks, but I've not trid it
[14:51] <jdstrand> mvo: hey, when is the next stable supposed to be generated? it looks like it is behind on a security update for the kernel
[14:52] <elopio> balloons: done.
[14:52] <elopio> balloons: is the time to complete in full days? like 8 hours per day?
[14:52] <balloons> elopio, the tasks are intended to be 3-5 hours each
[14:53] <balloons> the time is how many days they have to do it. It's intended to release if someone says, 'i'll work on it', but then neve rdoes
[14:53] <balloons> so the task frees for someone else
[14:53] <balloons> you can probably just leave them all on the default
[14:53] <elopio> balloons: So I might have to split this, one test per task. But it's going to be hard to organize that, because all the tests will depend on the first.
[14:54] <balloons> elopio, you could split it into two. Do the first task (that has a dependency on the rest) as one task
[14:55] <balloons> then do one more task with several instances (so you don't have to create it multiple times). Each person can take a test you've listed
[14:55] <balloons> we can hold back the second task until the first is done
[14:55] <pedronis> mvo: Chipaca: thanks for the reviews of the helper branches
[14:58] <elopio> balloons: I've just increased the instance count to 7. After some thinking, it seems the merge it's not going to be so hard.
[14:59] <zyga> Chipaca: I've finished the refactoring, I'll give it some tests and poke you for some reviews if you have the time
[15:08] <zyga> mvo: can I merge https://github.com/ubuntu-core/snappy/pull/211
[15:11] <mvo> zyga: merged, yes
[15:13] <zyga> mvo: thanks
[15:31] <sergiusens> attendee.Join() for attendee in [elopio, kyrofa]
[15:32] <elopio> balloons: I'm done with the tasks. That's all I can think of for now.
[15:32] <balloons> elopio, thank you very much for adding the tasks! I appreciate you volunteering and doing the rough bit of adding things to the tool
[15:42] <Chipaca> zyga: pedronis: back from the school run, holler if there's anything i should look at first
[15:49] <zyga> Chipaca: ack
[15:50] <elopio> fgimenez: I'm done with today's snapcraft meeting. Do you want to hang out? (I have nothing to report about snappy, just playing with snapcrafting hard things)
[15:52] <fgimenez> elopio, we can meet tomorrow then, i've been fixing some of the issues in the scalingstack instances, hopefully we'll have a green (and ultrafast) build when the last firewall rule will be added
[15:52] <elopio> fgimenez: I saw your RTs. Thanks!
[15:54] <fgimenez> elopio, np :) i'll continue with the cli purge and the update-rollback stress tests
[15:55]  * zyga has a simple working capability demo!
[15:57] <Chipaca> pedronis: origin, err = demoCheckSnapAssertions(snap)
[15:57] <Chipaca> pedronis: <3
[15:57] <pedronis> heh
[15:57] <pedronis> or insanity, but yes
[15:58] <Chipaca> although i suspect this'll make the automagic sideload version thing not pop up, which'll be a problem for some folks
[15:58] <Chipaca> but still
[15:59] <sergiusens> elopio, kyrofa I've """fixed""" the tests
[15:59] <pedronis> Chipaca: well this is not planned to go to master indeed because I  don't think we have decide what we want/what should be the rules
[16:00] <pedronis> and because is hooked at the wrong place etc etc
[16:03] <Chipaca> pedronis: yep yep, but i', still happy about it already doing things that were umpossible before :-)
[16:05] <pedronis> Chipaca: yes, it's quite powerful, can express various things once the pieces are in place
[16:26] <ogra_> pitti, did the handling of "allow-hotpulg" in /e/n/i change with the latest systemd ? we see some werid behavior where the interface comes up unconfigured recently
[16:26] <pitti> ogra_: no, shouldn't have; we also didn't get a newer ifupdown
[16:26] <ogra_> if i add "auto eth0" additionally it seems to come up fine
[16:26] <ogra_> yeah
[16:26] <pitti> ifupdown has changed a bit in Debian, but we haven't merged that yet
[16:27] <pitti> ogra_: but NB that we never supported "allow-hotplug" in ubuntu
[16:27] <ogra_> we have used it successfully since 15.04 i think
[16:28] <ogra_> it started misbehaving today on the RPi ... which had no image builds for a week (so your systemd upload only landed today in images) ...
[16:29] <pitti> (in meeting, will check more closely in a bit)
[16:30] <ogra_> thx
[16:31] <ogra_> pitti, we couldnt use "auto" because then the system would wait for network when the NIC isnt plugged in on boot ... "allow-hotplug" worked just fine in the past
[16:32] <pitti> ogra_: right, with plain devices it ought to work
[16:32] <pitti> ogra_: our ifenslave, bridge-utils etc. packages don't work with it though, but I guess that doesn't concern you much
[16:32] <ogra_> (note that we still have predictable names disabled ...)
[16:33] <ogra_> i dont think we have either installed
[16:52] <pitti> ogra_: so the last change to ifup@.service happened before October, so I doubt that's it; is that reproducible? can you specify "weird behaviour"?
[16:52] <ogra_> pitti, well, no IP :)
[16:52] <pitti> ogra_: do you have a journal output?
[16:53] <ogra_> i just collected http://paste.ubuntu.com/13647681/ for Chipaca
[16:53] <Chipaca> there's no ifup in that log
[16:53] <ogra_> yeah
[16:53] <pitti> so I see "eth0: link becomes ready", but nothing further
[16:53] <ogra_> right
[16:54] <pitti> and that happend after networking.service (as that's only looking at "auto", so ok)
[16:54] <ogra_> the system was installed about a month ago and worked til yesterday
[16:54] <ogra_> (and is set to auto upgrading)
[16:55] <pitti> you checked /e/n/i already, I suppose
[16:55] <ogra_> yes
[16:55] <ogra_> (RaspberryPi2)ubuntu@localhost:~$ cat /etc/network/interfaces.d/eth0
[16:55] <ogra_> allow-hotplug eth0
[16:55] <ogra_> iface eth0 inet dhcp
[16:55] <ogra_> (RaspberryPi2)ubuntu@localhost:~$
[16:55] <ogra_> thats our default
[16:56] <Chipaca> and it works some of the time :)
[16:56] <ogra_> so somehow we do not get a plug event anymore ... one that we did get before
[16:56] <ogra_> yeah
[16:56] <ogra_> and rickspencer3 sees it too ...
[16:56] <Chipaca> ogra_: could we see the journalctl of one time it *does* work?
[16:56] <ogra_> i can try a few reboots and hope :)
[16:57] <pitti> you can also add a "set -x; exec 2>>/run/networking.trace" to /lib/udev/net.agent
[16:57] <ogra_> yeah, in 10min once my boot finished :P
[16:57] <pitti> it indeed smells like there's no uevent when the device gets added
[16:58] <ogra_> right
[16:58] <ogra_> thats my suspicion
[16:58] <ogra_> but the kernel didnt change
[16:59] <pitti> ogra_: yeah, I can't really imagine that either
[17:00] <pitti> ogra_: it's actually more likely that there's some race condition in /lib/udev/net.agent
[17:00] <ogra_> yep
[17:00] <pitti> perhaps /etc/network/interfaces gets mounted too late
[17:00] <ogra_> it gets mounted from  initrd
[17:00] <ogra_> we moved all /etc mounts there
[17:00] <pitti> that's the bit that has broken stuff dozens of times already
[17:00] <pitti> ah
[17:00] <pitti> very good, thanks
[17:01] <ogra_> ok, i managed a boot with IP
[17:01] <ogra_> http://paste.ubuntu.com/13647897/
[17:01] <ogra_> Chipaca, ^^
[17:01] <Chipaca> and there's ifup
[17:02] <pitti> that could be because at the time /etc/init.d/networking ran eth0 was already there
[17:02] <ogra_> yep
[17:03] <pitti> although, no, it shoudl have happened before the "Started" then, as ifup -a should wait for completion
[17:03] <ogra_> well, i wonder why it worked ad-hoc after i added your set -x
[17:04] <ogra_> i probably changed the race
[17:04]  * ogra_ tries another reboot 
[17:05] <ogra_> yeah ... IP again
[17:06] <pitti> just leave the set -x :)
[17:06] <ogra_> well, your package ... add it please :P
[17:06] <pitti> ogra_: more seriously, could you just add an echo before/after the ifup call? that sohudl appear in the journal, but be faster than the set -x
[17:07] <ogra_> well, i got /run/networking.trace now ... but i cant make it come up without IP anymore ...
[17:07] <ogra_> let me try the echos
[17:10] <Chipaca> sooo
[17:10] <Chipaca> udev coldplug
[17:10] <Chipaca> runs before mounting of interfaces.d
[17:10] <Chipaca> :-(
[17:12] <ogra_> ouch
[17:12] <ogra_> yeah, the echo doesnt show up anywhere in the journalctl
[17:12] <ogra_> so the /lib/udev/net.agent helper isnt run at all
[17:14] <ogra_> Chipaca, but why did the order change (if it did)
[17:15] <Chipaca> it looks like a race
[17:15] <ogra_> right, but one we didnt have before
[17:15] <Chipaca> pitti could advise
[17:15]  * ogra_ would really like to know what triggers it 
[17:15] <Chipaca> ogra_: it's possible the old file leftover underneath was hiding this issue
[17:16] <ogra_> i can try to put it back
[17:16] <ogra_> lets see
[17:18] <ogra_> hmm ... i have an IP after reboot
[17:18]  * ogra_ tries a few more
[17:22] <ogra_> 5 out of 5 boots had an IP now
[17:22] <ogra_> so i guess thats it
[17:24] <Chipaca> pitti: so, what can we do?
[17:24] <pitti> what is "the old file"?
[17:25] <pitti> I would say "boot with debug" to see the events that are going on, but that changes the timing even more dramatically
[17:25] <ogra_> OH !!!
[17:25] <Chipaca> ogra_: ?
[17:25] <pitti> so perhaps another echo to /lib/udev/net.agent at the top, to see if it's called at all?
[17:25] <pitti> perhaps some check in the middle fails, like the ifquery
[17:25] <pitti> OH! sounds good
[17:26] <ogra_> heh
[17:26] <Chipaca> unless it's followed by a ₂
[17:26] <ogra_> soo ...
[17:26] <ogra_> the handling of /etc in the initrd obviously only landed in 15.04 ...
[17:27] <pitti> Chipaca: no, OHOO isn't a thing; CH₂COOH is, though
[17:27] <Chipaca> pitti: OH₂ is a thing tho
[17:27] <pitti> true that
[17:27] <Chipaca> granted CH₂COOH sound smore fun
[17:28] <ogra_> thats missing in the initrd mount script in rolling http://paste.ubuntu.com/13648333/
[17:29] <Chipaca> there you go :-D
[17:29] <Chipaca> which reminds me, we should tell systemd to not mount all that stuff all over again
[17:30] <pitti> oh, do you mount it in initrd *and* in fstab?
[17:30] <pitti> but if it's already mounted, it shoudl be fine I guess
[17:30] <Chipaca> pitti: it seems we aren't yet doing it like that in rolling, but we should, because of these races i guess
[17:32] <ogra_> fix uploaded
[17:32] <ogra_> pitti, it just adds a lot of moise to the boot
[17:32] <ogra_> *noise
[17:33] <pitti> ah, about "already mounted wahwahwah"?
[17:33] <Chipaca> noise][: ogra_ says you slow him down
[17:33] <ogra_> 4-5lines about "hey i tried to mount that ... y'know, it iis mounted already ... so i'll probably not mount it"
[17:33]  * Chipaca tries to start a fight
[17:33]  * pitti gets out the popcorn and the CH₂COOH
[17:33] <ogra_> pitti, yeah
[17:34] <ogra_> Chipaca, i didnt say slow-down ... just that noise][ is chatty :)
[17:35]  * Chipaca wonders why pitti has acrylic acid with his popcorn
[17:35]  * Chipaca blames systemd
[17:35] <pitti> oh, crap! I guess I should rather get CH₃COOH :)
[17:35] <ogra_> rickspencer3, so tomorrows image should be fine again ... til then you can keep the "auto"
[17:35] <rickspencer3> ogra_, ack
[17:35] <pitti> err no,
[17:36] <pitti> CH₃CH₂OH
[17:36] <pitti> it's been too long :)
[17:36]  * ogra_ wonders if this channel is now NSA logged ... 
[17:36] <ogra_> chemical formulas !
[17:36] <Chipaca> I *suspected* that was what you were looking for
[17:36] <pitti> Chipaca: you wanted to start a fight, now go :)
[17:36] <Chipaca> :)
[17:37] <Chipaca> :)
[17:41] <sergiusens> Chipaca, another thing I don't like about irc, writing like a fool without knowing I was offline :-P
[17:41] <sergiusens> elopio, updated the review
[17:42] <Chipaca> sergiusens: granted
[17:42] <Chipaca> sergiusens: I don't like it when you write like a fool either
[17:43]  * Chipaca runs
[17:43] <sergiusens> Chipaca, well at least we agree :-)
[17:43]  * sergiusens already ran earlier today
[17:43] <sergiusens> :-)
[17:45] <sergiusens> Chipaca, btw, maybe you want to look at https://github.com/ubuntu-core/snapcraft/pull/145/files ;-)
[17:47] <elopio> sergiusens: can you document the execute function? I think that will clear my questions.
[17:50] <sergiusens> elopio, sure
[17:51] <sergiusens> elopio, it is the former cmds.py `cmd` in some sense
[17:51] <sergiusens> elopio, the only problem is, if I document it now, you will say it doesn't do what I say it should ;-)
[17:52] <elopio> sergiusens: I would be happy with TODOs :)
[17:52] <elopio> sergiusens: the 'stage' argument feels overloaded. Do we have a better name for that? 'step' maybe?
[17:54] <sergiusens> elopio, `step` is good, I think it is how we document it
[17:56] <Chipaca> longsleep: you around?
[17:57] <sergiusens> elopio, is this good enough paste.ubuntu.com/13648814/ ?
[18:03] <elopio> sergiusens: yes, thanks!
[18:03] <elopio> as it is public, it deserves a docstring. But maybe... not yet?
[18:04] <elopio> I'll leave you my +1.
[18:04] <sergiusens> elopio, not yet, they will be confusing; they'll be there when I add `strip`
[18:04] <elopio> ok
[18:07] <sergiusens> elopio, there; there's a TODO for the docstring too
[18:07]  * elopio <- happy
[18:12] <sergiusens> elopio, kyrofa https://github.com/ubuntu-core/snapcraft/pull/148
[18:27] <sergiusens> elopio, I have no idea how the code coverage dropped; well I do, I removed test code that probably made the percentage go up
[18:29] <nessita> elopio, hi! perhaps you can help me. I would like to create a snap package, the dummiest but valid possible snap package
[18:30] <nessita> elopio, any advice on how to do that?
[18:40] <pedronis> nessita: looking for something in particular? you can start from hello-world and strip even the few bits it has out
[18:45] <nessita> pedronis, nothing in particular, I just need to populate my account
[18:45] <nessita> pedronis, have a link handy for hello-world?
[18:48] <pedronis> nessita: it originally lived here lp:~snappy-dev/snappy-hub/snappy-examples/   and now that stuff is at https://github.com/ubuntu-core/snappy-testdata (don't thinkt here are meaningful differences for hello-world  atm)
[18:48] <nessita> pedronis, thank you!
[18:53] <elopio> nessita: pedronis: even dummier than that: https://github.com/ubuntu-core/snappy/tree/master/integration-tests/data/snaps
[18:55] <elopio> nessita: and you can strip them even more removing the binaries from basic-binaries. Then it would be nothing useful, just metadata. I think nothing complaints about that.
[18:58] <nessita> elopio, amazing, thanks!
[18:59] <elopio> ah, yes, there is one there already, called basic.
[18:59] <elopio> soon we will be able to even remove the icon from there.
[19:00] <ogra_> just wait until we can even remove the code (and it still does what it is supposed to)
[19:00] <nessita> ogra_, looking forward to that!
[19:00] <ogra_> :)
[19:32] <sergiusens> elopio, more of the same https://github.com/ubuntu-core/snapcraft/pull/149
[20:40] <kyrofa> elopio, I'm noticing something weird, wondering if you can verify and perhaps explain
[20:42] <kyrofa> elopio, as soon as ubuntu-core-launcher launches something (e.g. a snapcraft .wrapper sript), $TMPDIR seems to be reset to /tmp instead of the /tmp/snaps/blah path
[20:42] <sergiusens> kyrofa, that is just a new namespace being setup
[20:42] <ogra_> kyrofa, that only looks like :)
[20:42] <ogra_> it is confusing at first :)
[20:42] <sergiusens> kyrofa, from the apps point of view it is tmp, if you look at it from the outside, it will be /tmp/snaps/blah
[20:43] <kyrofa> Gahh
[20:43] <ogra_> touch a file in /tmp and you will see
[20:43]  * kyrofa 's head explodes
[20:43] <sergiusens> kyrofa, ns does that sometimes :-)
[20:44] <kyrofa> Thanks guys :)
[20:49] <kyrofa> sergiusens, so for file access, once u-c-l has launched it, file access needs to be relative to $SNAP_APP_PATH? i.e. does this explain why this script which is trying to open $SNAP_APP_PATH/blah actually fails?
[20:49] <kyrofa> It should be trying to just open /blah ?
[20:49] <sergiusens> kyrofa, no
[20:49] <ogra_> kyrofa, writes should go to SNAP_APP_DATA_PATH
[20:49] <sergiusens> kyrofa, $SNAP_APP_PATH/blah opening that should work
[20:50] <sergiusens> as long as the envvar is correct ;-)
[20:50] <ogra_> yeah
[20:50] <kyrofa> sergiusens, hmm, okay something else is going on here then. I'll keep digging
[20:50] <sergiusens> kyrofa, snappy install hello-world and run `hello-world.env`
[20:50] <sergiusens> kyrofa, you do that while I add recursion to the lifecycle to properly handle 'after' requests :-)
[20:52] <kyrofa> sergiusens, ooo recursion. Does that mean if I have enough 'after's I can blow the stack?
[20:52] <sergiusens> kyrofa, no, it means that 'after' is just broken; or only solves the case for the 'all' case ;-)
[20:52] <kyrofa> :P
[21:17] <kyrofa> sergiusens, I found my issue. The shebang in a python script was pointing to the snapcraft install directory and not the installed snappy location. #!/usr/bin/env python seems to work as expected, but is that okay in a .snap?
[21:21] <ogra_> as long as your interpreter is in $PATH ... and as long as it is called "python" and not something like "python3"
[21:21] <ogra_> the wrapper usually puts SNAP_APP_PATH/bin and sbin in PATH
[21:21] <sergiusens> kyrofa, totatlly
[21:22] <kyrofa> ogra_, yup, okay good, moving on
[22:08] <kyrofa> sergiusens, I'm trying to use self.run to run sed... and having all kinds of issues
[22:09] <sergiusens> kyrofa, use subprocess.check_call
[22:09] <sergiusens> kyrofa, if you need to run a system command
[22:10] <sergiusens> kyrofa, path and libraries will be all reffing whatever is in your install and stage dir if not
[22:10] <kyrofa> sergiusens, ah interesting, okay
[22:10] <sergiusens> kyrofa, may I recommend a python regex ;-)
[22:10] <kyrofa> sergiusens, I was thinking about that too
[22:10] <sergiusens> kyrofa, if having issues, Chipaca always has the magic one liners ;-)
[22:10] <kyrofa> sergiusens, heh, good to know!
[22:11] <sergiusens> kyrofa, elopio btw, any opinion on this? https://github.com/sergiusens/snapcraft/commit/f4c5430b17bc7860b0c976d6cbfbea2860db52df#diff-d5a0fb27fd41b8c98e53ca2b53bdb901R42
[22:11] <Chipaca> how can i help?
[22:11] <sergiusens> it's not a PR yet, but I just finished battling the python  type system
[22:12] <sergiusens> Chipaca, oh, eventually, some regexes with python (to not call sed)
[22:13] <sergiusens> Chipaca, well, if you have time, want to see if that `execute` function makes sense to you https://github.com/sergiusens/snapcraft/commit/f4c5430b17bc7860b0c976d6cbfbea2860db52df#diff-d5a0fb27fd41b8c98e53ca2b53bdb901R42 ?
[22:28] <Chipaca> sergiusens: makes sense
[22:28] <Chipaca> by which i mean, nothing obviously wrong
[23:46] <sergiusens> Chipaca, thanks
[23:48] <sergiusens> elopio, I think getattr is more expensive than if/elif
[23:48]  * sergiusens checks