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
[