<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.secondlife.com/w/index.php?action=history&amp;feed=atom&amp;title=User%3AWhich_Linden%2FOffice_Hours%2F2009_Aug_6</id>
	<title>User:Which Linden/Office Hours/2009 Aug 6 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.secondlife.com/w/index.php?action=history&amp;feed=atom&amp;title=User%3AWhich_Linden%2FOffice_Hours%2F2009_Aug_6"/>
	<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Which_Linden/Office_Hours/2009_Aug_6&amp;action=history"/>
	<updated>2026-06-02T00:26:47Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://wiki.secondlife.com/w/index.php?title=User:Which_Linden/Office_Hours/2009_Aug_6&amp;diff=451063&amp;oldid=prev</id>
		<title>Which Linden: Created page with &#039;* [11:00] ATechwolf Foxclaw:  Hi which * [11:00] Which Linden:  hey there! * [11:00] ATechwolf Foxclaw...&#039;</title>
		<link rel="alternate" type="text/html" href="https://wiki.secondlife.com/w/index.php?title=User:Which_Linden/Office_Hours/2009_Aug_6&amp;diff=451063&amp;oldid=prev"/>
		<updated>2009-08-06T19:01:15Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;#039;* [11:00] &lt;a href=&quot;/w/index.php?title=User:ATechwolf_Foxclaw&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:ATechwolf Foxclaw (page does not exist)&quot;&gt;ATechwolf Foxclaw&lt;/a&gt;:  Hi which * [11:00] &lt;a href=&quot;/w/index.php?title=User:Which_Linden&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:Which Linden (page does not exist)&quot;&gt;Which Linden&lt;/a&gt;:  hey there! * [11:00] &lt;a href=&quot;/w/index.php?title=User:ATechwolf_Foxclaw&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;User:ATechwolf Foxclaw (page does not exist)&quot;&gt;ATechwolf Foxclaw&lt;/a&gt;...&amp;#039;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* [11:00] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  Hi which&lt;br /&gt;
* [11:00] [[User:Which Linden|Which Linden]]:  hey there!&lt;br /&gt;
* [11:00] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  Hmm...not many here today&lt;br /&gt;
* [11:00] [[User:Which Linden|Which Linden]]:  the loading screen image should totally become the Snowglobe app icon&lt;br /&gt;
* [11:01] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  lol&lt;br /&gt;
* [11:01] [[User:Which Linden|Which Linden]]:  it is like way cool&lt;br /&gt;
* [11:02] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  They need to come up wiht a few new login screens. The ones they got are poor and low rez.&lt;br /&gt;
* [11:03] [[User:Which Linden|Which Linden]]:  for snowglobe, or in general?&lt;br /&gt;
* [11:03] [[User:Which Linden|Which Linden]]:  cause, I was recently observing how the loading screens are pretty damn decent for the mainline viewers&lt;br /&gt;
* [11:04] [[User:Which Linden|Which Linden]]:  I&amp;#039;m glad someone&amp;#039;s paying attention to that aspect of the user experience&lt;br /&gt;
* [11:04] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  The login screen is just the client loading up a web page. Its just snowglobe I think points in a different web page.&lt;br /&gt;
* [11:04] [[User:Which Linden|Which Linden]]:  yeah&lt;br /&gt;
* [11:04] [[User:Which Linden|Which Linden]]:  [http://secondlife.com/app/login/] is the &amp;quot;normal&amp;quot; one&lt;br /&gt;
* [11:04] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  better created ones are needed. &lt;br /&gt;
* [11:04] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  Perhaps a few around Zindra? lol&lt;br /&gt;
* [11:05] [[User:Which Linden|Which Linden]]:  with little censor bars all over everything :-)&lt;br /&gt;
* [11:05] [[User:Shockwave Plasma|Shockwave Plasma]]:  and a note that says Here be Dragons&lt;br /&gt;
* [11:05] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  lol&lt;br /&gt;
* [11:05] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  Some Linden needs to sneak that one in&lt;br /&gt;
* [11:06] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  Heck, if manament wants to make a few dollors, allow creative ads there. It would be better. ;-)&lt;br /&gt;
* [11:07] [[User:Morgaine Dinova|Morgaine Dinova]]:  Alopha :-)&lt;br /&gt;
* [11:07] [[User:Morgaine Dinova|Morgaine Dinova]]:  And Aloha too :-)&lt;br /&gt;
* [11:07] [[User:Which Linden|Which Linden]]:  hi there morgaine, missed you last week&lt;br /&gt;
* [11:07] [[User:Which Linden|Which Linden]]:  nice hat&lt;br /&gt;
* [11:07] [[User:Morgaine Dinova|Morgaine Dinova]]:  Slept through last week, hehe. And nearly missed it again :-(&lt;br /&gt;
* [11:08] [[User:Shockwave Plasma|Shockwave Plasma]]:  I thinght it was an alternative to Asprin&lt;br /&gt;
* [11:08] [[User:Morgaine Dinova|Morgaine Dinova]]:  lol&lt;br /&gt;
* [11:08] [[User:Morgaine Dinova|Morgaine Dinova]]:  Keeps the rain off&lt;br /&gt;
* [11:08] [[User:Which Linden|Which Linden]]:  anyone been following the discussions on eventletdev?&lt;br /&gt;
* [11:09] [[User:Which Linden|Which Linden]]:  been pretty active lately&lt;br /&gt;
* [11:09] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  Can&amp;#039;t see the hat. Text only here.&lt;br /&gt;
* [11:09] [[User:Morgaine Dinova|Morgaine Dinova]]:  ATech&amp;#039;s sitting on the tiny seat, how uncivilized :-(&lt;br /&gt;
* [11:10] [[User:Morgaine Dinova|Morgaine Dinova]]:  Woot!&lt;br /&gt;
* [11:10] [[User:Which Linden|Which Linden]]:  text only SL client?&lt;br /&gt;
* [11:10] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  yes. Radegast.&lt;br /&gt;
* [11:10] [[User:Morgaine Dinova|Morgaine Dinova]]:  Thanks ATech :-))&lt;br /&gt;
* [11:10] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  I think &amp;quot;HD - Classic Balck Leather Couth&amp;quot; was the largert one?&lt;br /&gt;
* [11:11] [[User:Which Linden|Which Linden]]:  hah, so you have to specify where to sit based on names?&lt;br /&gt;
* [11:11] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  Wich, very handy when you dn&amp;#039;t want to waste bandwith with textures.&lt;br /&gt;
* [11:11] [[User:Which Linden|Which Linden]]:  yeah, I imagine, my laptop&amp;#039;s getting pretty hot right now&lt;br /&gt;
* [11:12] [[User:Shockwave Plasma|Shockwave Plasma]]:  I was using sleek for a while, until it made my inventory read only Grrrr&lt;br /&gt;
* [11:12] [[User:Morgaine Dinova|Morgaine Dinova]]:  Most people put their coffee mug on the table :P&lt;br /&gt;
* [11:13] [[User:Morgaine Dinova|Morgaine Dinova]]:  Hi Dahlia :-)&lt;br /&gt;
* [11:13] [[User:Dahlia Trimble|Dahlia Trimble]]:  hi :)&lt;br /&gt;
* [11:14] [[User:Which Linden|Which Linden]]:  good day!&lt;br /&gt;
* [11:14] [[User:Which Linden|Which Linden]]:  do we want to talk about eventlet today, or perhaps some other topic??&lt;br /&gt;
* [11:14] [[User:Dahlia Trimble|Dahlia Trimble]]:  is eventlet underclued&lt;br /&gt;
* [11:15] [[User:Morgaine Dinova|Morgaine Dinova]]:  Are there any timings available for eventlet?&lt;br /&gt;
* [11:15] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  What or who is eventlet?&lt;br /&gt;
* [11:15] [[User:Which Linden|Which Linden]]:  [http://eventlet.net]&lt;br /&gt;
* [11:16] [[User:Which Linden|Which Linden]]:  timings? what do you mean?&lt;br /&gt;
* [11:16] [[User:Morgaine Dinova|Morgaine Dinova]]:  Speed and overhead benchmarks / tests / measurements&lt;br /&gt;
* [11:17] [[User:Hermit Barber|Hermit Barber]]:  Hi Dahlia.&lt;br /&gt;
* [11:17] [[User:Dahlia Trimble|Dahlia Trimble]]:  so now that I&amp;#039;ve trained myself to think event-driven, I dont have to?&lt;br /&gt;
* [11:17] [[User:Dahlia Trimble|Dahlia Trimble]]:  Hi Hermit :)&lt;br /&gt;
* [11:17] [[User:Mealea Ying|Mealea Ying]]:  it says here its quick.... and BlooKitty, you are short so dont worry about overhead&lt;br /&gt;
* [11:17] [[User:Morgaine Dinova|Morgaine Dinova]]:  lol&lt;br /&gt;
* [11:17] [[User:Dahlia Trimble|Dahlia Trimble]]:  lol&lt;br /&gt;
* [11:18] [[User:Morgaine Dinova|Morgaine Dinova]]:  Hiya Hermie :-)&lt;br /&gt;
* [11:18] [[User:Mealea Ying|Mealea Ying]]:  Hya Hermit!&lt;br /&gt;
* [11:18] [[User:Which Linden|Which Linden]]:  Morgaine: I welcome your input about how to develop such benchmarks, and what to compare them to -- I&amp;#039;d be interested in setting up continuous builds that ran them every time there was a change and bitched about regressions&lt;br /&gt;
* [11:18] [[User:Hermit Barber|Hermit Barber]]:  Hi everyone else rezzing slowly and not showing on the snowglobe minimap until rezzed.&lt;br /&gt;
* [11:18] [[User:Morgaine Dinova|Morgaine Dinova]]:  Which: oh, that&amp;#039;s a good idea.&lt;br /&gt;
* [11:19] [[User:Mealea Ying|Mealea Ying]]:  BlooKitty, remember the FPS problem we had here? you should try it with shadows on&lt;br /&gt;
* [11:19] [[User:Dahlia Trimble|Dahlia Trimble]]:  I think the minimap gets it&amp;#039;s avatar info from a different message than normal avies&lt;br /&gt;
* [11:19] [[User:Morgaine Dinova|Morgaine Dinova]]:  Uh oh, bad?&lt;br /&gt;
* [11:19] [[User:Mealea Ying|Mealea Ying]]:  yah I can make a pot of coffee between frames&lt;br /&gt;
* [11:20] [[User:Which Linden|Which Linden]]:  do shadows work on the mac yet?&lt;br /&gt;
* [11:20] [[User:Mealea Ying|Mealea Ying]]:  rollerskating is out of the question&lt;br /&gt;
* [11:21] [[User:Mealea Ying|Mealea Ying]]:  uhoh&lt;br /&gt;
* [11:21] [[User:Morgaine Dinova|Morgaine Dinova]]:  Which: well Enus is setting up all manner of tests using PyOGP, and is very interested in regression testing. Perhaps once there&amp;#039;s a framework into which we can slot tests, we could add some for eventlet.&lt;br /&gt;
* [11:22] [[User:Dahlia Trimble|Dahlia Trimble]]:  what is LL using eventlet for?&lt;br /&gt;
* [11:22] [[User:Which Linden|Which Linden]]:  I think the standard in the python world for continuous builds is buildbot&lt;br /&gt;
* [11:22] [[User:Which Linden|Which Linden]]:  We use it for a bunch of things; server code, misc scripts, PyOGP uses it&lt;br /&gt;
* [11:23] [[User:Which Linden|Which Linden]]:  &amp;quot;networky things&amp;quot; encapsulates it best&lt;br /&gt;
* [11:24] [[User:Morgaine Dinova|Morgaine Dinova]]:  Not in the sim though, since that&amp;#039;s C++. What kind of networky areas?&lt;br /&gt;
* [11:24] [[User:Dahlia Trimble|Dahlia Trimble]]:  so eventlet rather than twisted?&lt;br /&gt;
* [11:24] [[User:Dahlia Trimble|Dahlia Trimble]]:  or with it?&lt;br /&gt;
* [11:24] [[User:Which Linden|Which Linden]]:  no twisted, we have some folks here who have used twisted in the past, but they&amp;#039;re pretty happy with not having to use it again&lt;br /&gt;
* [11:24] [[User:Dahlia Trimble|Dahlia Trimble]]:  lol&lt;br /&gt;
* [11:24] [[User:Elric Ember|Elric Ember]]:  This may be of interest: [http://redsolo.blogspot.com/2007/11/hudson-embraces-python.html]&lt;br /&gt;
* [11:25] [[User:Which Linden|Which Linden]]:  networky stuff like ; proxying requests to the proper inventory host&lt;br /&gt;
* [11:25] [[User:Which Linden|Which Linden]]:  god shouting to the entire grid&lt;br /&gt;
* [11:25] [[User:Elric Ember|Elric Ember]]:  One CI server to rule them all&lt;br /&gt;
* [11:25] [[User:Morgaine Dinova|Morgaine Dinova]]:  Hehe&lt;br /&gt;
* [11:25] [[User:Morgaine Dinova|Morgaine Dinova]]:  It&amp;#039;s official then. God uses eventlet.&lt;br /&gt;
* [11:25] [[User:Elric Ember|Elric Ember]]:  Can simplify maintenance aspects&lt;br /&gt;
* [11:25] [[User:Dahlia Trimble|Dahlia Trimble]]:  so a coroutine is like a thread?&lt;br /&gt;
* [11:26] [[User:Which Linden|Which Linden]]:  yes, another term for coroutines is &amp;quot;green threads&amp;quot;&lt;br /&gt;
* [11:26] [[User:Dahlia Trimble|Dahlia Trimble]]:  oh ok&lt;br /&gt;
* [11:26] [[User:Which Linden|Which Linden]]:  it is like a thread but it doesn&amp;#039;t involve any preemption, so you don&amp;#039;t have to mess around with locks and all the other things that make threads horrible&lt;br /&gt;
* [11:26] [[User:Mealea Ying|Mealea Ying]]:  awwww BlooooKitty&lt;br /&gt;
* [11:27] [[User:Elric Ember|Elric Ember]]:  Does python implement coroutines as threads or within them?&lt;br /&gt;
* [11:27] [[User:Morgaine Dinova|Morgaine Dinova]]:  Mealea: that would be me ;-)&lt;br /&gt;
* [11:27] [[User:Mealea Ying|Mealea Ying]]:  yep!&lt;br /&gt;
* [11:28] [[User:Which Linden|Which Linden]]:  Python itself has no coroutine implementation; eventlet uses the greenlet library, or, runs on stackless&lt;br /&gt;
* [11:28] [[User:Elric Ember|Elric Ember]]:  ah ok&lt;br /&gt;
* [11:28] [[User:Which Linden|Which Linden]]:  greenlets are pretty orthogonal to threads&lt;br /&gt;
* [11:28] [[User:Which Linden|Which Linden]]:  it is not advisable to mess around with threads and coroutines together too much because of risk of head asplode :-)&lt;br /&gt;
* [11:29] [[User:Which Linden|Which Linden]]:  python threads suck anyway&lt;br /&gt;
* [11:29] [[User:Elric Ember|Elric Ember]]:  : D I bet&lt;br /&gt;
* [11:30] [[User:Which Linden|Which Linden]]:  do any of you have any &amp;quot;networky&amp;quot; applications?&lt;br /&gt;
* [11:30] [[User:Latif Khalifa|Latif Khalifa]]:  networky?&lt;br /&gt;
* [11:30] [[User:Dahlia Trimble|Dahlia Trimble]]:  a few, but I&amp;#039;m no expert&lt;br /&gt;
* [11:30] [[User:Morgaine Dinova|Morgaine Dinova]]:  Heh, all languages suck in that area, and are desperately trying to catch up with Erlang. And failing miserably at it. :P&lt;br /&gt;
* [11:30] [[User:Dahlia Trimble|Dahlia Trimble]]:  well maybe not &amp;quot;Networky&amp;quot;, but networky&lt;br /&gt;
* [11:31] [[User:Latif Khalifa|Latif Khalifa]]:  my english parser is not up to task today lol&lt;br /&gt;
* [11:31] [[User:Shockwave Plasma|Shockwave Plasma]]:  couldn&amp;#039;t progarm her way out of a paper bag, even with a handful of Contructers&lt;br /&gt;
* [11:32] [[User:Latif Khalifa|Latif Khalifa]]:  what does it mean? &amp;quot;networky app&amp;quot;&lt;br /&gt;
* [11:32] [[User:Dahlia Trimble&amp;#039;s|Dahlia Trimble&amp;#039;s]]:  &amp;quot;select()&amp;quot; manual page has tattered corners&lt;br /&gt;
* [11:32] [[User:Elric Ember|Elric Ember]]:  Latif: chatty or talks alot&lt;br /&gt;
* [11:33] [[User:Latif Khalifa|Latif Khalifa]]:  i think libomv counts then lol&lt;br /&gt;
* [11:33] [[User:Dahlia Trimble|Dahlia Trimble]]:  libomv would probably qualify lol&lt;br /&gt;
* [11:33] [[User:Latif Khalifa|Latif Khalifa]]:  hahaha&lt;br /&gt;
* [11:33] [[User:Which Linden|Which Linden]]:  on Python threads: [http://www.dabeaz.com/python/GIL.pdf]&lt;br /&gt;
* [11:33] [[User:Which Linden|Which Linden]]:  definitely&lt;br /&gt;
* [11:33] [[User:Latif Khalifa|Latif Khalifa]]:  yeah, we&amp;#039;re pretty talky alright :P&lt;br /&gt;
* [11:33] [[User:Dahlia Trimble|Dahlia Trimble]]:  or try opensim ;)&lt;br /&gt;
* [11:33] [[User:Latif Khalifa|Latif Khalifa]]:  uhm, that too&lt;br /&gt;
* [11:33] [[User:Which Linden|Which Linden]]:  so pyogp is kind of the python equivalent of libomv; and it uses eventlet&lt;br /&gt;
* [11:34] [[User:Which Linden|Which Linden]]:  it&amp;#039;d be lovely if we could get coroutine-based networking into the C++ code; I think there were some aborted attempts a few years ago&lt;br /&gt;
* [11:35] [[User:Latif Khalifa|Latif Khalifa]]:  dahlia, btw. i rewrote the baker, have a look when you get time... i kept it managed image, didn&amp;#039;t go system.drawing route as you suggested&lt;br /&gt;
* [11:35] [[User:Latif Khalifa|Latif Khalifa]]:  Which, c# event handling is perfect for those sorts of things, have you every played with mono?&lt;br /&gt;
* [11:35] [[User:Dahlia Trimble|Dahlia Trimble]]:  kk&lt;br /&gt;
* [11:36] [[User:Which Linden|Which Linden]]:  I&amp;#039;ve not used C# at all, Latif&lt;br /&gt;
* [11:36] [[User:Elric Ember|Elric Ember]]:  Someone might&amp;#039;ve written a C++ implementation as part of their thesis. The IEEE archives might have something&lt;br /&gt;
* [11:36] [[User:Which Linden|Which Linden]]:  what&amp;#039;s so cool about the event handling?&lt;br /&gt;
* [11:37] [[User:Which Linden|Which Linden]]:  Elric: there&amp;#039;s definitely C++ coroutine libraries out there&lt;br /&gt;
* [11:37] [[User:Dahlia Trimble|Dahlia Trimble]]:  inline delegates&lt;br /&gt;
* [11:37] [[User:Latif Khalifa|Latif Khalifa]]:  enus was able to connect 300 bots to the grid using libomv from a single laptop&lt;br /&gt;
* [11:37] [[User:Latif Khalifa|Latif Khalifa]]:  it performs well&lt;br /&gt;
* [11:37] [[User:Dahlia Trimble|Dahlia Trimble]]:  inline delegates are pretty simple to work with&lt;br /&gt;
* [11:38] [[User:Which Linden|Which Linden]]:  hah, as Morgaine would say, where are the benchmarks??? :-P&lt;br /&gt;
* [11:38] [[User:Latif Khalifa|Latif Khalifa]]:  which, is simply beutiful :)&lt;br /&gt;
* [11:38] [[User:Dahlia Trimble|Dahlia Trimble]]:  libomv uses them a lot&lt;br /&gt;
* [11:38] [[User:Which Linden|Which Linden]]:  hm, the thing about evnetlet is you don&amp;#039;t need delegates at all; you just write code as if it were blocking&lt;br /&gt;
* [11:38] [[User:ATechwolf Foxclaw|ATechwolf Foxclaw]]:  If Radegast get multi-account support, I may use that to see how many alts I can log in at once. hehe&lt;br /&gt;
* [11:38] [[User:Latif Khalifa|Latif Khalifa]]:  Which, I would not want that&lt;br /&gt;
* [11:38] [[User:Which Linden|Which Linden]]:  inline delegates are certainly better, but it&amp;#039;s still &amp;quot;callback hell&amp;quot;&lt;br /&gt;
* [11:38] [[User:Dahlia Trimble|Dahlia Trimble]]:  Opensim uses packet pools and threadpools, kinda painful but seems to handle a lot of traffic&lt;br /&gt;
* [11:39] [[User:Latif Khalifa|Latif Khalifa]]:  why callback hell?&lt;br /&gt;
* [11:39] [[User:Dahlia Trimble|Dahlia Trimble]]:  its an inline callback, kind of acts as a blocking request&lt;br /&gt;
* [11:40] [[User:Which Linden|Which Linden]]:  maybe I&amp;#039;m not understanding inline dllegates&lt;br /&gt;
* [11:40] [[User:Latif Khalifa|Latif Khalifa]]:  in c# I could in any class/control, whereever put GridClient.OnNetworkConnect += MyFunc; then myFunc(blah blah) { Log(&amp;quot;I am now connected&amp;quot;) }&lt;br /&gt;
* [11:40] [[User:Which Linden|Which Linden]]:  so myfunc is an inline delegate?&lt;br /&gt;
* [11:40] [[User:Latif Khalifa|Latif Khalifa]]:  no its not in this case&lt;br /&gt;
* [11:40] [[User:Which Linden|Which Linden]]:  oh, so how would that be written with inline d;legates?&lt;br /&gt;
* [11:40] [[User:Latif Khalifa|Latif Khalifa]]:  but... i can have 20 functions subscribe to this event&lt;br /&gt;
* [11:41] [[User:Which Linden|Which Linden]]:  man I cannot seem to spell that word delegates&lt;br /&gt;
* [11:41] [[User:Latif Khalifa|Latif Khalifa]]:  GridClient.OnNetworkConnect = delegate() { Log(&amp;quot;I am connected&amp;quot;); }&lt;br /&gt;
* [11:41] [[User:Latif Khalifa|Latif Khalifa]]:  +=&lt;br /&gt;
* [11:41] [[User:Which Linden|Which Linden]]:  ha, right, ok, so it&amp;#039;s an anonymous function basically, right?&lt;br /&gt;
* [11:41] [[User:Latif Khalifa|Latif Khalifa]]:  so you can add as many delegates as you want&lt;br /&gt;
* [11:42] [[User:Latif Khalifa|Latif Khalifa]]:  for an event&lt;br /&gt;
* [11:42] [[User:Latif Khalifa|Latif Khalifa]]:  yes, but it handles adding many of them automagically&lt;br /&gt;
* [11:42] [[User:Dahlia Trimble|Dahlia Trimble]]:  theres another form which waits on an inline event&lt;br /&gt;
* [11:42] [[User:Elric Ember|Elric Ember]]:  Which: That link is a great read. Thank you&lt;br /&gt;
* [11:42] [[User:Dahlia Trimble|Dahlia Trimble]]:  cant remember the syntax offhand&lt;br /&gt;
* [11:43] [[User:Which Linden|Which Linden]]:  so the way you&amp;#039;d write this using coroutine based networking is GridClient.connect(); Log(&amp;quot;I am connected&amp;quot;);&lt;br /&gt;
* [11:43] [[User:Which Linden|Which Linden]]:  if you want a bunch of callbacks (which is, btw, a very uncommon use case in my experience), just do a for loop&lt;br /&gt;
* [11:43] [[User:Which Linden|Which Linden]]:  for callback in callbacks { callback() }&lt;br /&gt;
* [11:44] [[User:Which Linden|Which Linden]]:  the common use case is way shorter, and the multi-callback use case is clearer, too&lt;br /&gt;
* [11:44] [[User:Latif Khalifa|Latif Khalifa]]:  if you are making a gui app., its quite common to have many many delegates invoked per single event&lt;br /&gt;
* [11:44] [[User:Which Linden|Which Linden]]:  yeah, GUI programming is pretty different than network programming&lt;br /&gt;
* [11:44] [[User:Latif Khalifa|Latif Khalifa]]:  i want to disable buttons, change caption text, close logs, etc etc when i get disconnected from the grid for istance&lt;br /&gt;
* [11:45] [[User:Which Linden|Which Linden]]:  GUI programming makes more sense when written event-driven&lt;br /&gt;
* [11:45] [[User:Which Linden|Which Linden]]:  but networking is not thus&lt;br /&gt;
* [11:45] [[User:Latif Khalifa|Latif Khalifa]]:  network does too, especially for SL protocol&lt;br /&gt;
* [11:45] [[User:Which Linden|Which Linden]]:  a common use case is &amp;quot;make one http request, then, based on the results, make one or two more&amp;quot;&lt;br /&gt;
* [11:46] [[User:Latif Khalifa|Latif Khalifa]]:  GridClient.Self.OnImReceived += do stuff&lt;br /&gt;
* [11:46] [[User:Which Linden|Which Linden]]:  i think we&amp;#039;re approaching this from different sides&lt;br /&gt;
* [11:46] [[User:Which Linden|Which Linden]]:  definitely the GUI code that responds to events should be callback-based where appropriate&lt;br /&gt;
* [11:46] [[User:Dahlia Trimble|Dahlia Trimble]]:  RequestLogout(); if (!logoutEvent.WaitOne(Client.Settings.LOGOUT_TIMEOUT, false)) Shutdown(DisconnectType.NetworkTimeout);&lt;br /&gt;
* [11:47] [[User:Dahlia Trimble|Dahlia Trimble]]:  theres an example&lt;br /&gt;
* [11:47] [[User:Morgaine Dinova|Morgaine Dinova]]:  All a bit pathetic compared to Erlang processes, where you can happily run millions in parallel if you have the memory. That&amp;#039;s one area in which all other languages are wannabes.&lt;br /&gt;
* [11:47] [[User:Latif Khalifa|Latif Khalifa]]:  erlang is written in erlang then i suppose, not is some other pathet wannabe language as C?&lt;br /&gt;
* [11:47] [[User:Which Linden|Which Linden]]:  but it&amp;#039;s much easier to write stuff as &amp;quot;result1 = httprequest(url); if result1.foo: httprequest(url2) else: httprequest(url3); httprequest(url4)&lt;br /&gt;
* [11:48] [[User:Which Linden|Which Linden]]:  with callbacks the above snippet would be...ugh, more than I want to type&lt;br /&gt;
* [11:48] [[User:Dahlia Trimble|Dahlia Trimble]]:  lol&lt;br /&gt;
* [11:48] [[User:Dahlia Trimble|Dahlia Trimble]]:  it all pays the rent I guess ;)&lt;br /&gt;
* [11:48] [[User:Which Linden|Which Linden]]:  heh :-)&lt;br /&gt;
* [11:49] [[User:Which Linden|Which Linden]]:  inline delegates are better, though, for sure, because they&amp;#039;re at least closures&lt;br /&gt;
* [11:49] [[User:Which Linden|Which Linden]]:  in C++ you have to pack all your state up into a struct and stick it in the callback object&lt;br /&gt;
* [11:49] [[User:Latif Khalifa|Latif Khalifa]]:  well writting event driven code seems strange at first but i think its perfect for implementing protocols like SL protocol&lt;br /&gt;
* [11:50] [[User:Latif Khalifa|Latif Khalifa]]:  there are hundreds of different things that can happen&lt;br /&gt;
* [11:50] [[User:Dahlia Trimble|Dahlia Trimble]]:  SL™ protocol is all event driven anyway&lt;br /&gt;
* [11:50] [[User:Latif Khalifa|Latif Khalifa]]:  yes&lt;br /&gt;
* [11:50] [[User:Which Linden|Which Linden]]:  I think the SL protocol was originally developed under the constraints of C++, now that we&amp;#039;re moving to capabilities it will start looking less and less event-driven&lt;br /&gt;
* [11:51] [[User:Latif Khalifa|Latif Khalifa]]:  event queue is also perfect for implemeting it firing off events&lt;br /&gt;
* [11:51] [[User:Dahlia Trimble|Dahlia Trimble]]:  gotta run... tc all :)&lt;br /&gt;
* [11:51] [[User:Elric Ember|Elric Ember]]:  tc&lt;br /&gt;
* [11:52] [[User:Morgaine Dinova|Morgaine Dinova]]:  Which: did your message queueing evaluation go beyond that document you showed us? Any final conclusions?&lt;br /&gt;
* [11:52] [[User:Latif Khalifa|Latif Khalifa]]:  libomv is basically a network layer that gets and decodes udp and caps messages, and fires off events that your app them might want to decide to handle&lt;br /&gt;
* [11:52] [[User:Morgaine Dinova|Morgaine Dinova]]:  Cyu Dahlia&lt;br /&gt;
* [11:52] [[User:Latif Khalifa|Latif Khalifa]]:  such us OnInstantMessageReceived or on OnLoggedIn&lt;br /&gt;
* [11:52] [[User:Which Linden|Which Linden]]:  Morgaine: well we&amp;#039;ve ben trying to come up with architectures that get around the limitations of the various packages, but in general, no, no progress&lt;br /&gt;
* [11:52] [[User:Morgaine Dinova|Morgaine Dinova]]:  nods&lt;br /&gt;
* [11:53] [[User:Which Linden|Which Linden]]:  Latif: yeah, certainly client libs that use liomv should be event-driven, but libomv itself might be cleaner and easier to maintain if it were written using coroutine-based networking&lt;br /&gt;
* [11:54] [[User:Latif Khalifa|Latif Khalifa]]:  it could... we implement it using c# ThreadPools for packet capturing, decoding, which is more in line how you would implement it in c/c++&lt;br /&gt;
* [11:55] [[User:Which Linden|Which Linden]]:  oh yeah, I bet C# threads are decent for that sort of thing&lt;br /&gt;
* [11:56] [[User:Latif Khalifa|Latif Khalifa]]:  yes, and they are easy to program compared to say pthreads... the runtime takes care of assiging them to different processors, etc, which is also configurable&lt;br /&gt;
* [11:57] [[User:Which Linden|Which Linden]]:  yeah, the only advantage coroutines have over well-implemented language threads is that they are somewhat faster&lt;br /&gt;
* [11:57] [[User:Which Linden|Which Linden]]:  (if well-implemented themselves)&lt;br /&gt;
* [11:58] [[User:Latif Khalifa|Latif Khalifa]]:  yes, thread startup/teardown does have significat cost&lt;br /&gt;
* [11:59] [[User:Which Linden|Which Linden]]:  I guess we agree! :-)&lt;br /&gt;
* [11:59] [[User:Which Linden|Which Linden]]:  Time for me to head for lunch.&lt;br /&gt;
* [11:59] [[User:Which Linden|Which Linden]]:  Thanks for your time and thoughts&lt;br /&gt;
* [11:59] [[User:Latif Khalifa|Latif Khalifa]]:  hehe, take care Which&lt;br /&gt;
* [11:59] [[User:Elric Ember|Elric Ember]]:  For performance, logging when context switches or GIL contentions occur could help&lt;br /&gt;
* [11:59] [[User:Morgaine Dinova|Morgaine Dinova]]:  Cya Which&lt;br /&gt;
* [11:59] [[User:Elric Ember|Elric Ember]]:  tc&lt;br /&gt;
* [11:59] [[User:Which Linden|Which Linden]]:  Have a wonderful day!&lt;/div&gt;</summary>
		<author><name>Which Linden</name></author>
	</entry>
</feed>