/srv/irclogs.ubuntu.com/2012/07/20/#juju-dev.txt

davecheneyniemeyer: ahh, `yaml:"flow"`, might be the savation00:07
niemeyerdavecheney: Ah, hold on00:08
niemeyerdavecheney: You want to compare output?00:08
niemeyerdavecheney: for testing purposes?00:08
davecheneyniemeyer: yes00:09
niemeyerdavecheney: That's probably not a good direction00:09
niemeyerdavecheney: We've had a lot of pain comparing yaml like that00:09
davecheneyok00:09
niemeyerdavecheney: It's easier to unmarshal the yaml back00:09
niemeyerdavecheney: and compare the value00:10
niemeyerdavecheney: This also helps because you can compare bits, rather than full docs00:10
davecheneyusing deep equals ?00:10
niemeyerdavecheney: Yeah00:10
niemeyerdavecheney: Indentation is doable, etc00:10
davecheneyok, i'll keep working on it00:11
davecheneyniemeyer: is this a bug ? http://play.golang.org/p/P1dQvMC9T401:41
davecheneyniemeyer: nm, the channel corrected my mistake01:43
niemeyerdavecheney: Yeah, no commas01:44
TheMuedavecheney, fwereade__, rog: morning btw06:22
rogdavecheney, fwereade__, TheMue: yo!06:22
davecheneyrog: themue, hello!06:38
davecheneyrog: https://codereview.appspot.com/6432045 if you have any comments on the test harness06:39
davecheneyi would be glad to hear them06:39
davecheneytesting json and yaml is a pain the butt06:40
davecheneybut at least this way, it isn't a pain in the butt when we're pressed for time and someone points out json output is manditory06:40
* rog looks06:43
rogdavecheney: i wonder if we should use MarshalIndent to produce nice looking json. just a thought.06:46
davecheneyrog: sure06:47
rogdavecheney: also, i wonder if the status tests could just specify the value of the data structure required; then we could unmarshal the output (in whatever format we want to check) and make sure it deep equals the06:47
rogrequired value06:48
davecheneyrog: tried that, didn't wokr06:48
rogdavecheney: ah, because the unmarshal differently?06:48
rogtheyt06:48
rogthey06:48
rog:-)06:48
davecheneyyes, json produces map[string]interface{}06:48
davecheneyyaml produces map[interface{}]interface{}06:48
rogdavecheney: hmm, but can't you unmarshal into a data structure of the expected kind?06:49
davecheneyrog: yes, but then the next level down becomes m[i]i06:50
rogm[i]i ?06:51
rogoh yeah06:51
roghmm06:51
davecheneyi don't think it's solveable06:51
davecheneyanyway, that is enough to start mergeing in my working branches06:52
davecheneyand if the harness is uttery wrong06:52
davecheneythen i'll tackle it then06:52
rogdavecheney: one last thought: could you start with the expected data structure, then marshal it and unmarshal it again, *then* check against the original unmarshalled value you got?06:54
davecheneyor marshal it, and compare it to the data in cxt.Stdout06:55
rogdavecheney: no, that won't work06:55
davecheneywhy not06:55
rogdavecheney: because marshalling isn't deterministic06:55
davecheneyfor json it is, but i take your point06:56
rogdavecheney: oh really, json sorts map keys? cool, i didn't know that.06:56
davecheneygustavo argued that goayml can do the same thing06:56
davecheneyi'm going to hvae to change goyaml slightly anyway06:56
rogdavecheney: it would make life easier06:56
rogdavecheney: and json is a good precedent06:57
* davecheney thinks that json is about as crack headed as javascript06:57
davecheneyfor example, struct { Machines map[int]interface{} }06:57
davecheneycannot be json marshalled06:57
davecheneyyet _must_ be marshalled by yaml06:57
davecheneyso, because of that, i have to conver machine.Id to a string, then change goyaml to accept a formatting flag to convert the string keys back to ints06:58
rogdavecheney: oh that's a pity06:58
davecheneyanyway, dinner time06:59
davecheneythen i'll ponder your idea06:59
davecheneyif that means we describe the output once, that is a big win06:59
rogdavecheney: given what you've said above, i'm not sure it can work.07:00
rogdavecheney: pity machine ids aren't strings07:00
TheMuerog: Let the Firewaller only use a passed state has been a nice simplification, but how do I get the environment now. Somehow lost the path.07:04
rogTheMue: ha ha. you'll need to pass the environment in as an argument too.07:05
TheMuerog: sh**07:05
TheMuerog: Already expected it *sigh*07:06
TheMuerog: Btw, on Sunday, do we try to get seats next to each other or do we just meet at the baggage claim?07:11
rogTheMue: it would be nice to sit together, but i can't quite work out how :-)07:11
fwereade_morning all07:12
TheMuerog: That's the problem.07:12
TheMuefwereade_: Morining07:12
rogTheMue: except, i guess, we can try to arrive at the checkin desk together... but most seats are gone by then.07:12
rogTheMue: i have an idea07:12
* TheMue listens07:13
rogTheMue: i won't have access to a computer, but perhaps i could give you my booking details and you could try and select a seat for both of us on the airline website07:13
rogTheMue: in fact, perhaps they allow us to choose a seat now. i'll have a look.07:13
TheMuerog: That could work07:13
TheMuerog: Your Environ.OpenPorts() wants all ports that have to be open or just a delta that should be opened with this action?07:20
rogTheMue: just a delta07:21
TheMuerog: Good07:21
rogTheMue: otherwise there wouldn't be a ClosePorts method :)07:21
TheMuerog: Makes it more simple07:21
TheMuerog: Sounds logical :D07:21
rogTheMue: yeah, i toyed with both approaches, but this seemed better07:21
TheMuerog: Yes, otherwise I would have to maintain a list of all open ports on a machine inside the firewaller. Now I just tell you to open it.07:22
rogTheMue: yeah07:22
TheMuerog: Hmm, if a port can't be opened (so you return an error), how hard is this error? I could do a panic, but that wouldn't be helpful. Better would be a kind of retry.07:25
rogTheMue: yeah, it's a good question.07:26
rogTheMue: not very hard, i'd say07:26
rogTheMue: perhaps you could put the retry in later, to avoid cluttering the initial logic07:26
TheMuerog: But have to leave now until noon, some shopping with Carmen. We can talk later again.07:27
TheMuerog: So far I'll ad a TODO, yes07:27
asachs_Hello all07:54
fwereade_asachs_, hi08:12
fwereade_everyone, sorry, I have to pop out for 30 mins08:12
fwereade_bbs08:12
asachs_anyone seen a MaaS based bootstrap fail to install zookeeper ?09:05
fwereade_asachs_, not offhand; can you ssh into the instance at all?09:13
asachs_fwereade_: yeah i could - but no zookeeper installed :(09:13
* fwereade_ desperately tries to remember where cloudinit logs to09:14
fwereade_asachs_, can you take a look at /var/log/cloud-init-output.log on the instance?09:15
rogfwereade_, asachs_: /var/log/cloud-init.log09:15
fwereade_rog, ah ok09:15
rogfwereade_, asachs_: also, perhaps: cloud-init-output.log09:15
rogfwereade_: here's a script i use occasionally for debugging, which automatically copies the logs from an instance to my local machine: http://paste.ubuntu.com/1101520/09:17
fwereade_rog, nice :)09:17
rogfwereade_: wanna swap a book or two again?09:37
fwereade_rog, I'll see if I can find something worth reading :)09:39
davecheneyrog: can you paste that link again please ?09:49
rogdavecheney: which link?09:51
davecheneythe one you emailed me09:51
davecheneyplay.g.o09:51
rogdavecheney: http://play.golang.org/p/AMq8qURfBW09:52
davecheneyta09:53
asachs_rog: thanks - its for a maas setup so the ec2 stuff will not work so nice :)10:39
rogasachs_: np. it should be easy enough to port the concept though, if you want. i doubt you have the rc shell installed anyway :-)10:41
asachs_rog: it looks fairly straightforward, will have a go at it once my new MAAS server is up10:42
asachs_rog: and thx10:42
rogasachs_: tbh, i usually ended up doing ssh and tail -f for a more interactive view.10:42
rogfwereade_: i wonder if you might take a look at this and see whether it seems reasonable. i haven't yet done the extra tests in the juju package, but the cmd/juju test suite passes: https://codereview.appspot.com/6428061/11:30
fwereade_rog, very shortly, have much state loaded atm11:32
rogfwereade_: np11:32
rogfwereade_: it's fairly trivial refactoring, nothing substantial11:33
fwereade_rog, cool11:33
=== TheMue_ is now known as TheMue
rogjust off for lunch, then travelling this afternoon - i'll probably leave here in a couple of hours12:12
TheMuerog: enjoy12:12
fwereaderog, ok, I am at last on your review, lunch intruded13:12
fwereaderog, sorry13:12
rogfwereade: it's still WIP BTW13:20
rogfwereade: 3 possible books: Crystal Rain (Tobias Buckell), Harmony (Project Itoh) and Wolf Hall (Hilary Mantel). read any of 'em?13:21
fwereaderog, none of them :)13:24
rogfwereade: last one's historical rather than sf, but great anyway13:24
fwereaderog, excellent13:27
fwereaderog, what's your general view of bleak sprawling messed-up fantasy?13:27
fwereaderog, reviewed btw13:28
fwereaderog, and I did the linked list thing with HookQueue and I think it worked out really nicely13:30
fwereaderog, so many thanks for that13:30
fwereaderog, https://codereview.appspot.com/642204913:30
fwereaderog, nothing is O(1) though13:31
fwereaderog, Add is O(len(changed_units))13:31
TheMuerog: I have some troubles with http://paste.ubuntu.com/1087489/, line 41 ff.13:31
fwereaderog, Next is O(len(members))13:31
fwereaderog, but those are both better than before :)13:32
TheMuerog: It seems like your outline iterates twice over the change (which is the list of open ports).13:33
rogfwereade: last night i couldn't resist seeing what the linked list idea might look like; i was going to throw it away, but... http://paste.ubuntu.com/1101809/13:37
* rog is trying desperately to pack13:38
fwereaderog, I'm afraid I really can't judge it without tests ;)13:40
rogfwereade: indeed13:40
niemeyerGood mornings!13:51
fwereadeniemeyer, heyhey13:52
TheMueniemeyer: Moin13:53
niemeyerHeyas!13:53
rogniemeyer: yo! i'm heading to the airport in 25 mins...13:55
niemeyerrog: Oh, going to Lisbon already?13:56
rogniemeyer: first leg only. laying over for the weekend with some university pals in amsterdam (planned ages and ages ago, and cut short a bit by the sprint).14:07
niemeyerrog: Ah, nice14:07
niemeyerrog: Have some good fun there14:08
rogniemeyer: should be fun. at least one of them i haven't seen for 20 years14:08
niemeyerrog: WOah14:08
rogniemeyer: i'll try not to arrive too hungover!14:08
niemeyerrog: Have you graduated 20 years ago!? 8)14:08
rogniemeyer: old bugger, me14:08
niemeyerrog: LOL14:09
rogniemeyer, fwereade, TheMue: right, i'm off. might be online for a bit from the airport though.14:10
rogotherwise see y'all in lisbon!14:10
rogi'm looking forward to it!14:10
fwereaderog, have fun!14:10
TheMuerog: Enjoy, we'll see at least at Lisbon airport14:10
niemeyerrog: Indeed!14:10
niemeyerrog: Have fun!14:10
rogtoodle pip14:10
niemeyerfwereade: So, the validation stuff is up for review14:19
fwereadeniemeyer, I'm reading it now, it looks *awesome* so far14:19
niemeyerfwereade: Very glad (and relieved :-) to hear it14:21
fwereadeniemeyer, LGTM, but I think control-bucket should also be immutable14:25
niemeyerfwereade: Is it not?14:26
fwereadeniemeyer, huh, couldn't see it14:26
* fwereade reads again14:26
fwereadeniemeyer, it's not mentioned in Validate14:26
fwereadeniemeyer, did you do something clever?14:27
niemeyerfwereade: Isn't that awesome? :-)14:27
niemeyerfwereade: Oh, wait14:27
fwereadeniemeyer, but the structure of it all is perfect14:27
niemeyerfwereade: You mean immutable as in cannot be changed from old to cfg14:27
niemeyerOkay14:27
fwereadeniemeyer, yeah, sorry14:27
niemeyerfwereade: I read that as in *config.Config is immutable14:28
niemeyerfwereade: WE don't ever change, or even reference, control-bucket within Validate14:28
fwereadeniemeyer, nah, Config seems fine to me :)14:28
niemeyerfwereade: Which is what I claimed is awesome14:28
fwereadeniemeyer, ohhhhh14:28
fwereadeniemeyer, hmmmmm14:28
fwereadeniemeyer, can't quite decide whether that's awesome or evil14:29
niemeyerfwereade: But, you're right I think.. we shouldn't allow the control-bucket to change, at least for now14:29
niemeyerfwereade: Really?14:29
niemeyerfwereade: Why would it be evil? The schema is doing the whole validation for us14:29
fwereadeniemeyer, sorry, I misunderstood what you said14:30
fwereadeniemeyer, not to worry :)14:30
niemeyerfwereade: Cool :-)14:30
fwereadeniemeyer, a suggestion: we should store relation resolved nodes under the relation (like settings and presence), not under the unit14:34
fwereadeniemeyer, (and we should do the same for the workflow nodes, if they're not already there, which I don't immediately recall)14:35
fwereadeniemeyer, oh, hmm, maybe that's problematic14:35
* fwereade goes off to read code14:35
niemeyerfwereade: I do think there's an awesometastic potential for simplifying things in that state machine, but indeed we have to think through the error management14:36
niemeyerfwereade: "If it's worth checking for a missing endpoint (as we do in Open) I maintain it's worth checking for here rather than there :)."14:38
fwereadeniemeyer, ...but it turns out you dropped that check entirely, and I'm fine with that14:38
niemeyerfwereade: Part of the beauty is that this is now done in both locations, and in SetConfig14:38
fwereadeniemeyer, oh? sorry, where?14:38
niemeyerfwereade: I haven't dropped it.. this branch actually *increases* validation significantly, perhaps to my surprise also :-)14:38
niemeyerfwereade: There's a single code path to grab an ecfg14:39
niemeyerfwereade: and it validate14:39
niemeyers14:39
fwereadeniemeyer, there's also a funny little bit in Open, that you deleted, that checks the EC2Endpoint on the chosen region14:40
fwereadeniemeyer, I don;t see EC2Endpoint anywhere else in the diff14:40
niemeyerfwereade: Oh?14:41
fwereadeniemeyer, but I don't really see why we should need to check it in the first place14:41
niemeyerfwereade: Where is that?14:41
fwereadeniemeyer, https://codereview.appspot.com/6416055/diff/4001/environs/ec2/ec2.go#oldcode11714:41
niemeyerfwereade: Oh, sorry14:41
niemeyerfwereade: I did misread that code14:41
niemeyerfwereade: I've read the error message, and inferred the test14:42
niemeyerfwereade: If the region exists in aws.Region, I claim we can use it14:42
niemeyerfwereade: We're not checking S3Endpoint, for example14:43
fwereadeniemeyer, agreed14:43
niemeyerfwereade: Thanks, though, I did miss the real test14:43
fwereadeniemeyer, I don't think that bit ever had an explicit test anyway14:43
niemeyerfwereade: Indeed14:44
niemeyerfwereade: I'll add the control-bucket check14:44
fwereadeniemeyer, cool14:44
fwereadeniemeyer, btw, I added those methods to Relation, in https://codereview.appspot.com/6430055/14:46
fwereadeniemeyer, and in the CL I suggest that maybe they should be on Unit14:46
fwereadeniemeyer, but in *fact* I now think a RelationUnit type, which just holds the stuff we repeatedly calculate in Relation.unitScope, is really the right place for them14:47
fwereadeniemeyer, (*Relation)Unit(*Unit) (*RelationUnit, error)14:48
fwereadeniemeyer, (*RelationUnit) Watch() (*presence.Pinger, error)14:48
fwereadeniemeyer, (*RelationUnit) Settings() (*ConfigNode, error)14:48
fwereadeniemeyer, (*RelationUnit) Watch() (*RelationUnitsWatcher, error)14:48
fwereadeniemeyer, and then...14:49
fwereadeniemeyer, something a bit like (*RelationUnit) WaitResolved() (<-chan bool, error)14:49
fwereadeniemeyer, and similar methods for Workflow etc etc14:50
fwereadeniemeyer, would you be OK with that?14:50
fwereadeniemeyer, sorry, way up there, s/unitScope/unitInfo/14:51
fwereade(what the hell, how is it 5pm? time flies :))14:53
niemeyerfwereade: I'm on the fence about it, mostly because I don't see the actual benefit and do see increased API surface, and even usage burden (e..g you now must check error twice to reach a Relation's Settings).14:53
niemeyerfwereade: Do you see simplification on the implementation?  And if so, can you describe a bit of it?14:54
fwereadeniemeyer, the benefit IMO is that we don't need to pass a Relation and a Unit around everywhere we're dealing with the relation lifecycle14:55
fwereadeniemeyer, I think it'll also have methods like Workflow and SetResolved and so forth14:55
fwereadeniemeyer, which would be icky on Unit (because it will want stuff like that itself)14:56
niemeyerfwereade: Sounds sensible14:56
niemeyerfwereade: +114:56
fwereadeniemeyer, and the big issue with the current form is (*Relation)Watch(*Unit), which *really* looks like we're watching a unit14:56
niemeyerfwereade: Agreed.. I dislike that too14:57
niemeyerfwereade: It's also nice that we can have an *actual* Relation.Watch method, taking no parameters14:57
niemeyerfwereade: That doesn't ignore any units14:57
fwereadeniemeyer, ooh, nice14:57
niemeyerfwereade: I'm looking forward to use that in a monitoring tool :-)14:57
fwereadeniemeyer, ok, I'll wip that and make the change14:58
niemeyerfwereade: Thanks a lot14:58
fwereadeniemeyer, but https://codereview.appspot.com/6422049/ is also ready(?) and I think it's pretty cool actually14:58
fwereadeniemeyer, it lacks the occasional pathological performance characteristics of the first one14:59
fwereadeniemeyer, I think :)14:59
niemeyerfwereade: Sweet, will have a look15:01
niemeyerActually, I'll review that first thing in the afternoon if that's ok15:02
fwereadeniemeyer, no rush :)15:02
fwereadeniemeyer, I have two nicely complementary streams of work at the moment, both UA related, and easy to switch between15:03
fwereadeniemeyer, when they collide I'll be screaming for reviews, so take it easy while you can ;)15:03
niemeyerfwereade: LOL15:04
niemeyerfwereade: Sweet15:04
rogfwereade: is there any particular reason that StartUnit should be StartUnits? it's trivial for the caller to write a for loop, and it means that the caller can decide what to do if one fails after several have succeeded.15:36
fwereaderog, just seems more appropriate for a high-level interface somehow15:37
fwereaderog, matter of taste, not really bothered, we'll find out what we really need later15:38
rogfwereade: if we were going to potentially optimise AddUnits(n) so that it wasn't just a simple for loop around AddUnit, i think i'd agree. but otherwise i can't see the point.15:39
rogfwereade: it's not *that* high level - we assume the caller can program :-)15:39
fwereaderog, that's what I kinda think we should be doing :)15:39
rogfwereade: yeah, ok, will go for AddUnits then15:40
rogfwereade: then if the state API changes to allow a more efficient approach, the juju API can remain the same15:41
fwereaderog, yeah, exactly15:41
fwereaderog, niemeyer: hey, why does AddUnitSubordinateTo exist?15:42
rogfwereade: and one approach to that would be to add AddUnits to the state API and not download the charm for every unit! probably a better approach than caching15:42
niemeyerfwereade: Hm?15:43
fwereaderog, niemeyer: should this not be handled at AddUnit time, with something like Service.Subordinates()?15:43
fwereaderog, niemeyer: anyway, total derail really, but I can't see any benefit to exposing the functionality15:43
rogfwereade: i guess it depends what level you see the state API15:43
rogfwereade: i see it as potentially allowing things outside the scope of what is allowed in the high level juju view15:44
fwereaderog, regardless of level, I'm not sure it should let us do things that aren't internally consistent15:44
fwereaderog, without the appropriate relations in place, isn't it straight-up nonsensical to try to do that?15:45
niemeyerfwereade: Yeah, could be internalized I guess15:45
fwereaderog, niemeyer: one for our Copious Free Time, I think, anyway ;)15:45
rogfwereade: i think i agree15:45
niemeyerfwereade: It doesn't let us do things that aren't internally consistent already, but if we can simplify it that's a bonus15:45
niemeyerfwereade: I've added the control-bucket stuff and re-proposed.. if all looks good will submit once I'm back from lunch15:59
fwereadeniemeyer, cool, I'll take a look16:00
fwereadeniemeyer, just unwipped https://codereview.appspot.com/643005516:01
fwereadeniemeyer, according to how the tests feel, it was a good move :)16:01
niemeyerfwereade: Sweet!16:01
fwereadeniemeyer, dammit, I'm meant to be going out and having fun this evening ;p16:02
mramm2fwereade: no rest for the wicked!16:03
fwereademramm2, haha16:03
=== imbrandon is now known as Guest41572
niemeyerfwereade: You really should :-)16:04
fwereadeniemeyer, oh, I will, but it's really inconvenient right now :)16:04
niemeyerfwereade: Next week we'll have tons of time together to push awesomeness forward :)16:04
niemeyerfwereade: LOL16:05
niemeyerfwereade: I know how that feels16:05
niemeyerfwereade: I was hacking until post midnight yesterday16:05
niemeyerfwereade: Hard to stop when in a roll :)16:05
fwereadeniemeyer, yeah :)16:05
fwereadeTheMue, ping16:14
=== Guest41572 is now known as imbrandon
TheMuefwereade: mom16:15
=== imbrandon is now known as imbrandon_
fwereadeTheMue, it always disturbs me when you call me mom :)16:16
TheMuefwereade: You're to me like a mom ;)16:16
fwereadeTheMue, aww :)16:16
fwereadeTheMue, well, all right darling16:16
=== imbrandon_ is now known as imbrandon
fwereadeTheMue, (I'll ask now; but no rush, please just respond when you're ready, I might have to go in a sec, I'll see your response later)16:20
fwereadeTheMue, I'm getting a slight urge to do violence to the ResolvedMode stuff16:20
fwereadeTheMue, (1) I don't think we have any need for the 1000/1001 magic numbers16:21
fwereadeTheMue, (2) I don't think we have any need for anything other than SetResolved, ClearResolved, and WaitResolved() (retry bool, err error)16:22
fwereadeTheMue, ie I can't see a use case for WatchResolved; am I missing something?16:23
fwereadeTheMue, (hmm, actually, what I'd *really* like is a one-shot <-chan bool watch, I think it will mesh very nicely with my plans for the hook executor)16:24
fwereadeTheMue, anyway, let me know your thoughts16:24
fwereadeniemeyer, I would also appreciate your perspective on the above16:24
fwereadeI'm thinking that I want, on both Unit and RelationUnit:16:26
fwereadeSetResolved(retry bool) error16:26
fwereadeClearResolved() error16:26
fwereadeWaitResolved() (retry <-chan bool, err error)16:27
fwereadebut ofc I'm open to mockery and dismissal :)16:27
fwereadeanyway, later all16:27
fwereadeniemeyer, (also, am I right in thinking that we can't separately resolve errors in relations of the same name? is this deliberate, or am I misreading juju/control/resolved.py?)16:29
TheMuefwereade: So, back again. Our daughter had problems today.16:36
mramm2TheMue: sorry to hear about that16:37
TheMueoops16:38
fwereadeTheMue, no worries, I might be able to pop back and read in 5-10 mins16:39
fwereadeTheMue, hope all is ok now16:39
TheMuemramm2: Thankfully it's not her direct problem. It a harder problem by her best girl friend. But now our daughter has problems with her employer because she came later to the afternoon stint16:40
TheMuefwereade: Yes, it's ok. Thx.16:41
TheMuefwereade: So you're looking if the ResolvedMode is needed? Or what is your question?16:42
TheMuefwereade: I've translated it from the python code, but if we don't need it anymore we should remove it.16:43
fwereadeTheMue, sorry, I'm really just asking if you're aware of any uses for it that I may have missed16:50
fwereadeTheMue, that can't be covered by what I proposed16:50
fwereadeTheMue, or if there's anything otherwise obviously ludicrous about what I suggest16:50
TheMuefwereade: Right now I don't know. I'll take a look.16:52
TheMuefwereade: So far it's not used, yes. I only ported it without looking who later will use it.16:55
TheMuefwereade: In Py it's used by the agent.16:57
niemeyerfwereade: Hah.. so I screwed up the copy & paste..17:26
niemeyerThat's what I get for not self-reviewing17:26
TheMueSo, next proposal for the firewaller is in and I'm out. If we don't see tomorrow evening here we'll see on Sunday in Lisbon.18:27
TheMueHave a nice evening.18:27
niemeyerTheMue: Thanks, have a great trip!18:37
TheMueniemeyer: Thx, yes, and you have a great trip too. Will be a long flight.18:38
niemeyerTheMue: Thanks, this one is going to be surprisingly good, actually18:42
niemeyerTheMue: A single leg.. first time ever18:42
TheMueniemeyer: Yeah, so it's a good location. Only Dave will always ever have problems.18:42
TheMueniemeyer: So we once should visit him.18:43
TheMue:D18:43
niemeyerTheMue: True :-)18:43
TheMueniemeyer: Next UDS is very near. I'm already ching if not train will be better.18:44
niemeyerTheMue: Nice, that should be a breeze indeed18:44
TheMueniemeyer: Yes, but that's still some month in front. Let's face our sprint next week.18:45
niemeyerTheMue: Yeah, and I have nightmareish trip before that, in early August18:45
niemeyer4 legs each way.. :-(18:45
TheMueniemeyer: Ouch18:46

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!