#juju-gui 2013-03-01 <hatch> bcsaller_, it doesn't look like namespaced url variables work <hatch> http://localhost:8888/:scaffoldSubApp:/part/7 doesn't match '/part/:id' <hatch> but http://localhost:8888/:scaffoldSubApp:/part does <hatch> we can discuss tomorrow I just wanted to put that out <hazmat> bac, strange.. don't know.. i'm not a user of cobzr <hazmat> bac, the ? might be better suited for #juju-dev <frankban> hi rogpeppe: if you have time, could you please take a look at https://codereview.appspot.com/7421045/ ? <rogpeppe> frankban: will do, thanks. <frankban> rogpeppe: thanks <rogpeppe> frankban: LGTM <frankban> rogpeppe: great, thanks! <frankban> rogpeppe: re api methods, when returning a structure, are pointers automatically dereferenced by the api machinery? if so, is it considered a good practice to include pointers in the returned struct, or is it better to always return values? <rogpeppe> frankban: the top level structure must be by-value. anything inside will have pointers automatically dereferenced as necessary. <rogpeppe> frankban: so it's at your discretion. it's usually a judgement call. <rogpeppe> frankban: if you've already got a pointer, a pointer probably makes sense. or (particularly) if the item in question is optional. <rogpeppe> frankban: the by-value restriction is rpc's alone. in general there's no issue with returning pointers. <frankban> rogpeppe: the top level is a value, one field of the struct is a charm.Config instance, returned as a pointer by charm.Config(). This leads to the second question: is it ok to use such juju_core structs at the API level, or do we need to build other structs specific for the api? <rogpeppe> frankban: i think that where appropriate, it's fine to use juju-core structs for the api <frankban> rogpeppe: cool, thanks a lot <rogpeppe> frankban: and in particular i think charm.Config is a good candidate <rogpeppe> frankban: because all its fields are exported and appropriate for json use <rogpeppe> frankban: (although i had to look quite hard at Default) <frankban> rogpeppe: ack, what happens when you try to export a struct containing provate fields? are they just ignored? <rogpeppe> frankban: yeah <frankban> s/provate/private <frankban> rogpeppe: ok, and I guess if you still require those, then the path to follow is to define a struct specific for the api, maybe... <rogpeppe> frankban: maybe. we'd have to take it on a case-by-case basis. there are other possibilities that don't require a new struct definition. <frankban> rogpeppe: have not looked yet, but I'll have to export Meta.Requires, Provides and Peers. <rogpeppe> frankban: they're all exported already <rogpeppe> frankban: Meta looks like a good candidate for direct use too <frankban> rogpeppe: cool, I am implementing a CharmInfo api call, required by the GUI, I am trying to only pass things required by the GUI, trying to mimic what's already provided by the pyjuju api. Does it make sense? <frankban> (in pyjuju that's called "get_charm") <rogpeppe> frankban: i guess so. although i suppose it doesn't matter much if you get more info. none of it is private AFAIK. <rogpeppe> frankban: (and none is particularly bulky) <frankban> rogpeppe: cool, I'll also ask gary_poster when available, thanks <bac> frankban, teknico, benji, Makyo: see my warning at the end of http://bit.ly/Wln4KR -- it happened to me yesterday. <frankban> bac: thanks, I usually "bzr pull" to update a branch. I guess tests warning can be avoided by manually "go install"ing required packages, but it's still uncomfortable <bac> frankban: yeah, there are work-arounds but 'get -u' seemed to be the easiest <frankban> bac: agreed * gary_poster reads backlog <gary_poster> frankban, hi. what's the question? sounds like you are on the right track for get_charm <frankban> gary_poster: quick hangout after my lunch with teknico too? <gary_poster> frankban, cool sounds good <frankban> gary_poster: thanks * frankban lunches <gary_poster> :-) <gary_poster> hatch, hi. when you get in, please ping me for strategizing what you work on today (basic idea: can we get subapp work in a position that orange squad can use it Monday morning at the sprint? Do we need to add some of this to sprint goals? Should that affect other induction sprint goals?) <gary_poster> bac are you working on the JS side of expose now? <bac> gary_poster: yes <gary_poster> cool bac. I want to move your Go card to daily and make a new card for that. ok with you? <bac> oh, sure <gary_poster> cool thx <bac> i thought i had made a card <gary_poster> on it <gary_poster> benji, btw bbcmicrocomputer landed your charm-tools card <gary_poster> I moved it to done <bac> gary_poster: yes, 'hook up juju-core expose' with my face on it <gary_poster> got it thx <bac> gary_poster: it is cleaner in the future if those tasks have two different bugs, since kanban will only allow one card per LP bug <bac> doing two bugtasks was my idea but didn't turn out well <benji> cool <gary_poster> bac, cool. Let's have that discussion once we have two or three of the JS-side branches under our belt. I'm inclined to agree with you, but I'd like to see. For now, though, am I right that we need GUI-side support for unexpose, set-config, and get so far, not including your expose? <bac> gary_poster: yes <gary_poster> cool thanks <gary_poster> hatch, hi. when you get in and settled, please ping me for strategizing what you work on today (basic idea: can we get subapp work in a position that orange squad can use it Monday morning at the sprint? Do we need to add some of this to sprint goals? Should that affect other induction sprint goals?) <gary_poster> today == getting my laptop ready... <hatch> good morning <hatch> gary_poster, it might be....I came across, what I'm assuming, is a asmall bug in the new router code <gary_poster> I saw that hatch, yeah <hatch> so as long as that can be ironed out and I can fully test the subapps .navigate() then they should be good to go <gary_poster> today you mean? <hatch> yep as far as I can tell it's all good to go besides that <hatch> oh....I have one small patch <gary_poster> ok great <hatch> but it's already done just no ticket yet <gary_poster> hatch how should we hand this over to orange squad? maybe some docs? <hatch> throw it at them and run! <gary_poster> :-) <hatch> ;) <rick_h_> hatch: gary_poster cool, toss it this way <gary_poster> rick_h_, cool :-) <hatch> I started writing some intro docs yesterday so I'll expand on those <rick_h_> hatch: just toss a (STR) on there (Some Tinkering Required) <hatch> rick_h_, well right now there is a router bug which will cause nothing but headaches for you guys so I'd like to hold off until we get that solved if that's O K <rick_h_> hatch: all for reducing headaches <gary_poster> hatch, agreed with you. that said, what do you think of getting rick_h_ on a call with us now-ish also? I think he's raring to go, and he might give us valuable insight as well as some very experienced JS hands if he's available and we have anything we can push off to him <bcsaller_> hatch: what is the issue? <gary_poster> OK proposal: (1) hatch and bcsaller_ talk about issue. (2) hatch gary_poster and rick_h_ talk about next steps for today and Monday. <gary_poster> (3) we all move to cancun <rick_h_> gary_poster: hmmmm... <hatch> can I vote for Montego Bay? <hatch> I'm not a fan of Mexico <hatch> :P <gary_poster> yeah ok, I';m flexible <rick_h_> gary_poster: so I'm ok for now working on a Charmworld API wrapper if it makes sense to hold off until EOD or even first thing Monday <hatch> haha <rick_h_> so I guess fewer calls == a get-it-done friday from my POV <gary_poster> rick_h_, ok, got it, cool <hatch> bcsaller_, I am attempting to match http://localhost:8888/:scaffoldSubApp:/part/7 with the route '/part/:id' but the only way it matches is with http://localhost:8888/:scaffoldSubApp:/part <bcsaller_> did you try making the path expression end in a '/' in the route and in the url? w/o the slash its hard to assemble components <hatch> checking <hatch> bcsaller_, thanks that was the trick <hatch> sounds like we should split on ? and then append a / if there isn't one <bcsaller_> hatch: that was described on the call and in the merge proposal but maybe not in the route comments. <bcsaller_> hatch: its not just the last one, its to aid in the assembly of the parts <hatch> ahh so the url doesn't need it, only the path <hatch> ok I'll note that in the documentation <bcsaller_> hatch: w/o switching to real regex (which is an option) in the paths, yes, but switching requires a change to all the handlers/callbacks as the :id placeholds get replaced by indexed param arrays, so I didn't go there <hatch> yeah that's fine - from a usability standpoint there is no difference - which at this point is all I'm concerned about <hatch> well....minor difference ;) <teknico> gary_poster, frankban, either now or in half an hour. what do you say? <gary_poster> teknico, up to frankban. I'm fine either way <gary_poster> he's probably still lunching <teknico> gary_poster, ok, then I'll move to the other place and resurface in 30 minutes <gary_poster> cool teknico ttyl <hatch> OK everything functions as expected with namespaced subapps <hatch> now to test for charmstore <rogpeppe> gary_poster: ping <gary_poster> hey rogpeppe <rogpeppe> gary_poster: just wanted to quickly check something <gary_poster> ok <rogpeppe> gary_poster: i'm trusting that all the information that you're going to be wanting from the megawatcher is a subset of the data contained in these structs: http://paste.ubuntu.com/5576427/ <rogpeppe> is that reasonable? <gary_poster> rogpeppe, gimme a sec to verify :-) <gary_poster> rogpeppe, we will eventually want annotations on everything, including an environment object, but you knew that already...still looking <rogpeppe> gary_poster: the annotations would be added to those structs <gary_poster> rogpeppe, assuming unit Status == agent_state <gary_poster> rogpeppe y (plus we'd need a new struct for the env itself) <rogpeppe> gary_poster: yes, i'm pretty sure <rogpeppe> gary_poster: of course. what data do you need from the environment object, BTW? <gary_poster> annotations, rogpeppe. that should be it <hatch> ok it looks like using the fallback to the default namespace is working as well <hatch> rick_h_, expect to have this thing and the documentation this afternoon <rick_h_> hatch: awesome <rogpeppe> gary_poster: cool. i'm glad for the confirmation - i'm well into the implementation and realised that everything kinda hinged on this :-) <gary_poster> rogpeppe, for relation we have type, scope, and display_name <hatch> gary_poster, bcsaller_ - am I to understand that if you are using the 'charmstore' namespace (no prefix in the url) you shouldn't specify routes for '/' ? <gary_poster> rogpeppe, for machine, we have public_address, instance_state, agent_state <teknico> back <rogpeppe> gary_poster: hmm, that's a good point about relation actually. i need to look into that a bit more <gary_poster> rogpeppe, for machine we barely use that, so if what I describe is a problem, let me know and I'll verify whether we can ignore them. they are available in our data though <gary_poster> according to the JS model <rogpeppe> gary_poster: and machine too. i think we can probably retro-fit public-address. <gary_poster> or cool rogpeppe. That's the only missing info I see. Everything else looks goof <rogpeppe> gary_poster: and instance-state if necessary. <gary_poster> good, even :-P <rogpeppe> gary_poster: i thought it was new street slang i was previously unaware of :-) <gary_poster> lol, that's me, hip to the street <rogpeppe> lol <benji> rogpeppe: question: I am writing a test in state/api/api_test.go and I need to set a unit to an error state but I do not see a way to get ahold of the unit to do so. st.Unit("wordpress/0") does not work because the kind of state "st" is isn't the kind of state that has a Unit method. <rogpeppe> gary_poster: the type and scope attributes are inside Endpoint, but i'm not sure what display_name is <gary_poster> ok, looking <rogpeppe> benji: you've got access to the underlying state.State too <rogpeppe> benji: s.State <benji> hmm, I /thought/ I tried that <rogpeppe> benji: for instance, all the stuff in setUpScenario operates on the underlying state, not api.State <benji> relatedly, what is the best way to figure out the attributes/methods of a struct? for the most part my grepping has worked, but for the life of me I couldn't find the definition of api.State <benji> rogpeppe: this is one of the "table"-driven tests (opClientResolved) so I don't have an "s" (as far as I can tell) <rogpeppe> benji: why do you need to set the unit into an error state in that test? <gary_poster> rogpeppe, I think display_name is actually derived from endpoints too. (Maybe we are choosing one of the two? :-/ ) <gary_poster> one of the two endpoints' display names I mean <benji> rogpeppe: so I can call Resolved on it <rogpeppe> benji: i made a tool to make that easy for *me* (but you'd have to integrate it into your editor somehow to make it as easy for you). looking for a type, usually grep 'type Foo' does the job. <rogpeppe> benji: presumably you could call Resolved anyway - it would just give an error...? <frankban> gary_poster, teknico: call now? juju-gui? <gary_poster> yes, sounds good thanks <benji> rogpeppe: I suppose I could. For my education's sake, how would I do so if I were so inclined? <rogpeppe> benji: yeah, you could just check for "already resolved" <rogpeppe> benji: you'd change the test to pass in a state.State to each function. so far there hasn't been a need to. <benji> I figured. <rogpeppe> benji: *or*.... <rogpeppe> benji: you could change setUpScenario so that one of the units was in the required error state <Makyo> goodspud, ping <benji> I strongly suspect that would break one or more existing tests (which is of course why big, shared state setups are a pain in tests) <gary_poster> "The computer needs to restart to finish installing updates." <gary_poster> brb <goodspud> Makyo, ping back <Makyo> goodspud, got a sec to look at the service page? <goodspud> Certainly do <Makyo> jujugui's free. <Makyo> Or I can just do a screenshot, I guess. <jcsackett> can someone help me with a strange make lint error? <jcsackett> when it gets to the bin/test-filtering stage, it dies like so: http://pastebin.ubuntu.com/5576565/ <jcsackett> this is in trunk. <jcsackett> i dont' really understand why it's looking at assets in the first place, but even so, the permissions on mocha.js shouldn't be throwing any denies. <jcsackett> gary_poster: ^ <gary_poster> jcsackett, will do, after call <gary_poster> jujugui call in 2 <gary_poster> call in 1 <jcsackett> gary_poster: ok. <gary_poster> teknico, bcsaller_ starting soon <gary_poster> goodspud, ping for you too <hatch> rick_h_, I wrote a scrollview based carousel if you are looking for a touch based carousel <hatch> that also works with mouse <rick_h_> hatch: cool yea send my way <rick_h_> hatch: we're looking at the top left widget in the 07 Narrow_Home.html in the mockup <rick_h_> jcsackett: is looking at it next <rick_h_> jcsackett: ^^ <jcsackett> rick_h_, hatch: dig. i would be interested in seeing it. <Makyo> jcsackett, bcsaller_ http://pastebin.ubuntu.com/5576652/ <Makyo> That should help with the lint error. <hatch> rick_h_, can you pm me the link? I am sure I have it somewhere in my email but who knows where :) <bcsaller_> Makyo: looks good, I hadn't seen that for some reason, but makes sense <jcsackett> Makyo: ah, cool. glad to know the script needed fixing, not my install. thanks! <rick_h_> hatch: sorry, was otp <hatch> on the potty ? <hatch> lol <rick_h_> hatch: yea, and most people don't like me tablet-ircing from there :P <hatch> oh sometime I crack myself up <hatch> lol <rick_h_> hatch: https://docs.google.com/a/canonical.com/file/d/0B1IM--9A1RkTbFV5aTNZLUlOQ1E/edit <gary_poster> bcsaller_, could you help jcsackett ? I actually have to run <jcsackett> gary_poster, bcsaller_: Mayko's patch sorted my problem. <bcsaller_> jcsackett: great <gary_poster> jcsackett, great! thanks Makyo q <gary_poster> that's your new name, Makyo Q. Sounds good. <Makyo> Q for...Quentin? Quetzalcoatl? <hatch> rick_h_, ahh the thing that says 'wordpress' 'apache' 'glance' etc etc <rick_h_> hatch: right, so we've got work into a widget to display a single charm, and then we need a second widget that does the slider around a set list of them <hatch> doesn't it just scroll vertically? <hatch> ohh nm <hatch> i missed the dots <rick_h_> hatch: no, look at the dots under it <rick_h_> hatch: right <rick_h_> hatch: so yea, we're assuming that represents a nice slider of charms that would need to be touch/slide friendly <hatch> ok so for that you should extend ScrollView <hatch> I can help you with that, I've done a lot of work with it <hatch> my other code won't really help much <hatch> well that's not entirely true <hatch> sec I'll get the repo <hatch> rick_h_, https://github.com/hatched/flickr-carousel <rick_h_> lmao! I just put together hatch with #yui hatch <hatch> haha yup that's me <rick_h_> that's awesome, now I feel like I know you for a long while. very cool <rick_h_> hatch: but yea, I figure jcsackett will look through anything good in the gallery and the like to start from for sure. <hatch> I wanted to use scrollview because it natively supports pagination AND gestures <hatch> so overlaying some type of page indicator shouldn't be difficult <rick_h_> right, ok that's cool. Not used scrollview for anything yet <hatch> as far as carousels go it's pretty heavy weight but it provides for some cool interactions <rick_h_> hatch: hmm, well weight might matter as we build things up. We're going to have a lot of moving parts all told I think <rick_h_> but worst case refactor and steal the best bits <benji> all three of the Reitveld reviews for landed command api branches that I know of have been added to https://docs.google.com/a/canonical.com/document/d/1n8rhYuj7YvTcz_HdKV1tLVj9cfSbkHTCzks1_9BZEdI/edit <hatch> bcsaller_, I'd like it if you could take a look at this code, I feel like its something obvious but I'm just missing it heh <bcsaller_> hatch: how do you want to do this, a screenshare? <hatch> I can push the branch, you'll probably want to inspect the logs <bcsaller_> k <hatch> https://code.launchpad.net/~hatch/juju-gui/1132943-scaffold <hatch> once you got it up and running I can talk you through the execution order if you like <hatch> jcsackett, I'm going to review your branch <hatch> is it ready? <hatch> ready for review I mean <rick_h_> hatch: let us go over it once first please. I think it'll get tweaked a lot at first <rick_h_> we'll make sure to bug you for when we think it's ready <hatch> sounds good :) <bcsaller_> hatch: that branch still doesn't have the callingContext stuff merged in? <hatch> bcsaller_, I'm sure it does, one second <hatch> yep it does <hatch> http://bazaar.launchpad.net/~hatch/juju-gui/1132943-scaffold/view/head:/app/app.js#L472 <hatch> what you're seeing is it calling the superclass router-debug.js file <hatch> s/you're/you're probably <bcsaller_> hatch: ahh, yeah, seeing a null callback in a method we shouldn't see <hatch> Makyo, I'm about to install Win8 in a virtual box - do you remember if there were any special virtualbox packages you needed (before I get started) <Makyo> hatch, Not that I remember, just installed virtualbox from apt, and ran the ISO. I suggest grabbing a product key first, as the install can really slow down the machine too much to use a browser. <hatch> pfft not on this 3 year old i3 monster! <hatch> lol <hatch> I haven't used virtualbox in probably 2 years so this should be interesting <benji> While debugging and developing incrementally go's insistance upon avoiding unused varaibles/imports is counter-productive. <bcsaller_> hatch: its what I was warning about, "scaffold-sub-app" is a subscriber to the history:change event, which is fired when we trigger url replacement. It responds by dispatching in the subapp, this is the non-spacespace aware routing happing there. It shouldn't be subscribed to or using that behavior at all for this to work <bcsaller_> hatch: it comes from the Pjax base <hatch> poop <hatch> alrighty <bcsaller_> not sure what the best path forward is from here <hatch> yeah I'm reading the code right now <bcsaller_> The stack trace at the point of error is revealing (and very deep) <bcsaller_> I'd try defined html5:false on the subapp before going too far <hatch> looks like the offending event handler is in router <hatch> bcsaller_, fixed it <hatch> thanks a bunch for pointing that out :D <hatch> give me a few minutes to flesh out the fix and then I can detail it <bcsaller_> hatch: ha, no problem. I expect we'll still see something of this nature again though <hatch> shush you <bcsaller_> ha <bcsaller_> fair enough <hatch> lol <benji> rogpeppe: have a second to look at something for me? I have a test assertion and I thought "err" was a string but when I run the tests I get the error at the top of http://paste.ubuntu.com/5576866/ <benji> however, if I switch the assertion to zstrickland@example.net I get the build error at the bottom of that paste <rogpeppe> benji: you want to use ErrorMatches <benji> rogpeppe: ok... why is that? <rogpeppe> benji: no errors are plain strings <rogpeppe> benji: (string does not implement the Error method) <rogpeppe> benji: you could do, c.Assert(err.Error(), Equals, "....") <rogpeppe> benji: but that would panic if err was nil, which isn't very helpful <benji> rogpeppe: I don't understand "no errors are plain strings"; does that mean "no, the last thing I said is not tru (that I should use ErrorMatches), because errors are plain strings" or "there are no errors that are plain strings?" <benji> s/tru/true/ <rogpeppe> benji: the latter <benji> ok; in that case why does the error describe error as being a struct with a Message member, but if I attemt to access it I get the build error? <bcsaller_> is it being downcast back to plain Error when it shouldn't be? losing access to the additional info <benji> interesting hypothesis, bcsaller_. I wasn't aware that go did autmatic type casting. <bcsaller_> eh, what do I know :) <bcsaller_> just seems like the base language elements that throw err can't know about the extension type <hatch> Makyo, Its been sitting at 'Creating process for virtual machine' 0% for a while now - do you remember if it took this long? <Makyo> hatch, no.. <hatch> alright I'll leave it for a while longer <hatch> I'm pretty sure it's hung up thought because it's not using any cpu <hatch> oh well <benji> rogpeppe: ok; in that case why does the error describe error as being a struct with a Message member, but if I attemt to access it I get the build error? <rogpeppe> benji: because you need to convert it to the concrete type first. the error interface has no Message members - you can't look inside an interface (other by calling methods defined on the interface) until you've asserted it to some non-interface type <rogpeppe> benji: e.g. err.(*api.Error).Message <rogpeppe> benji: that will panic if the error is not of type *api.Error <benji> rogpeppe: thanks, that makes a modicum of sense to me at this point in my go journey <rogpeppe> benji: see http://golang.org/ref/spec#Type_assertions <benji> thanks <rogpeppe> benji: also http://golang.org/ref/spec#Type_switches <bcsaller_> sounds like I was on the right track there <rogpeppe> bcsaller_: yeah. <rogpeppe> bcsaller_: the missing piece is that the gocheck package is passing around the return value as an interface{}, and has forgotten that it was once an "error" value. <bcsaller_> makes sense, interface{} feels a bit like void * in C, up to the developer to cast it to something more meaningful <rogpeppe> benji: and, yeah, go does automatic type down-casting (a value is assignment-compatible with any interface that it implements) but not up-casting <rogpeppe> bcsaller_: that's right <rogpeppe> bcsaller_: the nice thing is that after the dynamic type conversion, you know exactly what you've got and can access all fields and methods of the concrete type without fear. <bcsaller_> that is a solid advantage <rogpeppe> bcsaller_: if you see a ".()" operator somewhere, that's a good sign that you should look very closely at the code... <hatch> Makyo, you weren't kidding this install is putting this thing into limp mode haha <Makyo> hatch, right? :P <Makyo> Works alright once it's running, at least. <rogpeppe> gary_poster: FYI here's the initial linked list implementation (i'm just writing the first tests for it now) http://paste.ubuntu.com/5576993/ <rogpeppe> gary_poster: that implements all the operations needed by the higher level watcher, i think <rogpeppe> gary_poster: of *course* it will all work first time :-) <gary_poster> great rogpeppe, awesome! I'll dig into it this afternoon for a few minutes <gary_poster> :-) <gary_poster> of course! <rogpeppe> gary_poster: yay! first test passed. (newAllInfo) the rest will have to wait for the plane. <gary_poster> rogpeppe, :-) awesome thanks for your work, have a safe trip, and look forward to seeing you in ATL <rogpeppe> gary_poster: all that to you too! <gary_poster> :-) thx <hatch> hey Makyo so I installed win 8, had it up and running, now after shutting it down when I try to boot it back up it goes right into the installer again <Makyo> hatch, Do you still have the installation media mounted? <Makyo> In virtualbox, I mean. <hatch> under Storage there is the IDE which has the iso <hatch> I'm assuming that's the issue? <Makyo> Yeah, it's still booting to that. <hatch> ahh ok <hatch> that did it <hatch> thanks <hatch> for some reason it's in 4:3 resolution <BradCrittenden> benji have you launched an instance from juju-core lately? <benji> bac: nope <bac> benji: bootstrap works for me but 'juju status' returns 'error: cannot log in to admin database: auth fails' <bac> thus i can't do anything <benji> huh; I haven't seen that one. Shot in the dark: maybe a fresh control bucket would help. <bac> benji: good idea <bac> benji: nope, changing the control bucket had no effect... <benji> hrm <hatch> Makyo, did you have to do anything special to get anything other than 4:3 resolutions? Even after installing the guest tools I'm still only seeing the same old ones <Makyo> Never gotten that working, sorry :/ <hatch> alright no problem I've tried a couple techniques with no luck and have a few more <hatch> just thought I'd ask <hatch> I'll let you know :) <hatch> Makyo, I figured it out <Makyo> \o/ <hatch> VBoxManage setextradata "Windows 8 Pro" CustomVideoMode1 1366x768x32 <hatch> shit down vbox and run that command <hatch> substitute the "Windows 8 Pro" for your vm name and the 1366x768x32 for the resolution you want <hatch> then that resolution will be available in the windows 8 display settings <bac> benji: my problem was i just didn't use 'bootstrap --upload-tools' <benji> ah! sounds like one for the failure mode list (if that's still a thing) <gary_poster> benji, make it so :-) <Makyo> gary_poster, ping. <gary_poster> Makyo hey sorry almost <Makyo> gary_poster, np, ready when you are. <bac> benji: does that list exist somewhere? <benji> we had something like it in the early going; in fact ,i thought you put it together <bac> benji: hmmm <bac> benji: oh, this: https://docs.google.com/a/canonical.com/document/d/1OEOzDu9lh4ko8oSgl_tjQlk98x_rgtiiSSJYBRopic8/edit <benji> bac: right! Maybe now that we're in a (more) steady state we could convert that to a wiki document, dropping any that don't apply any more (I am think of the one about test failures on trunk) <bac> a good idea <bac> i just made it a google doc since we had so much stuff there and we all knew where to look <benji> yep, I think google docs are good for transient stuff like that * bac -> dogwalk. bbiab. <hatch> it looks like it's ~ a 10min walk to the closest at&t store for me to go and buy a prepaid data sim for my phone <hatch> Or thats just an office building <hatch> damn lol <hatch> do places like CVS sell sim cards? <hatch> has anyone ever run into an issue with spritegen? I am getting https://gist.github.com/hatched/7d420804ce849d97449f this error <hatch> no idea why, trunk builds fine and I've only changed a couple files <benji> hatch: I have never seen a sinle sim card for sale at a retail location in the US (although I have never looked very hard, either) <benji> hatch: it doesn't know how to read the file identify.im6 <hatch> well I got that lol <benji> heh <hatch> I wonder what that file is <hatch> or where it came from <benji> since I have never heard of an .im6 file I figured you'd say something like "Silly me, putting my instant messager v6.0 log files in the sprite directory" ;) <hatch> haha not this time :) odly enough when I goto that dir there is no such file <hatch> I guess I could delete the branch and try again <benji> hmm, does the sprite generation use ImageMagick? Does it produce temporary files with a .im6 extension? <Makyo> Or diff against trunk? <hatch> Makyo, yep I've diffed against trunk and only my js has changed <Makyo> Huh! It's repeatable, too? <hatch> yep - I'll try making a new branch and see what happens <hatch> oh I did run lbox propose without running make devel first <hatch> not sure if that matters <benji> this mailing list message seems to be related, but I can't see how, exactly: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652675 <hatch> hmm, well I'll just make note of my changes and try a new branch <hatch> no big deal, just a very odd error <bac> hatch: had you asked last week i would've suggested straighttalk.com ... even though they are owned by walmart but use the at&t network. <hatch> ahh well it looks like even if I prepay it's going to cost me quite a bit....like $75 <hatch> so I'll just keep data off when roaming <hatch> such is the life I suppose :) <bac> hatch: you need a microsim or a full size? i think i have an extra full-size you could use to activate <hatch> fullsize - but wouldn't I need a contract on that sim? <bac> hatch: no. but it woudl be $48 for voice+data for a month <benji> hatch: I think you got that error because imagemagick was being installed by the spritegen package and the temporary files were picked up. Which seems like an insane thing to be happening, but it is the only hypothesis that I have that matches the evidence. <benji> this is the code that I think is responsible: node_modules/node-spritesheet/scripts/imagemagick.sh <hatch> benji, yeah it might be a side effect of not running make devel first <hatch> hmm nope <hatch> just created a new branch and got the same error <hatch> wth <benji> strace is your friend (especially the -f option, in this case) <hatch> https://github.com/rsms/node-imagemagick/issues/22 ....fail response <benji> right, it can't recognize the file as an image; the real question is where the file is coming from <hatch> yeah I just ran make clean and make devel on trunk and it's fine <bcsaller_> - "node-spritesheet": ">=0.2.3" + "node-spritesheet": "0.4.0" <benji> the only hint I can find for a file named identify (one of the imagemagick executables) with an extension .im6 is that debian bug asking for the v6 version of image magic to have .im6 tacked onto the executable names <bcsaller_> benji: ^^ <bcsaller_> the new version has an error <bcsaller_> 0.4.1 was broken for me <benji> "an error" or "the error"? <bcsaller_> with 0.4.0 it was working <bcsaller_> ahh, it was hatch that was asking. <hatch> damn we really need to specify concrete version numbers - these guys keep breaking their packages lol <bcsaller_> current is good until it isn't <hatch> that's been 3 packages in 2 weeks haha <hatch> maybe it's a conspiracy <bcsaller_> and that makes it better or worse than golang? ;) <hatch> haha <hatch> ok I'll update the package.json :) <hatch> '0.4.1': '2013-03-01T15:44:46.490Z' } <hatch> I'm not sure a bug fix release is supposed to break things <hatch> just sayin... <hatch> ;) <hatch> bcsaller_, thanks for pointing that out <hatch> that fixed it * Makyo walkadoggy. <hatch> jcsackett, you mentioned you were having issues getting your new code into codereview...was it a spritesheet issue? <hatch> I'm sure most are done for the day but if anyone is still around a review on https://codereview.appspot.com/7448047/ would be awesome :) <gary_poster> hatch will look later in weekend but need to go now <hatch> sure no problem <jcsackett> hatch: no, it was the network i was on. just got home and sent it off again and it worked this time. <hatch> ohh ok :) <hatch> I just ran into the spritesheet version issue so I thought I'd point it out if you missed it <hatch> would you like me to review? <jcsackett> hatch: if you have time sure; i'm heading out though and probably won't be able to return to this till monday, so no rush. <hatch> alrighty well have a good weekend <jcsackett> you too. :-) #juju-gui 2013-03-04 <gary_poster> http://paste.ubuntu.com/5576993/ <hatch> jujugui - hey can I get a review https://codereview.appspot.com/7448047/ plz thx <hatch> . <benji> hatch: I'll review it for you. <hatch> it looks like node-spritesheet is still broken <hatch> so we'll have to leave it at a fixed version for now <hatch> rick_h_, https://code.launchpad.net/~hatch/juju-gui/1132943-scaffold <rogpeppe1> gary_poster: lp:~rogpeppe/juju-core/232-megawatcher-allinfo <rogpeppe1> gary_poster: see state/allinfo_test.go and state/megawatcher.go <benji> thanks rogpeppe1 <rogpeppe> gary_poster, benji: http://paste.ubuntu.com/5585827/ <gary_poster> rogpeppe, when you get a chance we would like to know how you update your dependencies (e.g. go get -u) without overwriting the current (non-trunk) cobzr juju branch <gary_poster> no rush <gary_poster> rogpeppe, also thanks for those links. We are trying to figure out what we should do with them. :-) The tests on your branch fail, at least in part, because the code sketcjed in the pastebin is not there. Should we add it? Is that what you were suggesting? <gary_poster> bac, benji and I are going to review your branch, because we are not being successful on our task :-P <frankban> Makyo: lp:~frankban/juju-core/annotations/ #juju-gui 2013-03-05 <Makyo> frankban, http://pastebin.ubuntu.com/5588045/ <frankban> Makyo: https://codereview.appspot.com/7483043 <frankban> rogpeppe: hi, when you have time, could you please take a look at https://codereview.appspot.com/7483043 (annotation internals) and https://codereview.appspot.com/7444052 (CharmInfo API call) ? <rogpeppe> frankban: will do <frankban> rogpeppe: thanks! <frankban> Makyo: lp:~frankban/juju-core/bug-1147138-annotations-api <goodspud> bcsaller, bcsaller_, buzz me anytime you want to talk <goodspud> About your branch <bcsaller> goodspud: we can do it now, as a warning its pretty ugly right now <goodspud> :) <goodspud> Ugly is beautiful <goodspud> Popping to the hangout <bcsaller_> ha, we can try it with a screen share but you'll most likely want a charm and I haven't set that up yet <sinzui> abentley, rick_h_ jcsackett: https://docs.google.com/a/canonical.com/file/d/0B1IM--9A1RkTeENUcHlqMGltMFU/edit is the transition doc <sinzui> There is a slow and fast easing presentation <Makyo> teknico, lp:~makyo/juju-core/jujuapi <teknico> bac, lp:~makyo/juju-core/jujuapi <Makyo> bac, http://golang.org/doc/effective_go.html#embedding <teknico> bac, http://bazaar.launchpad.net/~rogpeppe/juju-core/212-api-doc/view/head:/doc/draft/api.txt <rick_h_> hatch ping, is there support for templates in subapp or does that need to be wired to templates.js as well? <gary_poster> benji http://paste.ubuntu.com/5588644/ <benji> http://paste.ubuntu.com/5588673/ <benji> gary_poster: http://paste.ubuntu.com/5588673/ <abentley> gary_poster: apt-get install sshuttle; sshuttle -r $MYBOOTSTRAP_NODE $SUBNET_OF_BOOTSTRAP_NODE <Makyo> bac, lp:~makyo/juju-core/clientserver <rogpeppe1> Makyo: https://codereview.appspot.com/7499043/ #juju-gui 2013-03-06 <hatch> bcsaller, hey you kicking around? <bcsaller> hatch: I am <benji> gary_poster: http://paste.ubuntu.com/5590575/ <rogpeppe2> gary_poster: try this: http://paste.ubuntu.com/5590638/ <gary_poster> rogpeppe2, thanks. probably did something stupid in quick attempt but http://paste.ubuntu.com/5590661/ . Using a Python hack we had for now. <rogpeppe2> gary_poster: oops, would help if i tested err *not* equals nil: http://paste.ubuntu.com/5590694/ <rogpeppe2> gary_poster: (obviously i'd never actually run this in anger!) <gary_poster> :-) thanks rogpeppe2 will try soon. For now, python is working and we are wrong about something. We send WatchAll, and we get back {"RequestId":1,"Response":{"AllWatcherId":"1"}} . We thought "1" was then the name of the Type, so we sent {'RequestId': 2,'Type': '1','Request': 'Next','Params': {},}. As I suspect you know, this does not work: {"RequestId":2,"Error":"unknown object type \"1\"","Response":{}} <rogpeppe2> gary_poster: yeah, "Type": "AllWatcher" <gary_poster> rogpeppe2, where do we use the id <Makyo> hatch, head -c 100 /dev/urandom | md5sum <hatch> head -c 20 /dev/random|sha1sum|cut -f1 -d' ' <rogpeppe2> gary_poster: "Id": "1" <gary_poster> ack rogpeppe2 <rick_h_> hatch: no rush, but if you get time can you peek at: https://codereview.appspot.com/7513043/ and start the process with that? <gary_poster> rogpeppe2, that didn't work, but we think we figured out why--we needed to add AllWatcher to srvRoot. We did so, but now juju is not starting properly on ec2, and I doubt it has anything to do with our changes. When I run juju status I get "error: cannot log in to admin database: auth fails." I destroyed the environment, changed the bucket id for good luck, and repeated the error. It worked earlier. Ideas? <frankban> Makyo: https://bugs.launchpad.net/juju-core/+bug/1149889 <_mup_> Bug #1149889: Handle/escape dots in annotation keys <juju-core:New> <juju-gui:Triaged> < https://launchpad.net/bugs/1149889 > <Makyo> bac, https://wiki.canonical.com/CDO/Sprints/CloudSprintMay2013 <rick_h_> https://pastebin.canonical.com/86228/ where does FileReader come from in charm-panel? <rick_h_> hatch: ^ <rick_h_> oh hatch ....need to chat when you get a second <rogpeppe2> Makyo: https://codereview.appspot.com/7519043 <Makyo> frankban, http://pastebin.ubuntu.com/5591220/ <frankban> Makyo: https://codereview.appspot.com/7526043 <bcsaller> https://codereview.appspot.com/7522044 is a bug fix for something hopefully no one will see but I could still use the +1s <jcsackett> hatch: why did you disable flick/drag in your carousel? <hatch> jcsackett, preference - you can set it back using the attrs in the config if you want <hatch> although I also cover it with left and right targets to navigate <hatch> so you would also have to turn those off <rick_h_> bcsaller: thanks for updating that <frankban> benji: filed bug 1150575 <_mup_> Bug #1150575: Python charmhelpers log function no longer accepts positional arguments to compose the message <Juju Charm Tools:New> < https://launchpad.net/bugs/1150575 > <benji> cool <shatterednirvana> hi all <shatterednirvana> i was looking to check out the sweet live juju gui demo <shatterednirvana> at http://uistage.jujucharms.com:8080/ <shatterednirvana> but it doesn't seem to be up <shatterednirvana> it just hangs at "Trying to connect to the Juju environment" <Makyo> guihelp: ^^^ * bac looks <Makyo> shatterednirvana, We're on it, just a second. <shatterednirvana> sweet, thanks! <bac> shatterednirvana: the site is up now. thanks for reporting the problem <shatterednirvana> not a problem - thanks for the sweet guy! <shatterednirvana> s/guy/GUI * bac blushes #juju-gui 2013-03-07 <therve> gary_poster, around? <gary_poster> therve, hi <therve> gary_poster, hey! are you still sprinting? I was wondering about the availability of the release <gary_poster> therve, yeah, still sprinting for rest of week. Sorry for not making a release. trunk has what you need though so you could hopefully use the charm and point it to lp:juju-gui and get the LP bits <gary_poster> therve, we will make a release next week while we are recuperating :-) <therve> gary_poster, cool, thank you <gary_poster> np therve, thanks for doing the end-to-end. We'll look forward to the bug reports but hopefully it'll be pretty close :-) <frankban> Makyo: lp:~frankban/juju-core/ann-internals <rick_h_> hatch: ping <Makyo> frankban, http://pastebin.ubuntu.com/5594292/ <frankban> Makyo: https://codereview.appspot.com/7598043 <jcsackett> rick_h_: can you send me a past of your YUI doc snips for snipmate? <rick_h_> jcsackett: http://paste.mitechie.com/show/894/ is my javascript-custom.snippets #juju-gui 2013-03-08 <goodspud> ...---.... ...----... ...---... ...@ <--tumbleweed <Makyo> frankban, lp:~makyo/juju-gui/go-annotations-1152627 * benji hears a hawk cry in the distance. <rick_h_> goodspud: ping, got a design question to toss at you <frankban> Makyo: lp:~frankban/juju-core/bug-1152652-set-annotations <frankban> Makyo: https://codereview.appspot.com/7644043 <goodspud> rick_h_, apologies. Just been in a meeting. I've got your email. <goodspud> rick_h_ do you have time for a hangout? <jcsackett> hatch: could you take a look at https://codereview.appspot.com/7641043 ? <hatch> jcsackett, on it <jcsackett> thanks <rick_h_> jcsackett: hatch for your pleasure if you get time https://codereview.appspot.com/7644044/ <hatch> you got it <benji> gary_poster: test/test_endpoints.js <jcsackett> hatch: what should i use in place of isValue? just (blah !== undefined)? <Makyo> frankban, https://codereview.appspot.com/7641046 <benji> sinzui: http://www.imdb.com/title/tt1139319/ <frankban> rogpeppe1: https://codereview.appspot.com/7526043/ <frankban> hi rogpeppe2, could you please take a look at https://codereview.appspot.com/7598043 ? <rogpeppe2> frankban: will do <frankban> thanks rogpeppe2 #juju-gui 2013-03-11 <gary_poster> jujugui hiya. (1) who is here for a call today? (2) we are in timezone limbo for a few weeks. does anyone care strongly if, during these next few weeks when the US gets super-excited about daylight savings time before everyone else, we start in 15 minutes vs. 1 hour and 15 minutes? <bcsaller> I'm here and any time that works for people is fine with me <gary_poster> cool thanks <Makyo> I'm here, any time's fine, so long as I'm pinged. <frankban> 1) I am here and 2) any time is fine, ESTA begins on 31.03 <gary_poster> cool guys. bcsaller, Makyo, frankban (jujugui) let's talk in 2 <matsubara> hatch, hey there, I see that you got some green lights on that jenkins job. Everything going well? <hatch> matsubara: yes but there is an issue with things happening out of order <matsubara> hatch, something I can help with? <hatch> umm I'm not sure <hatch> hah <hatch> is the console display representative of the real shell console? <frankban> Makyo: hangout in 10? <Makyo> frankban, sure <frankban> cool Makyo: http://tinyurl.com/see-emily-code in 10 <Makyo> rick_h_, Thanks for the suggestion. System Sounds were at 0, which wasn't shown by alsamixer. <rick_h_> Makyo: awesome <gary_poster> Makyo, bcsaller frankban would appreciate two reviews of https://codereview.appspot.com/7641051 <bcsaller> gary_poster: I can review that * gary_poster makes card <gary_poster> thank you <gary_poster> card is in top lane <gary_poster> therve, any word on GUI + Landscape? <therve> gary_poster, what kind of word? :) <gary_poster> therve, lol, like, is it working together? <therve> gary_poster, is the release out? <gary_poster> therve, no, thought you were going to be able to use trunk. I'll ping you when we have release then. second question: if we were to make an optimization that required you to annotate services with the aggregated/summarized unit information (just the flags) how hard would that be? I guess bark estimate of hours, days, or weeks <gary_poster> heh <gary_poster> s/bark/ballpark/ <therve> yeah trunk seemed to fail for some reasons I think <gary_poster> therve, we are talking post demo to be clear <gary_poster> therve, ok cool, we'll release and ping you <therve> gary_poster, you mean change the format for alert annotations? <gary_poster> I think charmhelpers had a backwards incompatibility which brought the whole collection down when you tried to deploy. Think it's fixed, but will know soon enough. <gary_poster> therve, not quite: add two annotations. Right now you annnotate units that need reboots or security upgrades. It would be nice for a bigger optimization in the future if we also had those annotations on the services themselves <therve> oh I see <gary_poster> so, if any of a service's units needs a reboot, for instance, the service also has that flag <therve> let me make a quick code introspection :) <gary_poster> :-) thanks <therve> gary_poster, it looks like it should be fairly easy. Maybe a couple of hours of coding, so 1 day with reviews and QA <gary_poster> therve, awesome! ok, we don't need it now, but I'll keep that in my backpocket for future discussions about the optimization. Thank you! If you ever feel like adding that beforehand, let me know, 'cause then we'd rip out some code on our side. <therve> gary_poster, sure no problem <rick_h_> hatch: ping, have any knowledge/example aroung testing with valuechange event? simulate refuses to simulate it. <gary_poster> I think he's out today rick_h_ <rick_h_> gary_poster: ah ok. I saw him online this morning to figured I'd try <Makyo> gary_poster, ping <gary_poster> Makyo, hi <Makyo> gary_poster, Going through your branch, +1. I'm curious if you found docs on the .lbox file, though. I'm going through the source code now, and just have more questions :) <gary_poster> Makyo, heh, no idea about.lbox, copied and mutated from juju-core :-P <Makyo> gary_poster, alright, seems to work there, so no biggie. Doesn't seem like it'd work from the source, but it certainly works in core, so bonus :D <gary_poster> Makyo, :-) <gary_poster> it worked for me when I submitted juju-gui fwiw <gary_poster> with this branch I mean <hatch> rick_h_: http://jsbin.com/etisaq/1/edit (but I'm not here ;) ) <rick_h_> hatch: yea, that fails to trigger the valuechange. We can chat tomorrow if you get a chance. I'll work around that part for this afternoon. <hatch> are you using valueChange or valuechange? <rick_h_> hatch: hmm, that works in FF though. So maybe I've hit a chrome issue <hatch> I wrote that bin in chrome using valueChange <rick_h_> hatch: yea, don't worry about it atm. I'll investigate browsers/etc. <hatch> alrighty * hatch goes back to house duties from the past week :) <rick_h_> hatch: yea, I was using valuechange since it's lower case in the api docs <rick_h_> but that bin failed for me in chrome dev, worked in FF nightly <hatch> hmm <hatch> odd - I wrote it in Chrome <rick_h_> hatch: version? <hatch> OSX 25.01264.152 <rick_h_> hatch: I'm on 27 dev...so could be a small bug in dev version <hatch> yeah that's possible <rick_h_> so yea, have fun. Sorry to bug you on off day <rick_h_> thanks! <hatch> np :) ping me back if you can't find the bug and I can take another look <frankban> Add the current cobzr branch to the prompt. Not very efficient, but can prevent working/committing to the wrong branch: http://pastebin.ubuntu.com/5605451/ <gary_poster> nice frankban, thanks <gary_poster> frankban, deserves a quick email at the least. Will you send it ir do you want me to? <gary_poster> or <frankban> EOD gary_poster, please do it thanks. That snippet requires bzr to be an alias for cobzr, but it's easy to change if that's not the case. <gary_poster> ack frankban, thanks! I'll send it <gary_poster> have a great evening <frankban> thanks gary_poster, you too <gary_poster> Makyo, LGTM as is. <gary_poster> Thnank you <Makyo> gary_poster, Thanks. <Makyo> guihelp: is it one or two reviews for a paired branch? <gary_poster> Makyo, one <Makyo> gary_poster, Oh, bonus. Thanks :) <gary_poster> :-) * Makyo -> dogwalk #juju-gui 2013-03-12 <gary_poster> hey benji: you working on getting "resolved" landed in go? <bac> hi rogpeppe1, have you had a chance to review my deploy branch? <rogpeppe1> bac: hiya. not yet. i'm actually taking a swap day today, but i might be able to take a look anyway... <bac> rogpeppe1: ok, it would be nice to get it completely resolved, especially since it is in trunk already. <rogpeppe1> bac: ok <gary_poster> frankban, I moved unexpose up to project 1 :-) I will review in a sec. frankban bac teknico I could use two reviews of https://codereview.appspot.com/7741043 * bac looks <gary_poster> card is in review land at top of board <gary_poster> Makyo, frankban I mentioned the difficulty in landing the annotation branch to Mark Ramm as an opportunity for process improvement and I think he will run with it, at least for a bit. <teknico> gary_poster, is there anything I can read about purpose and usage of an in-memory juju environment? <gary_poster> teknico, not pre-written, no. The primary initial usage will be in the charm store for 13.04: people will use this as an in-browser "improv" rather than having everyone actually connect to some shared or not-shared server process. We also think it will be interesting for testing, and we think we need it to implement the presentation (and perhaps creation or editing) of bundles and generally allowing an import that <gary_poster> someone can look at before actually deploying. <teknico> gary_poster, thanks. so is it going to mimic the behavior of both pyjuju and gojuju, and then be kept in sync with both? <gary_poster> teknico, the component here is intended to be raw behavior, irrespective of py or go. It should need to change little, except for big conceptual changes like changing no longer subscribing to all changes. We will have py and go "wire protocols" that will speak to this component, and yes, they will mimic and be kept in sync. The expectation is that keeping pyjuju in sync right now will be cheap, and we will only k <gary_poster> eep go juju in sync if it is actuvely helping our testing. <gary_poster> s/like changing no/like changing to no/ <benji> gary_poster: yep, that's my first priority <gary_poster> cool thanks benji <bac> gary_poster: the daily call time sprung forward, correct? <teknico> right, what's the UTC time for the call? <teknico> uhm, reitveld barfs with "Can't parse the patch to chunks" on app/assets/javascripts/js-yaml.min.js , ok <gary_poster> bac, yeah, that worked for everyone yesterday, but I'm happy to wait to switch until Europe moves if anyone prefers (teknico?). If we do move forward, the UTC time is 1430 <bac> teknico: that is a new file so there is no diff <gary_poster> teknico, ok. that's a minified version of packaged code, so I don't think it needs review. Project is https://github.com/nodeca/js-yaml <bac> teknico: you can see it by using the first link <teknico> bac, yes, I saw it in the lp diff anyway <teknico> gary_poster, I didn't get what the alternative time is for the call, as opposed to 14:30 UTC <gary_poster> teknico, the old time, which was 1530, right? <teknico> I'm fine with 14:30 UTC, btw <gary_poster> ok thanks <teknico> gary_poster, oh, ok * benji prepares his vast collection of DST-supporting lawmaker voodoo dolls. <rick_h_> hatch: around this morning? Still fighting valueChange and curious if you have a sec to take a peek. * teknico lunches <gary_poster> rick_h_, he'll probably be around in 5 or 10 minutes <rick_h_> gary_poster: thanks <hatch> rick_h_: yup back to work today <bcsaller_> hatch: when you get a sec we should check the logs on the CI charm install again, seeing issues there <rick_h_> hatch: otp, but want to bug you about the valueChange test in https://code.launchpad.net/~rharding/juju-gui/search-widget/+merge/152737 <hatch> bcsaller_: yeah I saw your email - was just grabbing the creds, do you want me to reply with them? <bcsaller_> hatch: sounds good <hatch> did DST change today? <rick_h_> hatch: sunday <gary_poster> hatch, Sunday :-) <gary_poster> hatch, not for you yet? <gary_poster> hatch, US has gotten excited about DST lately--we start early and end late <gary_poster> Canada may not have gotten in on the fun <gary_poster> Maybe you switch on the 30th like Europe? <hatch>
{'channel': 'juju-gui', 'month': 3}