Wednesday May 06, 2009

Rails Conf 2009 Day 3 Trip Report

Attended a great talk by Michael Bleigh on Twitter on Rails. He has built a gem, TwitterAuth, that uses Twitter as authentication provider (OAuth or HTTP Basic) which allows to to quickly and easily create Twitter applications in Rails. In Michael's words "TwitterAuth makes Twitter Rails apps stupid simple".

The talk built Twistener - a Twitter application in Rails that shows how many tweepl are having a conversation about you. A hosted version of the application is available at twisteners.heroku.com. The slides and  end result of the code are always helpful.

In a post-talk conversation he mentioned that all the gems are pure Ruby. Any body willing to re-build the application and trying using JRuby and GlassFish ?

And then attended Rails 3: Stepping off of the Golden Path by a "morally loose, cheese eating surrender monkey", aka Matt Aimonetti :)

What are you going to get in Rails 3 ?
  • Improved performance
  • Increased modularity 
  • Agnosticism (choose any JS framework)
  • Public API
  • Mountable Apps
Rails 3: ORM => ActiveRecord, JavaScript => Prototype, Templating => ERB, Testing => Test::Unit. The defaults are exactly same as Rails 2.x.x and the idea is to provide the least amount of changes from user perspective, yet provide a choice.

Some other key points highlighted in the talk were:
  • More flexible, Less opinionated
  • Templating engines: HAML and ERB are the big ones.
  • ORM: ActiveRecord, DataMapper
  • Adapaters: RDBMS, File Ssytem, IMAP, YAML, REST APIs, Custom APIs
  • Sequel: Prepared statement, Sharding, highly customization SQL
  • Use Hibernate with either ActionORM, JRuby
  • Ability to talk to Non RDBMS Systems; GAE, CouchDB, Redis, Tokyo Cabinet, etc
Had a so-so lunch buffet at a local Indian restaurant with a limited variety and average food. It was hot in Vegas today (98 degrees high and 72 degrees low) and we walked to the restaurant. An Indian buffet and a long walk in the high temperatures is a perfect recipe for a sleepy afternoon ;-) But it was apparently contagious cause the person sitting next to me dozed off while I kept awake!

Anyway here are some pictures captured earlier today:


And then the complete album:



See ya next year!

Technorati: conf railsconf lasvegas rubyonrails

Rails Conf 2009 Day 3 - Chris's Keynote


An informal survey this morning at Rails Conf 2009 keynote showed:

40% Rails developers in startup
30% Rails developers in consulting
30% Rails developers work in internal projects

Engine Yard got a sponsor keynote slot and announced Flex - a cloud computing platform on EC2 to host Rails applications. They also showed one-button self-healing clusters. One of the speakers was particularly scared (reminds me of my early days) and IRC#railsconf had a pool of $125 to hug him on the stage :) Anyway, read more details here.

The highlight of the morning was keynote by Chris Wanstrath (@defunkt). I took multiple notes during the keynote but the  transcript has all the details. The first part of the talk has good tips on how to create a successful blog such as blog personality, template, killer name and a sleek design, sparse side bar, consistency and structure, and many others.

There was a good bashing of SourceForge towards 60% in the talk. Chris gave a suggestion to SourceForge:

They should cut their registration process down to a single page, remove the 200 character "please host my project" plea, be more lenient on the categorization, suggest an open source license for you, then allow you to change any of these things after your project has been created.

And there are other interesting ones too. Read the full text and enjoy!

Here were some of the Q&As at the end of keynote ...

Q. What was your inspiration for github ?
A. Inspiration is coding, doing open source software all the time, downloading patches, relative paths were getitng in the way to coding. Source forge registration page is too long. github is very simple for anything code related that you want to put there.

Q. You develop these interesting pieces of software, have a job, play guitar, create pieces of music, drum music, how you do this in one lifetime ?
A. I outsource most of it. All of us do it, I post my music and code on the Internet, watch a lot of TV. I'm into sharing on github. Don't have a better work ethic, just talk a lot.

Q. What do you watch on the TV  ?
A. Legend of the secret

Q. Built a bunch of tools used by non-Rubyists, how can we promote Ruby there ?
A. RubyGems is one reason I fell in love with Ruby. Remove the friction and lower the barrier to entry.

Q. Focus github around the code/community, it helps around the people, opposite of Source Forge/Ruby Forge
A. Github is like facebook for code development.

Technorati: conf railsconf git github lasvegas rubyonrails

Tuesday May 05, 2009

Rails Conf 2009 Day 2 Trip Report

This is a follow up post from David's keynote.

Attended Women in Rails panel discussion. The panel, Sarah Mei, Lori Olson, and Desi McAdam (from L to R), had a very interesting discussion around the genuine problems and possible solutions of involving more women in Rails community.

Sarah is trying to involve more women in the San Francisco Ruby meetup. She plans to invite non-traditional audience like those who never programmed before, other language programmers, and similar. The details will be shared after performing the exercise for a year. Lori started Calgary Ruby Group. She do lot of self promotion so that younger women feel inspired. Desi is a co-founder of devChix with the purpose of "build a community of women developers". All the panelists were very vocal about being visible, having a blog and twitter presence is a good start.

Here are some random notes captured ...

Women drop out because of kids, try to get a job and then come back with a gap in the resume. It's difficult to get a new job at that time. Sarah is trying to reach out to that group who have that gap in their resume.

Visbility is important "She did that, I can do too!".

Data point: Women % in Rails community is much less than in other development community, e.g. Java or .NET world.
Another data point: % of women is more in larger companies, not in smaller companies. The reason is facilities like maternity leave, training (don't have evening hours to train themselves, can't sacrifice family time), etc.

Real stats from 2006: Women participation in open source community is 2-3%, 20-25% in "enterprise"

Appeal from the panelist "Guys, help us, tell .NET developer that Rails is not all guys, spread the word.".

Here are some Q&As captured:

Q. Should women be given free/discounted tickets to RailsConf ?
A. If women can't pay for it, then devChix can help them. RailsConf have helped before. It'll help if childcare is available.

Q. Why are we only looking at CS ? Why not other areas who have the development skills ?
A. Panel do reach out to multiple audience and seeks help from everybody in spreading the word. Women will be working on JavaScript and thinks she is designer. A guy will read 3 blog entries and thinks he is developer. There is a market salary differential between designer and developer. Women need to be more public about their programming status.

Q. Women won't present themselves as something they are not confident because they'll be called upon. How do you fix it ?
A. Everybody is learning. David's comment "I don't know everything in Rails" was commended. Girls need to know if it's important then they can figure it out. They are scared of messing the impression of their gender.

And of course there was a discussion on "Pr0ngate scandal":

Sarah: Matt is not a bad guy, he made a mistake that lot of people make in software development. If 1 out of 100 does not match the pattern of software developer, then that "1" may not be a software developer. The organizers of the conference did not do anything wrong. I voted for the talk and trust the judgement of the people. A negative feeling started developing but don't want to see that honestly. We learned something from it. As a relatively young community, this was bound to happen.

Lori: Not from the presentation itself but form the community reaction to this event. Blown out of proportion because of the same reasons when there is a conflict with developers in same company. You can't argue with somebody regarding how they feel. Can have a discussion, but argument is never going to be a win for anyone. That's where the community reaction devolved.

Desi: If Matt would've said "Oh Crap, I offended and wouldnt mean to offend you.", everything would've been fine. To David: "Next time, do us a favor and keep your mouth shut. It didn't help."

I was certainly expecting many more women to show up in the room but there were very few. Anyway, read Desi's blog entry about the panel. And I reached out to all three of them for helping in any manner :)

I presented on Develop with Pleasure, Deploy with Fun: GlassFish and NetBeans for a better Rails experience, slides here. The several concepts in the talk are explained in the following bullets:

The next talk of the day was JRuby: State of the Art

Why JRuby on VM ?
  • Best memory management
  • Dynamic optimizations
  • Reliable native threads: run threads across multiple cores
  • Vast number of libraries
  • Interop with Java, Scala, Rhino, Jython, ...
  • Ubiquitous
Performance
  • Fastest production-ready Ruby implementation
  • Definitely faster than 1.8.6
  • JRuby -> Bytecode -> Native code -> Optimizations
Future JVM Work
  • "invokedynamic": Build fast dynamic invocation in JVM, JRuby support by June, allow Hotspot to do all optimizations across Ruby calls
  • Multi-language VM "Da Vinci Machine", Optimized tail calls, continuations, fixnums, value types
Threading
  • Only production-ready impl with real threads
  • Ruby thread is a normal thread that can run on multiple cores
Simple Rails App
  • 1 Controller/Mode/View, send 1000 reqs
  • 80% less memory in 10 instance example, 96% for 20 instances
GlassFish
  • Gem, WAR-based
  • nginx, Apache: mod_proxy
Ruby 1.9 is 80-90% complete, IRB works, RubyGems works

FFI
  • Call C functions directly from Ruby
  • Portable unlike extensions
Who uses JRuby ?
  • Kenai
  • Gravitor
  • King Pong (JRuby wrapping MonkeyEngine)
  • Oslo's Gardermoen Airport to refuel planes
  • ThoughtWorks Mingle
    • No cross-platform SVN libraryfor Ruby
    • Bundling of installation
    • Security (ecnrypting source code)
    • Memory profile
    • Avoiding process proliferation
  • mix.oracle.com
    • 5 developers, 6 weeks for all development, 2887 LOC
  • Trisano: Open source infectious disease reporting system
    • Ease of deployment
    • Every enterprise on the planet run Java
    • Extensive project roadmap
Check out interactive Q & A from the session in the following video fragment:

<script type="text/javascript" src="http://blip.tv/scripts/pokkariPlayer.js?ver=2008010901"></script> <script type="text/javascript" src="http://blip.tv/syndication/write_player?skin=js&posts_id=2087723&source=3&autoplay=true&file_type=flv&player_width=&player_height="></script>


Later in the evening, Brian Helmkamp, Aman Gupta, Luis Navena, Pat Allan, Dan Kubb, and John Nunemaker were awarded Ruby Heroes Award!


And the keynote by Tim Ferris, lets not talk about it ;-) I edited pictures, authored my blog, caught up on email/RSS during the keynote. #railconf on IRC and twitter were way more fun! Check the live ratings.

"1" was the lowest rating that could be given anyway!

Watch the interview on why Sea Change Affinity picked JRuby/GlassFish.

Finally watch some of the snapshots captured today:


And then the evolving album:



Technorati: conf railsconf lasvegas jruby rubyonrails glassfish netbeans

Sea Change Affinity - Why JRuby/GlassFish ?


At Rails Conf 2009, Jay McGaffigan from Sea Change talked about why they choose JRuby/GlassFish for their product Affinity. Here are some of the reasons he quoted:
  • Performance characterisitics (of GlassFish) have been excellent
  • Picked GlassFish based upon the recommendations from the people in industry
  • Dramatically more throughput on our GlassFish installation, 400 requests/sec instead of 100 requests/sec comapred to Tomcat
Watch the interview recorded earlier today:


Read other simiar stories at glassfish+rubyonrails+stories.

Technorati: jruby rubyonrails glassfish stories

Rails Conf 2009 Day 2 - DHH Keynote


Rails Conf Day 2 start with DHH's keynote. The room was packed (close to 1200 attendees) and SRO. It was interesting to know that 70% of the attendees are first timers and only a handful have attended for all 4 years in a row. This is my second in the US.

Here are the notes from DHH's keynotes:
  • Stop fretting about whether you are upto date with the latest in Rails. Don't need to re-write your application everytime something new comes up.
  • Gallery of "normal wounds"
    • Rails isn't enterprise ready, James McGovern "some consutant, architect, or bullshit title of a big company". Can't win the world with better arguments, some things take time.
    • Multiple frameworks like Grails, Sails, Biscuit, Monorail seem to give the impression Java is easier
    • Switch back to PHP after 2 years on Rails y Derik Severs (sp?)
    • The failed whale, "the twitter debacle" that Rails doesn't scale.
    • Merb - "the most credible alternative to Rails". Even though emotions can run high, the underlying principles are still the same.
  • Fundamental principle of Rails are still the same, it's better and faster
  • Philosophy of Rails3
    • Buck up all the unicorns - it's not going to be a rewrite f everything
    • No holy cows - "There is nothing secret in Rails, everything is up for public debate"
    • Have tasty burgers: it's all pre-assembled and use it the default way, otherwise pick/choose whatever you like. Allow people to make individual choices and still be together in one community.
  • Progress of Rails 3 - Ton of Rails 3 code in the repository, no alpha release
    • New Router: Faster route by subdomains, user agents, more Route to other Rack machinery. Mount multiple applications like Sinatra and Django using this router. Much simpler routing API. "Ruby is not about fewer lines of code, it's about expressive lines of code."
    • XSS protection: Flipping the convention such that all outputting views will be escaped, so "<%=raw" will not escape it and "<%" will escape it by default. HTML helpers "html_safe" may be used too.
    • JavaScript goes unobstrusive and agnostic: Will adopt HTML 5 custom attributes such as "data-remote" and "data-method" attribtues will simplify "link_to_remote", "remote_form", "link_to".
    • More agnosticism: Action ORM is a slim wrapper around other ORM tools, Generators (SoC project)
    • Great refactoring (bulk of the work): Abstract Controller + Action Dispatch, Active Relation (also GSoC project) underpins Active Record, Cherry picking from Active Support, Speedy callbacks
  • Real secret to high productivity
    • Most developers treat requirements as stone tablets, don't treat requirements as gospel, instead renegotiate requirements.
    • Use Twix instead of a fine Belgian chocolate, it doesn't really matter most of the time.
    • Programmers are like puppies who want to fetch the same ball again and again, bark back instead
    • Calling people programmer is like a blackbox, we are not those boxes. Instead we should be treated as partners, work with our stakeholders to get the job done.

Technorati: conf railsconf lasvegas keynote

Rails Conf 2009, Las Vegas - Day 2 Run




Eight of us started at 6:15am this morning from the Hilton Lobby, looped around Las Vegas Country Club and another short loop in the neighborhood for a total of 5.2 miles in 43:18 mins.

Interested in running together while attending Rails Conf ? Follow @railsConfRunner and meet us at 6:15am in the Hilton lobby.

And don't forget your Tequilas - it's Cinco de Mayo!

Technorati: conf railsconf lasvegas running hilton

Monday May 04, 2009

Rails Conf 2009 - Day 1 Trip Report


Rails Conf 2009 started this morning. The first day consists of morning and afternoon tutorials.

I attended Nick Sieger's JRuby on Rails tutorial, the slides are available. A survey in the room showed:
  • 95% comfortable with Ruby/Rails
  • 80% have used JRuby
  • 10% use JRuby actively
Here are some of the key points highlighted in the tutorial:

Why JRuby ?
  • JRuby is "Less Bitter Java", after all Java is a great platform.
  • Concurrency (Native threading)
  • Reliability (well-behaved because of Hotspot compiler, no process monitoring, etc)
  • Encapsulation (take a Rails application, bundle it as a single deployable artifact that is fully contained)
  • Choice (Any Java application server, huge breadth of Java libraries, and can write thin Ruby wrappers around Java libraries)
Download JDK 5 minimum, JDK 6 preferred, MySQL 5.x, JRuby 1.2 (1.3.0 RC1 OK too), GlassFish v2.1 b60e

Common options
  • --server: Run with server VM, better performance
  • --headless: No UI
  • --properties: Show tweaks for compiler, JIT compiling,  thread pooling etc
  • -J<java-opt>: Pass any Java properties
  • -J-Xmx1G: Increase memory to 1G
Drawbacks: No fork(), No native extensions (for example ParseTree, EventMachine, RMagic cannot be used), No tty for subprocesses, Startup time slow for short scripts

Advantages: Improved versions of some Ruby APIs (tempfile, mutex, thread, timeout), 1.8 and 1.9 in a single install (jruby --1.9), Wrap Java libraries and APIs in Ruby

The slides have much more details in terms of deployment options (WAR-based, GlassFish Gem), and many other interesting details Scroll to slide #68 to understand all the guts of kenai.com - a real life application running using JRuby, Rails, and GlassFish.

The afternoon tutorial for me was A Hat Full of Tricks with Sinatra. The tutorial was completely code driven with no slides, just love that format!

The tutorial started with a brief introduction to Rack. A basic Rack application can be "config.ru" or "app.rb", lets start with "config.ru" Hello World:

run lambda { |env|
  [
    200,
    {
    'Content-Length' => '2',
    'Content-Type' => 'text/html',
    },
    ["hi"]
  ]
}

Run it as ...

~/samples/railsconf/sinatra/basic-rack >~/tools/jruby/bin/jruby -S rackup
[2009-05-04 13:40:18] INFO  WEBrick 1.3.1
[2009-05-04 13:40:18] INFO  ruby 1.8.6 (2009-03-16) [java]
[2009-05-04 13:40:18] INFO  WEBrick::HTTPServer#start: pid=90964 port=9292
127.0.0.1 - - [04/May/2009 13:40:27] "GET / HTTP/1.1" 200 2 0.0160
127.0.0.1 - - [04/May/2009 13:40:27] "GET /favicon.ico HTTP/1.1" 200 2 0.0060
127.0.0.1 - - [04/May/2009 13:40:30] "GET /favicon.ico HTTP/1.1" 200 2 0.0100

"config.ru" is the default Rackup script, otherwise need to specify the name. And now "app.rb" ..

App = lambda { |env|
  [
    200,
    {
    'Content-Length' => '2',
    'Content-Type' => 'text/html',
    },
    ["hi"]
  ]
}

And run it as ...

~/samples/railsconf/sinatra/basic-rack >~/tools/jruby/bin/jruby -S rackup app.rb
[2009-05-04 13:43:57] INFO  WEBrick 1.3.1
[2009-05-04 13:43:57] INFO  ruby 1.8.6 (2009-03-16) [java]
[2009-05-04 13:43:57] INFO  WEBrick::HTTPServer#start: pid=90990 port=9292
127.0.0.1 - - [04/May/2009 13:44:09] "GET / HTTP/1.1" 200 2 0.0110

In both cases, the application is accessible at "http://localhost:9292".

Change the basic "config.ru" to convert into a class as ...

class BasicRack
     def call(env)
      body = "Hello from a class"
      [
        200,
        {
        'Content-Length' => body.size.to_s,
        'Content-Type' => 'text/html',
        },
        [body]
      ]
    end
end

run BasicRack.new

and run the same way as earlier.

Change body to "env.inspect" to see an output as:



Sinatra allows reloading of application but that "feature" will be removed soon. Instead install shotgun (which does not work with JRuby yet!). Anyway, install the gem:

~/samples/railsconf/sinatra/basic-rack >~/tools/jruby/bin/jruby -S gem install shotgun
JRuby limited openssl loaded. gem install jruby-openssl for full support.
http://wiki.jruby.org/wiki/JRuby_Builtin_OpenSSL
Successfully installed configuration-0.0.5
Successfully installed launchy-0.3.3
Successfully installed shotgun-0.2
3 gems installed
Installing ri documentation for launchy-0.3.3...
Installing RDoc documentation for launchy-0.3.3...

And run as:

~/samples/railsconf/sinatra/basic-rack >~/tools/jruby/bin/jruby -J-Djruby.fork.enabled=true -S shotgun
[2009-05-04 13:55:46] INFO  WEBrick 1.3.1
[2009-05-04 13:55:46] INFO  ruby 1.8.6 (2009-03-16) [java]
== Shotgun starting Rack::Handler::WEBrick on localhost:9393
[2009-05-04 13:55:46] INFO  WEBrick::HTTPServer#start: pid=91089 port=9393

Process separate bodies depending upon the info:

class BasicRack
     def call(env)
      body = if env["PATH_INFO"] == "/foo"
        "in foo"
      else
       "in other"
      end
      [
        200,
        {
        'Content-Length' => body.size.to_s,
        'Content-Type' => 'text/html',
        },
        [body]
      ]
    end
end

run BasicRack.new

Accessing "http://localhost:9292/foo" shows "in foo" and accessing "http://localhost:9393" shows "in other".

Target application is the last application specified by "run".

Rack supports middleware which are like filters, they can applied before/after a message is processed.

Rack will initialize middleware at load, so hold on to that application as shown:

class BasicRackApp
     def call(env)
      body = "hello from app"
      [
        200,
        {
        'Content-Length' => body.size.to_s,
        'Content-Type' => 'text/html',
        },
        [body]
      ]
    end
end

class MyMiddleware
    def initialize(app)
        @app = app
    end
   
    def call(env)
        @app.call(env)
    end
end

use MyMiddleware

run BasicRackApp.new

@app.call calls the next middleware in the chain.

Rack comes with couple of standard middleware, e.g.:

use Rack::CommonLogger

Example of an after filter:

    def call(env)
        status, headers, body = @app.call(env)
        body.map! { |part| part.upcase}
        [status, headers, body]
    end

Lots of other filters available.

With a basic Rack understanding, lets build a Sinatra app:

require 'sinatra'

is the simplest Sinatra application. Save it in a file "basic-sinatra.rb" and run it as:

~/samples/railsconf/sinatra/basic-sinatra >~/tools/jruby/bin/jruby -rubygems basic-sinatra.rb
== Sinatra/0.9.1.1 has taken the stage on 4567 for development with backup from WEBrick
[2009-05-04 14:40:14] INFO  WEBrick 1.3.1
[2009-05-04 14:40:14] INFO  ruby 1.8.6 (2009-03-16) [java]
[2009-05-04 14:40:14] INFO  WEBrick::HTTPServer#start: pid=91396 port=4567

The application is now available at "http://localhost:4567". BTW, this app can easily be run using GlassFish Gem as explained  in TOTD #79. Add a simple GET method and "not_found" handler as:

require 'rubygems'
require 'sinatra'

not_found do
  'hi from other'
end

get '/foo' do
    'hi from foo'
end

Every time a request comes in, it builds a request context, instance evals lambda and finds the one that hits.

Sinatra takes care of status and headers, the application needs to process the body.

Another one ...

require 'rubygems'
require 'sinatra'

get '/env' do
    env.inspect
end

And it shows Rack environment hash at 'http://localhost:4567".

Another one ...

require 'rubygems'
require 'sinatra'

get '/' do
end

post '/' do
end 

put '/' do
end

delete '/' do
end

This adds 4 HTTP methods with different routes.

No explicit render method, e.g.

require 'rubygems'
require 'sinatra'

get '/' do
  content_type "application/json"
  { "foo" => "goo" }.to_json
end

No ".rhtml.erb" or ".json.erb", instead it's just ".erb". Add "views/index.erb" as:

<html>
  <body>
  Hello form Sinatra + ERB
  </body>
  </html>

And change GET method to:

require 'rubygems'
require 'sinatra'

get '/' do
  erb :index
end

And the application now uses ERB templating.

Using HAML templates is simple, change to:

require 'rubygems'
require 'sinatra'
require 'haml'

get '/' do
  haml :index
end

And add "views/index.haml" as:

%html
  %body
    %h1 Hello from HAML

And now the application is using HAML templates.

__END__ is the end of Ruby, can be anything after that and it'll not barf. Sinatra uses it for in file templates:

require 'rubygems'
require 'sinatra'
require 'haml'

get '/' do
  erb :index
end

use_in_file_templates!

__END__

@@ index

<html>
  <body>
  Hello form Sinatra + ERB in file
  </body>
  </html>

Start with in-file templates, and then move out to separate directory ("views") once grows big. But no syntax highlighting etc.

Add your custom template as:

require 'rubygems'
require 'sinatra'
require 'haml'

get '/' do
  erb :index
end

get '/foo' do
  erb :foo
end

use_in_file_templates!

__END__

@@ index

<html>
  <body>
  Hello form Sinatra + ERB in file
  </body>
  </html>
 
@@ foo
<h1>FOO!</h1>

With this file "http://localhost:4567/" uses ERB template, and "http://localhost:4567/foo" uses "foo" template.

Sinatra defines on Main. The before filters work before every single request, executed in the same context as lambda. Can be used if every request needs to do some setup.

Helpers can be defined as:

require 'rubygems'
require 'sinatra'
require 'haml'

helpers do
 
end

without defining on Main. Or ...

require 'rubygems'
require 'sinatra'
require 'haml'

module helpers
    def self.dosomething(arg)
    end
end

get '/' do
    Helpers.dosomething
end

Don't define something on Main, it's a bad practice.

Extension is a nice package that can be shared for other Sinatra developers to use, like Rails plugins but does not have boilerplate, much easier to do.

Rest of tutorial was quite fast paced so the code samples could not be captured. But there is boatload of information available at sinatrarb.com.

Check out the pictures from Day 1:


The evening concluded with dinner at Burger Bar at Mandalay Bay along with Project Kenai team.

And check the evolving album at:



On to GlassFish talk tomorrow, and running with @railsConfRunner in the morning before that :)

Technorati: conf railsconf lasvegas jruby rubyonrails sinatra glassfish

Running at Rails Conf, Las Vegas 2009

Six of us from @railsConfRunner ran together around Las Vegas Hilton this morning.



6.4 miles, 57:04 minutes.

Interested in running together ?

Join us at 6:15am in the Hilton lobby tomorrow morning! Here is a picture of the running group from this morning:



Thanks to Jed (2nd from right) for organizing the run, and of course all the running buddies to make it a fun run :)

Technorati: conf railsconf lasvegas hilton running

TOTD #81: How to configure "database.yml" to be used with both JRuby and MRI ?


In JRuby-on-Rails tutorial at Rails Conf 2009, Nick Sieger shared a nice little tip on how to configure "database.yml" to be usable with both JRuby and MRI:

<% jdbc = defined?(JRUBY_VERSION) ? 'jdbc' : '' %>
development:
  adapter: <%= jdbc %>mysql
  encoding: utf8
  reconnect: false
  database: myapp_development
  pool: 5
  username: root
  password:
  socket: /tmp/mysql.sock
# ...

"JRUBY_VERSION" is defined only if your using JRuby and so the right database adapter is picked up accordingly.

The complete slides for the tutorial are available here. Learn about other related talks here.

Please leave suggestions on other TOTD (Tip Of The Day) that you'd like to see. An archive of all the tips is available here.

Technorati: conf railsconf lasvegas tutorial jruby ruby rubyonrails

Monday Apr 27, 2009

GlassFish, NetBeans, and Project Kenai at Rails Conf 2009


Did you know that ...

  • GlassFish Gem is already used in production
  • GlassFish Gem can be used to run Rails, Merb, Sinatra, and any other Rack-based framework
  • Capistrano recipes are available for starting/stopping/bouncing the server
  • With GlassFish, standard Java monitoring techniques like JMX can be used for monitoring Rails apps
  • NetBeans provide a complete development environment for Rails applications

There are many other similar nuggets that I'll be covering in my Rails Conf 2009 session. Details are given below:

Develop with pleasure, Deploy with Fun: GlassFish and NetBeans for a better Rails experience
Tuesday, May 5th, 2009, 1:50pm
Pavilion 1

Register Today and avail a 15% discount using the code: RC09FOS.

I plan to attend these sessions, lets see how many I can make :-) And of course, you'll see me in the Exhibit Hall.

And you'll get to meet Project Kenai team, they form the foundation for Sun's connected developer experience. Read about their participation here and meet them to learn about NetBeans and Kenai integration.

And if you are interested in running with fellow attendees, follow @railsConfRunner.

And it's Vegas baby!

JRuby and GlassFish is already used in production. Do you have a success story to share ? I'll be happy to promote at RailsConf.

Technorati: conf glassfish netbeans rubyonrails kenai railsconf lasvegas jruby
About

profile image
Arun Gupta is a technology enthusiast, a passionate runner, author, and a community guy who works for Oracle Corp.


Java EE 7 Samples

Stay Connected

Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today