[07:05] <TheMue> morning
[07:26] <fwereade__> TheMue, heyhey
[07:30] <TheMue> fwereade__: heya
[07:33] <TheMue> fwereade__: any good idea on how to test the cleaner? maybe i should export an access to the size of the cleanup collection ... *loudThink*
[07:34] <fwereade__> TheMue, yeah, export_test sounds sensible to me
[07:36] <TheMue> fwereade__: ok, will go this way
[07:49] <TheMue> *bibber*
[07:49]  * TheMue switched clothes to summer mode, but right now we have 12°, not very much
[07:58] <thumper> fwereade__: hey, you around?
[07:58] <fwereade__> thumper, hey dude
[07:59] <thumper> fwereade__: I made a calendar appt with you, but perhaps we could do it now?
[07:59] <fwereade__> thumper, sure, just 5 mins to clean up some tests please?
[07:59] <thumper> sure, np
[07:59] <jam> hi danilos
[07:59] <jam> would you prefer a G+ hangout to mumble today?
[07:59] <thumper> hi jam, danilos
[07:59] <danilos> jam: hi
[07:59] <jam> hey thumper, I'm suprised to see you still around
[07:59] <danilos> jam: whatever works for you, generally hangouts
[08:00] <jam> are you still poaching mgz from me this week ?
[08:00] <danilos> thumper, hey-hey
[08:00] <thumper> jam: monday nights are a convenient time to catch up
[08:00] <jam> danilos: https://plus.google.com/hangouts/_/865fe063d65c84b4533952ee66bfefaec8fc18d8
[08:00] <thumper> grab people at the start of the week
[08:00] <jam> I added it to the calendar event
[08:00] <thumper> dinner is done here
[08:00] <jam> thumper: and throttle them?
[08:00] <danilos> jam: cool, getting in
[08:01] <thumper> jam: nothing so violent
[08:19] <rogpeppe1> mornin' all, BTW
[08:20] <TheRealMue> rogpeppe1: heya
[09:06] <thumper> mgz_: you up?
[09:06] <thumper> hi rogpeppe1
[09:06] <thumper> rogpeppe1: I have a juju-core branch up for the loggo changes
[09:06] <rogpeppe1> thumper: yo!
[09:07] <rogpeppe1> thumper: i LGTM'd it
[09:07] <thumper> cool, ta
[09:07] <thumper> I'll land things tomorrow
[09:08] <rogpeppe1> thumper: great
[09:08] <rogpeppe1> thumper: any feedback on the loggo CL?
[09:08] <thumper> rogpeppe1: it's all good, will land unchanged
[09:08] <rogpeppe1> thumper: lovely, thanks a lot
[09:08] <mgz_> thumper: yup
[09:09] <thumper> rogpeppe1: jam also raised the point about the logger and module separatness, and I think it may well be a hang over from C++ where you won't want to hand out pointers you care about
[09:09] <rogpeppe1> thumper: what do you think of my other suggested changes (lose case insensitivity, always use ";" as a separator... there might've been another one too)
[09:09] <thumper> because people might delete them
[09:09] <rogpeppe1> ah
[09:09] <rogpeppe1> thumper: i think you can probably lose the whole concept of "module"
[09:09] <thumper> rogpeppe1: actually I may have missed those, but I'm ok with them
[09:10] <rogpeppe1> thumper: i just mentioned them in the CL description
[09:10] <thumper> rogpeppe1: yeah, I think go gives more protection there, so could be ok
[09:10] <thumper> I thought the other day, when jam suggested it, that I had a good reason why it was bad
[09:10] <thumper> but when I thought again, I couldn't recall
[09:10] <thumper> so I'll think a bit more, and we may be able to get rid of modules... and just have loggers
[09:11] <thumper> mgz_: quick hangout?
[09:11] <rogpeppe1> i think that may end up nicer
[09:11] <jam> thumper: I would probably say that Logger should be an Interface, rather than a concrete type. What do you think?
[09:11] <rogpeppe1> jam: why would you want to do that?
[09:11] <mgz_> thumper: sure
[09:11] <thumper> hmm.. that is an interesting idea
[09:11] <thumper> I like interfaces
[09:11]  * rogpeppe1 likes interfaces too
[09:12] <jam> rogpeppe1: you never want to muck with the internals anyway
[09:12] <jam> and it lets you do all sorts of nice tricks in test suites, etc
[09:12] <rogpeppe> jam: hmm, i'm not sure
[09:12] <jam> It is a bit of "least information that you should care about" which is the interface.
[09:12] <rogpeppe> jam: it's a big interface
[09:13] <rogpeppe> jam: and you can already replace the logger with something test-suite specific
[09:14] <rogpeppe> jam: and if it's not an interface call, the compiler can potentially work out the arguments don't escape
[09:15] <jam> rogpeppe: 5 related APIs doesn't seem very wide to me, and global objects that must be concrete types can be a bit clumsy when you really want something else. However, I agree that the compile-time optimization is nice.
[09:15] <rogpeppe> jam: Logger has 16 methods. i'd say that's a pretty big interface.
[09:17] <rogpeppe> jam: i'd be more interested in something which gave you more than one possible logging hierarchy.
[09:18] <jam> thumper: what was your thought on the Is* methods being public? Are you expecting people to do a pre-check before computing something expensive?
[09:18] <rogpeppe> jam: but actually the Writer interface probably gives you everything you need for the fancy tricks in test suites
[09:19] <thumper> jam: I thought it could be a possibility
[09:21] <rogpeppe> thumper: i think it's reasonable to expose them, but perhaps compress them all into IsLevelEnabled(Level) bool
[09:24] <jam> thumper: well, you do have GetEffectiveLevel which gives you that information, it seems a bit of "you can ask 3-different ways for the same info, because we're not sure what fits best".
[09:27] <rogpeppe> jam: yeah, i tend to agree with that. given how rare it's likely to be, log.EffectiveLevel() <= level is probably good enough.
[09:30] <rogpeppe> jam: BTW the compiler does currently know that the variadic argument to Logf, Errorf, etc does not escape, and saves an allocation per call accordingly
[09:32] <thumper> rogpeppe: btw, if you have log.Errorf("100% failure"), it kinda messes up
[09:32] <thumper> rogpeppe: as it expects params for a % thingy
[09:32] <thumper> which is why the special case used to be there
[09:32] <thumper> anyway, I'm off now
[09:32] <rogpeppe> thumper: that's a problem with using % in any printf format string
[09:33] <thumper> I'll leave you two to argue
[09:33] <jam> thumper: doesn't that need to be "100%% " anyway?
[09:33] <rogpeppe> jam: +1
[09:33] <thumper> should have an Error one that only takes a message
[09:33] <rogpeppe> thumper: govet will warn you about the above
[09:33] <thumper> not touched govet
[09:33] <rogpeppe> thumper: yeah. or Error(...interface)
[09:33] <thumper> does it do pets?
[09:33] <rogpeppe> thumper: only pet projects
[09:33] <thumper> ha
[09:34] <jam> thumper: govet is the "go compiler doesn't believe in warnings only errors, so things we might want warnings on we put in another tool" :)
[09:34] <rogpeppe> thumper: there's also golint now
[09:34]  * thumper off to watch game of thrones
[09:34] <rogpeppe> thumper: enjoy!
[09:34] <jam> thumper: enjoy
[09:34] <rogpeppe> it's interesting seeing what golint says about our code actually
[09:35] <rogpeppe> the most frequent warning is that it prefers ID to Id.
[09:35] <jam> rogpeppe: on the same premise as URL vs Url ?
[09:35] <rogpeppe> jam: i guess.
[09:36] <rogpeppe> jam: only i'd always reasoned the other way
[09:36] <jam> though ID isn't an acronym is it?
[09:36] <rogpeppe> jam: exactly
[09:36] <rogpeppe> jam: but evidently in google, they've gone with ID
[09:37] <rogpeppe> jam: github.com/golang/lint/golint if you want to play
[09:47] <fwereade__> Makyo, ping
[10:23]  * rogpeppe is going to reboot again. i'm finding raring really quite buggy.
[10:37]  * TheMue is at lunch
[10:58] <rogpeppe> sigh.
[10:59]  * rogpeppe goes off to submit a unity bug
[11:34] <mgz_> jam: standup today?
[11:45] <TheMue> *facepalm*
[11:45] <TheMue> Looking for an error at the right place helps a lot.
[11:48] <jam> mgz_: I probably missed the standup since you and danilos should be fast, but I'm around for 1:1 whenever you are ready.
[11:50] <mgz_> we're just wrapping up :)
[11:50] <mgz_> mumble?
[11:50] <danilos> jam: you've had your chance to join in as well :)
[11:50] <jam> danilos: you were doing a g+ I guess I just missed it
[11:51] <danilos> jam: yeah
[12:07]  * fwereade__ lunch
[12:17] <TheMue> ah, bug found
[15:40] <rogpeppe> not my day today. second forced reboot of the day.
[15:41] <rogpeppe> at least i only lost 30 minutes of work this time
[16:13] <mattyw> it looks like under the current version of juju-core (1.11) and possibly tip $HOME isn't set when a hook is running, has anyone else seen or reported this? I couldn't see a bug for it
[16:15] <rogpeppe> mattyw: hmm, interesting. was it definitely set before?
[16:15] <mattyw> rogpeppe, 1.10 it seemed to be yes
[16:16] <rogpeppe> mattyw: fwereade__ would be yer man for knowing about what might have changed there.
[16:17] <rogpeppe> mattyw: in the meantime, i'd make sure it's reproducible and report a bug
[16:17] <mattyw> rogpeppe, ok thanks, - while I have your attention: you mentioned in oakland that you'd done some stuff in SBCL yeah?
[16:18] <rogpeppe> mattyw: yeah
[16:18] <rogpeppe> mattyw: though my CL skills are somewhat rusty by now... :-)
[16:19] <mattyw> rogpeppe, have you used it for connecting to secure websockets? I tried to get clojure connected up to the juju-core api over the weekend, the java ssl stuff seems a complete mess
[16:20] <rogpeppe> mattyw: no; i played a little bit with some web server stuff, but never from client side and not involving ssl
[16:20] <rogpeppe> mattyw: i'd google around. there are quite a few nice libraries out there
[16:20] <rogpeppe> mattyw: you're implementing stuff in lisp?
[16:21] <mattyw> rogpeppe, I have a love hate relationship
[16:22] <rogpeppe> mattyw: i had fun playing with it, but it really is a baroque language. i imagine clojure is a bit less idiosyncratic though
[16:22] <mattyw> rogpeppe, clojure has been my favourite, but connecting to wss sockets doesn't just work like in python and go - I get all sorts of crazy exceptions
[16:23] <rogpeppe> mattyw: i think you're best off persevering with clojure - porting to CL is unlikely to be a breeze
[16:23] <mattyw> rogpeppe, clojure is the sanest one I've used, but being based on the jvm is a blessing and a curse
[16:23] <rogpeppe> mattyw: does clojure even do macros in a similar style to CL?
[16:25] <mattyw> rogpeppe, I've only done clojure macros. I've not done CL macros so I don't know
[16:25] <rogpeppe> mattyw: are they hygienic?
[16:25] <mattyw> rogpeppe, I think so yes
[16:27] <fwereade__> rogpeppe, mattyw: I'm not sure why that would have happened, I'm afraid, although I'm a bit suspicious of needing $HOME in charms
[16:28] <mattyw> fwereade__, we've got a binary that gets called in a hook. the binary uses $HOME
[16:29] <rogpeppe> mattyw: sorry, my laptop just crashed again
[16:29] <rogpeppe> mattyw: last thing i saw was "i think so yes"
[16:29] <rogpeppe> i think this laptop might be on its way out
[16:29] <mattyw> rogpeppe, it ended there
[16:30] <rogpeppe> mattyw: ah, it must've crashed just after that and i hadn't seen it
[16:31]  * rogpeppe is well annoyed. just lost 500 words of detailed documentation.
[16:31] <rogpeppe> (at least)
[16:33] <rogpeppe> mattyw: sbcl macros aren't hygienic
[16:35] <rogpeppe> aargh
[17:48] <rogpeppe1> g'night all
[21:23] <thumper> morning
[21:51] <hatch> morning
[22:11] <thumper> perhaps it is time for a second coffee...