Index

Show enters and exits. Hide enters and exits.

00:00:45rueI like to use .inl files
00:02:41boyscout1 commit by Cezar Sa Espinola
00:02:42boyscout * Adding rb_obj_classname() to subtend, specs included.; 6122a56
00:03:36dgtizedrue: so you keep the interface clear of the definitions?
00:03:48lopex leaves the room.
00:05:06evanI prefer to leverage the fact that C++ makes any function defined in the class body as inline
00:05:58Arjen_ enters the room.
00:10:16fabiokung_ enters the room.
00:10:16fabiokung leaves the room.
00:11:24imajes enters the room.
00:13:33rubuildius_amd64Cezar Sa Espinola: 6122a564d; 2187 files, 7177 examples, 25811 expectations, 0 failures, 0 errors
00:13:57fabiokung_ leaves the room.
00:14:41benburkert leaves the room.
00:16:21rubuildius_ppcCezar Sa Espinola: 6122a564d; 2187 files, 7190 examples, 25855 expectations, 0 failures, 0 errors
00:23:12therealadam leaves the room.
00:25:20boof leaves the room.
00:25:40imajes leaves the room.
00:28:37mernen enters the room.
00:31:01atmos leaves the room.
00:31:02AndrewO enters the room.
00:33:42NoKarma enters the room.
00:34:08yugui enters the room.
00:35:05atmos enters the room.
00:35:31AndrewO leaves the room.
00:36:18AndrewO enters the room.
00:37:10binary42 enters the room.
00:43:36wycatswhen does rubygems ignore --no-update-sources?
00:44:11drbrainI don't know, if it ever does, that is probably a bug
00:46:10fabiokung enters the room.
00:46:10chris2 leaves the room.
00:48:27fabiokung leaves the room.
00:49:31benstiglitz leaves the room.
00:50:39tarcieriwhoa @ git colors
00:50:42tarcierinever knew about that
00:51:43lstoll leaves the room.
00:51:50drbrainI hate colors
00:52:28evanbut love ponies
00:52:30evanhow ironic.
00:53:40tarcieridrbrain: you want the world all black and white, but a rainbow never tells no lies
00:53:47tarcierisome horrible Triumph lyrics for ya
00:54:11brixentarcieri: I love git status in color
00:54:21brixengit diff too
00:54:50brixentarcieri: have you used tig?
00:54:59tarcierinever heard of it
00:55:22brixentarcieri: you can get a copy of it here http://git.rubini.us/?p=apps/tig;a=summary
00:55:33tarcieriwhat does it do?
00:55:37tarcierior should I just click ze link
00:55:50brixenit's a curses interface to git
00:56:14brixenmakes it easy to browse commits
00:56:54tarcieriaah, cool
01:09:17drbraintarcieri: but a rainbow hurts my eyes
01:10:07evandrbrain: how are the eyes btw?
01:10:20drbraindilated
01:10:26evani'll bet.
01:10:36drbrainbut less so than when I was trying to read what I dialed this morning
01:10:49drbrainthey used slide film, so getting pictures is too hard :(
01:11:45evan:/
01:11:52evanit's easy to scan a slide
01:12:01evanthere are lots of places with slide scanners now.
01:12:17evanyou should see if you can just get it in a slide
01:12:26drbrainyeah
01:12:47Arjen_ leaves the room.
01:12:54drbrainthe photographer waffled on it when I asked about it
01:13:18drbrainI'll try again once they're developed
01:13:34drbraininterestingly, though, they're stereoscopic!
01:15:07evanneato!
01:15:20evani guess that makes sense
01:15:25evanmore info that way
01:15:49benny leaves the room.
01:15:55drbrainthey're primarily interested in how much the nerve head is sticking up
01:18:40evangotcha
01:18:44evansounds... icky.
01:21:46brixenyou know what css is? it's bytecode, asm. it's insane that we develop web pages in asm
01:21:51brixeninsane I tell ya
01:23:25evanhehe
01:25:26cezarsahey, specs for rb_inspect, is spec/subtend/string_spec.rb a good place?
01:25:41evanhm.
01:25:51evanprobably not
01:26:01evanwe should have a object_spec.rb
01:26:09drbrainagreed
01:26:11brixenor kernel_spec
01:26:28drbrainoh, yeah, inspect is on kernel, isn't it?
01:27:22brixenyes
01:27:34cezarsai think object_inspect should apply to rb_obj_classname (ive commited it to class_spec.rb)?
01:32:20brixenhmm, weird case
01:32:33brixenobject_spec probably makes sense
01:33:04cezarsaok, i'll fix it and put then both on object_spec, is that ok?
01:33:51drbrainI think so, we can always move it later
01:33:57drbrainif we become unsatisfied
01:45:28dlee leaves the room.
01:46:31lstoll enters the room.
01:47:51cezarsahuge crash when I run bin/mspec spec/subtend/object_spec.rb
01:47:53cezarsahttp://pastie.org/201945
01:48:01cezarsais that a known issue?
01:49:31twbray leaves the room.
01:49:45drbraincezarsa: I see it too
01:50:22wmoxam enters the room.
01:51:06cezarsai thought that every subtend spec was executed by mspec ci
01:51:52drbraincezarsa: only if it is not excluded via spec/tags
01:52:21drbrain"fails:SubtendObject rb_check_array_type should try to coerce to array, otherwise return nil"
01:53:17cezarsahmm... understood, thx drbrain
01:53:21drbrainin spec/tags/subtend/object_tags.txt
01:53:29brixenzenspider: you still around? http://pastie.org/201947
01:53:37drbrain(so, yes this is a known issue)
01:53:55drbrainbrixen: he is not
01:54:22brixendrbrain: thanks
01:54:23trythil enters the room.
01:55:55drbrainyay! got my new SpecFetcher thingus hooked into Gem::DependencyInstaller
02:02:04rubuildius_ppc leaves the room.
02:02:37rubuildius_ppc enters the room.
02:02:45twbray enters the room.
02:03:42twbray leaves the room.
02:14:17kw enters the room.
02:14:29trythil leaves the room.
02:16:28rubuildius_ppcCezar Sa Espinola: 6122a564d; 2187 files, 7190 examples, 25855 expectations, 0 failures, 0 errors
02:16:54radarek leaves the room.
02:21:35anteaya_ leaves the room.
02:24:23ezmobius leaves the room.
02:30:04VVSiz_ enters the room.
02:33:02atmos_ enters the room.
02:33:05atmos_ leaves the room.
02:35:34lstoll_ enters the room.
02:36:51elight leaves the room.
02:37:13VVSiz leaves the room.
02:37:24elight enters the room.
02:39:51antares leaves the room.
02:41:32dfg59 enters the room.
02:43:02headius enters the room.
02:43:27lstoll leaves the room.
02:45:07crafterm enters the room.
02:45:20fabiokung enters the room.
02:45:35boyscout1 commit by Cezar Sa Espinola
02:45:36boyscout * Adding rb_inspect to subtend, with specs;; b2330c7
02:46:46wmoxam_ enters the room.
02:47:38crafterm leaves the room.
02:47:49fabiokung leaves the room.
02:48:30wmoxam leaves the room.
02:51:21antares enters the room.
02:53:49atmos leaves the room.
02:56:42dfg59 leaves the room.
02:56:56wmoxam_ leaves the room.
02:57:08wmoxam enters the room.
02:57:29atmos enters the room.
02:59:12twbray enters the room.
02:59:23rubuildius_ppcCezar Sa Espinola: b2330c786; 2187 files, 7191 examples, 25859 expectations, 0 failures, 0 errors
03:09:47anteaya enters the room.
03:13:29twbray leaves the room.
03:15:43benburkert enters the room.
03:29:19be9 enters the room.
03:30:49rubuildius_ppc leaves the room.
03:31:22rubuildius_ppc enters the room.
03:32:57twbray enters the room.
03:38:23rubuildius_amd64Cezar Sa Espinola: b2330c786; 2187 files, 7178 examples, 25815 expectations, 0 failures, 0 errors
03:39:22pth_ enters the room.
03:39:40pth_ leaves the room.
03:40:10dysinger leaves the room.
03:41:02_sk enters the room.
03:41:26ruivaldo enters the room.
03:47:36twbray leaves the room.
03:55:11pth leaves the room.
03:56:15anteaya leaves the room.
04:01:09antares leaves the room.
04:03:51ShayArnett leaves the room.
04:11:17twbray enters the room.
04:14:44sambo82 enters the room.
04:17:50obiejuan leaves the room.
04:18:31RyanTM leaves the room.
04:21:15EugZol leaves the room.
04:24:03ruivaldo leaves the room.
04:27:09be9 leaves the room.
04:31:21AndrewO leaves the room.
04:33:33crafterm enters the room.
04:37:54atmos leaves the room.
04:42:46mapar leaves the room.
04:42:47veek leaves the room.
04:45:58jtoy enters the room.
04:46:35TheVoice enters the room.
04:55:01rubuildius_ppc leaves the room.
04:55:33rubuildius_ppc enters the room.
04:56:00benburkert leaves the room.
04:58:20jtoy leaves the room.
04:59:00rubuildius_ppc leaves the room.
04:59:19jtoy enters the room.
04:59:33rubuildius_ppc enters the room.
05:02:16michaellatta_ enters the room.
05:06:33AndrewO enters the room.
05:17:26mapar enters the room.
05:17:39atmos enters the room.
05:17:44michaellatta leaves the room.
05:21:59AndrewO leaves the room.
05:32:05twbray leaves the room.
05:33:06twbray enters the room.
05:33:27twbray leaves the room.
05:35:33trythil enters the room.
05:36:39lstoll_ leaves the room.
05:38:05tizianobis enters the room.
05:46:13robin_dewd leaves the room.
05:46:30ezmobius enters the room.
06:00:43kw leaves the room.
06:08:55mediogre enters the room.
06:38:21mediogre enters the room.
06:42:34blakewatters enters the room.
06:42:49crafterm leaves the room.
07:01:38mernen leaves the room.
07:06:07sambo82_ enters the room.
07:08:13wmoxam leaves the room.
07:08:44w1rele55 leaves the room.
07:10:21w1rele55 enters the room.
07:10:45wycats leaves the room.
07:13:43yipstar leaves the room.
07:17:06kw enters the room.
07:17:19kw leaves the room.
07:18:19Skip enters the room.
07:18:33lchin_ enters the room.
07:18:58edwardam leaves the room.
07:23:50tizianobis_ enters the room.
07:26:53wycats enters the room.
07:30:34michaellatta_ leaves the room.
07:31:07michaellatta enters the room.
07:33:56lchin leaves the room.
07:35:19wycats leaves the room.
07:35:30wycats_ enters the room.
07:40:24tizianobis leaves the room.
07:42:18blakewatters leaves the room.
07:45:29wycats_ leaves the room.
07:46:03wycats enters the room.
07:51:05boof enters the room.
07:54:11rubuildius_ppc leaves the room.
07:54:43rubuildius_ppc enters the room.
07:56:17mkrauskopf enters the room.
08:11:11trythil leaves the room.
08:13:42thehcdreamer enters the room.
08:16:19elight leaves the room.
08:18:00elight enters the room.
08:26:04Maledictus enters the room.
08:26:33boof leaves the room.
08:28:18Fullmoon leaves the room.
08:48:56tizianobis__ enters the room.
08:48:58edwardam enters the room.
08:49:03edwardam leaves the room.
08:49:32edwardam enters the room.
08:55:51tizianobis___ enters the room.
08:55:53mutle enters the room.
09:01:41tizianobis___ leaves the room.
09:04:21lstoll enters the room.
09:07:24tizianobis leaves the room.
09:07:27tizianobis_ leaves the room.
09:16:59octopod enters the room.
09:22:27ezmobius leaves the room.
09:46:01olabini enters the room.
09:49:16imajes enters the room.
09:51:12BlackEdder enters the room.
09:56:37BlackEdder enters the room.
10:00:04rubuildius_ppc leaves the room.
10:00:38rubuildius_ppc enters the room.
10:16:39VVSiz_ enters the room.
10:33:21VVSiz leaves the room.
10:35:05VVSiz enters the room.
10:40:21VVSiz_ leaves the room.
10:48:27TheVoice leaves the room.
11:02:54atmos leaves the room.
11:05:41qwert666 enters the room.
11:06:12imajes leaves the room.
11:13:43thehcdreamer leaves the room.
11:16:52jtoy leaves the room.
11:19:37thehcdreamer enters the room.
11:28:53thehcdreamer_ enters the room.
11:29:08thehcdreamer_ leaves the room.
11:32:18_sk leaves the room.
11:37:33thehcdreamer leaves the room.
11:38:08headius_ enters the room.
11:44:05thehcdreamer enters the room.
11:47:24headius leaves the room.
11:53:45thehcdreamer_ enters the room.
11:56:09rubuildius_ppc leaves the room.
11:56:42rubuildius_ppc enters the room.
11:57:09rubuildius_ppc leaves the room.
11:57:09sdsykes enters the room.
11:57:41rubuildius_ppc enters the room.
12:01:07thehcdreamer leaves the room.
12:02:54ruivaldo enters the room.
12:08:15Skip leaves the room.
12:09:20Skip enters the room.
12:30:27ruivaldo leaves the room.
12:33:37RyanTM enters the room.
12:42:47radarek enters the room.
12:52:05sambo82_ leaves the room.
12:52:28charlenopires enters the room.
13:02:26mapar1 enters the room.
13:04:25mapar leaves the room.
13:07:47tim_w enters the room.
13:12:56obiejuan enters the room.
13:17:58mjwhitt enters the room.
13:23:22vertiginou1 enters the room.
13:27:37tim_w leaves the room.
13:29:27tim_w enters the room.
13:34:18cksouza leaves the room.
13:39:17jtoy enters the room.
13:40:22thehcdreamer_ leaves the room.
13:47:35binary42 leaves the room.
13:50:36robin_dewd enters the room.
13:52:04yugui leaves the room.
13:59:41webmat enters the room.
14:00:17qwert666 leaves the room.
14:07:36blakewatters enters the room.
14:10:40blakewatters leaves the room.
14:17:27tim_w leaves the room.
14:17:59scoopr enters the room.
14:22:19RyanTM leaves the room.
14:27:28twbray enters the room.
14:31:03enebo enters the room.
14:38:32edwardam leaves the room.
14:39:32tim_w enters the room.
14:39:39tim_w leaves the room.
14:42:28obiejuan enters the room.
14:43:17trythil enters the room.
14:46:29twbray leaves the room.
14:47:00trythil leaves the room.
14:47:47elight leaves the room.
14:48:40moofbong enters the room.
14:52:21blakewatters enters the room.
14:54:45thehcdreamer enters the room.
14:59:10wmoxam enters the room.
15:00:57RyanTM enters the room.
15:02:11rubuildius_ppc leaves the room.
15:02:44rubuildius_ppc enters the room.
15:11:05sambo82 enters the room.
15:13:39nemerle_afk enters the room.
15:13:47yugui enters the room.
15:21:41headius_ enters the room.
15:21:50qwert666 enters the room.
15:24:50chris2 enters the room.
15:24:53trythil enters the room.
15:25:53trythil leaves the room.
15:30:25yasuhito_ enters the room.
15:30:28ShayArnett enters the room.
15:30:57trythil enters the room.
15:31:09headius leaves the room.
15:31:09trythil leaves the room.
15:31:30nemerle leaves the room.
15:31:49yasuhito_ leaves the room.
15:36:44yipstar enters the room.
15:37:18yasuhito_ enters the room.
15:44:41twbray enters the room.
15:47:41nemerle enters the room.
15:53:05qwert666 leaves the room.
15:53:24lopex enters the room.
15:55:04nemerle_afk leaves the room.
15:55:54twbray leaves the room.
15:57:13rubuildius_ppc leaves the room.
15:57:45rubuildius_ppc enters the room.
16:00:00headius_ leaves the room.
16:00:28therealadam enters the room.
16:03:25rype enters the room.
16:03:53MenTaLguY enters the room.
16:04:00MenTaLguYhello
16:05:12shame leaves the room.
16:05:45dlee enters the room.
16:13:37qwert666 enters the room.
16:16:30boof enters the room.
16:17:10boof leaves the room.
16:21:01nicksieger enters the room.
16:21:03Spakmanhello
16:24:37trythil enters the room.
16:30:59Packet_Monkey enters the room.
16:32:11qwert666 leaves the room.
16:32:12twbray enters the room.
16:32:55jtoy leaves the room.
16:38:51twbray leaves the room.
16:41:15rubuildius_ppc leaves the room.
16:41:47rubuildius_ppc enters the room.
16:44:49trythil leaves the room.
16:44:53naeu enters the room.
16:48:38dfg59 enters the room.
16:50:14trythil enters the room.
16:57:56naeu leaves the room.
16:58:10naeu enters the room.
16:58:46trythil leaves the room.
17:00:15naeu leaves the room.
17:03:40wycats leaves the room.
17:04:03wycats enters the room.
17:04:41dfg59 leaves the room.
17:05:00yugui leaves the room.
17:09:08wvdschel enters the room.
17:09:34shame enters the room.
17:13:34twbray enters the room.
17:16:35antares enters the room.
17:17:27antares leaves the room.
17:17:30antares enters the room.
17:20:16tim_w enters the room.
17:25:02sambo82 leaves the room.
17:28:32mutle leaves the room.
17:28:40dysinger enters the room.
17:30:17olabini leaves the room.
17:52:26MenTaLguY enters the room.
17:53:04thehcdreamer leaves the room.
17:57:23trythil enters the room.
17:58:01lstoll leaves the room.
18:06:01antares leaves the room.
18:07:56tim_w leaves the room.
18:13:52TheVoice enters the room.
18:17:51tim_w enters the room.
18:19:42octopod leaves the room.
18:30:08brainopia enters the room.
18:31:43JimMc leaves the room.
18:45:02brainopia leaves the room.
18:46:26twbray leaves the room.
18:48:08tim_w leaves the room.
18:48:20VVSiz leaves the room.
19:07:04charlenopires leaves the room.
19:07:11macournoyer enters the room.
19:07:17rubuildius_ppc leaves the room.
19:07:36atmos enters the room.
19:07:45macournoyer leaves the room.
19:07:50rubuildius_ppc enters the room.
19:07:52macournoyer enters the room.
19:09:58lopex leaves the room.
19:11:19dysinger leaves the room.
19:14:16drbrainMenTaLguY: ping
19:14:17qwert666 enters the room.
19:15:21edwardam enters the room.
19:17:07MenTaLguYpong
19:17:14MenTaLguYwhat's up?
19:18:28tarcierihey MenTaLguY, Reia has blocks now
19:19:09MenTaLguYawesome
19:19:37tarcieri>> [1,2,3].map() { |n| n + 1 }.map() { |n| n * 2 }.reduce(0) { |a, b| a + b }
19:19:38tarcieri18
19:20:42brixentarcieri: sweet!
19:21:01brixentarcieri: any chance you are coming to railsconf?
19:21:16evantarcieri: reia is ruby flavored erlang, right?
19:21:21drbrainMenTaLguY: was wondering about your "gem database doesn't scale" twitter
19:21:25tarcieriwas considering it, but nope... I'm not really doing much Rails anymore
19:21:27drbrainI think I am working on that right now
19:21:43tarcierievan: it's a mishmash of Ruby, Python, and Erlang, and yeah, runs on the Erlang VM
19:21:47brixentarcieri: ah bummer, I was hoping to talk MPI -> Actor stuff
19:21:56tarcieribrixen: aah
19:22:03drbraindid you mean the bulk update nastiness?
19:22:11evantarcieri: whats it output?
19:22:22evantarcieri: your compiler takes your syntax in and outputs erlang syntax?
19:22:24tarcierievan: my code outputs Erlang AST
19:22:28tarcieriyeah
19:22:36evanin text form or somethin gelse?
19:22:39evanelse.
19:23:07AndrewO enters the room.
19:23:08tarcieriwell, right now I just walk the sexps produced by my parser and output sexps compatible with Erlang's parser
19:23:21MenTaLguYdrbrain: yes, just that
19:23:45drbrainyeah, I'm working on exactly that
19:23:50MenTaLguYexcellent
19:24:02tarcierievan: but as soon as I reach the point that it's capable of self hosting I'm going to rewrite the entire compiler... and probably target core Erlang in the process
19:24:12wycats leaves the room.
19:24:19evan'core Erlang'?
19:24:43tarcieriIt's a simplified Erlang used by the compiler
19:24:49tarcierias in the one which produces BEAM bytecodes
19:25:02evangotcha
19:26:30evanjust got type specialized blocks working nicely I think.
19:27:53evanthis is a tricky problem
19:28:05evansince ruby treats blocks like composable execute units.
19:28:52tarciericheated and just has blocks as a convenience syntax for disambiguating lambdas from other formal parameters
19:31:39MenTaLguYhow close to Ruby is Reia ultimately supposed to be, OOC?
19:32:01tarcieridunno, as close as I want it to be :)
19:32:17tarcierisyntactically it looks a lot more like Python than Ruby
19:33:07tarcieribut there's certain elements of Ruby syntax I'm just copying over verbatim
19:33:11evanwith closures.
19:34:23ezmobius enters the room.
19:41:21wycats enters the room.
19:54:37wvdschel leaves the room.
19:56:08binary42 enters the room.
20:00:15VVSiz enters the room.
20:07:41enebo leaves the room.
20:08:40twbray enters the room.
20:11:21pauldix enters the room.
20:11:22dodecaphonic enters the room.
20:11:45edwardam leaves the room.
20:12:10trythil leaves the room.
20:18:37twbray leaves the room.
20:22:33Fullmoon enters the room.
20:25:17vertiginou1 leaves the room.
20:27:54elight enters the room.
20:30:00edwardam enters the room.
20:30:23edwardam leaves the room.
20:30:38edwardam enters the room.
20:40:01ezmobius leaves the room.
20:42:04rype leaves the room.
20:48:02dgtizedI wish rubygems had been built from the get go with some sort of category system, gem list -r is pretty much useless
20:52:05NoKarma enters the room.
20:55:37DefilerIt needs a compatibility-breaking version change, in my opinion
20:55:46Defilerbut it isn't getting one, now that it is integrated with MRI
20:57:22flazz enters the room.
20:57:45chris2 leaves the room.
20:58:09flazzi'm trying to run a script in rbx and it cant seem to find the gem 'builder' any ideas?
20:58:25tarcierirbx gem install builder?
20:58:38flazzits a whole other set of gems?
20:58:41evanyep
20:58:53flazzwell then
20:59:05evanbe sure to do --no-ri --no-rdoc
20:59:07evanon install too
20:59:15flazzi'll try it, where do the rbx gems go if i have rbx under /usr/local?
20:59:25Defilerrbx gem environment will show the paths
21:00:38flazzDefiler: where/how can i look at that?
21:01:06Defilertype that command
21:01:11Defiler'rbx gem environment'
21:01:23Defiler('gem environment' will show you your MRI config)
21:01:40twbray enters the room.
21:01:55brixenflazz: you can even abbreviate it to 'rbx gem env'
21:01:57flazzgotcha, so why --no-ri and --no-rdoc?
21:02:05Defilerthey are very slow right now
21:02:06evanit's quite slow right now.
21:04:20enebo enters the room.
21:06:23sdsykes leaves the room.
21:13:01flazzi stopped the gem install mid way and then when i restarted it i'm getting no such file or directory - .....cache/builder-2.1.2.gem
21:13:14flazzis it half installed or something?
21:13:40Packet_Monkey_ enters the room.
21:15:44drbrainflazz: can you paste a backtrace?
21:15:50drbrainrbx gem --debug install ...
21:16:21dodecaphonic leaves the room.
21:18:49flazzgod i love pbcopy
21:19:02dgtizedevan: was it you or dbussink that tested on debian unstable for the new vm?
21:19:14dbussinkdgtized: was me
21:19:18dbussinkdgtized: ah no
21:19:25dbussinki read it wrong, it was evan :P
21:19:31dbussinki have an ubuntu vm
21:19:32flazzhttp://pastie.caboo.se/202460
21:19:46dgtizeddbussink: running 8.04?
21:19:51dbussinkdgtized: yup
21:20:46dgtizedcan you print out the g++ version string on that?
21:20:51dgtizeddgtized: just to see?
21:21:14dgtizedoops meant to tab complete on dbussink and got me somehow
21:22:28dbussinkdgtized: i'm not at home atm, but it's the latest after a apt-get upgrade
21:22:32dbussinkfrom yesterday
21:23:37dgtizedright, which is what mine is too, but I wanted to see if the version string was actually the same, just in case something was really screwy
21:24:20drbrainflazz: do you have a /usr/local/lib/rubinius/lib/rbx/gems/1.8.6/cache directory
21:24:23drbrain?
21:24:32ShayArnett leaves the room.
21:28:23dgtizedevan: OBJECT Task::pop(); should be OBJECT pop(); in builtin_task.hpp
21:28:32dgtizedevan: it's a compiler error otherwise
21:28:36cremes_ leaves the room.
21:29:48vertiginous enters the room.
21:31:08Packet_Monkey leaves the room.
21:33:47radarek leaves the room.
21:34:05dgtizedevan: is undef #undef state for removing STATE or is there actually a state macro somewhere?
21:35:40Jzalae enters the room.
21:36:30benny enters the room.
21:36:51seydar enters the room.
21:40:04ezmobius enters the room.
21:43:18dgtizedevan: HA! I found the bug in state
21:43:31evanoh?
21:43:49dgtizedevan: I added an #undef state to line 281 of test_lookuptable
21:44:09dgtizedbecause at the beginning of that there is a #define state &vm
21:44:14evani don't have a line 281
21:44:28evanoh
21:44:31dgtizedwell the last line of the class anyway
21:44:33evanso it was a local change of yours?
21:44:40dgtizedno
21:44:46dgtizedwell the fix is a local change
21:44:59evanthe fix is adding an #undef state to the end?
21:45:09evani still don't get why it's only you.
21:45:30dgtizedevan: nor do I but that's the problem somehow the #define from there is bleeding over into test_task.hpp
21:45:40evanhrm. ok.
21:45:55dgtizedtest_lookuptable is the only one that doesn't have a setup/teardown for vm
21:46:07dgtizedso you allocate it at the beginning of each method
21:46:18evanyeah
21:46:21evanshould probably do that
21:46:27evaninstead
21:46:30evanit's an older test
21:46:32evanis the reason it didn't.
21:46:36dgtizedmake it a setup/teardown? k I will swap it
21:46:51evanyeah
21:46:56evanmake a setup/teardown like the others
21:47:02evanwith a state data member
21:48:48dgtizedk
21:49:12dgtizedso we should have 3 or 4 tests failing in general?
21:49:29dgtizednon-deterministically?
21:49:36vertiginous leaves the room.
21:49:53dbussinkdgtized: yeah, that's what i've seen too on my ubuntu vm
21:50:00dbussinkeverything is ok on os x though
21:50:05Packet_Monkey_ leaves the room.
21:53:20gnufied enters the room.
21:53:42evanthere are 3 on linux
21:53:44evanthat fail.
21:54:15benny leaves the room.
21:54:23dgtizedI get sometimes 3 and sometimes 4
21:54:33dgtizedand it sounded like dbussink had the same issue
21:54:57dbussinki've seen 2 too
21:56:22jammi_ leaves the room.
21:57:02seydar enters the room.
21:57:17seydarhas anyone else had trouble getting rubinius to run recently?
21:57:36evanseydar: welcome back
21:57:43evanno one has reported anything, no.
21:57:45seydarok
21:57:55evantrouble how?
21:57:56seydari am officially reporting rubinius being unable to start because of FFI
21:58:15drbrainhi seydar!
21:58:22evanseydar: please put in a tickt with all relevant info
21:58:24seydardrbrain: whats up!
21:58:29evanfor instance, why you think it's FFI
21:58:33jammi enters the room.
21:58:38drbrainwe've been missing you
21:58:40seydarevan: because it says its FFI, but i cant find a log
21:58:52seydardrbrain: i have been putting in more hours into dartmouth than my dad is in work
21:58:58evanseydar: put as much info as you have in a ticket.
21:59:07seydarevan: yessir.
21:59:50drbrainseydar: well, that's a worthy trade
22:00:08dgtizedevan: hmm I tried adding the lookuptable in test_lookuptable to the setup/teardown
22:00:39dgtizedevan: but then I get an invalid pointer glibc error if I try and free up the tbl in teardown
22:01:04evanare you doing a setup/teardown exactly the same as the other files?
22:01:48dgtizedevan: yes except I'm also including the tbl in the setup/teardown in addition to the VM *state
22:02:15evanyou're not freeing the tbl, right?
22:02:28dgtizedevan: that's what fails
22:02:35evanyou don't free them.
22:02:39dgtizedevan: ok
22:02:51evanNEVER free pointers you get back from ::create
22:02:56evanthey're GC allocated objects.
22:02:56dgtizedevan: ok
22:04:47dgtizedevan: ok that fixes it, incidentally all of the #undef state are no longer needed because of this change as well
22:04:55evancourse.
22:06:23AndrewO leaves the room.
22:07:55webmat leaves the room.
22:09:21jnicklas enters the room.
22:11:30pauldix leaves the room.
22:11:47pauldix enters the room.
22:12:15seydarevan: hows the C++ implementation coming along?
22:12:27seydarare there any major differences you're making?
22:13:01drbraintests
22:13:04drbrain:)
22:13:07evanyeah, tests.
22:13:15evanthe architecture is cleaner
22:13:32seydaractually, now that im taking a course thats on machines, i have about 73.π bajillion questions for you
22:13:48evanheh
22:13:54seydarok
22:13:58blakewatters leaves the room.
22:14:00evanlike what?
22:14:06seydarso do you implement pipelining?
22:14:13evanno
22:14:14evancourse not.
22:14:17seydar(i've glanced at the bluebook)
22:14:20DefilerWe don't have multiple execution units
22:14:24evanno VM does.
22:14:25DefilerSo there's nothing to pipeline. Heh
22:14:36seydarDefiler: pipelining doesn't require multiple ALUs
22:14:49DefilerWell, it does require a clock, right?
22:14:51evanit requires parallel execution units though.
22:14:53seydarthat would be superscalar (Tannenbaum, 257) and super awesome
22:15:04evanOS's are too far from the metal to do it properly.
22:15:18DefilerI mean, you would need to be able to pack the pipeline with useful instructions
22:15:19evansuperscalar units in processers are truely parallel
22:15:28seydarare you kidding me? is everything i learned that englishtened me totally useless this far up?
22:15:30Defilerand what could be more useful than the next instruction you plan to execute
22:15:32fizx enters the room.
22:15:54evanDefiler: GNU smalltalk has an instruction prefetch
22:15:58DefilerThere aren't any 'bubbles' to fill with a pipeline, unless I am missing something fundamental
22:16:03DefilerAah
22:16:04evanbut it's unsure if it actually improves things.
22:16:21evanthe goal instead is to eliminate bytecode dispatch
22:16:28evanthen you get pipelining for free
22:16:33benburkert enters the room.
22:16:41evanbecause it's in the 'natural path' of the CPU
22:17:11seydarso is there any way to get legit concurrency this far up from the metal? Can C/C++/D do it?
22:17:19seydarthis is a great question for the C/C++/D rooms...
22:17:36evannot in the same terms of a superscalar pipeline arch
22:17:37evanno.
22:17:39evannot possible.
22:17:55evanbut you don't need to for those languages.
22:17:55seydarsdgsdklfjg. is it worth it trying to get close?
22:18:11evanthere is no reason to if you generate machine code
22:18:18evanbecause thats automatically pipelined
22:18:24evanthats the whole point.
22:18:38DefilerYeah, it doesn't make sense to pipeline multiple layers of the executing code, right?
22:18:41evanit executes the machine code the best way possible, which means pipelining
22:18:51DefilerIn the end the CPU pipelines the machine instructions, so if those don't suck, you win for free
22:19:02evanseydar: it doesn't make sense
22:19:09dgtizedevan: alright just pushed those changes, I still don't know why it only blew up for me, but at least it makes sense why it was blowing up
22:19:15evanbecause you'll ALWAYS be emulating a pipeline scheme over another pipeline scheme
22:19:18evanwhich just doesn't work.
22:19:34evandgtized: yeah, we've fixed it :)
22:19:47seydarbut thats only if you generate machine code. if you're generating bytecode, wouldn't it make tons of sense to?>
22:19:53evanthe only way you'd do it for reals is to use FPGAs or something
22:19:59DefilerThere's always machine code getting generated
22:20:01evanactually be AT the metal.
22:20:18evanseydar: the point is to figure out how to generate machine code from the bytecode
22:20:25evanthats the direction every VM goes
22:20:32evanall research points in that direction.
22:20:57seydarso that its Bytecode -> ASM ahead of time?
22:21:08djwhittseydar: only the physical cpu can actually do parallel instuction execution
22:21:14evanby ahead of time, if you mean before you need to be running it, yes :)
22:21:15DefilerNo, runtime is better than ahead of time
22:21:17Defilerfaster
22:21:25evanahead of time != compile time
22:21:27evanthough
22:21:41evandelaying machine code generation as much as possible improves things
22:21:44evanbecause you have more info.
22:21:51evanthis is JIT 101.
22:21:55seydaron a slightly unrelated note, rubinius now works again, but it took a while to load irb
22:22:29seydarevan: whoa there. that doesn't come till spring of '09
22:22:35evan:D
22:22:36seydarcompilers with bill mckeen
22:22:46evanBig McKeen!
22:22:47evanhe sounds fun.
22:22:54seydarhe wrote the matlab compiler
22:22:58fizx leaves the room.
22:23:02seydarbtw, you all suck because you all make me mega sad
22:23:06evanmy CPU design teacher was o/~ AAAWEEESOOOME o/~
22:23:12evanpuuvada
22:23:17evanhe's the fucking man.
22:23:29evanbest college class I took.
22:23:41dbussinkmatlab brings back my master project memories :P
22:23:43seydarCPU design is with sean smith who rocks my socks off and back on.
22:23:55evanseydar: none of this is wasted info
22:24:04dbussinkreally nasty for an it guy to work with math oriented programming where people start to count at 1
22:24:19evanunderstanding CPU design gives you a lot of perspective
22:24:51seydarevan: it is so incredibly enlighting. we're building a full computer, keybaord CPU memory RAM everything ground up in logicworks using gates.
22:25:09evannice
22:25:14evanwe did the same
22:25:15evanin powerview.
22:25:18seydarok so back to the topic at hand
22:25:27evanwe designed a MIPS processor in powerview
22:25:55evanMIPS: The Sane Instruction Set
22:25:59evanshould be it's slogan.
22:26:10wvdschel enters the room.
22:26:11seydarso there is no way to do pipelining, superscalarosity, caching or anything?
22:26:21evanwe do cache
22:26:25evanbut not the same as a CPU does.
22:26:40evanwell, maybe you could map it to CPU caches in some way
22:26:40seydarwell thus ends my life.
22:26:50evanin terms of L1, L2, L3, RAM fill
22:26:56tarcieri*boggle*
22:27:05macournoyer leaves the room.
22:27:06tarcieriwhat are you trying to do, keep the CPU's execution units busy?
22:27:12evanSendSite's are L1, GlobalCache is L2, Hierarchy is RAM
22:27:43evantarcieri: yeah, "move this pile of bits over here. and when you're done, you're going to move them back."
22:28:17tarcieriThreads are a nice way to do that, particularly on architectures which have multiple decoders per CPU core
22:28:32tarcieriwhich includes the newest family of Intel processors
22:29:14MenTaLguYup to a point
22:29:32MenTaLguYcache issues between multiple threads can be a problem for hyperthreading though
22:29:40evanto make things fast, you want to improve execution transparency
22:29:44evanso the CPU can do most of the work
22:29:55tarcieriThe original "HyperThreading" was a hack around the P4's pipeline being too long for its branch predictor to make efficient
22:29:58evanbytecode is bad in those terms because it hides execution flow from the CPU
22:30:33evantarcieri: right, so they just wired some L1 on to flush and load quickly
22:30:59tarcierithey added another decode pipeline because its execution units kept getting starved as it refilled the pipeline
22:31:30evanseydar: don't forget that, in a physical CPU, when the clock ticks, thousands of parallel mechanisms can run
22:31:40mapar1 leaves the room.
22:31:43evanso for every clock tick, each execution unit in the CPU can perform an operation
22:31:52antares enters the room.
22:31:52evanif there are 40 stages, thats 40 parallel operations.
22:32:30evanbut those are stages like loading a register from cache
22:32:32seydarso there is no speed increase one can get by designing whats like an actual CPU as opposed to following the bluebook?
22:32:37evanor perform a simple math operation
22:32:40evanperforming.
22:32:46evanseydar: no
22:32:57evanbecause you're hiding the execution flow from the CPU
22:33:04evanmaking the CPU do more work.
22:33:09seydarok, i *kinda* understand
22:33:12seydarok now i understand
22:33:15DefilerIf you plan to implement your own machine code generation, then maybe it might
22:33:26evanDefiler: not really
22:33:40DefilerNot faster, just perhaps easier to implement
22:33:45evanmachine code is still like 3 steps removed from a 40 stage pipeline
22:33:50Defilertrue
22:33:57evanthere is still the microcode operations that are derived from the machine code
22:33:58tarcieriheh, especially on x86
22:34:01evanthen instruction reordering
22:34:04evanthen caching
22:34:06evanthen execution
22:34:10evanthen a nap in the shade.
22:34:28djwhittseydar: the CPU does all the crazy stuff because it's trying to execute serial code in parallel. if you're not at the actual hardware level there's no way to actually execute instructions in parallel like that
22:34:50seydardjwhitt: way to make me cry
22:35:02seydarthe world is so impure!!! i want my hardware
22:35:11tarcieriif you have a VM with multiple hardware threads it can take advantage of SMT
22:35:14evannow you see why hardware guys and software guys are so different
22:35:16DefilerThis is why Von Neumann was sad that nobody made his design obsolete
22:35:19evanthey operate at completely different levels.
22:35:39evanDefiler: a friend of mine works for a switch vendor that makes clockless switches
22:35:48evanso there are some non-Von Neumman execution engines
22:35:50DefilerSo cool
22:35:57Defilerclocks are lame =(
22:36:20evanclocks are a bit like a switch dispatch in a VM
22:36:26evanreally easy at first
22:36:28evanbut limiting.
22:36:36mernen enters the room.
22:36:39seydarevan: does rubinius do dynamic branching?
22:36:50gramos enters the room.
22:36:53evanwe have superscalar, pipelining archs BECAUSE of clocks.
22:37:11evanseydar: i don't even know what that would be in software terms.
22:37:17antares leaves the room.
22:37:20twbray leaves the room.
22:37:24antares enters the room.
22:38:10seydarevan: how rubinius is superscalar sorta eludes me. any docs i should read or could you explain?
22:38:20djwhittseydar: to optimize this stuff at the VM level you try to expose as much program structure to the underlying hardware as possible
22:38:30vertiginous enters the room.
22:38:37dysinger_ enters the room.
22:38:48djwhittseydar: so that the hardware itself can do branch prediction etc.
22:38:54evanright
22:38:56kw enters the room.
22:39:05seydarhow do you expose details to the hardware?
22:39:11DefilerAre trace trees the software equivalent?
22:39:12evana good example is that x86 is highly optimized internall for call/ret instruction flow now.
22:39:41evanseydar: you translate the work you would do in bytecode into machine
22:39:46evanand have the CPU execute it natively
22:39:54evanDefiler: of branch prediction? maybe
22:40:07evanyou could probably put them in the same truck sized bin
22:40:49seydarwhoa. so rubinius gets its bytecode into machine code? or is that just what you'd _have_ to do?
22:41:09djwhittseydar: it doesn't ... yet ... (at least as far as I know)
22:41:41seydaris it possible/reasonable to compile _some_ things to ASM and have those executed as needed?
22:41:55evanseydar: we don't yet
22:41:57evanbut thats a goal
22:41:58seydarRandall Thomas told me about some VMs that are hacky in that they do that
22:42:07evanfor making a VM fast.
22:42:15evani'd love to loose the term VM.
22:42:23evanbecause it's a misnomer
22:42:34DefilerHrm.. what would that even look like inside Rubinius?
22:42:35evanExecution Environment is a better term
22:42:37evanbut that will never stick.
22:42:55DefilerThere's so much crap we need to execute to run a Ruby method
22:43:12DefilerThe naive approach would generate an insane amount of duplicate code, it seems to me
22:43:20evanwell, my current thinking is the LLVM microthread arch
22:43:32evannah
22:43:39evannot insane ammounts.
22:43:51evanyou'd generate a chunk of machine code for each type specialized method
22:44:05evanyou do that up front
22:44:10evannot right before you need to execute
22:44:14evaner.
22:44:20evanyou can do it right before
22:44:22evanbut you cache it
22:44:23evanand reuse it.
22:44:26DefilerAah, so you would jump into it
22:44:30Defilerrather than emitting it again and again
22:45:59evancourse
22:46:04evanyou can't not cacheit
22:46:09ShayArnett enters the room.
22:46:21DefilerWell, you would willfully not cache it if you wanted :)
22:46:23seydarso are you looking to tie this into LLVM?
22:46:23evanunless you're on the infinite machine.
22:46:36ezmobiusrbxEE the rubinius Execution Environment
22:46:48evanin which case, you simply generate all possible programs up front
22:46:51evanand all possible results.
22:46:57evanand just return the right one
22:46:59Defilerhaha well, I meant at runtime
22:47:03evanall programs because O(log n)
22:47:03Defilerconverting bytecode into machine code, say
22:47:07evans/because/become/
22:47:19evanezmobius: :)
22:47:25evanseydar: considering it, yes.
22:47:59ShayArnett leaves the room.
22:48:33benstiglitz enters the room.
22:48:51seydarok
22:49:19seydarso in my young and ambitious mind, i thought about either generating D code to use llvm, or just generate D code from Duby
22:49:37edwardamwhat is LLVM ?
22:49:47evanseydar: why D?
22:50:04evanedwardam: http://llvm.org/
22:50:23seydarD because it is compilable and has an imperative nature AND OOP
22:50:24benstiglitz leaves the room.
22:50:31seydaralso because it is garbage collected
22:50:43seydarif we did LLVM we'd have to write our own GC again
22:50:48evannah
22:51:00evani've worked out a way to not have to
22:51:03evanplus LLVM has GC hooks
22:51:09evanso we could use the GC we already have
22:51:20seydaris it generational. btw?
22:51:26dgtized_ enters the room.
22:51:43evanyeah
22:52:02benstiglitz enters the room.
22:52:23benstiglitz leaves the room.
22:52:28seydarsweet. thats the new hotness, right?
22:52:32benstiglitz enters the room.
22:52:38evanno
22:52:39tarcierinew?
22:52:43evanbeen generational for years now.
22:52:58seydari know rubinius has, but has the rest of the world?
22:53:00seydaroh well.
22:53:08seydarhow do you want to link into LLVM?
22:53:15seydarD has bindings to it, btw
22:53:23seydarCLEAN COMPLETE bindings
22:53:28evanwe're not using D.
22:53:29loincloth enters the room.
22:54:00evananyway, the idea is to translate the bytecode into a simple series of calls for each instruction
22:54:15tarcieridoesn't C++ also have clean, complete, first-class bindings? :)
22:54:19evanhandling the goto instructions specially
22:54:27evanthen you just tell LLVM to optimize and inline
22:54:34tarcierithat will be so awesome with ragel
22:54:43evanit inlines all the instruction code directly
22:54:45evanremoving the call
22:54:54evanso the upfront work for us is very small
22:54:55moofbong leaves the room.
22:55:04evanjust a loop over the bytecode, emitting call instructions
22:55:08evanand let LLVM do all the hard work.
22:56:09djwhittis fascinated by this LLVM idea ...
22:56:24djwhittprobably because LLVM is just kind of a magic black box to me at this point
22:56:28djwhittI know very little about it
22:56:36evani wrote up a test of this idea
22:56:42evanusing i 3 instruction VM
22:56:53seydarevan: so is a version of Duby that emits D code out of the question?
22:56:54evanit has set/add/show
22:57:01jp_tixFLOSS Weekly interviews Dan Ingalls, if you guys haven't seen it: http://www.twit.tv/floss29
22:57:03evanworked great
22:57:17djwhittI guess what I really don't grasp is what part of the VM would LLVM replace ... or is that the wrong way of thinking about it
22:57:18evanseydar: i don't see a reason for rubinius to use D at all.
22:57:27evanseydar: and I see a number of reasons not to.
22:57:39evandjwhitt: don't think about it that way
22:57:50evanit's not a either/or question
22:57:54evanLLVM augments what we already have
22:58:03tarcierihotspotting
22:58:03evanjust providing yet another very fast way of executing bytecode
22:58:08djwhittyeah, I think that's what I don't get
22:58:15evanby eliminating bytecode dispatch overhead entirely
22:58:21MenTaLguYvery breifly
22:58:25djwhittany good articles/docs you could point me to?
22:58:26MenTaLguYLLVM = JIT capability
22:58:27MenTaLguYthat's all
22:58:30evanMenTaLguY: yep
22:58:57djwhittah, I probably just need to dig through some LLVM docs to understand it better
22:59:03djwhittit seems like it does a bit of everything
22:59:04evanjp_tix: nice! thanks!
22:59:23evani should do a short blog about about the micro VM a did using LLVM
22:59:26MenTaLguYit's a pretty general framework for building JIT-capable compilers/interpreters
22:59:31MenTaLguYevan: yes, you should
22:59:37jp_tixevan: they're trying to get alan kay on soon to
22:59:38evanit just takes an int[] in
22:59:46evanand executes in using JIT
23:00:51jp_tixs/to/too
23:01:01vertiginous leaves the room.
23:02:21djwhitthehe I love the LLVM docs page. it's like a list of thesis papers for people who have worked on the project
23:02:42dgtized leaves the room.
23:03:25obiejuan leaves the room.
23:04:17blakewatters enters the room.
23:05:47seydarso is work actively being done on Duby?
23:06:11djwhittseydar: you'd probably have to ask headius
23:06:13edwardamevan: so will rubinius be (at least partly) an LLVM front end?
23:06:20djwhittseydar: I haven't heard anything about it for a while
23:06:35evanedwardam: yeah, you'd call it that.
23:07:04edwardamwonders if there is an LLVM IR to GCC IR converter.
23:07:26MenTaLguYthere's llvm-gcc which is not exactly what you want
23:07:27evanthere is no GCC IR
23:07:30evanbut you can do
23:07:38evanllc -march=c <bitcode file>
23:07:47evanand LLVM will output C for the bitecode
23:07:52evanas a 'portable assembly'
23:08:11edwardamheh ... Minor Features: Includes support for Accurate Garbage Collection
23:08:44seydarheading out. evan, you have singlehandedly crush my hopes and dreams.
23:08:48seydartake it easy everyone
23:08:55seydar leaves the room.
23:09:24djwhittevan: so am I thinking about this correctly, the rbx instructions would basically be implemented in terms of LLVM bytecode?
23:09:39evanno
23:09:49djwhittheh, ok
23:10:01evan2 different sets entirely
23:10:11evanthere would be a piece of code that sits inbetween them
23:10:16evantranslating between them
23:10:32evanRubinius bytecode is really nice because it's a very simple, very basic description of what work should be done
23:11:10djwhittah, maybe I just phrased my question poorly...
23:11:37edwardamLLVM has a Cell SPU backend
23:11:49djwhittI was thinking instead of C bodies for the rbx instructions you'd essentially have something that takes the rbx instruction and outputs LLVM instructions
23:12:01djwhittand then feeds them to LLVM for execution
23:14:16djwhittthat's what I meant by "implemented in terms of"
23:14:39evandjwhitt: no need to
23:14:43evanwhat you do is generate C
23:14:47evanand hand that to LLVM
23:14:52djwhittah, I see
23:14:55evanand have it create bitcode from that C
23:15:06evanyou then later combine it with more LLVM IR you generate at runtime
23:15:10evanand having it optimize them together
23:15:14djwhittgotcha ... starting to make sense
23:15:15evanletting it inline, etc.
23:15:53djwhittso the bodies of the instructions stay the same ... you just kind of hand them off to LLVM to handle ?
23:15:55evanfor example, in rubinius bytecode you'd have
23:16:03evanpush_ivar :@blah
23:16:07evanthat would get turned into
23:16:38evancall %insn_push_ivar, literals[0]
23:16:46evanin LLVM IR (that syntax is wrong, but you get the idea)
23:16:51evanyou then tell LLVM to optimize that
23:17:00djwhittneeto
23:17:03evanand it removes the call and just sticks the body of the insn_push_ivar instruction right there
23:17:10wvdschel leaves the room.
23:18:03djwhitthmm... so LLVM handles dispatch
23:18:16djwhittand does whatever is appropriate for the underlying architecture
23:19:19dbussinkevan: any idea on the cause of the linux failures?
23:19:21evanit uses it's builtin toolchain to execute that
23:19:50evandbussink: not off hand, no.
23:20:13benburkert leaves the room.
23:20:29djwhittevan: LLVM wouldn't help with inlining of Ruby methods at all would it?
23:20:35evandjwhitt: no
23:20:37evanit wouldn't.
23:20:41evanthats another activity all together.
23:20:48djwhittyeah, that's what I was thinking
23:20:49evanit can assist
23:21:01evanbut it doen't do it without significant additional information
23:21:39djwhittevan: cool, thanks for the explanation. makes a lot more sense to me now
23:21:43evancool.
23:23:57pauldix leaves the room.
23:28:59RyanTM leaves the room.
23:29:12octopod enters the room.
23:30:36AndrewO enters the room.
23:31:42yugui enters the room.
23:32:02benstiglitz leaves the room.
23:34:01RyanTM enters the room.
23:36:55AndrewO leaves the room.
23:40:37sambo82 enters the room.
23:40:45enebo leaves the room.
23:42:03Silva enters the room.
23:48:49headius enters the room.
23:50:41AndrewO enters the room.
23:53:51RyanTM leaves the room.
23:58:03RyanTM enters the room.
23:58:03sambo82_ enters the room.
23:58:03sambo82 leaves the room.
23:58:04yugui leaves the room.