Show enters and exits. Hide enters and exits.
| 00:01:14 | nexcastellan | evan: http://rafb.net/p/sWd6ir80.html http://rafb.net/p/XR7e2w35.html implement the changes I was talking to you about (rb_cFixnum, etc.) |
| 00:01:46 | evan | nexcastellan: looks good. |
| 00:02:02 | enebo leaves the room. | |
| 00:02:24 | nexcastellan | Evan: Can you commit it, I don't have a commit bit. Also, I have to go home in a few minutes. :) |
| 00:02:36 | nexcastellan | Evan: Did you get mkmf.rb working to your satisfaction? |
| 00:02:47 | evan | nexcastellan: sure, can you do it up with 'git format-patch' ? |
| 00:02:49 | evan | nexcastellan: yep |
| 00:02:53 | evan | almost got mkmf.rb working |
| 00:03:03 | nexcastellan | Hahaha, grrr. Yes, I think so, hold on. |
| 00:03:49 | rubuildius_ppc | William Morgan: 57a9df86b; 2188 files, 7304 examples, 26090 expectations, 0 failures, 0 errors |
| 00:05:45 | rubuildius_amd64 | William Morgan: 57a9df86b; 2188 files, 7245 examples, 25942 expectations, 0 failures, 0 errors |
| 00:05:46 | ezmobius leaves the room. | |
| 00:08:20 | nexcastellan | evan, I'll email you that fixnum patch, what's your email? |
| 00:08:42 | evan | nexcastellan: ephoenix at engineyard dot com |
| 00:09:29 | nexcastellan | There. |
| 00:10:31 | nexcastellan | Okay, gotta run to catch my bus. Have a good evening, all, and thanks everyone for helping me out today. |
| 00:11:57 | nexcastellan enters the room. | |
| 00:17:35 | shame leaves the room. | |
| 00:18:34 | cschneid enters the room. | |
| 00:21:15 | naeu leaves the room. | |
| 00:25:18 | Arjen__ leaves the room. | |
| 00:26:08 | mernen leaves the room. | |
| 00:26:57 | Maledictus leaves the room. | |
| 00:28:28 | obvio171 enters the room. | |
| 00:33:13 | dlee enters the room. | |
| 00:33:21 | pauldix leaves the room. | |
| 00:37:00 | ch0wda leaves the room. | |
| 00:37:55 | evan | yay! mongrel compiled and installed via gem! |
| 00:38:07 | kevinclark | woooo |
| 00:38:44 | evan | now, how to test... |
| 00:38:52 | mernen enters the room. | |
| 00:39:04 | evan | boo |
| 00:39:06 | evan | it wants fastthread |
| 00:39:08 | evan | which we'll never run. |
| 00:40:14 | headius | can you fake it with the old thread.rb for now? |
| 00:40:31 | evan | it lists it as a gem dep |
| 00:40:39 | evan | you guys don't have fastthread, do ya? |
| 00:40:45 | headius | ahh, now you feel our pain |
| 00:40:57 | headius | fastthread is built in, so the java mongrel gem just doesn't have it as a dependency |
| 00:41:05 | evan | yeah, so do we. |
| 00:41:16 | evan | and 1.8.7 has fastthread builtin too. |
| 00:41:31 | evan | time to make a stub gem. |
| 00:41:36 | rue enters the room. | |
| 00:41:44 | headius | just force it |
| 00:41:46 | evan | i wonder if i can cheat. |
| 00:41:47 | headius | nodeps |
| 00:41:49 | evan | i did |
| 00:41:52 | evan | this is on load. |
| 00:41:56 | headius | edit it |
| 00:42:02 | evan | thats last resort. |
| 00:42:02 | headius | you're just testing after all |
| 00:42:15 | evan | but i like taking the common path first while testing |
| 00:42:20 | evan | gets me into less trouble. |
| 00:42:29 | rue | Big storm |
| 00:42:42 | evan | rue: you need 2 things |
| 00:42:43 | rue | I swear I saw Thor banging houses with a hammer down the block |
| 00:42:47 | evan | 1) kiddy pool. |
| 00:42:50 | evan | 2) golf club. |
| 00:43:29 | rue | I think I only have woods |
| 00:44:22 | evan | you're short game must really suffer. |
| 00:44:25 | evan | your |
| 00:44:29 | michaellatta enters the room. | |
| 00:44:56 | rue | I could not say. They do not let me on the courses usually |
| 00:45:00 | mass | I hate to say it, but I've been doing test-last (or possibly test-never) |
| 00:45:07 | mass | any good references on rspec besides the railscast? |
| 00:45:21 | mass | rspec is still trendy right? ;-) |
| 00:45:36 | rue | mass: MSpec is where "it" is "at" |
| 00:45:39 | headius | rspec is so five minutes ago |
| 00:45:50 | mass | whats the M for? |
| 00:45:59 | rue | Megaraptor |
| 00:46:17 | rue | It was originally written for DNA coding |
| 00:46:26 | evan | Megalamidon! |
| 00:46:27 | mass | what happened? did it escape? |
| 00:46:48 | drbrain | we need to put that in the FAQ |
| 00:46:55 | zenspider | rue: the irony is... not too far off. :P |
| 00:47:14 | headius | nah, it's like 1000 lines of code |
| 00:47:20 | headius | GAH, me and misfires |
| 00:47:22 | mass | mass spectrometers :P |
| 00:47:24 | Defiler | M is for Mighty |
| 00:47:35 | mass | is the S for sarcasm? |
| 00:47:45 | Defiler | heh |
| 00:48:19 | mass | is it even distributed separate from rubyspec? |
| 00:48:53 | Defiler | now it is, apparently |
| 00:49:05 | Defiler | but it is still not easy to use outside of its directory |
| 00:49:16 | evan | drbrain: is there a quick way to 'activate' a gem |
| 00:49:21 | evan | drbrain: thats not really installed |
| 00:49:26 | evan | i want to fake it out |
| 00:49:31 | evan | so that activate says "ok, thats good to go" |
| 00:49:38 | zenspider | no, it isn't... I tried to use it to compare complexity against rspec and it fell flat |
| 00:49:40 | drbrain | yes, add something to um... |
| 00:49:43 | rue | mass: http://github.com/rubyspec/mspec, tarball too |
| 00:49:48 | evan | Gem.fakon << "fastthread" |
| 00:49:49 | evan | or something |
| 00:49:59 | drbrain | Gem.loaded_specs << 'fastthread' |
| 00:50:03 | mass | I guess nobody has any resources for me, luckily I have a mr. ryan bates |
| 00:50:13 | drbrain | err, Gem.loaded_specs['fastthread'] = true |
| 00:50:17 | mass | time to learn with my eyes |
| 00:50:26 | evan | drbrain: want to triple check? |
| 00:50:40 | headius | eyes are overrated |
| 00:50:48 | drbrain | although, you may need to fake out a gemspec for it |
| 00:50:53 | mass | so why is github so popular now? |
| 00:51:04 | rue | mass: The speccing syntax/usage is what you are looking for? |
| 00:51:10 | Defiler | I just wrote this to try to organize my thoughts on the topic |
| 00:51:11 | Defiler | http://metaclass.org/2008/6/4/github-is-pretty-awesome |
| 00:51:14 | evan | mass: cause it's simple. |
| 00:51:18 | headius | mass: chocolate went out of style |
| 00:51:19 | mass | more the imparting of experience into my brain |
| 00:51:34 | drbrain | evan: if it doesn't work with = true, make a fake gemspec |
| 00:51:42 | evan | hm |
| 00:51:43 | rue | mass: Critical you of developers switching to quasi-distributed repositories :) |
| 00:51:46 | mass | if this was the matrix I would just ask operator to give me rspec-fu |
| 00:51:48 | drbrain | fastthread = Gem::Specification.new do |s| ... end |
| 00:51:48 | evan | i can't do that in gem_prelude.rb though |
| 00:51:49 | evan | can I |
| 00:51:54 | drbrain | fill out name and version |
| 00:52:05 | Defiler | Presumably we would want to do that in files in lib/ with the matching name |
| 00:52:15 | drbrain | you'll need to do it before you require the first file that would pick up fastthread |
| 00:52:37 | evan | drbrain: yeah |
| 00:52:39 | evan | Defiler: can't |
| 00:52:46 | evan | it's doing "gem 'fastthread'" |
| 00:52:54 | evan | it's actually a dep |
| 00:52:59 | evan | that mongrel has. |
| 00:53:14 | MenTaLguY | I thought that dep had been removed by now? |
| 00:53:25 | rue | mass: I can do a quick rundown on the basics |
| 00:53:35 | MenTaLguY | I mean, fastthread is done at this point |
| 00:53:42 | MenTaLguY | stable 1.8.6 has a decent C implementation now |
| 00:53:51 | evan | hm. |
| 00:54:01 | MenTaLguY | >= p110 anyway |
| 00:54:06 | evan | maybe it has |
| 00:54:09 | zenspider | weren't we talking about doing the same thing that 1.9 was talking about, shipping with a bunch of gems? we could provide the fastthread stub in our gem vendor dir |
| 00:54:13 | evan | i might have install an old mongrel |
| 00:54:19 | evan | zenspider: yep |
| 00:54:19 | zenspider | oh. hah. maybe you're stale |
| 00:54:21 | MenTaLguY | a fastthread gem stub won't hurt anyone |
| 00:54:24 | evan | thats exactly the path i'm headed down |
| 00:55:05 | zenspider | I think that is a good safe way to deal with these types of problems in the future. |
| 00:55:10 | evan | yeah |
| 00:55:12 | zenspider | "no no... we'll provide that gem for you" |
| 00:55:16 | evan | so |
| 00:55:18 | evan | whats the way to do that? |
| 00:55:21 | rue | Can we not just stub it in the libraries? |
| 00:55:25 | evan | make up a fake spec and install it? |
| 00:55:33 | drbrain | yeah |
| 00:55:39 | rue | Gems checks whether it can find a lib locally before gem dependencies right? |
| 00:55:46 | drbrain | separate gem repos |
| 00:55:50 | MenTaLguY | whether it can find a gem locally |
| 00:55:51 | drbrain | rue: correct |
| 00:55:53 | michaellatta | I am trying to setup rubyspec to run on my dev machine against OS/X installed MRI and getting 9 failures. When I tried to report them, ran into issues with the rubyspec.org site. |
| 00:55:53 | MenTaLguY | not a lib necessarily |
| 00:55:53 | evan | drbrain: did you add the per engine file stuff to rubygems? |
| 00:56:01 | drbrain | evan: yes |
| 00:56:02 | evan | drbrain: if so, i can put the "preload" specs in that file for rubinius |
| 00:56:09 | evan | is it sync to rubinius yet? |
| 00:56:11 | drbrain | yes |
| 00:56:11 | zenspider | rue: it needs to load the gem spec or it'll freak |
| 00:56:24 | rue | Ebil |
| 00:56:34 | rue | Maybe that is the source of some of my problems :D |
| 00:56:48 | drbrain | evan: or, do something similar |
| 00:56:59 | drbrain | manually activating them is not the right way to go |
| 00:57:00 | evan | drbrain: where is the rubinius specific file? |
| 00:57:09 | drbrain | sec |
| 00:57:14 | drbrain | I didn't commit it |
| 00:57:14 | twbray leaves the room. | |
| 00:57:20 | evan | oh, ok. |
| 00:57:29 | evan | i'll stub a fastthread gem manually |
| 00:58:13 | rue | mass: The biggest potential source of confusion is that there are kind of two styles of writing the specs, logic-wise. Neither is necessarily better |
| 00:58:33 | boyscout | 1 commit by Eric Hodel |
| 00:58:34 | boyscout | * RubyGems defaults for Rubinius; 1d5e2bc |
| 00:58:49 | drbrain | it's now in lib/rubygems/defaults/rbx.rb |
| 00:58:54 | evan | danke! |
| 00:59:00 | drbrain | it uses RBX_ENGINE for the name of the file |
| 00:59:20 | evan | RUBY_ENGINE |
| 00:59:21 | evan | you mean |
| 00:59:33 | drbrain | yes |
| 00:59:35 | evan | k. |
| 01:00:00 | rue | Wossname |
| 01:00:13 | mass | Defiler: thanks for your blog link. Now I can watch you on InfoQ |
| 01:00:14 | mass | bwahaha |
| 01:00:21 | evan | drbrain: if I make a stub spec, I install it in loaded_spec, right? |
| 01:00:42 | drbrain | if you add it to loaded_specs, it will be activated |
| 01:00:50 | evan | k. |
| 01:00:53 | drbrain | which for your purposes is fine |
| 01:00:54 | mass | Defiler: is that what you look like? |
| 01:01:14 | drbrain | it will need to be revisited later |
| 01:01:19 | evan | hm. |
| 01:01:40 | evan | it's not loading the default file. |
| 01:02:35 | drbrain | hrm, it is not |
| 01:02:37 | evan | drbrain: i don't see any code to load that file |
| 01:02:48 | evan | i see one place that it uses RUBY_ENGINE in defaults.rb |
| 01:02:51 | drbrain | oh, duh, I haven't merged it |
| 01:02:53 | evan | but thats for the gem dir. |
| 01:03:03 | drbrain | from rubygems trunk |
| 01:03:08 | drbrain | too many repos! |
| 01:03:16 | evan | ok |
| 01:03:20 | evan | i figured that was the case. |
| 01:03:24 | drbrain | I will just move over rubygems.rb for now |
| 01:03:31 | evan | 10-4 |
| 01:05:46 | boyscout | 1 commit by Eric Hodel |
| 01:05:47 | boyscout | * Copy in rubygems.rb from RubyGems r1739 so Evan can get fastthread stubbed.; 33ea788 |
| 01:06:22 | evan | heh |
| 01:06:30 | evan | drbrain: i just copied it over from my rubygems svn checkout |
| 01:06:33 | drbrain | also, now `rbx gem env` lists x86-rubinius-0.8 |
| 01:06:39 | evan | cool. |
| 01:06:49 | evan | ok, so it's looking for fastthread of a certain version |
| 01:06:52 | evan | so i have to stub out the spec. |
| 01:08:50 | evan | ok, i'm going to go run a few errands so I can be back at 7 |
| 01:09:06 | tarcieri | you're trying to install mongrel? |
| 01:09:07 | tarcieri | my gem works |
| 01:09:20 | evan | trying it out with subtend |
| 01:09:23 | tarcieri | o |
| 01:09:25 | evan | since cezarsa kicked SO MUCH ASS |
| 01:09:28 | evan | that it compiles cleanly now. |
| 01:09:34 | tarcieri | nice |
| 01:09:47 | tarcieri | wonders how it would work with MVM |
| 01:09:53 | evan | ok, bbiab. |
| 01:10:14 | drbrain | what's an x86-darwin-9 gem? |
| 01:10:22 | drbrain | anybody know one offhand? |
| 01:10:39 | tarcieri | Leopard/x86? |
| 01:10:46 | drbrain | yes |
| 01:12:08 | Defiler | mass: I think you know what I look like, damnit :) |
| 01:12:44 | drbrain | I doubt he was expecting such a handsome gentleman |
| 01:12:49 | mass | I dunno, you just look so much more respectable than you do in person :) |
| 01:13:35 | mass | luckily nobody knows where to find my fateful time on a panel |
| 01:14:01 | kevinclark | evan: I'm working on the subtend bit right now. It compiles cleanly, but I'm still debugging this string_dup issue |
| 01:14:15 | evan | ok |
| 01:14:20 | mass | I'd never been in front of that sort of crowd at all, and I was sorta thrusted on with really 90 minutes of prep time |
| 01:14:23 | evan | now really gone. |
| 01:14:31 | mass | and I really have a problem when I hear my voice on an echo |
| 01:14:39 | drbrain | (but, also, yay for rbconfig.rb now being mostly complete) |
| 01:14:42 | mass | it turns into a synchronous ack. |
| 01:15:38 | Defiler | Man I didn't know shit about shit back when that interview was recorded |
| 01:15:39 | Defiler | heh |
| 01:15:40 | nullstyle_ leaves the room. | |
| 01:17:12 | mass | I'll be nice and not make a comment on that :D |
| 01:20:48 | rubuildius_amd64 | Eric Hodel: 33ea78802; 2188 files, 7245 examples, 25942 expectations, 0 failures, 0 errors |
| 01:20:49 | rubuildius_amd64 | Eric Hodel: 1d5e2bcd4; 2188 files, 7245 examples, 25942 expectations, 0 failures, 0 errors |
| 01:20:56 | rubuildius_ppc | Eric Hodel: 33ea78802; 2188 files, 7304 examples, 26090 expectations, 0 failures, 0 errors |
| 01:20:57 | rubuildius_ppc | Eric Hodel: 1d5e2bcd4; 2188 files, 7304 examples, 26090 expectations, 0 failures, 0 errors |
| 01:21:50 | drbrain | oh god, they're insane! |
| 01:23:58 | michaellatta | I get this on leopard OS/X. Is this my setup or a real issue? 2183 files, 7535 examples, 26902 expectations, 9 failures, 0 errors |
| 01:25:05 | rue | michaellatta: Can you post the command and the (error) output? |
| 01:26:57 | drbrain | using rafb.net/paste |
| 01:27:00 | michaellatta | I cloned the rubyspec repo and used "mspec *". The failures include: Dir.pwd returns the current working directory FAILED |
| 01:27:00 | michaellatta | Expected "/Users/lattam/Projects/rubyspec/1.8" |
| 01:27:00 | michaellatta | to equal "/Users/lattam/projects/rubyspec/1.8" |
| 01:27:01 | drbrain | or similar |
| 01:29:30 | obvio171 leaves the room. | |
| 01:29:45 | obvio171 enters the room. | |
| 01:30:27 | boyscout | 2 commits by William Morgan |
| 01:30:28 | boyscout | * Tag currently-failing inliner specs.; ce3039a |
| 01:30:29 | boyscout | * Rename self_methods.rb to self_methods_spec.rb. Now specs are run!; 53421c3 |
| 01:30:36 | twbray enters the room. | |
| 01:32:28 | mass | Defiler: did you ever get through that FOOL book? |
| 01:32:33 | mernen leaves the room. | |
| 01:39:11 | blakewatters enters the room. | |
| 01:40:05 | cored enters the room. | |
| 01:44:08 | rubuildius_ppc | William Morgan: ce3039a55; 2189 files, 7320 examples, 26112 expectations, 0 failures, 0 errors |
| 01:48:12 | yugui leaves the room. | |
| 01:48:36 | yugui enters the room. | |
| 01:49:28 | twbray leaves the room. | |
| 01:49:29 | michaellatta | rue: Also I tried to create an account on rubyspec.org and it is failing badly. I created the account, can not log in, requested a new passowrd, and it claimed to send an email that never got there. This looks pretty new. Is this a startup issue? |
| 01:49:51 | benburkert leaves the room. | |
| 01:55:16 | hemulen leaves the room. | |
| 01:58:59 | cored_ enters the room. | |
| 02:02:57 | moofbong enters the room. | |
| 02:04:47 | fbuilesv leaves the room. | |
| 02:05:00 | ch0wda enters the room. | |
| 02:12:42 | cored leaves the room. | |
| 02:13:20 | michaellatta | rue: I have manually verified the failure of the first test. Dir returns the path from the file system, and sh -c "pwd -P" which is used for testing returns the path entered by the user. On a case insensitive file system like OS/X these do not need to match exactly to be correct. I have the case where the file system uses a capital and I entered all lower case on the command line. The condition on this test is not correctly spe |
| 02:14:26 | dschn enters the room. | |
| 02:14:36 | ch0wda leaves the room. | |
| 02:15:45 | jtoy enters the room. | |
| 02:18:21 | dysinger enters the room. | |
| 02:18:32 | pauldix enters the room. | |
| 02:23:42 | pauldix leaves the room. | |
| 02:24:33 | anonuser | is back from a google sponsored dinner! |
| 02:25:03 | VVSiz_ enters the room. | |
| 02:25:05 | Defiler | http://avdi.org/devblog/2008/06/04/everything-old/ |
| 02:25:10 | Defiler | cool post |
| 02:27:32 | Defiler | mass: You should get with topfunky and make a peepcast about XMPP |
| 02:27:44 | Defiler | mass: It is exploding in the Ruby community and you could make $$ |
| 02:28:48 | drbrain | maybe $$$, even |
| 02:29:28 | Defiler | indeed |
| 02:29:44 | Defiler | You could make enough $ to start looking like perl |
| 02:31:06 | xhanjian enters the room. | |
| 02:33:08 | pauldix enters the room. | |
| 02:33:45 | kevwil enters the room. | |
| 02:36:45 | seydar enters the room. | |
| 02:36:52 | cored_ leaves the room. | |
| 02:42:49 | VVSiz leaves the room. | |
| 02:43:42 | rubuildius_amd64 | William Morgan: ce3039a55; 2189 files, 7261 examples, 25964 expectations, 0 failures, 0 errors |
| 02:45:24 | jbarnette leaves the room. | |
| 02:46:31 | roo enters the room. | |
| 02:46:37 | ezmobius enters the room. | |
| 02:47:09 | rue leaves the room. | |
| 02:47:44 | nicksieger leaves the room. | |
| 02:48:21 | mernen enters the room. | |
| 02:48:36 | nicksieger enters the room. | |
| 02:50:09 | mass | what would the personification of perl look like, Defiler? |
| 02:51:30 | mass | I imagine a wannabe gangsta with a $ bling around his neck, and like.. five arms |
| 02:51:34 | mass | one with two hands |
| 02:51:40 | tarcieri | Someone trying to rock cammo, tye dye, a denim jacket with $1000 italian leather shoes |
| 02:52:05 | mass | tie dye camo would rock. |
| 02:52:24 | evan | you might need to go undercover with the hippies |
| 02:52:57 | tarcieri | has rocked the cammo, denim jacket, and tye dye before |
| 02:52:58 | tarcieri | heh |
| 02:53:05 | mass | spreading the message of peace and love, guerilla style |
| 02:53:35 | mass | I dunno if I could give an entire one hour talk on XMPP without bashing it pretty hard |
| 02:54:02 | mass | if I could do it all over again, it'd be very different. |
| 02:54:05 | mass | all JSON :P |
| 02:54:08 | mass | ;-) |
| 02:54:09 | kevwil leaves the room. | |
| 02:54:47 | MenTaLguY | what are the main deficiencies of XMPP, do you think? |
| 02:54:55 | tarcieri | XML |
| 02:54:59 | tarcieri | heh |
| 02:55:03 | evan | multiple p's |
| 02:55:04 | MenTaLguY | my main issue is that message boundaries are resource-intensive to find, which JSON wouldn't address |
| 02:55:08 | evan | thats death for a project. |
| 02:55:12 | fbuilesv enters the room. | |
| 02:55:18 | mass | well more than just XML. the main deficiency can be summarized as, a session is tied to an XML document |
| 02:55:59 | tarcieri | a streaming FSM parser is fine for that |
| 02:55:59 | tarcieri | especially with JSON |
| 02:56:08 | MenTaLguY | the acutal extensible part (custom payload and annotations/attributes on regular messages) is nice |
| 02:56:21 | MenTaLguY | it comes in hand for a lot of things, and JSON wouldn't easily provide that |
| 02:56:24 | ezmobius | i think xmpp is pretty sweet |
| 02:56:29 | tarcieri | XMPP's main strength seems to be the tools available for it |
| 02:56:31 | evan | if it weren't xml, would would it be? |
| 02:56:37 | ezmobius | its one time ive used xml that it didnt bother me |
| 02:56:43 | mass | XML parsers for the most part are designed to handle documents, not element fragments. So the clients and servers are all riddled with hack code to deal with it. Things like angle-bracket counters to break a <message> element down and pretend its actually its own document |
| 02:56:43 | tarcieri | like, good luck using AMQ with Ruby |
| 02:56:47 | ezmobius | ejabberd is a killer app server |
| 02:56:51 | tarcieri | indeed |
| 02:56:57 | MenTaLguY | I just wish a larger percentage of Jabber servers were ejabberd |
| 02:57:03 | MenTaLguY | the rest are horribly unstable and mess up the network |
| 02:57:25 | ezmobius | the rabbitmq guys have an experimental xmpp over rabbitmq thingy they just showed me |
| 02:57:32 | mass | I just wish google's was written in such a way that they could and did share it :) |
| 02:57:34 | tarcieri | Awesome |
| 02:57:34 | ezmobius | with reliable message delivery and some other cool stuff |
| 02:57:36 | tarcieri | That'd be cool |
| 02:57:42 | mass | ejabberd has always scared me for the same reason most of erlang has |
| 02:57:49 | mass | why should I use ejabberd? because its in erlang! |
| 02:57:53 | tarcieri | I saw RabbitMQ was trying to do some JSON RPC kinda stuff too |
| 02:57:55 | MenTaLguY | mass: hmm, that's more of an issue with the available XML parser libraries than anything else. JSON definitely wouldn't fix that issue |
| 02:58:11 | MenTaLguY | there's only one reason to use ejabberd, IMO |
| 02:58:16 | MenTaLguY | it's ***reliable*** |
| 02:58:21 | mass | MenTaLguY: nah, my statement above was a summary of like a dozen really critical issues :) |
| 02:58:37 | mass | the xml document is composite so you can't really stream data in-band |
| 02:59:00 | mass | you can't do validation because nothing is sanitizing input. if someone sends you a bad message what will you do, hang up your connection to the server? |
| 02:59:11 | ezmobius | ejabberd also federates/replicates/scales very well |
| 02:59:16 | mass | the inability to multiplex data makes denial of service attacks easy |
| 02:59:17 | pauldix leaves the room. | |
| 02:59:25 | MenTaLguY | yes, you should hang up your connection to the server |
| 02:59:38 | MenTaLguY | it was the server's responsibility to ensure that the message is syntactically valid |
| 03:00:13 | MenTaLguY | in fact I think the spec even requires that behavior on a parse error |
| 03:00:37 | elight enters the room. | |
| 03:00:56 | mass | the xml document is normally tied to your presence and to a socket (at least for standards), which makes some things harder than they should be. There are a handful of HTTP protocols that make it so that you can connect via flash and javascript, for example |
| 03:01:12 | mass | the server requires it to be well-formed, not valid |
| 03:01:31 | tarcieri | ezmobius: all that's applicable to RabbitMQ as well, just that it's harder to find support for AMQ :/ |
| 03:01:37 | MenTaLguY | syntactically valid = well-formed |
| 03:01:48 | ezmobius | tarcieri: yup |
| 03:01:57 | MenTaLguY | I don't see the issue with not requiring validation though, at least nothing that would be fixed by JSON |
| 03:02:11 | mass | well I was joking about the JSON thing, sorry if that wasn't clear :) |
| 03:02:17 | tarcieri | All JSON really does is lower CPU overhead |
| 03:02:19 | MenTaLguY | ah, k |
| 03:02:20 | ezmobius | here's an eventmachine xmpp4r port http://github.com/tmm1/xmpp4em/tree/master |
| 03:02:26 | tarcieri | which may be irrelevant depending on what you're using your queue for |
| 03:02:31 | MenTaLguY | I do agree that it would be nice if XMPP had a connectionless option |
| 03:02:31 | ezmobius | with libxml parser rather then rexml stream parser |
| 03:02:33 | drbrain | VVSiz_: ping |
| 03:02:35 | tarcieri | We're pussing massive data through our queue |
| 03:02:54 | tarcieri | Rather than just notifications |
| 03:02:54 | tarcieri | err |
| 03:02:54 | tarcieri | pushing, not pussing... |
| 03:02:54 | tarcieri | heh |
| 03:03:16 | shame enters the room. | |
| 03:05:30 | mass | I think SAX-like parsers tend to work well, but you have to be careful. |
| 03:06:22 | mass | since parsers are almost always full-document oriented, you have to make sure it does no caching, either of the input stream or internalizing data strings |
| 03:07:03 | mass | one example problem I've seen a bit is that people use a full document and create the elements from the stream from SAX , but never add them to the root stream:stream |
| 03:07:32 | mass | unfortunately things like lookup queries on DOM are 'live', so everytime they perform certain methods that return a list they are creating a live filter |
| 03:07:53 | MenTaLguY | DOM has no place in a streaming setting |
| 03:08:37 | tarcieri | indeed |
| 03:08:41 | tarcieri | <3 Ragel |
| 03:08:41 | mass | a lot of server implementations use SAX to build both an internal OM (highly custom), and data structures around common message formats they need to understand |
| 03:08:42 | tarcieri | heh |
| 03:09:25 | tarcieri | no need to use a pushdown automata to represent what's fundamentally a finite state machine |
| 03:09:31 | michaellatta leaves the room. | |
| 03:10:03 | dalee enters the room. | |
| 03:10:04 | nemerle leaves the room. | |
| 03:10:04 | VVSiz_ leaves the room. | |
| 03:10:13 | nemerle enters the room. | |
| 03:10:39 | VVSiz_ enters the room. | |
| 03:10:42 | fbuilesv leaves the room. | |
| 03:10:42 | nicksieger leaves the room. | |
| 03:10:42 | atduskgreg leaves the room. | |
| 03:10:42 | ko1_ leaves the room. | |
| 03:10:42 | djwhitt leaves the room. | |
| 03:10:42 | rudebwoy leaves the room. | |
| 03:11:03 | fbuilesv enters the room. | |
| 03:11:03 | nicksieger enters the room. | |
| 03:11:03 | atduskgreg enters the room. | |
| 03:11:03 | ko1_ enters the room. | |
| 03:11:03 | djwhitt enters the room. | |
| 03:11:03 | rudebwoy enters the room. | |
| 03:11:50 | mass | I've been trying to decide between ejabberd and openfire to upgrade my xmpp server to, right now its jabberd2 |
| 03:12:25 | MenTaLguY | ugh |
| 03:12:28 | mass | I'm leaning toward openfire since they advertise a lot of features, and ejabberd advertises that its in a language I'm not currently motivated to care about :) |
| 03:12:29 | MenTaLguY | jabberd2 is a POS |
| 03:12:38 | MenTaLguY | I have problems talking to everyone that runs one |
| 03:12:43 | MenTaLguY | er, an instance of it |
| 03:12:53 | mass | really? whats your JID? :D |
| 03:13:12 | ezmobius | do not use openfire |
| 03:13:14 | mass | I guarantee your problems with our discussions will not be technical |
| 03:13:14 | ezmobius | ever |
| 03:13:28 | MenTaLguY | huh? |
| 03:13:28 | mass | all I want, actually my only reason to even care about upgrading |
| 03:13:34 | mass | I want iChat to be able to send and receive files |
| 03:13:40 | mass | apparently this is really, really hard for XMPP |
| 03:13:42 | mass | still |
| 03:14:10 | MenTaLguY | the main issue is bandwidth requirements for the servers more than anything else |
| 03:14:12 | ezmobius | we hosted the openfire jabber server for kingregate.com for a year and it was nothing but trouble compared to ejabberd |
| 03:14:17 | MenTaLguY | it's not a *huge* technical hurdle otherwise |
| 03:14:32 | mass | There are like seven new XEPs for how to do it since I quit the JSF four years ago, but apparently its still technically impossible :) |
| 03:14:55 | mass | I was going to debug it, but neither iChat nor jabberd2 seem to offer a full message debug |
| 03:15:03 | mass | and yeah, jabberd2 is a piece of crap |
| 03:15:19 | mass | its been handed off to three primary developers, and I'm pretty sure two of them worked on it solo |
| 03:15:31 | mass | both as a free time project |
| 03:15:49 | mass | temas I really respect, rob norris too, but the thing has really limped along |
| 03:16:13 | mass | kongregate ran openfire? fun. |
| 03:16:24 | ezmobius | yeah |
| 03:16:36 | ezmobius | fell over a lot and needed 8gig java HEAP to keep up |
| 03:16:51 | ezmobius | ejabberd does the same amout of traffic and uses like 50Mb ram |
| 03:16:52 | mass | sounds like they used an off the shelf dom |
| 03:17:03 | ezmobius | they had a lot of jabber traffic |
| 03:17:29 | MenTaLguY | again, DOM has no place in streaming |
| 03:17:34 | mass | oh I'm not surprised based on their traffic :) |
| 03:17:37 | MenTaLguY | if you're using DOM at all, you're losing |
| 03:17:39 | mass | <- former XMPP server writer |
| 03:17:40 | anonuser | MenTaLguY, that is correct :) |
| 03:18:15 | MenTaLguY | (to be fair, DOM is not a great API, but it is tolerable in *non-streaming* contexts) |
| 03:18:19 | mass | DOM is horrid in all contexts, just say it MadLib style, |
| 03:18:25 | mass | DOM has no place in __(noun)__ |
| 03:19:23 | ezmobius leaves the room. | |
| 03:19:37 | mass | 50 MB of ram is actually a lot less than I expect kong to use |
| 03:19:40 | mass | thats awesome |
| 03:20:35 | mass | sigh, I just have this strong dislike of ejabberd, I know its only partially rational. |
| 03:20:44 | mass | maybe I can find some really geeky councelor to help me out |
| 03:21:12 | drbrain | it was started by Brad Fitzpatrick, can't be too terrible |
| 03:21:15 | mass | erlang is just such a .. research language. it has all the signs, at least |
| 03:21:27 | mass | "ejabberd is great because it is written in Erlang" |
| 03:21:37 | mass | "we have this thing thats even better than relational databases" |
| 03:21:45 | tarcieri | Not really |
| 03:21:47 | drbrain | or, am I thinking of a different one that has only one extra letter slapped on |
| 03:22:01 | tarcieri | Mnesia certainly feels quite a bit like a relational database |
| 03:22:07 | tarcieri | qlc is nice |
| 03:22:23 | mass | I had a friends mnesia crash and he could never get it to start again |
| 03:22:24 | tarcieri | However Erlang embeds database queries into an obsolete database API into its core grammar *boggle* |
| 03:22:26 | tarcieri | But no one uses that |
| 03:22:34 | mass | I couldn't help him without learning erlang |
| 03:22:35 | tarcieri | Even though it has a much nicer syntax than the way everyone does it now |
| 03:22:57 | tarcieri | Erlang is not a language designed with programmer-friendliess in mind |
| 03:23:11 | tarcieri | is trying to fix that :) |
| 03:23:35 | mass | I once downloaded a P2P client for the mac, a typical drag and drop application |
| 03:23:46 | mass | it was great, but there were a few things I'd like and I saw it was open source |
| 03:23:56 | mass | and after looking into it I found out the whole thing was written in ocaml |
| 03:24:14 | mass | and I realized if they had put this "we are all in ocaml, doesn't that rock?" on their page, I would have never downloaded it |
| 03:24:18 | MenTaLguY | I have an irrational aversion to OCaml's syntax |
| 03:24:25 | MenTaLguY | it's the ;;s |
| 03:24:30 | MenTaLguY | they're staring at me |
| 03:24:33 | evan | me too. |
| 03:24:34 | tarcieri | It's not irrational |
| 03:24:36 | evan | i can't get into it |
| 03:24:37 | tarcieri | OCaml's syntax sucks |
| 03:24:48 | mass | my point mental is, that they sold the product and the solution rather than the technology. Its the level of maturity I really respect in a geek :) |
| 03:24:53 | tarcieri | loves the (perhaps unintentional) double entendre of JoCaml though |
| 03:24:59 | evan | hah |
| 03:25:28 | mass | and ejabberd is the only jabber server I know of that makes any deal at all of how it was written. Thats my aversion to it. |
| 03:25:28 | tarcieri | notes Reia is shaping up a lot like OCaml semantically |
| 03:25:29 | dlee leaves the room. | |
| 03:25:43 | tarcieri | a mixed paradigm functional/imperative language |
| 03:26:01 | anonuser | that just sounds bad. |
| 03:26:04 | mass | The odd thing is that when I did threaded development I just naturally went to thread locals and thread worker queues. |
| 03:26:25 | mass | and immutable data |
| 03:26:33 | mass | so I totally understand where the language is coming from :) |
| 03:27:00 | tarcieri | Reia has immutable state, which makes some of the semantics weird/unexpected :/ |
| 03:27:14 | mass | I wish ruby strings were immutable :-/ |
| 03:27:20 | tarcieri | Why? |
| 03:27:25 | tarcieri | Mutable strings rock |
| 03:27:49 | tarcieri | String handling is abominable in Erlang |
| 03:27:49 | anonuser | evan, dup_into and object_dup, the provide the initial #dup ? |
| 03:27:57 | mass | mutable strings lead to cow strings which sorta suck |
| 03:27:59 | mass | CoW strings |
| 03:28:10 | tarcieri | Perhaps due to the fact that strings are linked lists of integers |
| 03:28:13 | perplexes leaves the room. | |
| 03:28:17 | evan | anonuser: object_dup does, yes. |
| 03:28:24 | evan | dup_into is for Tuple mainly |
| 03:28:30 | tarcieri | mass: Strings are something that should accumulate mutations and flatten them on demand |
| 03:28:38 | mass | like a stringbuilder? :) |
| 03:28:56 | anonuser | I was just wondering about the the Class#dup not copying class methods |
| 03:29:03 | tarcieri | is trying to do the same thing with lists |
| 03:29:13 | MenTaLguY | frustratingly, even when the semantics are a linked list of integers, strings don't actually *have* to be implemented that way |
| 03:29:18 | MenTaLguY | I mean, even Haskell gets that one right |
| 03:29:26 | MenTaLguY | disassemble a ghs-compiled binary sometime |
| 03:29:32 | MenTaLguY | the strings are there as strings often |
| 03:29:32 | tarcieri | Strings have been my greatest frustration with Reia |
| 03:29:43 | evan | anonuser: Defiler fixed that |
| 03:29:46 | tarcieri | I'm trying to make them distinct from lists |
| 03:29:48 | anonuser | oh o.O |
| 03:29:54 | evan | anonuser: you need to update |
| 03:29:54 | anonuser | maybe I'm not upto date |
| 03:29:56 | tarcieri | But that means that calling out to Erlang functions you have to translate them |
| 03:30:08 | tarcieri | And when you get a result back from an Erlang function, they have to be translated again |
| 03:30:09 | tarcieri | Urg |
| 03:31:01 | anonuser | evan, I guess no one closed the ticket. |
| 03:31:05 | evan | i guess not |
| 03:31:06 | tarcieri | I'm trapped at work :( |
| 03:31:11 | evan | anonuser: double check with Defiler |
| 03:31:12 | tarcieri | http://fails.org/crazyrain.mp4 |
| 03:31:14 | tarcieri | ^^^ outside |
| 03:31:17 | tarcieri | I'm on a bike |
| 03:31:17 | anonuser | kk |
| 03:31:17 | tarcieri | WTF |
| 03:31:18 | evan | tarcieri: run! |
| 03:31:39 | tarcieri | Running... will only make me wetter |
| 03:31:40 | anonuser | It is fixed. |
| 03:31:54 | anonuser | wait I'm a moron |
| 03:32:25 | anonuser | Okay it really is fixed |
| 03:32:48 | mass | ok, I guess I should read up on ejabberd |
| 03:32:52 | mass | *sigh* |
| 03:33:39 | mass | feels like he is being dragged into a bright new world, kicking and screaming |
| 03:34:53 | evan | HAHAHA |
| 03:34:53 | evan | http://github.com/evanphx/rubinius/tree/master/kernel/core/inliner.rb#L174 |
| 03:36:03 | ezmobius enters the room. | |
| 03:36:27 | anonuser | haha |
| 03:37:13 | tarcieri | ipfreely? |
| 03:37:13 | tarcieri | yay |
| 03:37:14 | drbrain | I hope that stays forever and ever |
| 03:47:50 | blakewatters leaves the room. | |
| 03:51:01 | headius | does that inlining stuff insert guards to fall back? I don't seem them in that code |
| 03:54:21 | anonuser | headius, it's not installed. |
| 03:54:45 | anonuser | William Morgan just committed the code, it's not hooked up. I assume he'll finish his work then hook it up |
| 03:55:40 | twbray enters the room. | |
| 03:55:44 | anonuser | Is there a particular ticket that needs closing? |
| 03:56:09 | twbray leaves the room. | |
| 03:58:56 | headius | anonuser I was just interested in the details of it |
| 03:59:54 | anonuser | headius, you can bug him about it, he posts to the rubinius-dev group |
| 03:59:59 | anonuser | And by the looks of it only him ;D |
| 04:17:05 | twbray enters the room. | |
| 04:21:39 | cschneid | I'd like to see if the Sinatra framework works in Rubinius. But I don't know anything about Rubinius... does it work/compile on windows, or should I just stick to my mac? Then, how do I get gems installed on top of it? |
| 04:21:50 | RyanTM leaves the room. | |
| 04:22:02 | evan | cschneid: we don't support windows yet |
| 04:22:10 | evan | cschneid: but should work fine on mac |
| 04:22:30 | cschneid | evan, ok, on a unix box then. Just compile, or are there recent packages available? |
| 04:23:08 | evan | cschneid: if you build and install |
| 04:23:09 | evan | you can do |
| 04:23:16 | evan | rbx gem install sinatra |
| 04:23:20 | evan | mongrel doesn't work yet |
| 04:23:25 | evan | but if it runs on webrick, you'll be fine |
| 04:23:46 | headius | the common project probably won't want our java invocation benchmarks |
| 04:23:49 | headius | er, woops |
| 04:24:11 | cschneid | evan, runs on rack :) just going through the alternate implementations of ruby to get an idea, broke headius's jruby the other day :) |
| 04:24:24 | evan | ok |
| 04:24:30 | evan | let us know if you run into problems |
| 04:24:33 | headius | sneaky eval 'yield', binding bug |
| 04:24:57 | cschneid | headius, I was impressed at the fix speed, that was impressive |
| 04:26:16 | evan | ew. |
| 04:26:24 | evan | headius: is that the one that matz said was a bug in 1.8? |
| 04:26:43 | headius | no, eval('yield') {} was the bug |
| 04:26:55 | headius | I didn't change that, we throw nonlocaljump correctly |
| 04:27:03 | evan | didn't he said that was a 1.8 bug that it works |
| 04:27:13 | evan | on ruby-core |
| 04:27:19 | jbarnette enters the room. | |
| 04:27:31 | headius | ko1_ I bet that all of them won't, but I'd like to have a prefix |
| 04:27:38 | headius | ko1_ will it be [ruby-core]? |
| 04:27:43 | headius | dammnit |
| 04:28:15 | headius | he said that the eval with a block (working) was a bug |
| 04:28:31 | headius | but eval of yield against a binding is still ok |
| 04:28:45 | headius | binding carries frame + block with it |
| 04:28:53 | evan | gotcha |
| 04:28:56 | evan | we might have the same bug |
| 04:28:57 | evan | dunno |
| 04:29:11 | mass | I sense a rubyspec addition... |
| 04:30:44 | headius | VVSiz_ already did it I believe |
| 04:30:49 | headius | minus the bug |
| 04:31:05 | anonuser | mass, having prescient visions? |
| 04:31:39 | mass | unfortunately my preminitions only seem to hold true for really obvious things |
| 04:33:47 | anonuser | Get a shit load of spice melange. |
| 04:39:52 | elight leaves the room. | |
| 04:40:41 | cschneid__ enters the room. | |
| 04:43:44 | fbuilesv leaves the room. | |
| 04:43:49 | moofbong leaves the room. | |
| 04:44:21 | moofbong enters the room. | |
| 04:50:24 | anonuser | Just a curiosity but are the MatzRuby people going to endorse the rubyspecs? |
| 04:52:08 | brixen | anonuser: they have a makefile rule for fetching and running them |
| 04:52:17 | anteaya leaves the room. | |
| 04:52:18 | headius | hey |
| 04:52:21 | brixen | anonuser: and at least one ruby-core developer has been contributing |
| 04:52:30 | headius | I haven't updated rbx since before the rubyspec split and it's giving me some hassle |
| 04:52:49 | mass | oh curses, I have a jabberd2 -> ejabberd migration prob. There is a perl script to migrate via spool dirs, but it bases off of a table I don't have. sigh. |
| 04:52:57 | anonuser | That's cool, I guess it's an unofficial endorsement then. |
| 04:53:10 | anonuser | A sign of things to come |
| 04:53:33 | mass | this is difficult enough I feel like letting others onto my domain :P |
| 04:54:38 | brixen | headius: what's it giving you? |
| 04:54:54 | brixen | headius: git branch -v shows what? |
| 04:55:23 | headius | I got it, I had to rm -rf the whole spec dir to get it to rake git:pull |
| 04:55:38 | brixen | yeah |
| 04:56:04 | brixen | headius: I just posted to ruby-core about RUBY_PLATFORM |
| 04:56:15 | brixen | headius: did I just dream it, or did we not all agree on RUBY_ENGINE? |
| 04:57:10 | headius | ruby_engine is different |
| 04:57:35 | drbrain | Error(432): ☃ Erroneous Nickname |
| 04:57:38 | drbrain | :( |
| 04:58:36 | drbrain | why is there no unicode glyph for a brain? |
| 04:58:43 | headius | brixen: so your bottom line is that you disagree that java is a platform |
| 04:58:57 | brixen | headius: yes, only because there is an OS below it |
| 04:59:09 | brixen | headius: if ruby code running on jruby never cared, I could be swayed |
| 04:59:13 | brixen | but that's not the case |
| 04:59:22 | brixen | jruby will never be anywhere but java |
| 04:59:28 | drbrain | brixen: I can see it going both ways |
| 04:59:30 | brixen | unless you've got plans I don't know of ;) |
| 04:59:37 | brixen | drbrain: I can't |
| 04:59:39 | headius | it cares far less than it would under rubinius or mri or yarv |
| 04:59:43 | headius | far, far less |
| 04:59:48 | brixen | headius: yes, I know |
| 04:59:53 | brixen | but not far less enough |
| 05:00:03 | drbrain | as far as rubygems is concerned both RUBY_PLATFORM and the implementation are platforms |
| 05:00:07 | headius | and there's the entirety of Java libraries that are all available on that platform |
| 05:00:08 | drbrain | (at least, as of monday) |
| 05:00:27 | drbrain | at least, platforms for ruby libraries to sit on top of |
| 05:00:33 | headius | people have been using platform =~ java to determine whether they can use java libraries |
| 05:00:34 | brixen | drbrain: conflating the gems case with RUBY_PLATFORM for OS stuff is bad IMO |
| 05:00:52 | headius | extensions get compiled for java, not for any os |
| 05:00:53 | brixen | drbrain: and will make the specs for real platform behavior a bitch |
| 05:00:58 | headius | jruby is compiled once, for java, not for any os |
| 05:01:03 | drbrain | brixen: it makes sense if the question your asking is "what can I link against?" |
| 05:01:07 | drbrain | you're |
| 05:01:18 | headius | yes, that's my primary definition of a platform |
| 05:01:18 | brixen | drbrain: yes, or what can I do to a file |
| 05:01:31 | brixen | those things need to be resolved to the OS + arch |
| 05:01:37 | brixen | not implementation |
| 05:01:42 | headius | brixen doesn't that depend on filesystem and such? |
| 05:01:46 | brixen | java is an impl detail for Ruby |
| 05:01:58 | headius | is windows an impl detail too? |
| 05:02:01 | brixen | headius: what's "that"? |
| 05:02:08 | brixen | headius: windows is an OS |
| 05:02:09 | headius | that = what you can do to a file |
| 05:02:20 | headius | so use host_os |
| 05:02:21 | brixen | that's OS level more than anything else |
| 05:02:25 | drbrain | thanks to C-centric autoconf, it is a giant hairy mess |
| 05:02:25 | headius | win32 is a platform |
| 05:02:27 | headius | java is a platform |
| 05:02:34 | headius | clr is a platform |
| 05:03:25 | fbuilesv enters the room. | |
| 05:03:35 | brixen | then we need another constant for that idea of platform |
| 05:03:40 | brixen | or for the OS + arch level |
| 05:03:52 | brixen | resorting to Config::CONFIG whatever is silly |
| 05:04:06 | drbrain | brixen: I think so |
| 05:04:28 | headius | yes, we do |
| 05:04:35 | headius | I've been advocating that for a long time |
| 05:04:36 | brixen | headius: as you know, we already have a ton of problems with Windows in the rubyspecs |
| 05:04:59 | brixen | headius: we cannot expect to have a good standard without a clear OS + arch idea to test against |
| 05:05:19 | headius | I don't claim it's not problematic |
| 05:05:25 | headius | "java" really qualifies as a third layer |
| 05:05:27 | brixen | so, we have 3 levels: OS+arch, sub-impl and impl |
| 05:05:37 | headius | but it's also the primary layer people using JRuby are looking for |
| 05:05:38 | headius | not windows |
| 05:05:47 | brixen | crust, pie, whipped topping :) |
| 05:06:04 | headius | and we don't care about arch for anything I know of |
| 05:06:15 | headius | so it's reported as whatever java version you're running on |
| 05:06:42 | brixen | I think we cannot escape 3 standard constants |
| 05:06:59 | headius | what is "java" if not a platform |
| 05:07:00 | brixen | we have RUBY_PLATFORM and RUBY_ENGINE and we need to be standard on those |
| 05:07:09 | brixen | let's pick another for the 'java' 'clr' layer |
| 05:07:19 | headius | RUBY_RUNTIME |
| 05:07:27 | brixen | makes sense to me |
| 05:07:38 | headius | but then several impl will have it blank |
| 05:07:47 | headius | or what will they have? |
| 05:07:48 | brixen | no, they can have a standard value |
| 05:07:51 | brixen | 'shotgun' |
| 05:07:53 | brixen | e.g. |
| 05:08:05 | brixen | but it should be standardized |
| 05:08:11 | drbrain | what about 'C'? |
| 05:08:22 | drbrain | or 'libc' |
| 05:08:26 | headius | blasphemy! rubinius is written for the RUBY platform! |
| 05:08:26 | brixen | that's a language |
| 05:08:33 | brixen | yeah, libc would make a little more sense |
| 05:08:52 | brixen | headius: shotgun is the equivalent to 'java' for you |
| 05:09:06 | headius | to some extent, yes |
| 05:09:10 | brixen | closer to jvm, but.. |
| 05:09:12 | headius | I see java a bit more like libc though |
| 05:09:22 | brixen | it's all so murky :P |
| 05:09:29 | brixen | we need snorkels |
| 05:09:39 | headius | or jvm/java = libc for us...but then they link against libc...omg I'm freaking out! |
| 05:09:44 | brixen | RUBY_SUBSTRATE |
| 05:09:53 | brixen | I dare you to object :P |
| 05:10:30 | anonuser | hahha |
| 05:10:34 | drbrain | I say libc because that's what our FFI code links against |
| 05:10:36 | ezmobius | MY_RUBY_CAN_BEAT_UP_UR_RUBY |
| 05:11:15 | drbrain | for MRI and rbx, would it be something other than libc on MSVC? |
| 05:11:22 | anonuser | why not native? |
| 05:11:28 | drbrain | for mingw/msys, I think it would still be libc |
| 05:11:32 | headius | drbrain: but we'll have FFI too...murky again |
| 05:11:49 | headius | and at some point it's conceivable native extensions will be able to build on JRuby...what the hell do we do with that? |
| 05:11:52 | anonuser | seriously just call it "native" if there's no layer |
| 05:12:01 | drbrain | because that doesn't help distinguish which specs should be run |
| 05:12:23 | drbrain | headius: will your IO/Socket/etc. ever hook up to libc? |
| 05:12:26 | anonuser | At that point aren't those library and application specific problems? |
| 05:12:48 | drbrain | maybe it would be better to approach it from the spec side, and figure out what things we need to discriminate between |
| 05:12:49 | headius | drbrain: we already have UNIXSocket implemented through native calls...there will probably be more later |
| 05:12:58 | headius | IO, probably not, since it would be too much back-and-forth |
| 05:13:05 | drbrain | anonuser: ... but the library is the ruby language |
| 05:13:22 | anonuser | err I'm not talking about that. |
| 05:13:31 | drbrain | headius: hrm, then it's too confusing to approach from the OS side |
| 05:13:32 | headius | well we can enumerate the cases right now |
| 05:13:37 | drbrain | or platform or whatever |
| 05:13:51 | headius | brixen wants platform to be used for determining OS-specific behavior |
| 05:14:06 | headius | so knowing which OS behavior you can expect is one use case |
| 05:14:12 | brixen | correction, brixen wants *something* to determine OS behavior |
| 05:14:23 | headius | knowing which platform/build/link toolchain you'll be using is another |
| 05:15:01 | headius | brixen: I'll put the java platform thing another way: we are all platforms |
| 05:15:05 | drbrain | you know, I've never found one good thing to use to switch behaviors in multiplatform ruby code I've had to write |
| 05:15:10 | headius | depending on what you're running on at a given time we change behavior to match |
| 05:15:11 | drbrain | maybe there isn't one good way? |
| 05:15:40 | sambo82 enters the room. | |
| 05:15:58 | headius | maybe not |
| 05:16:06 | brixen | drbrain: yeah, I don't think there is one catch-all way |
| 05:16:38 | brixen | but we can use one for OS level concerns, one for __XXXX__ concerns (headius' "platform") and one for impl |
| 05:16:43 | headius | trust me, I sympathize on the behavioral thing...windows is a constant hassle for us because MRI's code is physically different running on windows for some key behaviors |
| 05:16:55 | headius | imagine our situation where we provide a single binary...we have to switch such behaviors at runtime |
| 05:16:57 | brixen | the OS level one is a big one for all the ruby methods that wrap OS-level stuff |
| 05:17:11 | headius | we most definitely inspect current OS to do that |
| 05:18:01 | brixen | hmm, RUBY_OS ? |
| 05:18:49 | brixen | headius: what I don't get is, if java is all the same, when do you have to check if you're 'java'? just gems? |
| 05:19:06 | brixen | and if so, why can't that be RUBY_ENGINE? |
| 05:19:48 | ezmobius leaves the room. | |
| 05:20:37 | brixen | must get food, bbiab.. |
| 05:21:14 | headius | because engine should be something people use to specify libraries they want to load |
| 05:21:32 | headius | people also use "java" platform to know whether they can pull in Swing or an XML library or whatever |
| 05:21:46 | headius | or whether they need to use a win32 lib, or linux lib |
| 05:22:06 | headius | they'd have to check both PLATFORM and ENGINE To choose between the three |
| 05:22:15 | headius | rather than just checking PLATFORM |
| 05:22:49 | brixen | and they have to check PLATFORM + "something" to know if chmod works |
| 05:23:00 | brixen | when PLATFORM is 'java' |
| 05:23:09 | brixen | there's no way around checking more than one |
| 05:23:25 | brixen | unless we compose them into a single one, but still, we need a standard |
| 05:23:28 | brixen | bb.. |
| 05:25:26 | chenkai enters the room. | |
| 05:26:04 | headius | platform is never going to be sufficient to know if individual functions work |
| 05:26:33 | headius | I think the presence of thousands of libraries is more important when considering platform than whether chmod works |
| 05:27:09 | lstoll enters the room. | |
| 05:29:20 | mernen leaves the room. | |
| 05:30:34 | nicksieger leaves the room. | |
| 05:31:21 | nicksieger enters the room. | |
| 05:33:47 | headius | looks good, thank you |
| 05:33:52 | headius | GRR. |
| 05:34:00 | headius | maybe I should just switch back to colloquy |
| 05:34:14 | lstoll_ leaves the room. | |
| 05:34:34 | drbrain | I love me some limechat |
| 05:34:41 | headius | oh yeah/ |
| 05:35:12 | headius | bitchx |
| 05:36:09 | drbrain | bitchx made me feel like I was getting slapped around by some 13 year old's wang because expecting proper documentation was "lame" |
| 05:36:26 | headius | that's about right |
| 05:36:39 | jbarnette leaves the room. | |
| 05:37:24 | sambo82_ enters the room. | |
| 05:38:13 | sambo82 leaves the room. | |
| 05:39:53 | fbuilesv leaves the room. | |
| 05:44:54 | random8r enters the room. | |
| 05:47:32 | fbuilesv enters the room. | |
| 05:49:15 | wycats leaves the room. | |
| 05:51:49 | mass | I'm doubting that 50 MB ejabberd on kongregate, since mine is 58 ;-) |
| 05:53:44 | mass | proper documentation is lame. who wants their documentation to be all primp and proper. |
| 05:54:43 | bitsweat leaves the room. | |
| 05:55:05 | bitsweat enters the room. | |
| 05:55:42 | sanxiyn enters the room. | |
| 06:07:02 | twbray_ enters the room. | |
| 06:10:32 | w1rele55 enters the room. | |
| 06:10:54 | atduskgreg leaves the room. | |
| 06:20:21 | sanxiyn leaves the room. | |
| 06:22:07 | mediogre enters the room. | |
| 06:23:01 | twbray leaves the room. | |
| 06:33:29 | JonathanT enters the room. | |
| 06:35:15 | nemerle_afk enters the room. | |
| 06:39:06 | random8r leaves the room. | |
| 06:41:40 | nemerle leaves the room. | |
| 06:42:05 | mass | I'm watching the XML fly by, and from a chat perspective I don't think they could have messed xmpp up more, wow |
| 06:47:38 | twbray_ leaves the room. | |
| 06:47:44 | benny leaves the room. | |
| 06:48:25 | twbray enters the room. | |
| 06:48:37 | JonathanT leaves the room. | |
| 06:48:50 | moofbong leaves the room. | |
| 06:49:29 | moofbong enters the room. | |
| 06:49:42 | naeu enters the room. | |
| 06:53:03 | anonuser | mass, ? |
| 06:58:10 | thehcdreamer leaves the room. | |
| 06:58:19 | jtoy leaves the room. | |
| 07:01:04 | maharg | " drbrain> for MRI and rbx, would it be something other than libc on MSVC?" it's not like vc doesn't have a libc. libc generally means the c stdlib, which is probably way too generic for what you mean. If stuff like fork is what you're trying to differentiate, posix (which is where fork comes from) would make more sense |
| 07:01:51 | joachimm enters the room. | |
| 07:01:51 | benny enters the room. | |
| 07:03:10 | twbray_ enters the room. | |
| 07:10:30 | twbray_ leaves the room. | |
| 07:11:19 | rue | drbrain: The Chinese set should have nao |
| 07:14:06 | evan | hrm. |
| 07:14:11 | evan | i don't get mongrel |
| 07:14:24 | evan | it's looking for a method called resolve on a URIClassifier object |
| 07:14:29 | evan | and, well, there isn't one. |
| 07:14:41 | evan | and i don't see anywhere it would be dynamically generated. |
| 07:14:42 | Defiler | In the old days, that came from the C extension |
| 07:14:48 | evan | OH. |
| 07:15:01 | evan | i'm in them there old days |
| 07:15:07 | evan | i'm running mongrel totally unmodified |
| 07:15:08 | evan | via gem. |
| 07:15:19 | Defiler | Welly welly well my little droogs |
| 07:16:19 | evan | oh. |
| 07:16:23 | evan | we had a http11.rb |
| 07:16:24 | evan | in lib/ |
| 07:16:28 | evan | ok, trying again. |
| 07:17:02 | MenTaLguY leaves the room. | |
| 07:17:14 | anonuser | You can try talking to Zed? |
| 07:17:29 | anonuser | Oh, wait he quit ruby. |
| 07:17:35 | rphillips leaves the room. | |
| 07:17:40 | evan | hrm |
| 07:17:42 | evan | load error |
| 07:17:46 | evan | looking for rb_global_variable |
| 07:18:01 | headius | uh |
| 07:18:03 | headius | hmm |
| 07:18:31 | headius | this don't seem right |
| 07:18:59 | headius | pastie |
| 07:19:10 | pastie | http://pastie.org/209218 by headius. |
| 07:19:23 | headius | as much as I'd like to believe that's true, I think something's wrong |
| 07:19:52 | headius | pastie: for great_justice |
| 07:20:00 | twbray leaves the room. | |
| 07:20:01 | pastie | great_justice: http://pastie.org/209219 by headius. |
| 07:20:18 | anonuser | headius, the order of a magnitude difference? |
| 07:20:23 | headius | anonuser yes |
| 07:20:27 | Defiler | We do buffered IO |
| 07:20:37 | Defiler | So I doubt we are really rewinding that file every time, unless I misunderstand |
| 07:20:43 | anonuser | headius, that is certainly suspect. |
| 07:20:51 | headius | if you're not actually re-reading it's wrong |
| 07:21:04 | headius | seek should flush buffer contents |
| 07:21:52 | Defiler | oh, huh.. and it does |
| 07:21:52 | headius | jruby and ruby do buffered IO too, but that doesn't mean you always read from memory...once you've read from the buffer those bytes are consumed, and any seeks should flush read/write buffers |
| 07:21:59 | headius | ok |
| 07:22:00 | Defiler | def seek resets the buffer |
| 07:22:19 | Defiler | We must just be BAD ASS |
| 07:22:36 | anonuser | Who's the baddest mofo in this joint? |
| 07:22:38 | headius | not sure what's up then... there's almost no ruby code involved in this since it's just a straight-up file.read |
| 07:22:57 | headius | so either rubinius has gotten faster than C....or something's not right |
| 07:23:06 | headius | I'm not saying which! |
| 07:23:12 | anonuser | The answer was: Sho'Nuff |
| 07:24:39 | headius | well |
| 07:24:45 | headius | I'll leave you to it, gents |
| 07:24:57 | anonuser | headius, sorry. I'm sure something will come of that |
| 07:25:09 | headius | yeah, I'm just tossing it over the wall before I hang it up for the night |
| 07:25:24 | headius | was doing some benching of IO issues in JRuby vs Ruby and thought I'd try rbx |
| 07:25:39 | Defiler | Cool |
| 07:25:56 | evan | our buffering algorithm is pretty simple |
| 07:26:04 | evan | maybe it's so simple it out performs the C one |
| 07:26:09 | anonuser | just out of curiosity what does the ruby benchmarks look like? |
| 07:26:19 | headius | they're on there, about 0.9s |
| 07:26:47 | headius | evan: I admire your optimism |
| 07:26:52 | evan | :) |
| 07:27:02 | anonuser | Where are jruby's numbers? |
| 07:27:03 | evan | maybe your seek() zeros out the buffer? |
| 07:27:06 | evan | we don't. |
| 07:27:11 | anonuser | Am I just missing the numbers? |
| 07:27:21 | evan | we just reset the contents 'pointer' |
| 07:27:33 | sambo82_ leaves the room. | |
| 07:29:07 | evan | headius: make sure we actually did all the loops |
| 07:29:47 | evan | headius: that would be a cute optimization. Detect when benchmark was loaded and have Integer#times add 10 instead of 1 each loop :) |
| 07:30:49 | headius | heheh |
| 07:31:58 | headius | seems to be running the loops |
| 07:32:13 | evan | maybe verify what #read returns? |
| 07:32:15 | evan | just to be sure. |
| 07:32:18 | headius | just did |
| 07:32:22 | evan | huh. |
| 07:32:24 | headius | seems to be wrong |
| 07:32:25 | headius | "" |
| 07:32:32 | sambo82 enters the room. | |
| 07:32:34 | evan | ah |
| 07:32:43 | evan | we're returning the wrong thing from #read? |
| 07:33:17 | headius | no, looks like it may be a seek bug |
| 07:33:23 | headius | ahh |
| 07:33:31 | headius | seek when at eof I bet |
| 07:34:17 | headius | ok |
| 07:34:19 | headius | yes, that's it |
| 07:34:28 | headius | if it reads to eof seek doesn't appear to be doing anything |
| 07:34:42 | headius | ../rubinius/shotgun/rubinius -e "f1 = File.open('testxxxx', 'r+'); f2 = File.open('testxxxx', 'r+'); f1.write('hello'); p f2.read(); f2.seek(0); f1.seek(0); f1.write('zzzzz'); p f2.read()" |
| 07:34:42 | headius | "hello" |
| 07:34:42 | headius | "" |
| 07:34:49 | evan | ah |
| 07:34:50 | wycats enters the room. | |
| 07:34:53 | headius | that should be "hello" followed by "zzzzz" |
| 07:34:55 | evan | probably an easy fix |
| 07:35:02 | evan | need to clear eof, etc though |
| 07:36:48 | Defiler | seek currenly resets the buffer and eof, it seems |
| 07:36:59 | evan | hm. |
| 07:37:03 | evan | oh |
| 07:37:13 | evan | but does it actually do an fcntl to set eof on the descriptor |
| 07:37:15 | evan | thats necessary |
| 07:37:23 | evan | otherwise the OS will continue to report eof |
| 07:38:16 | evan | ah |
| 07:38:23 | evan | prim_seek needs to be changed to reset eof |
| 07:44:35 | scudco leaves the room. | |
| 07:53:45 | zf leaves the room. | |
| 08:05:13 | xmlhacker leaves the room. | |
| 08:13:46 | thehcdreamer enters the room. | |
| 08:19:57 | qwert666 enters the room. | |
| 08:20:09 | chenkai leaves the room. | |
| 08:29:54 | naeu leaves the room. | |
| 08:38:40 | Skip enters the room. | |
| 08:39:57 | JonathanT enters the room. | |
| 08:43:10 | naeu enters the room. | |
| 08:55:56 | mutle enters the room. | |
| 08:57:37 | krisps enters the room. | |
| 08:58:01 | evan | BOO |
| 08:58:09 | evan | mongrel contains VALUE escape vectors. |
| 08:58:11 | evan | that blow up subtend. |
| 08:59:09 | evan | OH DIRTY. |
| 08:59:12 | evan | mongrel plays dirty. |
| 08:59:19 | evan | i can't work around this |
| 08:59:24 | evan | mongrel will have to be changed. |
| 08:59:32 | tarcieri | already did that |
| 08:59:33 | tarcieri | psst |
| 08:59:44 | evan | URIClassifier_register |
| 08:59:50 | tarcieri | durr |
| 08:59:51 | tarcieri | what? |
| 09:00:00 | evan | that function only works on MRI's non-moving GC. |
| 09:00:09 | evan | i'm trying to run http11.c |
| 09:00:13 | evan | getting pretty close |
| 09:00:21 | tarcieri | fun fun, or actually |
| 09:00:25 | tarcieri | horrible horrible burning pain |
| 09:00:28 | tarcieri | the C, it burns |
| 09:00:36 | evan | it burns when I C. |
| 09:00:41 | tarcieri | heh |
| 09:00:53 | evan | that function lets a VALUE escape as a void* |
| 09:00:55 | evan | into a C library |
| 09:01:05 | evan | then stash the VALUE into a hash |
| 09:01:09 | tarcieri | you know |
| 09:01:09 | evan | so the GC wont delete it |
| 09:01:13 | tarcieri | as much as I understand the |
| 09:01:17 | tarcieri | "everything is a value" |
| 09:01:18 | tarcieri | in C |
| 09:01:26 | evan | and thus, not working at all on any GC except MRIs. |
| 09:01:26 | tarcieri | I get where it's coming from so much, but |
| 09:01:27 | tarcieri | WTF |
| 09:01:30 | tarcieri | no |
| 09:02:35 | evan | zed zed zed zed zed... |