[07:35] <mandel> morning all!
[09:11] <JamesTait> Good morning, folks! :)
[11:01] <gatox> good morning!
[11:39] <mandel> gatox, morning!
[11:39] <mandel> gatox, how is the fsevents going?
[11:42] <gatox> mandel, hi..... i was reading a lotttttt yesterday, because of the way the lib works, i couldn't find a way to implement it just as in windows, so i was starting another approach... if you want we can have a mumble about that
[11:42] <gatox> mandel, i mean.... filesystem_notifications is going to work in the same way... but i need to change some things in watch and watchmanager
[11:43] <mandel> gatox, no worries, I was just curious, take your time
[11:43] <mandel> gatox, in my side I managed to get an objective-c and python (with twisted) talking with eachother via the use of objective-c distributed objects
[11:44] <mandel> gatox, I'm looking at how to provide security on top of that
[11:45] <gatox_mac> mandel, cool!!
[11:46] <gatox> testing testing....
[11:46] <gatox> jeje..... the messages from this client was working.... i could see the message in the other machine, but not hear.... it seems to be working now
[11:46] <gatox> s/was/wasn't
[11:46] <mandel> :)
[11:58] <thisfred> mandel: there is no way to get credentials without twisted, correct?
[11:59] <mandel> thisfred, what do you mean?
[11:59] <thisfred> from ubuntuone.platform.CredentialsManagement, I mean
[12:00] <mandel> thisfred, on windows no, on linux the code uses dbus
[12:00] <mandel> thisfred, it might be the case that is has a deferred but that does not mean you need a twisted mainloop
[12:00] <thisfred> well, I need a mainloop
[12:00] <thisfred> I can't just call something and get the value, or can I?
[12:01] <thisfred> inlineDeferreds?
[12:01] <mandel> thisfred, you can ask the keyring to get the creds directly via the dbus api
[12:02] <thisfred> yeah, but I'd like to reuse what we have, because that makes more sense, and presumably will make the example code less complex
[12:02] <mandel> thisfred, ok, waht are you using to write the app?
[12:02] <thisfred> qt
[12:03] <mandel> thisfred, then you do have a mainloop, the qt one, so don't worry about it, just use inlineCallbacks to make it simpler to read
[12:03] <thisfred> so presumably I already have a mainloop somewhere
[12:03] <thisfred> mandel: cool
[12:03] <mandel> thisfred, you always have a mainloop with qt, otherwise signals and slots don't work
[12:03] <thisfred> another app infested with twisted dependencies
[12:04] <thisfred> ;)
[12:04] <mandel> thisfred, at some point I mentioned to use the defer module instead for those libs that do not depend on twisted per se
[12:04] <mandel> thisfred, I don't know what happened..
[12:04] <thisfred> I wish Python would grow some async primitives itself already
[12:05] <mandel> thisfred, or just add greenlets to it :)
[12:05] <thisfred> yeah, that'll *definitely* make the code simpler ;)
[12:05] <mandel> thisfred, simpler to read for sure.. to understand why things brake... that is diff hehe
[12:06] <mandel> thisfred, in python-madrid we are always arguing about the two in the pub
[12:07] <thisfred> I hate em both
[12:07] <thisfred> async execution and communication between microprocesses need to be separated a la go
[12:08] <thisfred> they are separate concerns
[12:09] <mandel> thisfred, go is a modern lang with modern paradigms, we are not in that boat just yet
[12:10] <mandel> thisfred, would not be surprised if we just though.. we are sexually abusing python in so many ways..
[12:10] <thisfred> I know, but it doesn't seem python is even moving in the right direction in this respect. yield from is not gonna fix it
[12:13] <mandel> thisfred, it would be interesting for us 'canonical' to pick a lang and improve it for our use, i understand why apple uses objective-c in a way..
[12:14] <thisfred> mandel: they have a few more people to dedicate to such a task
[12:14] <gatox> mandel, interesting....
[12:14] <mandel> thisfred, just a few ;)
[12:15] <thisfred> I like the idea of having a language that is more widely used. And I also like that we're pragmatical about it. I think go will see some uptake in the next few cycles
[12:16] <mandel> thisfred, I'd love to see that happening, I have the feeling we are reaching very fast the ceiling of what can be done
[12:16] <mandel> thisfred, performance is important
[12:18] <thisfred> I don't think we're hitting performance limits in python (at least not client side) but yeah, some things are easier to make perform if the language is more clueful about concurrency
[12:19] <mandel> thisfred, for an implementation of the fs event on mac for example we cannot use python :(
[12:21] <ralsina> good morning!
[12:21] <gatox> ralsina, hi
[12:22] <ralsina> gatox, mandel, thisfred: I am sending those PDFs now, I didn't get round to it yesterday.
[12:22] <gatox> ralsina, ack
[12:22] <thisfred> mandel: well yeah, that's mac though.
[12:23] <mandel> ralsina, no problem, so I have several implementations do do ipc between objective-c and python, I'll be writing a doc about them
[12:23] <ralsina> mandel: there are reports that we don't support wpad.dat proxy auto config. That's because we would have to implement the parsing ourselves, or is there something else?
[12:23] <mandel> ralsina, yes, it will be work we have to do
[12:25] <ralsina> mandel: ok, we can just have a standard reply for the moment
[12:35] <mandel> ok, time for lunch
[12:53] <ralsina> mandel: http://code.google.com/p/pacparser/
[13:54]  * mandel back
[14:13] <gatox> this is the case where the last 10% is equal the 90% of the task jeje
[14:50] <mandel> ralsina, gatox, did you guys get eamil about the tests that I wrote answering mmcc?
[14:50]  * mandel does not trust his email client
[14:50] <ralsina> mandel: yep
[14:50] <gatox> mandel, yes......
[14:50] <ralsina> mandel: and thanks, I had not noticed a couple of those things :-)
[14:50] <mmcc> mandel: I got it too. read it super late last night, need to re-read again
[14:51] <mandel> all, thx :)
[14:51] <mmcc> mandel: why don't you trust your cilent?
[14:52] <mandel> mmcc, is evolution, and is just a theory ;-)
[14:52] <mandel> mmcc, evolution has been misbehaving recently
[14:54] <gatox> mandel, move to thunderbird
[14:54] <ralsina> standup in 6'!
[14:55] <gatox> ack
[14:57] <mandel> gatox, never! I like my evolution!
[14:57] <gatox> mandel, so stop complaining! jeje
[14:58]  * mandel likes to complain
[14:58] <gatox> mandel, me too...... it's free jejeje
[15:00] <gatox> me
[15:01] <gatox> ralsina, mandel mmcc thisfred standup?
[15:01] <thisfred> me
[15:01] <mmcc> me
[15:01] <mandel> me
[15:01] <briancurtin> whoops, that snuck up on me. writing now
[15:01]  * mmcc is not actually standing
[15:02] <gatox> briancurtin, sorry.... you too :P
[15:02] <ralsina> me
[15:02] <gatox> DONE:
[15:02] <gatox> Keep working on fsevents for MAC OS, made some changes in filesystem_notifications for MAC OS. Now working on Watch and WatchManager.
[15:02] <gatox> TODO:
[15:02] <gatox> Need to reimplement some parts of Watch and WatchManager. Fix SSO NetworkDetectionPage issue.
[15:02] <gatox> BLOCKED:
[15:02] <briancurtin> me
[15:02] <gatox> No
[15:02] <gatox> thisfred, go
[15:02] <thisfred> DONE: u1todo sync TODO: finish same BLOCKED: no NEXT: mmcc
[15:03] <mmcc> DONE: continued working on ctypes interface with SCNetworkReachability C API, learned more about dbus and the linux test suite
[15:03] <mmcc> TODO: need to debug ctype callbacks for network reachability. Follow up with mandel about test suite.
[15:03] <mmcc> BLCK: none
[15:03] <mmcc> NEXT: mandel
[15:03] <mandel> DONE: Looks at possible ways to communicate between objective-c and python. Got an example application that uses Distributed objects over match ports that allows to send objective-c objects using twisted and the pyobjc reactor.
[15:03] <mandel> TODO: Write code that uses a delegate to block connections that try to be evil. Write an XMLRpc example with objective-c and the xmlrpc code from twisted (does not add the need of pyobjc and might allow to use the same delegate idea to block evil clients. Think about an other options for this.
[15:03] <mandel> BLOCKED: no
[15:03] <mandel> ralsina, please!
[15:03] <ralsina> DONE: mailed reviews, did a couple of 1-1s about them, did some code reviews, random bits and pieces, feeling unfocused, need to focus. TODO: focus, finish manager things, fix  bug before I forget how it's done BLOCKED: sleepy
[15:03] <ralsina> I have lag, so amnot sure who(if any) was next
[15:03] <briancurtin> DONE: several branches to fix jenkins and a windows issue reported against 3.0.0 (again)
[15:03] <briancurtin> TODO: get back to that installer automation branch, fix other windows issues, etc
[15:03] <briancurtin> BLOCKED = lambda: None
[15:03] <briancurtin> NEXT: ?
[15:04] <ralsina> briancurtin: did 3.0.0 get signed?
[15:04] <briancurtin> also, take care of windows signing if they ever do it. will ping them on #is in a minute since they never responded to email
[15:04] <briancurtin> i have no idea what they are doing
[15:05] <ralsina> briancurtin: ok
[15:05] <briancurtin> is there any trick to communicating in #is, or do i just say my issue and hope someone reads it?
[15:06] <briancurtin> no one seemed to be listening yesterday
[15:06] <mandel> briancurtin, if it is about an rt I think you can find in whose q it is
[15:07] <mmcc> mandel: I was just reviewing the NSDistributedNotificationCenter docs, and it says it's expensive, and might drop notifications if traffic is high… so if we're sending updates from the daemon to the userland listener too fast, we could overflow the notification center queues and lose updates…
[15:08] <mmcc> mandel: I'm looking here: https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/Notifications/Articles/NotificationCenters.html#//apple_ref/doc/uid/20000216-BAJGDAFC
[15:08] <mmcc> what a beautiful URL that is
[15:08] <mandel> mmcc, I'm nearly done cleaning up an example, give me a couply of mins and I'll push it, I thing distributed objects are different but I'm not sure
[15:09] <mandel> mmcc, that way you can also compain about by object-c :)
[15:09] <briancurtin> ralsina: ChrisS did the signing of the binaries and he's vanguard in #is now, pinged him so we'll see how that works...
[15:09] <mmcc> mandel ok, I'll have a look
[15:09] <ralsina> briancurtin: I usually ping in their channel every two hours until someone picks it
[15:09] <ralsina> briancurtin: mandel's idea is good see if it's assigned to someone
[15:10]  * mmcc just discovered that pressing 'a' archives the selection in Thunderbird. \o/
[15:10] <ralsina> briancurtin: awesome
[15:10] <briancurtin> ralsina: ChrisS says it'll get done today, it's on the top of the stack. he tried recently and it broke, but they'll get it
[15:11] <ralsina> briancurtin: ack
[15:16]  * gatox lunch
[15:26] <thisfred> mandel: I'm not getting the inline callbacks working, could you have a look to see what I'm doing wrong? (Pretty sure I have to somehow communicate that I want it to use the qt mainloop, but no idea how or where) : http://bazaar.launchpad.net/~thisfred/u1db/u1todo-sync/view/head:/u1todo/ui.py#L112
[15:26] <mandel> thisfred, sure
[15:27] <mandel> thisfred, return =  yield cmt.find_credentials()
[15:28] <mandel> thisfred, sorry I meant result =  yield cmt.find_credentials()
[15:28] <mandel> thisfred, although there is not real need, can we mumble and I'll tell you better?
[15:28] <thisfred> sure 1 sec
[15:33] <mandel> thisfred, http://dbus.freedesktop.org/doc/dbus-python/doc/tutorial.html
[15:38] <mmcc> mandel, more bad news for distributed objects: - the OS X daemons and services programming guide: https://developer.apple.com/library/mac/#documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/DesigningDaemons.html#//apple_ref/doc/uid/10000172i-SW4-106237 says "RPC (remote procedure call) mechanisms such as Distributed Objects should be avoided for communication across security domain boundaries, for example a user process
[15:38] <mmcc> communicating with a system-level daemon, because this creates a security risk. They are appropriate only when you can be certain that both processes involved have the same level of privileges."
[15:40] <thisfred> mandel: yay works!
[15:42] <mandel> :)
[15:43] <mmcc> mandel, I'm starting to think this daemon should be in plain C. There don't seem to be any ObjC API that are more appropriate than the C API…
[15:43] <mandel> mmcc, dammed! ok, there it goes that idea..
[15:44] <mandel> mmcc, ok, so we remove the DO idea, xmlrpc seems stupid too, right? i has the same issue that security is an issue
[15:45] <mmcc> mandel, why is that an issue? I'm not familiar with xmlrpc…
[15:45] <mandel> mmcc, same problem, we need to add a layer for auth otherwise any can connect to us..
[15:47] <mmcc> mandel, refresh my memory - are we worried about other users listening to updates from the daemon that are intended for a different user?
[15:48] <mmcc> ie, alice and bob are logged in and alice can inappropriately hear about changes bob's making in the filesystem
[15:49] <mmcc> -or- are we worried about other processes that bob is running, also snooping on the fsevents traffic we're sending to bob?
[15:50] <mandel> mmcc, exactly, I was considering using match ports namespacing to avoid such an issue
[15:50] <mmcc> mandel, sorry, which one?
[15:50] <mandel> mmcc, mach, sorry, extra t
[15:51] <mmcc> mandel: no, I got that - I didn't get which situation you are worried about (users snooping on each other or one user's processes snooping)
[15:52] <mandel> mmcc, both are a problem, more worried about the first since if you added an evil app is kind of your fault
[15:53] <mmcc> mandel: I agree. for that matter, another app could be using FSEvents to snoop on what you're doing. I think other apps are not a concern
[15:53] <mmcc> just wanted to be sure I understood - thanks for bearing with me :)
[15:53] <mandel> mmcc, no problem :)
[15:55] <ralsina> apps can snoop on the user's other apps via FSEvents anyway, so only across users
[15:55] <ralsina> ok, next time I must read *all* the backlog
[15:56] <mmcc> ralsina: no, I like that - it's like independent confirmation :)
[15:56] <ralsina> hehe
[15:57] <mandel> mmcc, ralsina, I'm looking at how the namespaces can help us with this, when a mac starts a users session is created for the system and one for each user that logs in the system. For each session the system, in truns, creates a new mach port namespace,. Sessions can create extra namespaces as needed
[15:58] <mmcc> ok, so I'm chasing down the docs now, but I believe that the root daemon can set the uid/gid of a unix domain socket, which then limits who can read from it…
[15:58] <mandel> mmcc, ralsina, but in general each app in the session uses the same namespace
[15:58] <mmcc> mandel, I think mach ports might be lower level than we need for this… that is just a hunch tho
[15:58] <ralsina> mmcc: if it's as in other unixes, yes, that's just permissions
[15:59] <mmcc> ralsina: at this level, it should be 100% just like BSD
[15:59] <ralsina> mmcc: easy then
[15:59] <mandel> mmcc, ralsina , the way I understand the match arch, the parent namespaces can be accessed by child namespaces but not the other way around
[15:59] <mmcc> for example, 'man socket' is in the 'BSD system calls manual'
[16:00] <mandel> mmcc, mumble and we talk about how I think it works?
[16:00] <mandel> mmcc, I think that by using mach ports we can ignore the cross user problems and such focus on the protocol needed
[16:01] <mmcc> mandel: just a sec and I'll set up mumble. I unplugged my usb headset because I blame it for yesterday's kernel panic
[16:01] <mandel> mmcc, sure :)
[16:15] <ralsina> lunchtime for me
[16:16] <ralsina> briancurtin: looks like the installer is up!
[16:16] <ralsina> briancurtin: so start pinging l-sas :-)
[16:17] <briancurtin> ralsina_lunch: cool, i'm on it now
[16:29] <mandel> ok, rugby time for manuel!
[16:29] <mandel> see you all tom!
[16:29] <gatox> mandel, bye
[16:30] <mmcc> ok, panini time for michael!
[17:46] <ralsina_lunch> anyone needs any reviews? I have time.
[17:47] <gatox> nop yet
[17:49] <ralsina_lunch> gatox: how's the "disabled" thing going? Is that the one you are working on?
[17:50] <gatox> ralsina_lunch, no, i'm waiting for nessita's logs for that one, because i wasn't able to reproduce it.... and the code seems fine
[17:50] <ralsina_lunch> gatox: ack
[17:51] <gatox> ralsina, now i'm working with fsevents... and i'll probably fix the one about networkdetectionpage today.....
[17:51] <ralsina> gatox: ok, awesome
[17:53] <alecu> hola!
[17:54] <gatox> alecu, buenas
[17:54] <alecu> hola gatox, how is it going?
[17:54] <alecu> gatox: how's the mac port coming along?
[17:55] <gatox> alecu, fine..... working on filesystem notificatoins..... i need to do some changes in Watch and WatchManager because the macfsevents lib works different of how these classes expect..... but trying to figure it out that
[17:56] <alecu> gatox: wait, wait wait!
[17:56] <alecu> gatox: what?
[17:56] <alecu> gatox: where are you putting macfsevents?
[17:56] <alecu> gatox: inside syncdaemon?
[17:59] <gatox> alecu, the darwin part of filesystem_notifications for mac..... have the Watch and WatchManager like windows, to simulate pyinotify api..... but there are some differences on how this is being used.......... i was doing that to get the things working, and then we can focus on ipc.... or do you think that we should focus first in having macfsevents working as a separate process
[17:59] <gatox> ?
[18:01] <alecu> gatox: no, I got scared for a minute, since I understood you were putting macfsevents inside the Watch and WatchManager classes.
[18:01] <alecu> gatox: iirc those two classes were made specially for the windows port.
[18:02] <alecu> gatox: and I'm not sure if they are used when sd runs under ubuntu
[18:02] <alecu> gatox: perhaps you can take a look at that; if they are only used in windows they might not make much sense for mac, that seems to provide nicer notifications.
[18:04] <gatox> alecu, mmmmm actually..... watchmanager is using the observer of macfsevents..... and the watch class is creating the stream to watch.......  yes, i know..... but i was modifying watch and watchmanager, to adapt they behaviour to mac, but respecting the actual api.... so it's going to be very similar to windows.... only changing the watch and watchmanager implementation..... but FilesystemMonitor and that..... you don't have to change anytih
[18:04] <gatox> ng
[18:05] <alecu> gatox: ack
[18:05] <alecu> gatox: it sounds like a good idea.
[18:05] <gatox> alecu, either way..... don't worry.... i'm trying to be very careful with this, and i'll ask for some opinions to you and mandel even before proposing
[18:06] <alecu> gatox: awesome!
[18:06] <alecu> gatox: make sure to include mmcc in those discussions too
[18:06] <alecu> and reviews.
[18:06] <gatox> alecu, yes, of course
[18:10]  * alecu brbs
[18:13] <briancurtin> ralsina: should we do a 1-1?
[18:17] <ralsina> briancurtin: let's!
[18:22] <thisfred> can I get a review on https://code.launchpad.net/~thisfred/u1db/u1todo-sync/+merge/105102 pretty please?
[18:22] <thisfred> it's not C
[18:23] <gatox> thisfred, you have conflicts
[18:23] <thisfred> ah it has conflicts, one sec
[18:23] <gatox> thisfred, you don't..... the branch :P
[18:28] <thisfred> https://code.launchpad.net/~thisfred/u1db/u1todo-sync2/+merge/105103
[18:28] <thisfred> gatox ^
[18:28] <gatox> thisfred, reviewing....
[18:28] <thisfred> the other branch had something merged in that was not necessary
[18:31] <ralsina> thisfred: doing the other review
[18:31] <briancurtin> ralsina: windows root issue: https://code.launchpad.net/~brian.curtin/ubuntuone-client/fix984407-windows-is_root/+merge/104967
[18:31] <thisfred> ralsina: thx!
[18:31] <ralsina> briancurtin: got it!
[18:32] <alecu> ralsina, briancurtin: what's the "root issue"? anything to do with ssl?
[18:33] <ralsina> alecu: no, detecting if the user is an admin
[18:33] <alecu> oh, "root" as in "administrator"
[18:33] <gatox> thisfred, how can i run the tests for u1db?
[18:33] <alecu> right.
[18:33] <ralsina> alecu: on windows, our best attempt failed every once in a while so we are changing it to "this is not the administrator you are looking for"
[18:33] <alecu> ralsina, great.
[18:33] <thisfred> gatox: make check (install 500 secret build dependencies)
[18:33] <alecu> ralsina, any news regarding the ssl issue?
[18:34] <gatox> thisfred, ok.... thx!
[18:34] <thisfred> gatox: you'll be happy to know this code is 100% untested, so you don't have to :D
[18:34] <alecu> ralsina, last I knew the 3.0.0 with qt 4.7 was being tested by users...
[18:34] <gatox> thisfred, ahhhh jejej okokk
[18:34] <thisfred> gatox  PYTHONPATH=. python u1todo/ui.py
[18:34] <thisfred> to look at the ui
[18:35] <ralsina> alecu: it cured itself for some, for other we found the opendns issue, no more reports.
[18:35] <alecu> ralsina, awesome news.
[18:35] <ralsina> alecu: so, we are rolling out and will try to fix it on a case-by-case basis, and keep a copy of 2.0.3  handy
[18:35] <alecu> great!
[18:37] <alecu> ralsina, gatox: btw: I've got a crash course of QML by the guys that are making unity2d, and I really liked it.
[18:37] <mmcc> catching up on the macfsevents discussion earlier with alecu & gatox - sounds like it's making sense so far. IIRC The watch & watchmanager classes are from pyinotify, and we're having to implement work-alike versions on Windows and MacOS, right gatox?
[18:37] <thisfred> gatox: I was in a bit  of a hurry because aquarius has to demo this tomorrow. The good news is, if it all doesn't work, I'll be 1000s of miles away
[18:37] <alecu> ralsina, now we are making some u1cp mockups in qml, to see how it would look.
[18:37] <gatox> mmcc, yes
[18:37] <ralsina> alecu: AFAICS we can move to QML without *too* much problem, since our UI is decoupled
[18:37] <gatox> alecu, yes..... qml is really niceeeee
[18:37] <ralsina> alecu: it's a lot of fun, really
[18:37] <alecu> ralsina, right
[18:38] <gatox> alecu, are those talks recorded or something?
[18:38] <alecu> gatox: all uds sessions are broadcasted live
[18:38] <alecu> gatox: you can take part of those sessions via irc
[18:38]  * gatox didn't know..... :(
[18:38] <mmcc> gatox: ok, sounds good. I'm curious about what you mentioned about using macfsevents in a separate process, though. but if you're not doing that right now we can wait to discuss
[18:39] <gatox> mmcc, yes........ i'm not doing that right now, i would like to have this working, and then we can discuss if the other thing is necessary, and how to do it
[18:39] <gatox> thisfred, there is a issue in the delete method of ui.py, line 64
[18:39] <alecu> gatox: anyway, the qml crash course was just a 1-1 session with the unity-2d guy, so it's only been saved "in my miiiiiiind"
[18:39] <mmcc> gatox: perfect
[18:39] <gatox> alecu, ahhh
[18:40] <ralsina> thisfred: why is the code in lines ~309 the same as in lines ~291 ?
[18:40] <gatox> thisfred, you need to check that the item is not none.... or it will crash if the user didn't select any item in the list
[18:40] <ralsina> thisfred: shouldn't that be some method in the task thingie?
[18:40] <thisfred> picky, picky
[18:41] <ralsina> thisfred: well, it's called code review not code buy-you-a-beer
[18:41] <alecu> gatox, mmcc: since syncdaemon already has a twisted main loop, and we want to have a different main loop as the event api needs, we choose to run those two main loops in separate processes.
[18:41] <duanedesign> can one of the Windows people please take a look at this:  https://pastebin.canonical.com/65692/
[18:41] <thisfred> ralsina: can we rename it? :)
[18:41] <ralsina> thisfred: ha!
[18:41] <alecu> mmcc, and have them communicate using some kind of ipc.
[18:42] <ralsina> duanedesign: well, if the user's profile folder is actually c:\SPB_Data then there's no way to fix it until we implement sync-outside-home
[18:43] <gatox> thisfred, did you get my messages?? do you want me to add that to the merge proposal?
[18:43] <ralsina> duanedesign: OTOH, if his profile folder is actually c:\users\adam then maybe this is a fixed bug where if the "HOME" environment vriable is set, we got conused
[18:43] <ralsina> confused*
[18:43] <mmcc> alecu, I don't think you need to do that - the macfsevents library has a '.starts()' function that starts the observer in a separate thread
[18:44] <alecu> mmcc, we already have plenty of threads inside syncdaemon. I'm not really keen on having more :-)
[18:44] <thisfred> gatox looking
[18:44] <mmcc> alecu: hmmm.
[18:45] <gatox> alecu, we could do something like rector.callInThread(observer.run).... maybe?
[18:45] <alecu> mmcc, we've traditionally had thread issues when mixing the twisted reactor with some other apis.
[18:45] <mmcc> gatox: how is that different from observer.starts()
[18:45] <mmcc> alecu - oh, ok
[18:46] <ralsina> thisfred: +1 but see if you can refactor that, and like gatox said, whenever you try to get an item from the list, check that it's not none.
[18:46] <mmcc> alecu: in general, I like threads :) but since we're going to have to have a separate process to do the sudo root daemon anyway…
[18:46] <alecu> gatox: it looks like the same as observer.start starting a new thread, like mmcc says
[18:46] <gatox> alecu, mmcc, not sure..... and actually in a stand alone example it didn't work....
[18:46] <alecu> mmcc, right.
[18:46] <mmcc> alecu: and that will require an IPC protocol definition, anyway - if we can use the same one for both, then that's good
[18:47] <gatox> mmcc, alecu, the thing is, that the macfsevents way to work, seems to be really mixed with threads
[18:47] <alecu> mmcc, gatox: anyway: if you guys want to do some IRL tests to see how SD performs when having the events running in a thread, go ahead.
[18:47] <alecu> I understand it would be much easier to start this way.
[18:48] <alecu> and if we start having weird issues we can always use the ipc as we will be making for the root process.
[18:48] <gatox> mmcc, alecu, i'll try to have things working using macfsevents as it was intended.... and then i'll write a mail explaining the branch.... so all of you can review it.... and read why i did one thing or another.... sounds ok?
[18:48] <alecu> gatox, mmcc: does that make sense?
[18:48] <thisfred> ralsina: gatox: both issues fixed in r272
[18:48] <alecu> gatox: sure!
[18:48] <gatox> thisfred, great..... checking
[18:48] <duanedesign> ralsina: what should I tell the user (what info to get)?
[18:49] <gatox> alecu, cool.....
[18:49] <mmcc> gatox: yes, that sounds good
[18:51] <mmcc> my related question about twisted: in the OSX cocoa framework there's a 'main' thread, and a convenient way to synchronize things is to schedule a method call to be called 'later' on the main thread - so you can e.g. guarantee that a shared data structure is only ever modified on the main thread, and avoid locking (you're really just using the framework's locking on the method call queue)
[18:51] <alecu> mmcc, right. On twisted it's similar
[18:51] <mmcc> is there a similar idiom in twisted - like, schedule this runnable on another (or a "main") thread? Mandel mentioned something like that on my first week but my brain is full…
[18:52] <mmcc> alecu: cool, that's what I thought
[18:52] <alecu> mmcc, the twisted reactor runs in a main thread, and if you ever need to start a thread, you have a way to run things from the other thread in the main thread.
[18:52] <mmcc> so from the callback function we give macfsevents , we schedule an insert for the event onto the main thread and we're happy
[18:52] <alecu> mmcc, reactor.callFromThread, and reactor.callInThread
[18:52] <ralsina> duanedesign: you could try opening %profiledir% in windows explorer
[18:53] <ralsina> duanedesign: I am not sure that's the right name
[18:53] <ralsina> duanedesign: or the right variable ;-)
[18:53] <alecu> mmcc, also there's "reactor.deferToThread", but it does not look useful in this case.
[18:53] <gatox> thisfred, +1
[18:53] <mmcc> alecu: cool. I think 'reactor' is one of those names that makes it sound more complicated than it really is :)
[18:53] <thisfred> gatox thx!
[18:54] <alecu> mmcc, right :-)
[18:55] <gatox> ralsina, IIRC, to see the userhome in windows (if that's what you want) is: %USERPROFILE%
[18:55] <ralsina> duanedesign: what gatox said ^
[18:56] <alecu> mmcc, well, "reactor" is the twisted main loop, and the whole of twisted follows some interesting design patterns from some older C++ framework, and those weird naming conventions came from there.
[18:56] <gatox> ralsina, duanedesign yes...... just checked..... that's it %USERPROFILE%
[18:56] <mmcc> alecu, ah I see
[18:56] <duanedesign> gatox: not to be a fool but that goes in the command prompt
[18:57] <briancurtin> duanedesign: if you type "echo %USERPROFILE%" in the cmd prompt that'll spit out the directory
[18:57] <alecu> mmcc, gatox: this is what you guys should be using: http://twistedmatrix.com/documents/current/core/howto/threading.html
[18:57] <mmcc> thanks alecu.
[18:57] <duanedesign> gatox: i am pretty noob when it comes to win
[18:58] <gatox> duanedesign, yes
[18:58] <alecu> mmcc, gatox: I think only reactor.callFromThread is needed.
[18:58] <duanedesign> thank you sir
[18:58] <gatox> duanedesign, as briancurtin says
[18:59] <gatox> alecu, great! thanks..... i've been reading that..... i'll check how to integrate it with what i'm doing
[20:19] <gatox> eod here!! see you tomorrow
[20:25] <ralsina>   I have to go pickup my son from his first ever football practice!
[20:26] <ralsina> I will be doing reviews or whatever later, so just ping me if you need me
[20:26] <briancurtin> cool, see ya ralsinas
[20:26] <briancurtin> or just one ralsina
[20:48] <thisfred> ralsina: can I have one more fairly trivial review? https://code.launchpad.net/~thisfred/u1db/fix-stupid/+merge/105125 I messed up when doing your suggested refactor and then renaming the method. I'm driving too fast today
[20:49] <thisfred> oh he's gone. gatox? :) ^
[20:50] <thisfred> oh, also eod, I'll ask #u1db
[20:53] <thisfred> anyone here can do a one line review? I changed a method name and missed one call site
[20:53] <thisfred> briancurtin: ^?
[20:54] <briancurtin> thisfred: looking
[20:54] <thisfred> oh nm done
[20:54] <thisfred> briancurtin: thx solved already
[22:35] <czajkowski> aloha
[22:37] <dobey> hi czajkowski
[22:38] <dobey> go back to uds :P
[22:39] <czajkowski> dobey: I am here
[22:39] <czajkowski> I've not left
[22:39] <czajkowski> I'm in the leadership summit
[22:40] <dobey> i know you're here :)
[22:41] <czajkowski> bah I've not seen you yet
[22:41] <czajkowski> nice to put the face to the name
[22:41] <dobey> heh
[22:46]  * dobey goes back to uds
[22:47] <beuno> czajkowski, he'll be the one with a 6" laptop