Rubyists of Second Life Meeting – 18 October 2006


JRuby by Headius Exodus ( Charles O. Nutter ) and Modok Cao ( Thomas Enebo )


[18:01] Headius Exodus: ok, we're about time, we'll give it another minute

[18:01] Leovinus Lumiere: thanks man

[18:01] Simon Pulford: hey Theo!!

[18:01] Jesse Malthus: hey theo!

[18:01] StarJunky Fermi: Hi Theo

[18:01] StarJunky Fermi: Good crowd tonite!

[18:01] Piett Hesse: Hi Theo

[18:02] Headius Exodus: yeah, good turnout

[18:02] RabidRobot Rosmer: hey all

[18:02] Simon Pulford: excellent song Jesse :->

[18:02] Headius Exodus: ok, I'll repeat the intro stuff from before...

[18:02] Headius Exodus: On the screen, free JRuby shirt for anyone that wants it

[18:02] WhiteBoard (w): Now showing Image 2/16 - JRuby shirt

[18:02] Zach Reiner: Sorry is Theo, Jochen Theodore?

[18:03] Theodore Polonsky: No, Theo is me :)

[18:03] Zach Reiner: ok :) had to ask.

[18:03] Headius Exodus: looks like you want to "Open" the inventory and copy to yours...please try not to delete anything :)

[18:03] Headius Exodus: And for offline use, the slides for tonight are at the following URLs

[18:03] StarJunky Fermi: Since we are about to get started - we will be logging chat

[18:04] StarJunky Fermi: let me know if you don't want your chat logged

[18:04] Jesse Malthus: So, if you don't want to be logged, STFU :D

[18:04] StarJunky Fermi: gotta keep the SL Police off our backs!

[18:04] Headius Exodus: heheh

[18:05] Headius Exodus: http://www.headius.com/~headius/JRuby-RoSL/JRuby-RoSL-October-18.html

[18:05] Headius Exodus: That's the web-based version

[18:05] Headius Exodus: http://www.headius.com/~headius/JRuby-RoSL/JRuby-RoSL-October-18.odp

[18:05] Headius Exodus: That's OpenDoc format

[18:05] Headius Exodus: Ok, I guess we can get started

{ snip - begin Larrytheliquid's save of StarJunky's arse }


[18:05] WhiteBoard (w): Showing Image 3/16 - JRuby-slide01

[18:05] Headius Exodus: a-ha, slide 1

[18:06] Headius Exodus: Ok, as you all probably know, I'm Charles Oliver Nutter, and I'm going to present JRuby tonight

[18:06] Pasta Mann: no way!

[18:06] Headius Exodus: so, here we go

[18:06] Pasta Mann: I didn't know that

[18:06] WhiteBoard (w): Showing Image 4/16 – Jruby-slide02



[18:06] Pasta Mann: hi Charles

[18:06] Headius Exodus: Ok, agenda!

[18:07] Headius Exodus: Who am I, basic intro stuff, then What is JRuby, Why would you want such a thing, a little sneak preview for JRuby 0.9.1, and discussion about the Future

[18:07] Headius Exodus: And hopefully some good Q/A at the end

[18:07] WhiteBoard (w): Showing Image 5/16 – Jruby-slide03






[18:07] Headius Exodus: Ok, Who Am I

[18:07] Headius Exodus: Like I said, Charles Oliver Nutter, and this is at the moment my only SL avatar

[18:08] Headius Exodus: I just recently joined Sun Microsystems along with Tom Enebo

[18:08] Headius Exodus: We were hired specifically to work on JRuby and to help improve Ruby and Dynlang support on the Java platform and tool sets

[18:08] Headius Exodus: Of course, I'm one of (now three) JRuby core developers

[18:08] Headius Exodus: The others are Tom Enebo and Ola Bini...You can introduce yourself Tom if you like :)

[18:08] Modok Cao: /wave

[18:09] Jesse Malthus: Hello!

[18:09] StarJunky Fermi: Hi Tom!

[18:09] Modok Cao: HEH///hello

[18:09] Zach Reiner: Hi Tom, didn't know you were here too :)

[18:09] Headius Exodus: I came to Ruby in about 2004

[18:09] Headius Exodus: I went to RubyConf 04 because it was near my employer's home office at the time (before Sun)

[18:09] Headius Exodus: Since then I've become, like many people, a Rubyist living in a very Java-centric world

[18:10] Zach Reiner: /smile

[18:10] Leovinus Lumiere: It's only Java-centric if we let THEM win

[18:10] Headius Exodus: Ruby is the first language I thought I could really switch most of my development to

[18:10] Headius Exodus: I'd tried python, perl, lisp variants, and so on

[18:10] Headius Exodus: Ruby was the first language that really seemed to make sense to me

[18:10] Jesse Malthus: ^_^

[18:11] Headius Exodus: So I found out JRuby was at the time being managed by my old friend and coworker Tom...and the rest is history

[18:11] Headius Exodus: And of course Tom and I are both based in Minneapolis, MN, though we'll both be hitting various conferences over the next year

[18:11] WhiteBoard (w): Showing Image 6/16 – Jruby-slide04



[18:11] Headius Exodus: So, what is JRuby, other than a giant hypefest these days

[18:12] Headius Exodus: It is a 100% Java implementation of Ruby

[18:12] Headius Exodus: It's essentially Ruby, but running on the JVM. We take great pains to try to make the Ruby experience just like it is with the C implementation

[18:13] Headius Exodus: At a command line, you run "jruby" instead of "ruby", and the intention is that it will do everything Ruby can do (with some exceptions)

[18:13] Headius Exodus: It is currently purely interpreted, just like the C version (which I'll call MRI from here on, for "Matz's Ruby Interpreter")

[18:13] Headius Exodus: We do not yet compile anything to bytecode, and the original JRuby code was actually a straight port from C

[18:14] Headius Exodus: However we have a few differences like support for native threads...I'll talk more about those features later

[18:14] Headius Exodus: The project started in about 2001, created originally by a developer named Jan Arne Petersen

[18:14] Jesse Malthus: well, but could you compile dynlang scripts to bytecode?

[18:14] Jesse Malthus: Meh, jumping the gun :D

[18:14] Headius Exodus: Yes, we can do various levels of compilation

[18:14] Headius Exodus: and we plan to do so...I'll talk about that again later :)

[18:15] Headius Exodus: Jan Arne took the C code and produced a really solid port to Java

[18:15] Headius Exodus: since then dozens of developers have contributed to the project

[18:15] Headius Exodus: The current core team, as I mentioned, is about three people...but there are probably 10-15 community members that contribute patches and fixes

[18:16] Headius Exodus: It is targetted at being Ruby 1.8.x compatible

[18:16] TryRuby HUD Giver Box.: Delivering...

[18:16] TryRuby HUD Giver Box.: Delivered!

[18:16] Headius Exodus: currently we consider it "mostly compatible" with Ruby 1.8.5

[18:16] Headius Exodus: And yes, it is currently slower than MRI...but we hope to change that

[18:16] WhiteBoard (w): Showing Image 7/16 – Jruby-slide05



[18:17] Headius Exodus: Ok, so here's an example of calling Java code from Ruby, using Jruby

[18:17] Zach Reiner: I appologize, being a little dense here. MRI?

[18:17] Jesse Malthus: HAWT. Except for swing...

[18:17] Headius Exodus: It's pretty simple...the various JRuby developers have trie to make it easy, and we've made more strides in that direction

[18:17] Jesse Malthus: Matz's Implementation

[18:17] Zach Reiner: Thank you.

[18:17] Headius Exodus: MRI = the C impl of Ruby...the Ruby everyone knows

[18:17] Jesse Malthus: and loves!

[18:17] Headius Exodus: So yeah, require 'java' and you're off to the races

[18:17] Leovinus Lumiere: and makes out with

[18:18] Headius Exodus: Java classes are available directly....you can assign them to a local constant if you like

[18:18] Pasta Mann: lol leovinus

[18:18] Headius Exodus: MyJFrameClass = javax.swing.JFrame

[18:18] Jesse Malthus: hey! Ruby doesn't go past first base :D

[18:18] Headius Exodus: f = MyJFrameClass.new("a frame")

[18:18] Headius Exodus: etc

[18:18] Jesse Malthus: that's handy.

[18:18] Headius Exodus: or you can just hit it directly

[18:18] Headius Exodus: f = javax.swing.JFrame.new("quicker!")

[18:19] Headius Exodus: java, javax, org, and com work out of the box

[18:19] Headius Exodus: From there on it pretty much looks like Ruby

[18:19] Headius Exodus: we support either camelCaseNaming or underscore_case_naming

[18:19] Zar Zadoq: So can I use this to create platform independent GUI's?

[18:19] Headius Exodus: You could if there were a good cross-platform API that could be backed by something different under Java or under normal Ruby

[18:20] Headius Exodus: this would only work in Java, because it's calling Java's GUI libraries...so it would be cross-platform as much as Java is :)

[18:20] Jesse Malthus: heh

[18:20] Headius Exodus: but it wouldn't work in MRI

[18:20] Headius Exodus: that's not necessarily a bad thing

[18:20] Headius Exodus: There are other examples out there using other toolkits, like SWT

[18:21] Headius Exodus: We also make all properties accessible like Ruby attributes

[18:21] Headius Exodus: so if you have x.getName/setName, you can just do x.name, x.name =

[18:21] WhiteBoard (w): Showing Image 8/16 – Jruby-slide06



[18:21] Leovinus Lumiere: nice

[18:21] Theodore Polonsky: very

[18:21] Headius Exodus: You can also implement Java interfaces in Ruby

[18:21] Headius Exodus: This example creates an ActionListener, which in Java responds to a button presss or similar event

[18:21] Jesse Malthus: sweet

[18:21] Pasta Mann: Question?

[18:21] Headius Exodus: The Ruby code gets called instead

[18:22] Headius Exodus: Sure

[18:22] Pasta Mann: Recently in beanshell I came across some component.text

[18:22] Pasta Mann: vs. component.setText

[18:22] Pasta Mann: being diferent

[18:22] Pasta Mann: since there was a global 'text' in the component

[18:22] Zach Reiner: along the same lines of a question I had :)

[18:22] Pasta Mann: what does jruby do in such a case

[18:22] Headius Exodus: we occasionally have naming collisions like that too

[18:23] Headius Exodus: we're working on a good solution, but generally if there's a collision with an existing method or public field we would not do the mapping

[18:23] Headius Exodus: it doesn't happen terribly often

[18:23] WhiteBoard (w): Showing Image 9/16 – Jruby-slide07



[18:23] Leovinus Lumiere: this code on the screen here only works in jruby, right? there's no way to run it in MRI?

[18:23] Theodore Polonsky: so you still need to pay attention to the Java API


{ snip - end Larrytheliquid's save of StarJunky's arse}

[18:23] Pasta Mann: This was sadly JTextArea or something

[18:24] Headius Exodus: That's right, whenever you are calling Java code you still need to be aware of how the Java code looks

[18:24] Headius Exodus: and yes, this would only work in JRuby

[18:24] Simon Pulford is Offline

[18:24] Headius Exodus: by a similar measure, we don't support most of the GUI toolkits that MRI supports because they're written in C

[18:24] Headius Exodus: So! Why JRuby?


[18:24] Simon Pulford is Online

[18:25] Headius Exodus: There's plenty of reasons...for me, it allows me to still have a paying Java job and start sneaking Ruby into the system :)

[18:25] Zach Reiner: /smile

[18:25] Headius Exodus: But in general...

[18:25] Headius Exodus: The JVM (Java Virtual Machine) is a really powerful runtime

[18:25] Headius Exodus: It's practically everywhere, and it's really fast these days

[18:26] Headius Exodus: I should say....1.4 is fast...but then 1.5 is another 25% faster and 1.6 is another 25% beyond that

[18:26] Leovinus Lumiere: can JRuby run on J2ME?

[18:26] Headius Exodus: it's really impressive how well it runs...so running Ruby on it is a no-brainer

[18:26] Headius Exodus: JRuby on J2ME...that question comes up a lot

[18:26] Headius Exodus: There's not really any reason why it *shouldn't* work, but we haven't really worked on it

[18:26] Jesse Malthus: really? That's kinda oddball to me :D

[18:27] Headius Exodus: we do use some Java libraries that aren't in ME, but there's no reason we couldn't have a "JRubyME" that doesn't need them

[18:27] Headius Exodus: People often ask that because they're interested in embedding Ruby

[18:27] Leovinus Lumiere: god that would be sweet

[18:27] Headius Exodus: like, write your phone game's logic in Ruby

[18:27] Headius Exodus: or whatever

[18:27] Jesse Malthus swoons

[18:27] Headius Exodus: In the end, with JRuby it's all just JAva

[18:27] Headius Exodus: so wherever Java codes, Ruby can go

[18:28] Headius Exodus: So moving on...Java has an extensive set of libraries

[18:28] Headius Exodus: both in the core dist and worldwide

[18:28] Headius Exodus: Just about anything you want to do, there's a Java library for it

[18:28] Headius Exodus: So it makes sense to be able to call them from Ruby

[18:28] Jesse Malthus grumbeles about JPEG2000 and .NET...

[18:28] Pasta Mann demands an SL API in java

[18:28] Headius Exodus: I like to draw a parallel between JRuby and a typical UNIX environment...

[18:29] Jesse Malthus: Pasta: Sorry, .NET/Mono only :D

[18:29] Headius Exodus: Java provides all sorts of libraries, like UNIX does...but rarely do people really want to wire those together in C

[18:29] Headius Exodus: they use Ruby, or Python, or Perl, or what have you

[18:29] Headius Exodus: So why force everyone to always use Java for everything?

[18:29] Leovinus Lumiere: but only the last two if they're terrorists

[18:29] Headius Exodus: that's right, they're not welcome here

[18:29] Jesse Malthus: Ruby as glue, it's a theme

[18:29] Headius Exodus: yes, exactly

[18:30] Headius Exodus: and Glue doesn't have to mean crap between apps

[18:30] Headius Exodus: it can be what ties libs together to do real work in an app

[18:30] Leovinus Lumiere: glueby

[18:30] Headius Exodus: what most of us do every day

[18:30] Jesse Malthus: the mashup glue, the fun stuff!

[18:30] Jesse Malthus: like Facebook <-> SL

[18:30] Headius Exodus: and I dunno about you, but I'd sure rather use Ruby :)

[18:30] Zach Reiner: here here!

[18:30] Headius Exodus: I think Ruby is currently the greatest dynamic-typed language...or I wouldn't be here

[18:31] Headius Exodus: so the question of "why Ruby instead of" groovy, or python, or whatever...well, it's obvious

[18:31] Headius Exodus: I like Ruby better

[18:31] Jesse Malthus: :D

[18:31] Headius Exodus: And I mentioned before sneaking Ruby into the system

[18:31] Headius Exodus: I have folks tell me often that they've started to get Ruby going at work simply because of JRuby

[18:32] Headius Exodus: they can always just say it's Java under the covers...if it runs on the JVM, managers seem to love it

[18:32] Headius Exodus: the last one is pretty important too...I don't know many Java web developers that are "happy"

[18:32] Pasta Mann: Does Jruby deal with lack of general multibyte stuff better due to java?

[18:32] Baboo Vogel: I had that exact conversation with my manager today :)

[18:32] Pasta Mann: I AM HAPPY!

[18:32] Headius Exodus: I'll get to that Pasta...

[18:32] Pasta Mann: I HAVE THE JAVA PILLS!

[18:32] Headius Exodus: hahah

[18:32] Headius Exodus: See, I asked at RailsConf EU how many Java web deves in the room "really loved writing Java webapps"

[18:32] Headius Exodus: there was like one guy

[18:33] Headius Exodus: and he didn't look like he had many friends

[18:33] Pasta Mann: Ihate webapps

[18:33] Zach Reiner: hah

[18:33] Simon Pulford: lol

[18:33] Leovinus Lumiere: what a loser

[18:33] Headius Exodus: but it's true

[18:33] Headius Exodus: I've worked very hard to avoid writing webaps for the past three years as a Java EE architect

[18:33] Headius Exodus: but with Rails it's actually fun again

[18:33] Leovinus Lumiere: hooray for rails

[18:33] WhiteBoard (w): Showing Image 10/16 – Jruby-slide08





[18:33] Anaktuvuk Hartunian: Life is too short to grovel through XML config files.

[18:34] Headius Exodus: So, perhaps a bigger question for this group

[18:34] Pasta Mann: CheersAnaktuvuk!

[18:34] Leovinus Lumiere: and when life is even too short for rails, go camping!

[18:34] Headius Exodus: What do Rubyists get out of JRuby?

[18:34] Jesse Malthus: YEY CAMPING

[18:34] Headius Exodus: Again, the libraries are a huge help

[18:34] Headius Exodus: If you want it, there's a library for it...and you can use it in JRuby

[18:35] Headius Exodus: We'd like to think you'll also have a better Rails experience

[18:35] Headius Exodus: Jruby currently "runs" rails...we try to be political about it and don't want to say it's fully supported yet, but we demo it all the time

[18:35] Headius Exodus: We plan to have JRuby "fully support" rails before JRuby 1.0 is released

[18:36] Ubi Petronius is Offline

[18:36] Headius Exodus: that's at least one milestone we're sure of

[18:36] Headius Exodus: Rubyists can also get the good parts of Java...and what might those be you ask :)

[18:36] Headius Exodus: If nothing else, Java has management of large apps and servers really figured out

[18:36] Jesse Malthus: Libraries Libraries Libraries </balmer>

[18:36] Headius Exodus: you can deploy a single app out to a 50-server cluster and it will just work

[18:37] Headius Exodus: and you can monitor all those servers, bring any one down and know you won't interrupt apps

[18:37] Theodore Polonsky: like with capistrano?

[18:37] Headius Exodus: Rails currently has a...less complete answer

[18:37] Headius Exodus: yes, with Capistrano

[18:37] Jesse Malthus: Mongrel_cluster!

[18:37] Headius Exodus: but you don't have all the monitoring capabilities

[18:37] Leovinus Lumiere: well, we aren't perverts

[18:37] Headius Exodus: it's getting there, and I'm sure they'll come up with great solutions

[18:38] Headius Exodus: but the ability to zip up a rails app and spit it into an existing managed cluster is very attractive

[18:38] Jesse Malthus: heartbeat + capistrano + mongrel cluster :D

[18:38] RabidRobot Rosmer: java clearly has a great system for very large systems

[18:38] Headius Exodus: We also would like to make JRuby as fast as possible

[18:39] Headius Exodus: we don't know if we'll be faster than Ruby...or perhaps only just as fast

[18:39] Headius Exodus: but we'll do everyting we can

[18:39] Headius Exodus: Java's libraries and VM have been optimized for a decade for performance...so there's a lot to be gained there

[18:39] Headius Exodus: And of course, there's the evil "enterprise" that's out there

[18:39] Jesse Malthus: hehehe, java... performance...

[18:39] Headius Exodus: as much as we dislike them...they have a whole lot of money

[18:40] Headius Exodus: and currently, they like Java a whole lot

[18:40] Jesse Malthus: so, be subversive to the Man!

[18:40] Headius Exodus: JRuby is Java!

[18:40] Zach Reiner: Question? If I may?

[18:40] Headius Exodus: but it's Ruby too!

[18:40] Headius Exodus: Sure Zach

[18:40] Zach Reiner: Something I've been really wondering while working with JRuby, why the seperate classes and not compiled straight to bytecode?

[18:40] Zach Reiner: JString etc.

[18:40] Headius Exodus: sure

[18:41] Zach Reiner: (just because we're on the performance topic)

[18:41] Theodore Polonsky: Will you explain the question first, for those of us who don't know the JRuby nternals?

[18:41] Headius Exodus: the challeng with compilation is that Java expects every variable to have a specific type at compile time

[18:41] Headius Exodus: ok...JRuby doesn't actually turn Ruby into Java code yet

[18:42] Headius Exodus: so we have a RubyString, RubyObject, RubyFile, etc, that implement their behavior

[18:42] TryRuby HUD Giver Box.: Delivering...

[18:42] TryRuby HUD Giver Box.: Delivered!

[18:42] Headius Exodus: and for classes outside the builtins, like anything in the standard library, there's no type other than a RubyObject with some Ruby code attached

[18:42] TryRuby HUD Giver Box.: Delivering...

[18:42] TryRuby HUD Giver Box.: Delivered!

[18:42] Pasta Mann: Go TryRuby HUD Giver Box!

[18:42] Headius Exodus: We do plan to compile Ruby though

[18:42] TryRuby HUD Giver Box.: Delivering...

[18:42] Jesse Malthus: :D

[18:42] TryRuby HUD Giver Box.: Delivered!

[18:42] Headius Exodus: It's very unlikely it will compile 1:1 from Ruby classes to Java classes

[18:43] Headius Exodus: because Java classes have all these unpleasant restrictions

[18:43] Headius Exodus: like they can't be open, or they have to have typed params and return types, and so on

[18:43] Headius Exodus: we will find a happy medium that lets the two languages work well together

[18:43] Headius Exodus: I'll move on now...

[18:43] WhiteBoard (w): Showing Image 11/16 – Jruby-slide09





[18:43] Headius Exodus: So, Java devs get a lot too

[18:43] Headius Exodus: Obviously...they get Ruby!

[18:44] Headius Exodus: that's gift enough

[18:44] Headius Exodus: But they don't have to leave their platform or libraries or jobs behind

[18:44] Headius Exodus: and they can use Ruby to work with the same classes, libraries, apps, and servers they did before

[18:44] Leovinus Lumiere: then when they're all comfortable and they feel safe, we kill their families, right?

[18:44] Pasta Mann: lol Leovinus

[18:45] Jesse Malthus: you, sir, are a bad person!

[18:45] Headius Exodus: It's also another language option for them...Groovy or Jython might offer some similar features, but many don't like Groovy or Jython for whatever reasons

[18:45] Jesse Malthus: :D :D

[18:45] Headius Exodus: Of course, they also get Ruby's libraries

[18:45] Headius Exodus: which are in many cases pretty nice :)

[18:45] Headius Exodus: and beyond that, they get Ruby apps like Rails or Gems

[18:45] Headius Exodus: or heck, IRB...you can use IRB to interactivelly script Java code

[18:46] Headius Exodus: that's loads of fun

[18:46] Jesse Malthus: IRB is fun times.

[18:46] Headius Exodus: And of course Ruby is more fun than Java...that's obvious

[18:46] WhiteBoard (w): Showing Image 12/16 – Jruby-slide10





[18:46] Jesse Malthus: :D

[18:46] Pasta Mann: Blasphemy!

[18:46] Pasta Mann tells on HEadius to Pony Tail Boy

[18:46] Headius Exodus: So, JRuby 0.9.1 will come out this week

[18:47] Headius Exodus: We've improved performance more than 50% over the last release

[18:47] Headius Exodus: it's much faster, and you can feel it in every app

[18:47] Jesse Malthus thinks of WEbrick on Java... ouch!

[18:47] Headius Exodus: It works though!

[18:48] Headius Exodus: and in production mode, JRuby + WEBrick + Rails is actually really snappy

[18:48] Jesse Malthus: nice Ruby Net:: stdlibs...

[18:48] Headius Exodus: certainly usable

[18:48] Headius Exodus: We've also added the new syntax I showed earlier

[18:48] Headius Exodus: for calling Java classes and importing them into Ruby world

[18:48] Headius Exodus: We've made tons of compatibility fixes too...what's the number of bugs fixed Tom?

[18:49] Headius Exodus: 80-something?

[18:49] Jesse Malthus: was . just easier than :: for y'all to use?

[18:49] Modok Cao: I think it was 83 Jira bugs

[18:49] Headius Exodus: . feels more natural for Java code

[18:49] Jesse Malthus: true

[18:49] Leovinus Lumiere: :: is a gateway into the abyss of love and acceptance

[18:49] Headius Exodus: and if you're pulling in Java code...well, might as well make it feel natural

[18:49] Modok Cao: We fixed more bugs than that since we sometimes fix additional problems without filing a bug for it

[18:49] Headius Exodus: yeah, I committed bunches myself while preparing demos and whatnot

[18:50] Headius Exodus: We have also continued to refactor and redesign JRuby internals

[18:50] Modok Cao: Usually just refactoring fixes incidentals as well

[18:50] Headius Exodus: where the original code was a straight port from the C, we have started to depart in most areas

[18:50] Headius Exodus: now we understand what the C code "intends" to do, so we can make it work best with Java

[18:50] Headius Exodus: And we have a few more C extensions that have been implemented in pure Java

[18:51] Headius Exodus: Enumerable was ruby before...StringScanner...etc

[18:51] Headius Exodus: luckily most of Ruby is written in Ruby :)

[18:51] WhiteBoard (w): Showing Image 13/16 – Jruby-slide11





[18:51] Headius Exodus: ok, so what's in the future...short term means like a month or so

[18:51] Headius Exodus: There are still plenty of thing broken

[18:52] Headius Exodus: marshalling is in a poor state because we have no spec to go by

[18:52] Leovinus Lumiere: damn, Drb doesn't work yet?

[18:52] Headius Exodus: there's always minor interpreter bugs..we're getting closer and closer though

[18:52] Headius Exodus: DRb sorta works

[18:52] Headius Exodus: if you're marshalling anything complicated, it will have issues

[18:52] Headius Exodus: there's a lot of stuff to test...we'll get around to everything

[18:53] Headius Exodus: We're also seeing more and more uses of JRuby with many multiple threads, both Ruby-spawned and from outside

[18:53] Headius Exodus: much of Ruby is thread-safe, but more work needs to be done

[18:53] Headius Exodus: JRuby, rather

[18:53] Headius Exodus: Of course we'll always keep working on performance

[18:53] Headius Exodus: I've got 2 or 3 big ideas I held off on to get this release out

[18:53] Headius Exodus: but there's a lot more improvement we can make

[18:54] Headius Exodus: We also want to make Rubified wrappers or APIs around existing Java libraries

[18:54] Headius Exodus: to make them really feel like Ruby

[18:54] Jesse Malthus: blocks!

[18:54] Headius Exodus: Part of that is improving the calling from Java to Ruby and back again

[18:54] Headius Exodus: making it less thick

[18:54] Headius Exodus: making Ruby objects and Java object work more closely together

[18:55] Headius Exodus: lots of work to do here

[18:55] Headius Exodus: In the long term...

[18:55] Headius Exodus: We want to continue building out C extensions in Java and improve the ones we have

[18:55] Headius Exodus: We don't have Enumerator or BigDecimal or OpenSSL

[18:55] Theodore Polonsky: mongrel?

[18:55] Headius Exodus: though there are efforts already for getting them going

[18:56] Headius Exodus: Yes, Mongrel too!

[18:56] Leovinus Lumiere: mongrel is the puppy of the future

[18:56] Headius Exodus: we actually have a mostly-working Mongrel that uses Java code

[18:56] Theodore Polonsky: Cool

[18:56] Jesse Malthus: mongrel gets its speed through C though

[18:56] Headius Exodus: it currently uses a YACC-based HTTP request parser, but the guy who wrote Ragel created a version to generate Java code too

[18:56] Theodore Polonsky: jMongrel + camping would be slick

[18:56] Headius Exodus: We've also talked with Zed Shaw, creator of Mongrel, and he's keen to include anything we come up with in Mongrel proper

[18:57] Headius Exodus: so you'll be able to "gem install mongrel" in Jruby and just select the "java" version

[18:57] Headius Exodus: Beyond extensions...

[18:57] Headius Exodus: We want better tool support...especially toosl ike NetBeans and RDT

[18:58] Headius Exodus: all the major Java-based editors/IDEs use JRuby's parser and AST right now

[18:58] Headius Exodus: we want to help them continue building out editor support AND work with them on research into refactoring Ruby code

[18:58] Headius Exodus: there's a lot of potential there...and work is already being done

[18:58] Headius Exodus: Were going to continue working on the compiler

[18:59] Headius Exodus: we already have a very minimal compiler that can compile recursive and iterative "fib" algorithms to Java bytecodes

[18:59] Headius Exodus: in the recursive case, it's as much as 50% faster than interpreted

[18:59] Headius Exodus: and there's more we can do

[18:59] Zach Reiner: Can Sun offer any support in terms of the Compilation to Bytecode?

[18:59] Headius Exodus: We also WILL have native unicode support

[18:59] Headius Exodus: Yes, we're going to be meeting with some compiler experts soon

[18:59] Headius Exodus: there's lots of folks interested in helping us

[18:59] Zach Reiner: Very good to hear.

[19:00] Headius Exodus: Unicode is a bit of a sore spot for Ruby these days

[19:00] Headius Exodus: and until 2.0 there's no complete solution

[19:00] Headius Exodus: Any of you seen ActiveSupport::MultiByte?

[19:00] Headius Exodus: it's a library recently added to Rails trunk that looks really promising

[19:00] Theodore Polonsky: saw it in the trac feed

[19:00] Headius Exodus: we want to start having native Unicode support in JRuby very soon, possibly using AS::MB as a first attempt at that

[19:01] Headius Exodus: rather than pure Ruby code, parts of AS::MB could just use JRuby's support (really Java's support) for Unicode

[19:01] Headius Exodus: it will be in there...probably fairly soon

[19:01] Headius Exodus: And there's the JRuby-Extras project

[19:01] Headius Exodus: that's where other work peripheral to JRuby is being done

[19:01] Headius Exodus: Mongrel-Java, ActiveRecord-JDBC, and so on

[19:02] Headius Exodus: we're looking for more folks to join and work on whatever...so if you've got something you'd like to do contact me or get on the mailing list

[19:02] Headius Exodus: I'm especially interested in replacing Ant with Rake :)

[19:02] Headius Exodus: Ant bloze

[19:02] Pasta Mann sings up for active trolling

[19:02] WhiteBoard (w): Showing Image 14/16 – Jruby-slide12





[19:03] Headius Exodus: oh yeah, this is the slide!

[19:03] Theodore Polonsky: Rant?

[19:03] Headius Exodus: Note to the RoSL leadership...a little onscreen clicker would be cool

[19:03] Headius Exodus: I think there already is a Rant

[19:03] Headius Exodus: that mimics Ant's declarative style

[19:03] Jesse Malthus: yeah, it's Not My Object :D

[19:04] Headius Exodus: Maybe call it "Jake"

[19:04] Zach Reiner: Raven is another I think?

[19:04] Theodore Polonsky: ant2rake.rb

[19:04] Headius Exodus: the purpose of "Rake-Ant" would be to wire up Ant's existing tasks in Rake

[19:04] Modok Cao: Don't forget antbuilder

[19:04] Headius Exodus: so you could just use javac, etc

[19:04] Leovinus Lumiere: rake is like the autumn, but encrusted with the blood of our enemies

[19:04] Headius Exodus: Yes, antbuilder is already out htere

[19:04] Headius Exodus: it's basically a builder syntax for ant...much less verbose

[19:04] Headius Exodus: that's on JRuby-Extras

[19:05] Headius Exodus: Rmagick is a cool one too

[19:05] Headius Exodus: There's now an "RMagickJr" that uses Java APIs

[19:05] Headius Exodus: it's coming along

[19:05] WhiteBoard (w): Showing Image 15/16 – Jruby-slide13





[19:05] Theodore Polonsky: Interesting

[19:05] Headius Exodus: So, conclusion...running a bit long here :)

[19:05] Headius Exodus: Like I said, JRuby will not be "done" until at least Rails is working

[19:06] Headius Exodus: that's the killer app right now

[19:06] Headius Exodus: it's also a major test of what we can do with JRuby

[19:06] Headius Exodus: if Rails works...damn near anything wil

[19:06] Headius Exodus: Really it "mostly" works now

[19:06] Headius Exodus: we need more folks helping out testing, etc

[19:06] Headius Exodus: we're not rails experts by any means

[19:07] Headius Exodus: The Java platform opens a lot of door for Ruby

[19:07] Headius Exodus: of course I believe there's lots of technical doors opened, but there's political doors too

[19:07] Headius Exodus: The odd thing is that Java development is actually more fun with Ruby :)

[19:08] Headius Exodus: I write most of my Java test code in Ruby now

[19:08] Headius Exodus: and sometimes just leave it that way

[19:08] Theodore Polonsky: So, as someone who has mostly avoided Java for the past 4 or 5 years...what do JRuby files look like? .rb files in the org/rosl directory? Ruby embedded in .java files? And how do you deploy an app?

[19:08] Headius Exodus: JRuby can be used at the comment line just like Ruby

[19:08] Headius Exodus: to start up rails with webrick...."jruby script/server"

[19:08] Headius Exodus: to generate scaffolding "jruby script/generate scaffold X"

[19:09] Headius Exodus: we ship RubyGems, so if it's in your path "gem install whatever" will work too

[19:09] Headius Exodus: You can also embed JRuby into an app and pass it Ruby code

[19:09] Theodore Polonsky: But from the more Java side, if I want to integrate some Ruby into my Java app...

[19:09] Headius Exodus: that's more a Java-side way of doing things

[19:09] Theodore Polonsky: yeah, that's what I was asking

[19:09] Headius Exodus: yep, you can either pass it a file, a string that contains Ruby code, or whatever

[19:09] Headius Exodus: you get a handle to the JRuby runtime, and it just works

[19:10] Theodore Polonsky: And then can Java classes access Ruby classes?

[19:10] Headius Exodus: you can pass Java objects in and get stuff out

[19:10] Headius Exodus: Java classes can't access ruby classes directly, because we don't compile them into Java classes

[19:10] Zach Reiner: Java 6 should help facilitate more too correect?

[19:10] Jesse Malthus: you just interprate, not expose?

[19:10] Theodore Polonsky: ah, OK

[19:10] Headius Exodus: but if you get a "Ruby Object" out, you can call Ruby methods on it indirectly

[19:10] Headius Exodus: x = <some ruby object>

[19:11] Headius Exodus: we're working to reduce that barrier

[19:11] Headius Exodus: but it's pretty good now, especially if you have the ruby code implement Java interfaces

[19:11] Zach Reiner: Currently Java classes aren't considered "open" correct?

[19:11] Headius Exodus: So I'll put up the "info" slide and we can continue QA

[19:11] WhiteBoard (w): Showing Image 16/16 – Jruby-slide14





[19:12] Headius Exodus: There's all the links...my blog is at headius@headius.com...and can be found on all the major IM outlets

[19:12] Headius Exodus: Yes, Java classes are not open

[19:12] Headius Exodus: There are proposals to make them so, but it's complicated

[19:12] Headius Exodus: the security model makes it very difficult to alter or swap out classes at runtime

[19:12] Zach Reiner: I imagine so.

[19:13] Headius Exodus: we will probably help with those proposals in the future, since they're obviously of interest to JRuby and other dynlangs

[19:13] Leovinus Lumiere: Don't you feel that you're collaborating with the enemy, though working with Sun? I mean, I appreciate how much work you're putting in to showing the unenlightened how inferiour and meaningless their life is.

[19:13] Theodore Polonsky laughs

[19:13] Leovinus Lumiere: But will you convert with the sword when the hour is upon us?

[19:13] Headius Exodus: hahah

[19:13] Headius Exodus: well here's the thing

[19:13] Headius Exodus: Sun is really turning a corner with this stuff

[19:14] RabidRobot Rosmer: this is good news for the enterprise..

[19:14] Headius Exodus: They're a hardware company in the end

[19:14] Headius Exodus: and to some extent services and support

[19:14] Headius Exodus: but they really, really want to make it easy for developers to do what they want

[19:14] Headius Exodus: and developers want other languages than Java

[19:14] RabidRobot Rosmer: think they'll merge with apple?

[19:15] Theodore Polonsky: Do you have a java.net community/blog/etc?

[19:15] Pasta Mann: Google is buying SunandApple

[19:15] Leovinus Lumiere: less seriously, how is YARV going to impact on the project? its meant to be buttloads faster.

[19:15] Headius Exodus: that would be cool...but I don't know anything about all that

[19:15] RabidRobot Rosmer: hha

[19:15] Headius Exodus: We will probably get a Java.net blog/site up soon

[19:15] Headius Exodus: they're leaning on us to do it :)

[19:15] Headius Exodus: So yeah YARV

[19:15] Headius Exodus: what do you all think about YARV's future?

[19:15] Theodore Polonsky: I used to work with the j.n editor, he's very cool

[19:16] Headius Exodus: the hope of YARV is obviously a great one...it could be an amazing thing

[19:16] Zit Cure: Do Sun developer's distrust dynamic typing?

[19:16] Zach Reiner: not to bash Yarv by any means, but there's a lot of publicity similar to Vista

[19:16] Headius Exodus: YARV is trying to solve some really, really hard problems

[19:16] Zach Reiner: I'm excited for YARV, but it's not here yet.

[19:17] Pasta Mann: Zit - one can not speak for thousands of devs

[19:17] Headius Exodus: Some of Sun's folks distrust dynamic typing

[19:17] Headius Exodus: but they are shipping JavaScript (Rhino) in Java 6

[19:17] Headius Exodus: and they hired us

[19:17] Leovinus Lumiere: YARV will deliver us and anyone who doesn't believe that could burn in the place of python. I'd have to consult the pope for specifics.

[19:17] Headius Exodus: and they're working on all sorts of projects, public and private, that are solidly dynlang-based

[19:18] Headius Exodus: it's a battle between two camps, to be sure

[19:18] Leovinus Lumiere: it certainly seems sometimes that Sun is verrrrry fractured

[19:18] Zit Cure: So are we seeing the tables turn?

[19:18] Headius Exodus: I like to think we are

[19:18] Theodore Polonsky: OK, my head is killing me, so I'm going to run off....Headius, thanks very much!

[19:19] Headius Exodus: I think it's inevitable that the tables have to turn toward dynlangs...so I'll do what I can to help tilt things that way

[19:19] Headius Exodus: Thanks for stopping by Theo!

[19:19] Jesse Malthus: night Theo!

[19:19] Leovinus Lumiere: bye theo!

[19:19] Jesse Malthus: wait! I wanna get a picture

[19:19] Headius Exodus: Anything else?

[19:19] Headius Exodus: ok

[19:19] Rubee Adelaide: yeah group photo

[19:19] Pasta Mann: I want the picture doctored to make me beautiful

[19:19] Headius Exodus: a few dropped out but thanks all for sticking around

[19:20] Jesse Malthus: photoshop can only do so much

[19:20] Zach Reiner: Thanks for taking the time to speak with us.

[19:20] GeeEdwin Stringfellow: Thank you.

[19:20] StarJunky Fermi: Thank you Headius! Very appreciated.

[19:20] Pasta Mann: Blame the tools

[19:20] Pasta Mann: right

[19:20] Zach Reiner: Thanks for being here too Thomas

[19:20] Baboo Vogel: thanks headius

[19:20] Zit Cure: Thanks, worth getting up at 2am for.

[19:20] Modok Cao: good stuff going on in SL

[19:20] Headius Exodus: feel free to jump on the mailing lists or IM either of us

[19:20] Jesse Malthus: eek, compy's going crazy

[19:20] Piett Hesse: 3 am here :)

[19:20] Jesse Malthus: I'm gonna log, night everyone!

[19:21] Jesse Malthus: thanks again Headius

[19:21] Leovinus Lumiere is Online

[19:21] Headius Exodus: I gotta finish packing for RubyConf, hope to see some of you there too

[19:21] Simon Pulford: ty Headius. great meeting :->

[19:21] Pasta Mann: Did Eric Armstrong make it here?

[19:21] Pasta Mann: to

[19:21] Theodore Polonsky is Offline

[19:21] StarJunky Fermi: Headius - can I post the slides with the chat log interspersed on the web?

[19:21] Headius Exodus: sure, go right ahead

[19:21] Leovinus Lumiere: yeah, thanks Headius

[19:21] StarJunky Fermi: thanks!

[19:21] Headius Exodus: send me a link, I'll blog it too

[19:21] StarJunky Fermi: will do

[19:21] Zit Cure: Any other UK based people here?

[19:21] RabidRobot Rosmer: thanks Headius.. this was very interesting!

[19:22] Bieneff Bruder: yes, thank you!

[19:22] StarJunky Fermi: Headius - what did you mean about an on-screen clicker?

[19:22] Baboo Vogel: hey zit. yep london here.

[19:22] Headius Exodus: like something I could attach to HUD that lets me click through slides

[19:22] Headius Exodus: maybe a little display for the current slide

[19:22] StarJunky Fermi: oh - I see

[19:22] Headius Exodus: so I don't have to turn around or have a separate page up in RL

[19:23] StarJunky Fermi: makes sense - we'll look into it

[19:23] Jesse Malthus is Offline

[19:23] Headius Exodus: cool

[19:23] Headius Exodus: we'll present again as things move on

[19:23] RabidRobot Rosmer: that would be great!

[19:23] Headius Exodus: and yeah, if any of you know me offline, please let me know you were here :)

[19:23] Headius Exodus: otherwise I'll never guess

[19:24] Pasta Mann: <- "Profit!"

[19:24] Leovinus Lumiere: Say hi to the nice man in his very fine hat for me.

[19:24] Headius Exodus: ahhh ok :)

[19:24] Headius Exodus: yes I will

[19:24] Headius Exodus: should be in interesting conf, and Tim's presentation will be a scorcher

[19:25] Pasta Mann: anybody else from the evil corp here?

[19:25] Leovinus Lumiere: They should have a rubyconf in australia

[19:25] Headius Exodus: yeah

[