User:Which Linden/Office Hours/2007 Oct 25
Jump to navigation
Jump to search
Transcript of Which Linden's office hours:
[11:12] | Which Linden: | As usualy, I'll be putting up a transcript, so, you know, say hi to the intrepid wiki wanderer |
[11:12] | Tillie Ariantho: | Hi! ,) |
[11:12] | Donovan Linden: | hi intrepid wiki wanderer |
[11:12] | Saijanai Kuhn wonders if anyone else sees him as sitting above the chair... | |
[11:12] | Zha Ewry: | Heh. The one a week how's able to get the page to load |
[11:12] | Which Linden: | Yeah, Sai, that's a tiny chair |
[11:12] | Saijanai Kuhn: | ah... |
[11:13] | Which Linden: | Wow, I need to get more seats |
[11:13] | Zha Ewry: | There. free seat ;-) |
[11:14] | Which Linden: | So, topic possibilities for today: tracing through a login process in some detail (current or future), or discussing the stuff that's going on in evnetlet/mulib |
[11:14] | Zha Ewry: | mulib? |
[11:14] | Zha Ewry votes, softly for mulib | |
[11:14] | Which Linden: | I tend to talk a lot at these things so it'd be cool to switch it up a bit and have you all drive the discussion for a bit |
[11:14] | Which Linden: | Mulib sounds awesome, and it's good timing that Donovan is here |
[11:15] | Saijanai Kuhn: | which is mulib? |
[11:15] | Saijanai Kuhn: | or Which, what is mulib... |
[11:15] | Which Linden: | Mulib is a RESTful web services library |
[11:15] | Which Linden: | http://wiki.secondlife.com/wiki/Mulib |
[11:16] | Which Linden: | I guess at its most essential it exposes a hierarchical data structure over a REST interface |
[11:17] | Which Linden: | Take a look at these examples: http://wiki.secondlife.com/wiki/Mulib/Examples |
[11:17] | Which Linden: | The stacked example is especially elegant |
[11:18] | Donovan Linden: | man the wiki is slow |
[11:18] | Zha Ewry: | I was about to say, "It might be, if it loaded" |
[11:18] | Which Linden: | Man, worked for me |
[11:18] | Zha Ewry: | The wiki.. is intense pain |
[11:18] | Zha Ewry: | Currently, seems to shed, about 2/3 of requests |
[11:19] | Zha Ewry: | Ah. There it goes |
[11:19] | Which Linden: | Ugh, if anyone wants to come up with analysis of where it's fucking up, please send that along |
[11:19] | Which Linden: | We don't host it, but we could pass that information on to our hosting providers |
[11:20] | Zha Ewry: | Rob Linden's been looking into it, too |
[11:21] | Which Linden: | So, yeah, the stacked traversal is pretty neat in that you can make those dict keys appear as url segments, and the response to a request will be the valu of the key |
[11:21] | Tao Takashi: | Hi |
[11:21] | Tillie Ariantho: | hey Tao. Have a cold? :D |
[11:21] | Which Linden: | This is pretty new stuff, though, I don't think we use this capability very much yet internally |
[11:21] | Which Linden: | Hey tao |
[11:21] | Tao Takashi: | trying to prevent a cold, getting cold these days ;-) |
[11:21] | PulseBurst Flow: | Hi Tao |
[11:22] | Donovan Linden: | hey tao |
[11:22] | Which Linden: | Hello Gareth |
[11:22] | Tao Takashi: | Hi Donovan, Which, Pulse! |
[11:22] | Tao Takashi: | Hi gareth |
[11:22] | Saijanai Kuhn: | hey all |
[11:22] | Zha Ewry: | /its write, so when you put a term it gets added to the dictionary? |
[11:22] | Which Linden: | man, the groupies are all here, it seems |
[11:23] | Which Linden: | Yes, Zha |
[11:23] | Which Linden: | Exactly |
[11:23] | Gareth Ellison: | hi |
[11:23] | Tao Takashi: | Which: I will do that egg tutorial this weekend :-) |
[11:23] | Saijanai Kuhn: | turtle is mute |
[11:23] | Zha Ewry: | What happens when you put the second term, on the same node? |
[11:23] | PulseBurst Flow: | Hi Gareth |
[11:23] | Zha Ewry: | (same URL segment) |
[11:23] | Gareth Ellison: | so i heard this was a talk about mulib |
[11:23] | Which Linden: | Looking forward to it, Tao |
[11:23] | Which Linden: | Zha: putting a second time is a replace |
[11:23] | Gareth Ellison: | i been pimping mulib |
[11:23] | Donovan Linden: | zha: you mean to the same leaf? it overwrites, standard PUT semantics |
[11:23] | Gareth Ellison: | anyone got logs? |
[11:24] | Zha Ewry debates if that's fully idempoitent for a long moment | |
[11:24] | Zha Ewry: | Yeah, it is |
[11:24] | Which Linden: | I think it is from the perspective of the putter |
[11:24] | Which Linden: | put-er? |
[11:24] | Donovan Linden: | it is, because requests are atomic, and each one replaces that branch of the tree |
[11:24] | Zha Ewry: | Not sure what happens with two putters |
[11:24] | Which Linden: | You can have strange results if two different parties try to put to the ame url |
[11:24] | Zha Ewry: | I think one could argue, that the second putter, is giong to be surprised |
[11:24] | Saijanai Kuhn: | the golf game takes a long time? |
[11:24] | Gareth Ellison: | Donovan: python dicts and mulib - secure or not? |
[11:25] | Donovan Linden: | last put from the perspective of the server wins |
[11:25] | Zha Ewry: | That, I'm not quite so sure is idempoitent |
[11:25] | Gareth Ellison: | since any client can send DELETEs |
[11:25] | Donovan Linden: | gareth: I wouldn't put this server anywhere untrusted input could be generated |
[11:25] | Which Linden: | Well, that's sort of an interesting question about idempotency |
[11:25] | Donovan Linden: | if I wanted to allow direct access to it, it would be through a proxy that disallows PUT and DELETE |
[11:25] | Zha Ewry: | Once *could* argue that the put, once accepted.. creates a new resource, and the old one should reject futrther puts which are diffeernet |
[11:25] | Gareth Ellison: | what practical uses does mulib have with a python dict rather than mu.Resource? |
[11:26] | Zha Ewry: | Not sure I would, mind you, but one could |
[11:26] | Donovan Linden: | gareth: using normal python types just turns out to be really convenient |
[11:26] | Which Linden: | Hmm.... yeah |
[11:26] | Donovan Linden: | especially if your user intefaces are talking json or llsd |
[11:26] | Which Linden: | Yeah, the dict is just a great example |
[11:27] | Zha Ewry: | Its super, because we get right down to brass tacks and questions |
[11:27] | Donovan Linden: | another feature of stacked is that it does content negotiation, so you can ask for it in json or llsd and the storage is still native python types |
[11:27] | Gareth Ellison: | actually, come to think of it, using a dict for the sitemap.... there isn't a chance that could allow people to run DELETEs against parts of it is there? |
[11:27] | Tao Takashi: | in Zope we also moved from custom types back to normal python structures |
[11:27] | Tao Takashi: | it just makes more sense :) |
[11:27] | Gareth Ellison: | i may have just found a nasty bug in my code.... |
[11:27] | Which Linden: | I think it's also useful if you have a node that has small amounts of data that maps really well to a python data structure. So, you use the Resource for the high-level stuff, then hang off dicts or lists or whateveer |
[11:28] | Donovan Linden: | gareth: yeah, people can probably arbitrarily change your server :) use a Resource as the root to know exactly what is going on, and don't call stacked.consume |
[11:28] | Which Linden: | Isn't that the point of mud? That you can just mess with it? |
[11:28] | Gareth Ellison: | now you tell me..... |
[11:28] | Donovan Linden: | yeah, we should tell people that in brighter bigger letters |
[11:28] | Gareth Ellison: | nobody run my code in a production environment please! |
[11:29] | Which Linden: | ha ha |
[11:29] | Tao Takashi: | ooops! *stopping servers* |
[11:29] | Gareth Ellison: | lol |
[11:29] | Donovan Linden: | anyway, a wrapper which disallows DELETE and PUT will solve it |
[11:29] | Zha Ewry waits for the simualtor to quietely halt | |
[11:29] | Gareth Ellison: | yeah - i have such a wrapper |
[11:29] | Which Linden: | It's not a huge security hole that will get you 0wned, you could just lose all your data!~ |
[11:29] | Donovan Linden: | and give yourself an unwrapped server pointing at the same tree, on an internal private port |
[11:29] | Saijanai Kuhn fades into NULL | |
[11:29] | Tao Takashi: | some security layer should be involved anyway, shouldn't it? |
[11:29] | Gareth Ellison: | i called it muauth |
[11:30] | Which Linden: | Also you don't have to have a dict as the top-level object |
[11:30] | Gareth Ellison: | Donovan - eventlet.httpc needs support for HTTP auth btw |
[11:30] | Donovan Linden: | if you have a Resource as the root, you control all the behavior exactly |
[11:30] | Donovan Linden: | gareth: yes it does. please add it ;) |
[11:30] | Gareth Ellison: | Which: true, it's more convienient but less secure |
[11:30] | Gareth Ellison: | Donovan: you're a lazy fool and ok |
[11:31] | Donovan Linden: | hehe. if you don't someone will someday |
[11:31] | Gareth Ellison: | heh |
[11:31] | Which Linden: | Hm.... yeah, Sardonyx has been doing a lot of work on httpc in making it respond properly when it gets a status code that requires a second request to resolve |
[11:32] | Gareth Ellison: | ideally should be able to do something like myobj = llsd.parse(myclient.get("http://user:password@server/bla")) |
[11:32] | Which Linden: | We have a list here: http://wiki.secondlife.com/wiki/Certified_HTTP#Status_Codes but honeslty most of those are httpc behaviors, so I should move that list to the eventlet page |
[11:32] | Tao Takashi wonders if Which visited a local user group meeting already ;-) | |
[11:33] | Gareth Ellison: | so, is there a c-http implementation available yet? |
[11:33] | Donovan Linden: | is all this development happening in the public svn? I need to get on that commit list |
[11:33] | Donovan Linden: | which do you know where it is? |
[11:33] | Tao Takashi: | is there a commit list? public? :) |
[11:34] | Which Linden: | Oh, there oughta be! |
[11:34] | Which Linden: | I'll ping rob and ask how it's done for the main linden commit list |
[11:34] | Tao Takashi: | looks public: http://svn.secondlife.com/trac/eventlet/timeline |
[11:35] | Which Linden: | Can follow this manually too: http://svn.secondlife.com/trac/certified_http/browser |
[11:35] | Gareth Ellison: | cool |
[11:35] | Which Linden: | Oh, the timeline: http://svn.secondlife.com/trac/certified_http/timeline |
[11:35] | Donovan Linden: | maybe we should try sardonyx's mercurial import tool so that we can more easily accept patches from the community? |
[11:35] | Which Linden: | What's the tool do? |
[11:35] | Tao Takashi: | I still think you should simply open up the svn ;-) |
[11:36] | Tao Takashi: | not to everybody of course |
[11:36] | Donovan Linden: | continually imports svn into an hg repo |
[11:36] | Donovan Linden: | bah, centralised revision control is a pain :P |
[11:36] | Gareth Ellison: | why not just have a public SVN repo which is read-only to all and commit access for lindens? |
[11:36] | Which Linden: | We do have that, Gareth |
[11:36] | Donovan Linden: | gareth: that is what we have |
[11:36] | Donovan Linden: | for eventlet and mulib |
[11:36] | Tao Takashi: | I would even say with commit access for selected developers |
[11:36] | Which Linden: | and certified http |
[11:36] | Tao Takashi: | like e.g. Gareth ;-) |
[11:36] | Which Linden: | we even have that, tao |
[11:37] | Which Linden: | I'm not sure how you get on the list, though |
[11:37] | Gareth Ellison: | so what's the issue? accept patches from people, and allow select devs in the community to get commit access |
[11:37] | Donovan Linden: | submit good patches, probably |
[11:37] | Tao Takashi: | sounds like a good criteria ;-) |
[11:37] | Gareth Ellison: | where do we submit patches? JIRA? |
[11:37] | Which Linden: | Yeah, my doors are open here, if you want to tackle the code, please do |
[11:37] | Which Linden: | You can email me for now. |
[11:37] | Gareth Ellison: | i still need to sign a contributor agreement |
[11:37] | Donovan Linden: | and me |
[11:37] | Which Linden: | Although we do have chttp in jira |
[11:37] | Tao Takashi: | it would even be nice to have the trac bugtracker available as it integrates nicely |
[11:37] | Gareth Ellison: | i hereby sign over my soul to LL |
[11:37] | Which Linden: | and eventlet and mulib, acutally |
[11:38] | Which Linden: | yeah, so, use jira instead of emailing us, actually |
[11:38] | Which Linden: | that way we have an audit trail or whatever |
[11:38] | Gareth Ellison: | Trac is looking more stable than JIRA as of late |
[11:38] | Tao Takashi: | but you might want to have all your bugs in a central place |
[11:38] | Which Linden: | Yeah, I dunno, I'm not gonna bitch if I get a patch, even if it's by carrier pigeon |
[11:38] | Gareth Ellison: | i think unless everything switches to Trac, JIRA is where it'll be at |
[11:38] | Gareth Ellison: | Which: i've gotta hire a carrier pigeon now! |
[11:39] | Gareth Ellison: | i wonder if i can run SVN over IP over carrier pigeon |
[11:39] | Tao Takashi: | if it only would be faster ;-) |
[11:39] | Which Linden: | https://jira.secondlife.com/browse/CHTTP is teh certified http project |
[11:39] | Gareth Ellison: | quick query - who in the community's been working on mulib? |
[11:39] | Tao Takashi: | somehow all the collaboration tools are sort of slow |
[11:40] | Which Linden: | Yeah, well, Trac is fast! Cause we don't collaborate with it |
[11:40] | Tao Takashi: | well, trac is fast for our Plone community |
[11:40] | Which Linden: | Gareth: nobody outside of Linden has contributed |
[11:40] | Tao Takashi: | I am not sure how much non-developers use Jira |
[11:40] | Which Linden: | We need to do a better job of getting people interested in helping develop |
[11:40] | Gareth Ellison: | i've heard a few people have played with getting it to work on windows |
[11:40] | Tao Takashi: | but the Plone developer community definitely is bigger than the SL one |
[11:41] | Gareth Ellison: | Which: when i sign an agreement i'll integrate my crazy extensions and submit a patch |
[11:41] | Donovan Linden: | one thing that might help is for lindens to pair with people from the community that want to learn or develop something small and useful |
[11:41] | Which Linden: | Sounds awesome, Gareth |
[11:41] | Tao Takashi: | you should do sprints :) |
[11:41] | Donovan Linden: | yeah sprints would be great |
[11:41] | Donovan Linden: | in-world sprints? |
[11:41] | Which Linden: | Yeah, I'm going to push someone to get a sandbox host set up that we can all have logins to |
[11:41] | Gareth Ellison: | so, who at LL do i need to send an envelope filled with my soul and vital force to? |
[11:41] | Tao Takashi: | not sure they would work good in-world |
[11:41] | Tao Takashi: | esp. pair programming |
[11:42] | Gareth Ellison: | pair programming remotely sounds painful |
[11:42] | Donovan Linden: | we do in-world pair programming all day long. voice is kind of necessary though |
[11:42] | Which Linden: | We do that a lot internally. Voice + multiuser screen is amazing |
[11:42] | Donovan Linden: | we use sl voice and gnu screen |
[11:42] | Donovan Linden: | and I have plans to develop a web-based multiuser terminal |
[11:42] | Hypatia Callisto: | ooo cool |
[11:42] | Zha Ewry: | The gnu screen isn't in world, right? |
[11:42] | Gareth Ellison: | Zha: duh |
[11:42] | Which Linden: | Donovan: call it "mut" |
[11:43] | Zha Ewry nods | |
[11:43] | Tao Takashi: | sounds cool :) |
[11:43] | Donovan Linden: | no, but a web-based terminal could be |
[11:43] | Tao Takashi: | you should nevertheless think also of RL sprints :) |
[11:43] | Gareth Ellison: | in-world pair programming would rock |
[11:43] | Zha Ewry: | Aye.. |
[11:43] | Tao Takashi: | maybe also in the context of some conference to attract new people |
[11:43] | Zha Ewry is just drolling for the rich collab tool to be in world troo | |
[11:44] | Which Linden: | We could get someone to write an overhyped article about Agile XP Web 2.0 in SL. Next: world domination! |
[11:44] | Tao Takashi: | implement that in-client web browser! ;-) |
[11:44] | Tao Takashi: | like onrez |
[11:44] | Gareth Ellison: | Tao: there's already a web browser in the viewer |
[11:44] | Donovan Linden: | I hope onrez convinces the ui team to turn on the browser |
[11:44] | Which Linden: | I haven't actually seen theirs, but we definitely have that capability already |
[11:45] | Gareth Ellison: | i like to view my own profile, point to a random webpage and then switch it back |
[11:45] | Which Linden: | You can hax it by setting the F1 help url to Google or something |
[11:45] | Wyn Galbraith is using OnRez's viewer now | |
[11:45] | Tao Takashi: | well, it would be cooll not to have open up firefox all the time |
[11:45] | Which Linden: | or your profile, that's a good one |
[11:45] | Gareth Ellison: | profile window is a bit tiny though |
[11:45] | Tao Takashi: | I know, Which, but it would also be cool to be able to control it via LSL |
[11:45] | Which Linden: | Can only visit iphone-optimized web sites |
[11:45] | Gareth Ellison: | if there was an SSH client and firefox in the viewer i'd leave it on 24/7 |
[11:45] | Tao Takashi: | llLoadURL() might simply open that up |
[11:46] | Tao Takashi: | I know that basically all the stuff is in the client |
[11:46] | Tao Takashi: | that's why I thought should it make easy to make a panel around it and while we don#t have HTML/prim yet we would at least be able to redirect people to websites more easily |
[11:46] | Which Linden: | totally |
[11:46] | Donovan Linden: | here is the web based terminal I have been trying to get working |
[11:46] | Donovan Linden: | http://play1.pypy.org/ |
[11:46] | Tao Takashi: | PyPy FTW! |
[11:47] | Which Linden: | We'll tell you how it performs under load, Donovan |
[11:47] | Which Linden: | :-) |
[11:47] | Donovan Linden: | ...except I haven't been able to get it to work ;P |
[11:47] | Gareth Ellison: | Donovan: heard of js/uix? |
[11:47] | Tao Takashi: | see, one sprint topic for the next EuroPython :) |
[11:48] | Which Linden: | There is this: http://www-personal.umich.edu/~mressl/webshell/ |
[11:48] | Tao Takashi: | maybe getting it to run earlier would be nice though ;-) |
[11:48] | Gareth Ellison: | google for js/uix |
[11:48] | Donovan Linden: | but yeah the implementation is insane, it's in python and uses pypy to translate it to javascript |
[11:48] | Gareth Ellison: | it's a *nix OS in a browser complete with real filesystem and vi port |
[11:48] | Saijanai Kuhn: | btw, the CSI viewer automatically reroutes chat inks to the internal browser |
[11:48] | Saijanai Kuhn: | chat links* |
[11:48] | Gareth Ellison: | that rocks |
[11:48] | Which Linden: | That's ssmart |
[11:49] | Gareth Ellison: | it shouldn't be too much work to just open a new floater with a web browser widget when you click a link |
[11:49] | Which Linden opens a jira | |
[11:49] | Tao Takashi: | now if the onrez viewer would only be open source ;-) |
[11:49] | Donovan Linden: | is javascript the next assembly language? |
[11:49] | Gareth Ellison: | anyone want to go and hack up a patch for that? |
[11:49] | Which Linden: | No dude, C++ is the next assemply language |
[11:49] | Gareth Ellison: | really - the code's already there (help window etc) |
[11:49] | Saijanai Kuhn: | which brings up the question: why isn't it. Thought GPL said anything based on GPL code was GPL |
[11:50] | Which Linden: | Yeah, I'd help shepherd such a patch through |
[11:50] | Tillie Ariantho: | Yes! I thought so too... |
[11:50] | Tao Takashi: | Sai: I think they have a special license |
[11:50] | Gareth Ellison: | Saijanai: ESC got a commercial license |
[11:50] | Which Linden: | We gave them a commercial license |
[11:50] | Tao Takashi: | which was a bit confusing at Robin's office hour |
[11:50] | Gareth Ellison: | heh |
[11:50] | Gareth Ellison: | Which: RMS wants your head on a plate for that |
[11:50] | Tao Takashi: | it sounded there as if everybody would need a special license to distribute a viewer |
[11:50] | Saijanai Kuhn: | .... wondering at how that works, but whatever. Only person who could bring a suit would be holder of hte GPL license, which is LL |
[11:51] | Gareth Ellison: | Saijanai: the copyright holder can release code under any license |
[11:51] | Tao Takashi: | that's what the contributor agreements are for |
[11:51] | Which Linden: | Richard Stallman is apparently afraid of potted plants. >:-) |
[11:51] | Saijanai Kuhn: | ah, OK. |
[11:51] | Tao Takashi: | well, I would still think it would be cooler to have onrez as open source :) |
[11:52] | Which Linden: | Yeah, so, back to mulib |
[11:52] | Gareth Ellison: | Tao: so do i, let's pressure ESC |
[11:52] | Tao Takashi: | and I hope LL is not distributing too many of these licenses |
[11:52] | Gareth Ellison: | and yeah, get back to mulib |
[11:52] | Tao Takashi: | I commented on their blog about that |
[11:52] | Tao Takashi: | ok, mulib :) |
[11:52] | Which Linden: | we have strayed from our topic |
[11:52] | Gareth Ellison: | Which: continue.... |
[11:52] | Which Linden: | We should put up some more examples of overriding methods on mu.Resource |
[11:52] | Which Linden: | it's very powerful |
[11:53] | Which Linden: | The methods you'll want to look at are: childFactory, findChild, and willHandle |
[11:53] | Tao Takashi looks | |
[11:53] | Which Linden: | findChild allows you to completely replace the traversal logic |
[11:53] | Zha Ewry: | Whiich a few worked examples, including the actual fully packed http request that comes out, woudl be cool |
[11:54] | Tao Takashi: | maybe those packages should also be namespace packages |
[11:54] | Which Linden: | Namespace packages? |
[11:54] | Gareth Ellison: | i'd die a slow death without findChild |
[11:54] | Tao Takashi: | so you can do import lindenlab.mulib |
[11:54] | Which Linden: | Zha: agree, gotta find the time |
[11:54] | Tao Takashi: | and import lindenlab.eventlet |
[11:54] | Which Linden: | bah, the lindenlab would be superfluous, I think |
[11:54] | Saijanai Kuhn: | Hey Azreal welocme. This is an office meeting. You're welcome to sit in but its pretty geeky |
[11:54] | Tao Takashi: | where lindenlab is a namespace and they don't need to be in the same directory |
[11:54] | Zha Ewry: | Do you have a few publically viisble endpoints out there? |
[11:54] | Which Linden: | Zha: no, though we should try to mke some |
[11:54] | Hypatia Callisto thinks Azreal has the wrong place :) | |
[11:55] | Which Linden: | as noted, it's not the most secure |
[11:55] | Tao Takashi: | well, it's still nice to be able to group things together.. eggs are also supporting this |
[11:55] | Zha Ewry: | I'd love to poke at them with a few tools, and show how to invoke it from several languages |
[11:55] | Zha Ewry: | Chuckle. |
[11:55] | Zha Ewry: | Good point |
[11:55] | Gareth Ellison: | eggs are needed, python distutils good |
[11:55] | Tao Takashi: | cheeseshop also :) |
[11:55] | Azrael Schmooz: | just fling around. lookin at shit. |
[11:55] | Which Linden: | Once we had this magical sandbox server we could set up some demo apps |
[11:55] | Gareth Ellison: | i've been pondering how to integrate mulib with mono somehow |
[11:56] | Gareth Ellison: | could then put it into opensim |
[11:56] | Saijanai Kuhn: | you'd need a clientside mono I think unless the server code gets opensourced first |
[11:56] | Tao Takashi: | I would definitely like more docstrings also :) and some doctests inside them maybe |
[11:56] | Gareth Ellison: | right now i've been using PyODE and streaming object updates |
[11:56] | Which Linden: | Oh man, if mulib was the rest framework of choice for the simulator?!?! Rad |
[11:56] | Gareth Ellison: | Which: i got a basic sim doing that |
[11:56] | Gareth Ellison: | very hackish but it works |
[11:57] | Gareth Ellison: | basically just hacked a PyODE example and put all the object updates over streamlet |
[11:57] | Gareth Ellison: | streamlet == my HTTP event streaming system based on mulib |
[11:57] | Which Linden: | I've been going around adding docstrings, Tao, doctests may be next. It's actually hard to write doctests because there is so much setup before the methods are usefeul |
[11:58] | Tao Takashi: | btw, I found some presentation about long living http connections the other day |
[11:58] | Gareth Ellison: | i think more sample code is a definate must |
[11:58] | Gareth Ellison: | Tao: short summary? |
[11:58] | Tao Takashi: | Which: yep, I know that problem. But once you have that setup they are quite nice |
[11:58] | Gareth Ellison: | my system just pauses on a GET request before returning content |
[11:58] | Tao Takashi: | and then you can also write the tests first :) |
[11:58] | Tao Takashi: | Gareth: http://dev.comlounge.net/uncategorized/long-lived-http-connection/ |
[11:58] | Gareth Ellison: | and then if you time out, you hit GET again |
[11:59] | Gareth Ellison: | and while offline it queues events server side |
[11:59] | Gareth Ellison: | Tao: send me that link on IRC to avoid teh lag |
[11:59] | Which Linden: | You probably don't want to do that for GETs, Gareth, because they might be cached |
[11:59] | Tao Takashi: | we also had some demonstration based on AJAX at the Plone Conference |
[11:59] | Which Linden: | Do them for POSTs instead |
[11:59] | Gareth Ellison: | Which: should probably send a no-cache header |
[12:00] | Tao Takashi: | Plone initiated a website and a twisted server was then sending AJAX like updates to the browser |
[12:00] | Gareth Ellison: | a POST doesn't feel right |
[12:00] | Tao Takashi: | isn't it changing data? I would think POST instead of GET |
[12:00] | Which Linden: | yeah, but it has the properties you want (i.e. some intermediate proxy won't cache it) |
[12:01] | Gareth Ellison: | true, but a proxy shouldn't cache it with GET and the right headers either |
[12:01] | Which Linden: | Fair enough |
[12:01] | Which Linden: | Take a look at how eventrouter does it, if you want an example |
[12:01] | Tao Takashi: | some have some have evil refresh_pattern configurations ;-) |
[12:02] | Gareth Ellison: | i suppose really using HTTP for event streams is a silly hack anyway |
[12:02] | Tao Takashi: | sounds like everybody is going to do it though, even on the web ;-) |
[12:02] | Tao Takashi: | AJAX is a hack, too ;-) |
[12:03] | Gareth Ellison: | true |
[12:03] | Tao Takashi: | the world is based on hacks, except Python of course |
[12:03] | Which Linden: | Ha! |
[12:03] | Gareth Ellison: | i can't help thinking that a custom TCP protocol or a new HTTP verb is saner |
[12:03] | Donovan Linden: | python is a hack, that's why it works |
[12:03] | Gareth Ellison: | perhaps a new HTTP verb like GETEVENTS |
[12:03] | Which Linden: | Well, Donovan I recall was pushing to make HTTP be bidirectional |
[12:03] | Which Linden: | HTTP 2.0 that is |
[12:03] | Gareth Ellison: | python is clean |
[12:03] | Tao Takashi: | I meant stuff based on python actually :) |
[12:03] | Tao Takashi: | Zope2 is a hack though ;-) |
[12:03] | Tao Takashi: | but Zope3 isn't |
[12:04] | Saijanai Kuhn: | can things be designed so that you can replace the protocol if something saner comes along? |
[12:04] | Donovan Linden: | gareth: there already is an rfc for one: the SELECT verb |
[12:04] | Gareth Ellison: | Donovan: which RFC? |
[12:04] | Donovan Linden: | dunno, just search for http select |
[12:05] | Gareth Ellison: | Mr HTTP himself doesn't know? |
[12:05] | Tao Takashi: | Donovan invented HTTP? :) |
[12:05] | Which Linden: | Donovan IS HTTP |
[12:05] | Gareth Ellison: | no, Donovan just coded lots of HTTP-related stuff in python |
[12:05] | Gareth Ellison: | there's a verb named after him |
[12:05] | Gareth Ellison: | DONOVAN /resource |
[12:06] | Gareth Ellison: | makes the webserver return a l33t python hacker |
[12:06] | Which Linden: | Hah |
[12:06] | Tao Takashi: | I should use that method more |
[12:07] | Gareth Ellison: | the current event polling over CAPs - does that work using PSOT? |
[12:07] | Gareth Ellison: | POST |
[12:07] | Which Linden: | Check this out and add comments for where we should add examples: http://jira.secondlife.com/browse/EVT-7 |
[12:08] | Tao Takashi: | Hope to have time to take a closer look into eventlet etc. at the weekend |
[12:08] | Which Linden: | Yeah, it does, Gareth |
[12:08] | Gareth Ellison: | Which: does it queue things server-side while waiting for a client reconnect or does it just keep the connection alive? |
[12:08] | Which Linden: | OK, that previous JIRA was for EVentlet, not mulib |
[12:09] | Which Linden: | Use this one: http://jira.secondlife.com/browse/MU-13 |
[12:09] | Tao Takashi: | is there some CAPS example on the wiki somewhere actually? |
[12:09] | Which Linden: | Gareth, it queues them |
[12:09] | Tao Takashi: | the page about it seems to be a bit short ;-) |
[12:09] | Which Linden: | Not sure Tao, I haven't seen one |
[12:09] | Gareth Ellison: | Which: where's it implemented? if it's in llmessage i want to know about it |
[12:09] | Tao Takashi: | maybe more examples would help here, too. maybe even in the context of the new architecture and where it could be used |
[12:09] | Which Linden: | er, hmmm... not sure.... it might not even be open source |
[12:10] | Which Linden: | casuse it's the simulator doing it |
[12:10] | Gareth Ellison: | i would guess it isn't if it's not in llmessage or llcommon |
[12:10] | Tao Takashi: | simply open source the simulator :) |
[12:10] | Which Linden: | the cap just directs the connection to the simulator |
[12:10] | Gareth Ellison: | i've noticed llmessage contains a lot of server-side code |
[12:10] | Which Linden: | Yes, we're working on it |
[12:10] | Which Linden: | There is a lot of shared code there |
[12:11] | Gareth Ellison: | like llversionserver.h and LLHTTPNode? |
[12:11] | Which Linden: | yup |
[12:11] | Gareth Ellison: | the latter being very useful for building an httpd |
[12:11] | Which Linden: | LLHTTPNode is nice, it's philosophically close to mulib |
[12:11] | Gareth Ellison: | very close |
[12:11] | Gareth Ellison: | it feels like a C++ port |
[12:12] | Which Linden: | Hey, well, I gotta duck out of here, and I'm sure you all have interesting things to do in Second Life |
[12:12] | Gareth Ellison: | :O |
[12:12] | Tao Takashi: | not really |
[12:12] | Gareth Ellison: | i have nothing interesting to do except discuss how to rewrite it |
[12:12] | Tao Takashi: | just waiting for the next office hour then ;-) |
[12:12] | Which Linden: | Thanks for a cool conversation today. Please comment on those two JIRA tasks I sent out |
[12:12] | PulseBurst Flow: | thanks, bye... |
[12:12] | Tao Takashi: | thanks for hosting :) |
[12:13] | Donovan Linden: | yeah thanks everybody, it was great |
[12:13] | Gareth Ellison: | come to think of it, in RL i spend my time talking about how to rewrite it too so to speak |
[12:13] | Which Linden: | My pleasure! You all are always awesome. |
[12:13] | Which Linden: | We out. |
[12:13] | Hypatia Callisto: | ok thanks! |