LONE STAR RUBY CONFERENCE 2008

September 4-6, 2008

3 Hour Training
The Ins and Outs of Ruby I/O James Edward Gray II and Gregory Brown

Most people probably think of Input/Output operations as pretty trivial stuff, especially in a language like Ruby that handles so many of the details for us. While it’s true that it can be easy to read or write a little data, I/O is a vast topic covering a lot of ground.

This advanced training will be a highly focused Ruby workshop designed to increase attendee knowledge in many different aspects of doing real world I/O in Ruby applications. I/O is everywhere, so the skills learned in these lessons should benefit any programmer in their day to day work.

This will be a brain engaged event featuring quizzes, two labs with hands-on help available, and group discussions. Participants will receive a T-shirt at the end of the training.

  1. Introduction
    • Introduce myself
    • Explain why it’s important to learn more about I/O
    • Cover what to expect in this training
  2. I/O Basics
    • The various ways to read data
      • Reading line by line
      • Slurping files in various ways
      • Reading a count of bytes
    • Writing to a file
      • Writing data
      • Dealing with buffers and flushing
    • Quiz: I/O strategies
  3. Working with Text Data
    • Ruby’s regular expression engine
      • Encoding conversion with iconv
      • Formatted reading and writing with (s)printf() and scanf()
      • Lab: Simple Serialization
  4. Break
  5. Working with Binary Data
    • Reading and writing Ruby objects
      • Using YAML
      • Using Marshal
      • PStore
      • Other options (like JSON and and XML)
    • Building and unwrapping binary data with pack() and unpack()
    • Quiz: Name that format
  6. Tricks of the I/O Trade
    • Working with Tempfile objects
    • Random file access with pos() and seek()
    • Atomic saves
      • FileUtils basics
    • Lab: Inbox Style Message Passing
  7. Summary
    • Reiterate what was covered
    • Suggest areas for further exploration
    • Take questions
James Edward Gray II
James Edward Gray II is a strange human obsessed with small electronic devices and the languages they speak. He spends endless hours contemplating trivialities such stacks and queues, but barely possesses the social skills to eat in public cafeterias. What free time he has is consumed with his efforts to pen books and open source code in a desperate attempt to make contact with the outside world. He hopes to encounter like-minded life forms at the Lone Star Rubyconf.
Gregory Brown
Gregory Brown is a freelance software developer and wannabe tech writer. He has been working on the popular Ruby Reports (Ruport) project for several years, and has made improving Ruby’s support for business reporting his primary way of contributing to the community. Gregory spends more time working on free software than not, mostly thanks to awesome initiatives such as Ruby Central’s codefest grants, Google Summer of Code, and most recently, the Ruby Mendicant project. Gregory has spoken about Ruby at a number of usersgroups and conferences, including RubyConf 2006 in Denver, CO. When he is not coding, you can find him writing obscure poetry and wandering around various cities that aren’t too far from New Haven, CT.
Advanced ActiveRecord Workshop Gregg Pollack & Jason Seifer

In order to fully take advantage of the capability of your Web Framework, you have to know how to use it to solve complex problems. In this talk we’ll look at how to solve some Advanced programming problems. Each topic will be discussed, and then the audience will be provided some code to refactor themselves using these principles. This way developers will walk away from the tutorial with real experience with dealing with some of these advanced issues. Here is a small preview of the topics that will be covered:

  • How to properly use proxy associations.
  • How to take advantage of Polymorphic Relationships.
  • How to extract logic from a model to create a reusable plugin.
  • How to use association proxies to create powerful queries and readable code.
  • How to obey the law of Demeter and create more maintainable code.
  • How to use conductors to simplify multi model forms.
  • How to create non ActiveRecord models to abstract complex business logic out of our controllers.
Gregg Pollack
Gregg Pollack lives in Orlando, Florida where he runs the Orlando Ruby Users Group, writes and podcasts Rails Envy, and helps organize BarCampOrlando. He’s passionate about finding easy ways to explain complex technology using new media.
Jason Seifer
Jason Seifer is a web developer and 1/2 of RailsEnvy.com. He is a frequent speaker at the Orlando Ruby Users Group and enjoys long walks on the beach, scotch, and poetry. His programming interests include Ruby, Rails, Javascript, full text search, and Objective-C.
Test Driven Development (TDD) Jim Weirich & Joe O’Brien

(The Secrets of Red / Green / Refactor)

Traditionally, testing is seen as the last step in the software development cycle. It’s that tedious step where you show that the software you’ve already written does what it claims. Testing in this manner is boring, and few developers like to take the time to do it.

Red / Green / Refactor turns testing on its head. Instead of becoming an ‘after the fact’ effort, testing becomes an integral part of the development cycle. Instead of a tedious effort that consumes extra time, we find that driving design via tests and specifications actually cuts down on debug time and code defects. Not only does testing become fun, but we get to deliver more reliable and robust code … faster.

Labs:

  • Lab 1—Triangle Detection
  • Lab 2—Ping Pong
  • Lab 3—Classic Red/Green/Refactor
  • Lab 4—Testing Legacy Code
Jim Weirich

Jim Weirich is the Chief Scientist for EdgeCase LLC, a Rails development firm located in Columbus Ohio. Jim has over twenty-five years of experience in software development. He has worked with real-time data systems for testing jet engines, networking software for information systems, and image processing software for the financial industry. Jim is active in the Ruby community and has contributed to several Ruby projects, including the Rake build system and the RubyGems package software.

Joe O’Brien’

Joe O’Brien is a father, speaker, author and developer. Before helping found EdgeCase, LLC, Joe was a developer with ThoughtWorks and spent much of his time working with large J2EE and .NET systems for Fortune 500 companies. He has spent his career as a developer, project manager, and everything in between. Joe is a passionate member of the open source community. He co-founded the Columbus Ruby Brigade and helped organize the Chicago Area Ruby Users Group. His passions are Agile Development in the Enterprise, Ruby, and demonstrating to the Fortune 500 the elegance and power of this incredible language.


Advanced Mocking Jim Weirich & Joe O’Brien

(How to Isolate Code for Testing)

A well designed object oriented system consists of a group of object cooperatively interacting to achieve a common goal. Unfortunately, this large web of interacting objects makes testing difficult. If you need to create a large number of collaborating objects just to test a single object, testing becomes difficult and slow.

Mocking attacks the “web of collaborators” problem be providing fake objects to stand in for any needed collaborators. The fake objects act sufficiently like the real objects so that tested code can be run in isolation. Using mocks appropriately can lead to better code coverage and faster running tests.

This 3 hour training session will cover the use of FlexMock, a powerful Ruby mocking library. Topics covered will include: simple mocking and stubbing, method parameter matching, mocking complex behavior and techniques for database isolation.

Labs:

  • Lab 1—Mocking External Services
  • Lab 2—Isolating Test Code
  • Lab 3—Decoupling from the Database
  • Lab 4—Advanced Mocking Options.
Jim Weirich

Jim Weirich is the Chief Scientist for EdgeCase LLC, a Rails development firm located in Columbus Ohio. Jim has over twenty-five years of experience in software development. He has worked with real-time data systems for testing jet engines, networking software for information systems, and image processing software for the financial industry. Jim is active in the Ruby community and has contributed to several Ruby projects, including the Rake build system and the RubyGems package software.

Joe O’Brien
Joe O’Brien is a father, speaker, author and developer. Before helping found EdgeCase, LLC, Joe was a developer with ThoughtWorks and spent much of his time working with large J2EE and .NET systems for Fortune 500 companies. He has spent his career as a developer, project manager, and everything in between. Joe is a passionate member of the open source community. He co-founded the Columbus Ruby Brigade and helped organize the Chicago Area Ruby Users Group. His passions are Agile Development in the Enterprise, Ruby, and demonstrating to the Fortune 500 the elegance and power of this incredible language.
6 Hour Training
Rails Refactoring: Triage, Prevention, and Performance Adam Bair, Pradeep Elankumaran and Chris Selmer

Overview:

Maybe you inherited a mess of a Rails project – or perhaps your own codebase is poorly-tested, not very DRY, or just generally confusing. Worse yet, maybe your Rails site has slowed down to a crawl or even stopped working entirely. Whatever the reason, it’s time to consider refactoring these rough spots and boosting your site’s performance.

In the first half of the day we’ll go through real-life examples of (shameful) code we’ve written and refactored, give tips on how and when to start, and show you how to avoid the need for a future refactor. In the second half, we’ll introduce common Rails performance pitfalls, how to diagnose them, and how to solve them. We’ll also talk about other ways to speed up your app.

Part 1 – Refactoring for Readability and Code Quality

Introduction

  • What is refactoring?
  • Reasons a project might need refactoring

Back to Basics—following the fundamentals

  • Fat models (skinny models?), skinny controllers
  • High percentage of test coverage, rcov
  • Remove logic from your views
  • All of the things everyone (books/speakers/etc) keep telling you—yeah you should actually do them.
  • These basic principles can be used for the basis of your refactor.

LAB 1 – PUT THIS CONTROLLER ON A DIET

Testing – the bedrock of a solid application

  • Bringing your suite back from the dead
  • It’s far more difficult to fill in test coverage after the fact
  • If you find spots that are hard to test (many lines of mocking/stubbing setup), you need to rethink the original method, break it down into many smaller, easier to test methods.
  • When working with multiple developers, you can use the rspec pending state to point out specific areas that need additional testing
  • Can be a pitfall/broken window if these have been left for a long time.
  • Rspec for understandable tests
  • Test the code you write and not what Rails and Ruby provide for you
  • Keep your test suite run time to a minimum (mocks/stubs/and in-memory databases) | Postgres is slow

LAB 2 – ADDING SPECS

Streamlining your development

  • use rake tasks to ensure that your tests are run locally before you commit
  • svn/git rake suite to easily add files or revert all of your local changes
  • use continuous integration (cruisecontrol)

Code readability & Managing code ugliness

  • Keep methods around 5 lines (arbitrary, small, manageable chunks)
  • Reduce the comments in your code, use more descriptive method names
  • Abstract ugliness (nasty external or legacy APIs) in its local api to preserve code readability
  • Use mixins effectively

LAB 3 – PLEASE BE TERSE

Broad View – How to Begin

  • When to start a refactor?
  • How much to do at a time?
  • Don’t go overboard
  • When not to bother

Real Life

  • You’ll never get all the time you need to do a complete refactor, so stop procrastinating
  • There will always be rough spots in some form or another and can’t be avoided, real life isn’t perfect
  • Sometimes ‘good enough is enough’ – spending hours on irrelevant details hurts overall progress
  • Refactoring doesn’t just mean pushing code around, it means finding a better/cleaner way of writing that code

How to not get in this mess again!

  • Key tips to avoid junk code

LAB 4 – MESSING WITH YOUR CODE

QA/Discussion

BREAK

Part 2 – Refactoring for Performance

Introduction

  • Do you need performance?
  • When is it appropriate to refactor for performance?
  • Waiting until you need to – functionality first, then speedup.

Query analysis

  • Identify complex queries that could be simplified
  • When queries could benefit from an index

LAB 5 – ANALYZE THIS

Indexes

  • When to use them and why they help
  • An art—not a science

Eager Loading

  • Use eager loading to pre-fetch data and reduce the number of calls to your database

LAB 6 – EAGER BEAVER

Built-in Rails Caching

  • Page caching
  • Fragment caching
  • Action caching
  • Sweepers

LAB 7 – CACHE MONEY MILLIONAIRES

Memchached for Better Performance

  • How to setup and configure memcached
  • Advanced memcached techniques
  • When to use memcached

LAB 8 – MESSING WITH YOUR CODE, TAKE TWO

QA/Discussion

Adam Bair – Software Architect – Intridea, Inc.

Adam has a passion for elegant solutions and beautiful code. He’s a Rails evangelist who advocates test driven development and web standards. Before joining Intridea, Adam worked at Revolution Health building large-scale applications used by millions of people each month.

Pradeep Elankumaran - Director of R&D - Intridea, Inc.

A former computational scientist, Pradeep was writing simulations in Ruby well before the language became fashionable. Since then, he has been working with and thinking a lot about social networks, machine learning and applying mathematical models to social data. At Intridea, he’s responsible for researching and developing emerging web technologies, launching new products and writing beautiful code.

Chris Selmer

Chris is a Ruby on Rails architect at Intridea with over 10 years of project leadership and hands-on development experience. He specializes in leading small teams on fast-paced development projects. As Director of Client Solutions, he oversees Intridea’s client services efforts. Chris spoke at Railsconf 2008 on developing web applications in 48 hours, is an active member of the Rails community, and helps run the Washington DC Ruby User Group.


thoughtbot’s Rails Best Practices Chad Pytel, Tammer Saleh, Jon Yurek, Jared Carroll, Dan Croak, Matt Jankowski

From understanding Ruby community best practices to following “The Rails Way” – the thoughtbot team will provide knowledge gained from our experience building rails backed web applications. You will learn how to maximize the readability, maintainability, scalability, and consistency of your codebase – and you’ll learn how to apply practical concepts from a leading Ruby on Rails development shop. You’ll learn the following concepts and how to apply them as we step you through building a Rails application:

  • BDD and Test Driven Development
  • Advanced Active Record techniques and best practices
  • Performance tuning and scaling
  • Producing DRY but readable code
  • Choosing and managing third party gems and plugins
  • Writing, releasing, and maintaining your own gems and plugins
  • Convention over configuration
  • Code presentation, formatting and documentation
  • Also: Time permitting, we will be holding an attendee code review. So, be sure to bring small samples of your Rails code.

Section 1: First Steps

By starting with the Rails template (default plugins, configuration options, etc) we use for our client work, you’ll be able to hit the ground running. We’ll discuss some of the conventions and design decisions used in the template.

At thoughtbot, we practice design driven – the user interface for the application is created before the actual development begins. In this course we will be building an small Rails application for which most of the user interface is already built. We will introduce the application we’ll be building throughout this of the user interface is already built. We will introduce the application we’ll be building throughout this course, and then lead you through adding some base functionality for the application we’ll build throughout this course.

Section 2: Additional Features

After developing the base of our application in Section 1, we will add additional functionality, through the presentation of modifications to existing screens, as well as the additional of new screens, that will expose the need to address more advanced topics, such as more complex active record relationships, metaprogramming, and offloading additional processing with rake tasks, and other approaches to asynchronous functionality.

Section 3: Refactoring and Reuse

At this point, we have a good deal of code in place for our application, and we’ll show you how to refactor parts of it into reusable components. You’ll learn how to build gems and plugins, how to properly manage them in your applications, and how to contribute back to the Rails community by distributing your work.

Section 4: Launch!

Now that the application is complete, its time to deploy. This section will cover deployment best practices, including proper use of source control management (trunks and tags), effectively using Rails environments (staging and production), and capistrano, and our recommended production Rails stack. Additionally, we will cover application monitoring options, both open source options such as exception notification, God, and Monit, as well as commercial tools like Scout and Five Runs.

Course Deliverables

In addition to gaining real world experience and knowledge that will prove invaluable during your next Rails project, you’ll be armed with the following: The full source code to a small Rails application – useful as a base for your next project. Printed material outlining and explaining all of the concepts covered above A thoughtbot t-shirt to impress your future clients

thoughtbot
Thoughtbot is a technology consulting firm that specializes in building web applications with Ruby on Rails. We’ve built over 30 Ruby on Rails powered web sites and web applications—from small boutique applications and internal tools—to public facing applications for Fortune 500 companies. We regularly publish our thoughts on our blog, GIANT ROBOTS SMASHING INTO OTHER GIANT ROBOTS. We have written, released, and now maintain several open source Ruby projects, including Shoulda, Paperclip, Jester, and Squirrel. Members of the thoughtbot team have presented at RailsConf, Mountain West Ruby Conference, Scotland on Rails, as well as at other industry conferences and meetings. Chad and Jon co-authored the book “Pro Active Record: Databases with Ruby and Rails.”
Merb + DataMapper Aaron Farnham, Ben Burkert and Brian Smith

Concerned about performance on your next project? Worried about scaling, caching, and optimizing your web app? Merb + DataMapper might be the development stack for you.

Merb and DataMapper are two projects inspired by Ruby on Rails. Merb is a small, explicit, and beautifully written framework that is easy to understand and easy to learn. Merb lets you quickly build web applications that perform better and scales further. DataMapper began as an alternative ORM to Active Record, but has moved beyond just database storage. It provides a common persistence and querying framework for any storage model, including relational databases and more.

So what does this all mean for your project? Well, with Merb + DataMapper, you can deliver a high performance, highly scalable website in about the same development time as Rails.

The course will be a thorough introduction to both Merb and DataMapper. We’ll examine the two projects from the perspective of a Rails developer, then run through building a sample application, and finish off by touching on a few more advanced topics like scaling, caching, and digging into the internals of both projects. If your a Rails developer excited about the new developments in the Ruby community, this training session is for you.

Aaron Farnham, Ben Burkert and Brian Smith

Brian, Ben, and Aaron are partners in software consultancy specializing in Django, Ruby on Rails, and most recently Merb development. The team has closely followed the progress of both Merb and DataMapper since their respective 0.9 rewrites, contributing to the projects whenever possible. The team uses Merb + DataMapper as their primary web stack on all new projects.


10 Minute and 45 Minute Talks
The Next Ruby Bruce Williams

Ruby 1.9, currently in development, has already introduced a wide range of syntax and language feature changes to the Ruby language (some of which have been backported into 1.8.7). We’ll focus on 1.9’s changes and emphasize concrete steps needed to update existing Ruby 1.8 applications. The talk will address specific points of difference between the two versions; the new object literals, enumerators, text processing changes (encodings and oniguruma regular expressions), new scoping rules, and Fibers.

Bruce Williams
A Ruby developer since 2001, Bruce Williams has been pleased to see his favorite language rise out of obscurity the last few years—and pay the bills in the process. A developer for FiveRuns, Bruce also does a bit of independent consulting, has contributed to or served as the technical editor for a number of Ruby and Rails books, speaks at conferences when inspiration strikes, and is an aimless open source hacker and language designer in his copious free time.
Hidden Gems James Edward Gray II

In this talk I will dig up some of the lesser known, but super useful Ruby projects and show them to the masses. I’ll explain why you would use these each of libraries, explain key methods from the API, and show example code so the audience can see them in action.

The goal is to raise overall familiarity with these libraries. Because I’ve selected four different libraries with very different purposes, I hope this talk will contain something for everyone.

An overall theme of the selections was to select tools that can help you get some extra speed out of Ruby. Many people say that Ruby is slow, but the flat truth is that it doesn’t need to be. With the proper tools, you might just be surprised by how fast we can make Ruby go.

Projects covered:

  • NArray – This project can offer dramatic speed boosts for heavy number manipulations. I’ll show how you can take a detour off the road to optimizing in C using just this library.
  • RBTree – There are numerous uses for binary trees not the least of which is as a sorted Hash. I’ll show the simple usage of this library and give you a bunch of examples for situations where it might come in handy.
  • SQLite3 – Yes, I know we all use this one, but tell the truth: how often do you use it directly, outside of an ORM? There are darn good reasons to do so and I want a chance to show you the why and how of this under appreciated library.
  • Rinda – It may come with Ruby, but a surprising number of people don’t quite know what Rinda is, what it could do for them, or how to use it. I aim to fix that in this portion of the talk.
James Edward Gray II
James Edward Gray II is a strange human obsessed with small electronic devices and the languages they speak. He spends endless hours contemplating trivialities such stacks and queues, but barely possesses the social skills to eat in public cafeterias. What free time he has is consumed with his efforts to pen books and open source code in a desperate attempt to make contact with the outside world. He hopes to encounter like-minded life forms at the Lone Star Rubyconf.
Ruby Best Practice Patterns Rein Henrichs

Design patterns are all about making the right decision. Making the right decision consistently leads to successful software. This presentation will help you learn how expert Ruby coders make the right decisions by demonstrating and explaining some of the most useful Ruby Best Practice Patterns. These patterns are inspired and informed by Kent Beck’s seminal Smalltalk Best Practice Patterns book and taken from Rein’s upcoming Ruby Best Practice Patterns book. The examples are gathered from some of your favorite Ruby gems and from Ruby itself, by way of Rubinius!

Outline:

  • What are Best Practice Patterns?
  • Why Should I Care?
  • A Pattern: Composed Method
  • A Brief History Of Time, Patterns
  • A Pattern: Execute Around Method
  • How Do I Use Them?
  • More Patterns! (time permitting)
Rein Henrichs
Rein is a ninja with exceptional bow hunting skills. He is passionate about good design, best practices and nun-chucks. When not writing Ruby, writing about Ruby, or writing about writing about Ruby (as he is now), he can be found reading aboutRuby, reading about writing about Ruby, and writing about reading about writing about Ruby (as he is now).
Javascript frameworks with Ruby Wynn Netherland

Dance night at web camp – Frameworks, pick your partner

Ruby developers have a growing number of frameworks to choose from for building web applications. On the client, web developers have a growing number of Javascript frameworks to abstract browser quirks, dazzle users, and make life easier.

So how do you choose the right tango partner for your chosen Ruby framework? This talk will give the rundown on the ins-and outs of using Rails, Merb, Camping, or Sinatra with Prototype, script.aculo.us, jQuery, Mootools and YUI.

Rails

Most folks know that Rails has Prototype and script.aculo.us baked right in. But what if you want to use jQuery or some other framework? We’ll walk through the options form drop-in replacement via plugins to side-by-side support for multiple frameworks.

Merb

Merb is catching on with the cool kids perhaps because of it’s install-what-you-need approach. So where does client-side support fit into Merb’s modular architecture? Does a blank slate mean more freedom or more code to roll yourself?

Camping and Sinatra

If Rails is a Swiss Army knife, Merb is a Bowie knife, and Camping and Sinatra are scalpels. What kind of support can a Javascript developer expect for parsing JSON, using Ajax, etc.

Audience is intermediate Ruby developers, comfortable with writing helper methods and installing plugins/gems.

Wynn Netherland
Wynn Netherland is Founder and Pixel Pusher at Squeejee, a Texas-based web development shop. Ruby helped save Wynn from the dark years of .NET, making it fun to code on the web again. When he’s not slinging front-end code, he can be found on the front porch strumming his six string.
Using Metrics to Take a Hard Look at Your Code Jake Scruggs

It’s an interesting fact of human nature that you can’t do something every day and not secretly suspect that you’re good at it. Which goes a long way toward explaining why everyone thinks they write fine code. To combat this self-delusion you can use metrics to take a hard look at your application. This talk will discuss the ways in which you can measure how good your Rails project really is. And how to fix the bad parts.

Using a daily metrics build (run every day by CruiseControl.rb) you can compile a ‘hit-list’ of the worst methods in your application. Then your team can spend some time every iteration trying to refactor these methods. In my talk I will discuss 4 tools to identify problems:

  • Code coverage with Rcov
  • Cyclomatic complexity with Saikuro
  • Flogging with Flog
  • Using source control to figure which files change the most

All of which are pretty easy to use, especially if you use metric_fu—a Rails plugin (blatant plug). Once you’ve figured out where the badness is, you must fight it. While showing examples, I’ll be discussing:

  • Why 90% (or even 100%) test coverage isn’t a silver bullet against bugs.
  • How Saikuro and Flog measure complexity and the advantages of each.
  • When complexity is OK
  • Why ‘inject’ sucks, except when it’s pretty cool (see above point).
  • Strategies for figuring out if your fancy metaprogramming is worth the extra complexity and what to do if it isn’t.
  • What is good enough coverage.
  • Failing your build on poor metrics numbers.
  • Why you should always remember Carlin’s law:
    • “Have you ever noticed that anybody driving slower than you is an idiot, and anyone going faster than you is a maniac?”“
Jake Scruggs
Jake taught High School physics for 7 years, then he apprenticed at Object Mentor in the summer of 2004. Somehow he talked his way into ThoughtWorks where he was on 6 (2 Java, 4 Rails) projects in the last 4 years. He writes a technical blog innovatively titled “Jake Scruggs” and has published a Rails plugin called “Metric Fu.” Jake is currently a consultant at Obtiva and wears a lot of crazy shirts.
Care and Feeding of Ruby Developers Steve Sanderson

For folks who want to understand the rare ‘Ruby Developer’ creature and their native habitat, the Ruby community, there are some important qualities to recognize and understand. The ‘Ruby Developer’ is an interesting creature – similar enough to other developers to fool some at first glance, with some important differences to be considered.

At FiveRuns, we assembled a completely new team, rewrote and launched a new version of a successful product, juggled many parallel projects & sub-projects, successfully navigated which parts to do in-house, which parts to contract out, and when to do them – with no fatalities. While there are certainly plenty of examples of similarly successful projects, what made the difference was the special qualities that come with Ruby Developers and the Ruby community.

Some of these qualities include:

  • ease of collaborative and distributed development – ad-hoc, informal collaborations (both in the team and with the larger community)
  • living on the edge – the desire, need and ability to work with bleeding edge technologies as part of moving the work forward
  • strong aesthetic – not just in the code, but pervasively, e.g. visually in a product, their physical environment, etc

For this talk, we will explore these and other qualities, their pros & cons and some specific suggestions about their creative and respectful use.


Grammar – A BNF-like Ruby DSL for Parsing Eric Mahurin

A Grammar is an object similar to a Regexp. It specifies an input pattern to match and it integrates well surrounding Ruby code because it is simply an object. Instead of specifying the “pattern” using operators in a string (or file like most other parsing packages), operators and other methods to create build larger Grammar objects from smaller ones. This results in a Ruby DSL that resembles BNF. With a Ruby DSL, there is quite a bit more flexibility, better integration, and seamless actions (using blocks).

To give an idea how a complex Grammar is formed, here are some of the Grammar molecules and combinators/operators/methods along with the equivalent Regexp:
    E(?a)        : a
    E(?a..?z)    : [a..z]
    ANY          : .
    NULL         : (?:)
    EOF          : \Z
    Recurse { |f| ... f ... } : (?<f> ... \g<f> ... )
    x|y          : x|y
    x+y          : xy
    +A           : (?=A)
    -A           : (?!A)
    x.optional   : x?     : x|NULL
    x*n          : x{n}
    x*(n..m)     : x{n,m}
    x.repeat0    : x*     : Recurse { |g| g+x | NULL }
    x.repeat1    : x+     : Recurse { |g| (g|NULL) + x }
    x.repeat0(y) : x*?y   : Recurse { |g| y | x+g }
    x.repeat1(y) : x+?y   : Recurse { |g| x + (y|g) }
One aspect of the grammar package that has been used extensively to increase flexibility is duck-typing. Here are the major “duck types” along with some uses:
  • atomic pattern:
    • needs #=== to match an element in the input
    • typically exact or a range
  • input:
    • input sequence to parsing
    • like the IO#getc method
    • Backtracking wraps a buffer around the input.
    • Parser input may come from lexer output.
    • No need to read entire file into memory.
    • output:
  • output of parsing
    • needs #<< and #concat methods like Array/String
    • will simply mirror the input without intervention
    • A producer/consumer queue is used for a multi-threaded lexer.
    • An “abstract syntax forest” is formed with a hieararchy of outputs.
  • engine:
    • Most methods take one or more grammars.
    • The reference engine directly parses the input.
    • Efficient engines generate optimized parsers in different languages.
    • For now only Ruby parser is generated and a C parser is generated using Ruby2CExtension.
  • Generated parsers typically rival or beat the performance of
    • hand-crafted parsers in the same target language (even with the help of Regexp).
  • parser:
    • concrete implementation of a Grammar
    • API is dependent on the engine.

Like Regexp, Grammar handles ambiguous alternatives by simply letting the first match win. Unlike Regexp, Grammar does not backtrack by default when an alternative fails after it started to match. This is because Grammar is mostly an efficient LL(1) parser and this helps detect a mismatch right where it occurs. Fixed length or unlimited backtracking is still possible by using the #backtrack method on a Grammar. With Grammar, context may also be used to resolve (ambiguous) alternatives, whereas almost ever other parser generator requires context-free grammars.

The way recursion is handled and optimized is another interesting aspect of Grammar. First, a tail-call optimization is made so that right recursive Grammars will imply a loop. Secondly, and most important is that even left recursion is handled. The only other known techinque for handling left recursion in an LL parser is [Frost2008], which incurs a performance penalty. The novel techique used by Grammar results in left recursive grammars being even more efficient than right recursive ones (after tail-call optimization), similar to LR parsers.

Eric Mahurin
Eric Mahurin has 15 years of experience in IC hardware and software design with primary areas of expertise being computer arithmetic (i.e. adders, multipliers, shifters), cell design/analysis (timing, power, reliability, verification), and layout generation/analysis (a lot of computational geometry along with graph theory). He has worked at AMD (Athlon and Opteron), EDA companies, and currently works at Intel on a SIMD arithmetic unit. Eric developed an interest in parser generators after writing many ad-hoc parsers for various formats used in IC design. He stumbled upon Ruby in 2005 in a quest to write a parser/lexer generator where the grammar could be specified in the target language. Eric and his wife live in Austin.

Creating Desktop Applications With Ruby on Mac OS X Brian Cooke

As of Leopard, Apple has made Ruby a first class citizen for developing desktop applications. At some point everyone has an idea for a great desktop application. With a good number of Rubyists using OS X these days I want to give an introduction to what is possible with RubyCocoa so that when that great idea shows up, they know their options.

This talk introduces Ruby Cocoa, listing the major frameworks. Examples of apps using RubyCocoa are given (the most popular right now being GitNub). An example application is also be created showing the power of Cocoa plus the power of being able to write in Ruby and having access to gems.

I also cover recent developments related to Cocoa and bridges: MacRuby, nu, RubyObjC and talk about pros and cons.

Lightning talk at Mountain West Ruby Conf 2008 on RubyCocoa

Brian Cooke
Brian runs roobasoft, LLC (roobasoft.com) and spends most of his time making web applications with Ruby and desktop applications for Mac OS X with Cocoa and Objective-C. Lately the two world’s of Ruby and Cocoa have been merging as he’s been spending more and more time with RubyCocoa. Brian is married and has two small daughters who happily consume the remainder of his time.
Building and Managing a Ruby Infrastructure Jeremy Hinegardner & Fernand Galiana

What do you do when your entire business is run on a ruby infrastructure. You have a set of command line applications for data collection, another suite of daemons and command line processes for massaging that data, several Merb clusters for providing both internal and external data services, and Rails applications for internal business management and external customer usage.

In this presentation we will present the trials and tribulations of the growth of Collective Intellect’s code base layout, library and module organization and approaches to application deployment we have gone through over the past 2+ years.

Topics covered:

  • sharing ActiveRecord code between Rails and non-rails applications
  • database schema management, no we don’t use migrations
  • running a local gem repository, and keeping it in sync with RubyForge
  • organizing code bases into modules
  • specs and test data loading
  • deploying Rails, Merb and command line applications in the same manner
  • dependency resolution between gems and web applications

Unconventional Wisdom Bruce Tate

This session will explore some of the conventional wisdom within the Rails community that may be counter productive. This talk will be highly interactive, and focus on conventions within the Rails community that may be overused or counterproductive. We’re beginning to se a sea-change in several areas, such as the use of fixtures. We’re also seeing an increased reliance on ReST, though its overuse often makes Rails harder to learn and understand.
Ruby in the Cloud Mike Subelsky

This talk would be a case study in using Ruby to deploy, monitor, and manage a cluster of servers running in the Amazon Web Services virtual cloud.

The example cluster is operated by OtherInbox.com, a consumer-driven website that automates email tasks and spam blocking. Every system administration task imaginable is carried out using Ruby, which means the developers can enjoy all of Ruby’s benefits without having to delve into shell scripting, writing cron tasks, or use of other languages. It also means that porting the application to run on different operating systems is a trivial task, because Ruby is the glue connecting the Ruby components together; all that is required is a Ruby interpreter.

Two key Ruby technologies have matured in the previous 18 months which make it ideal for almost every layer of managing a cluster of servers:

  • god.rb allows fine-grained process monitoring and daemon control (replacing monit)
  • rufus-scheduler enables ruby-based scheduling (replacing cron, and providing a great facility for running daemons that must be executed on a recurring basis)

When combined with these Ruby workhorses, developers today can spend much more of their time writing Ruby code, and less time struggling with the vagaries of their production environment:

  • Ruby standard library utilities (File, FileUtils, etc.)
  • Rake
  • Capistrano (for any kind of remote application, not just Rails)

The talk would also include a discussion of using several different AWS gems to make cloud computing simple, by illustrating how Amazon’s S3 and SQS services can handle asychnronous work and communication between servers.

Mike Subelsky
Mike Subelsky is the lead developer of OtherInbox, an Austin-based startup using Rails to help consumers deal with email overload. He was a freelance web developer for two years before joining OtherInbox. Prior to becoming a full-time Ruby hacker, he served as a U.S. Navy information warfare officer with overseas assignments around the world for seven years. He has also worked as a civilian cybersecurity analyst for the Department of Defense and in private industry. He is the author of random-data, a open-source Ruby gem used for prototyping new Ruby applications, and two of his recipes are featured in the recently-released book Advanced Rails Recipes. He holds Bachelor and Master of Information Systems Management degrees from Carnegie Mellon University, and is a Certified Information Systems Security Professional. He blogs about Ruby and Rails at subelsky.com.

Ruby: A Year of Innovation Gregg Pollack & Jason Seifer

There’s a lot of love for Ruby, which is why there’s so much innovation and talent from the Ruby community. A single developer can release a snippet of code and a week later 100 companies may be using that code to improve their existing website. This code can impact hundreds of thousands of users.

For the past year the Rails Envy Podcast has covered the latest advancements from the Ruby community. In this talk we will attempt to sum up a year of Ruby innovation in 45 minutes, rapidly covering 30 of the most useful, ingenious, and innovative developments. We’ll let you know why the innovation is significant, how you may be able to apply it right now, and where it may take us in the future.

This talk is going to get you excited to work on your own Ruby project or contribute to one of the projects that are mentioned. Even the most seasoned Ruby developer is bound to add at least 5 new tools to their arsenal. And if that doesn’t happen, we can all have a bit of fun reminiscing and looking back on the past year of this great community.

Gregg Pollack
Gregg Pollack lives in Orlando, Florida where he runs the Orlando Ruby Users Group, writes and podcasts Rails Envy, and helps organize BarCampOrlando. He’s passionate about finding easy ways to explain complex technology using new media.
Jason Seifer
Jason Seifer is a web developer and 1/2 of RailsEnvy.com. He is a frequent speaker at the Orlando Ruby Users Group and enjoys long walks on the beach, scotch, and poetry. His programming interests include Ruby, Rails, Javascript, full text search, and Objective-C.

Using jQuery with Ruby Web Frameworks Yehuda Katz

jQuery has become incredibly popular, in large part because it makes Unobtrusive JavaScript brain-dead trivial. It’s also very small, under 25k in total, and its Ajax library is fully compatible with the way both Rails and Merb handle content-type negotiation. Its simplicity and DOM-centric approach are a perfect companion to the DRY approach taken by Ruby web frameworks.

This talk will first walk you briefly through the basics of the jQuery framework. The bulk of the talk, however, will be an intense, code-centric review of the best ways to integrate jQuery into the Ruby web framework of your choice. We will cover how to write helpers that can leverage the fact that jQuery operates on semantic HTML (we’ll use classes and other HTML attributes to provide information to a single application-wide JavaScript file). And we will cover tiny pieces of glue code that can give you all the features of the built-in helpers and RJS with even less code than you’d otherwise need.

In short, this is a crash course in how to marry the rapid development approaches that are the core of both Ruby web frameworks and jQuery to build a super-charged environment for quickly prototyping applications. And because Ruby on Rails and Merb are very similar, we’ll be able to cover both web frameworks in a single talk.

Yehuda Katz
Yehuda Katz is the author of jQuery in Action, and is a core team member of the jQuery project. He contributes heavily to DataMapper project, is the creator of the DO.rb project, as well as SalesforceMapper, a a DataMapper adapter for Salesforce. He is a contributor to Merb, an up-and-coming MVC framework written in Ruby, and is a contributing author for the upcoming Manning Publications book Ruby in Practice. He has been working with Ruby on Rails and jQuery since 2005, and is currently taking the lead on the internal control panel for Engine Yard, while helping maintain Merb.
Packet-Fu with Ruby Tod Beardsley

Packet-Fu is geared towards attendees with some experience with implementing scripts using Python’s Scapy and Perl’s Net::RawIP, and provides a gentle introduction to low-level socket programming with Ruby and PcapRub using object-oriented design concepts.

Since the Ruby reimplementation of Metasploit in 2007, Ruby has become an essential scripting language for security professionals, yet Ruby’s packet inspection, generation, and manipulation capabilities have remained fairly occult and under-documented. With the release of “Scooby,” a honeypot demasking application, Tod hopes to convert a few Python/Perl coders to Ruby by virtue of a reasonably stable and well-documented reference implementation of Ruby packet-fu.

Major areas of focus include:
  • “Yet Another Packet Factory” : Design considerations for Scooby as an alternative to Scruby
  • “An IDS in Five Lines or Less” : Packet sniffing a la ngrep/Snort/etc.
  • “Irb is the new Hping” : Interactive packet injection with irb
  • “Unmasking Honeypots” : Applied remote OS fingerprinting
Tod Beardsley

Tod has 18 years of experience with data and telephony network security, and has previously held IT security positions at TippingPoint, Dell and Westinghouse. He is a frequent speaker at industry conferences on the technical aspects of phishing, has been interviewed extensively by major press publications, and occasionally blogs at Plan B Security.


Tips and Tricks for Tweaking and Using Ruby and Rails for a Distributed Enterprise Application Francis Sullivan

This talk will cover some of of the lessons learned implementing the Spiceworks Application including:
  • acts_as_modifiable – a Rails plugin that we built that allows you to override and extend class values
  • on the fly gem updates – how we keep our rapidly changing application up to date across the world
  • performance – discuss tweaks that range from custom caching and design improvements to recompiling the ruby runtime
  • avoiding deadlock – the strain of the single threaded nature of Rails and Sqlite3
Francis Sullivan
Background: Austin Texas based Spiceworks, Inc. currently uses Ruby and Rails to implement a widely distributed free application that is integrated into one seamless easy-to-use experience that combines the tools, the information, and the advice SMB IT Professionals need to do their jobs every day. Our installation base is growing rapidly with currently over 300 thousand registered installations and 15 million devices under management.
Scientific Computing with Ruby and the GSA David Richards

I wrote the GSA to combine systems science algorithms into one framework. Systems science algorithms are things like neural networks, Bayesian networks and computational game theory. Ruby’s flexibility makes the connection between algorithms, data, and distributed processes very elegant and expandable. The need for the GSA has been apparent from both academic and business uses of scientific computing. The power of the GSA is its openness and flexibility so that current systems can be more easily analyzed.

David Richards
I have been working on the GSA for nearly a year, and I’m getting close enough to actually start planning releases of software. This morning, I started looking at conferences to possibly present the GSA in a more public way. It looks like you closed the window on accepting proposals last night at midnight. Here is a proposal anyway, in case you’re interested in having me speak in your next conference.

Rails at The University of Texas at Austin Ben Kimball

The web application infrastructure at The University of Texas at Austin is undergoing dramatic changes. For the last decade, we’ve been using a homebrew CGI gateway that interfaces with our mainframe backend. In recent months, UT has been experimenting with more modern environments: Java, Python, and Ruby among them. In this “lightning talk” Ben Kimball will present an overview of the relatively new movement towards agile platforms and methodologies on the UT campus and cover some of the challenges of using Rails in a large enterprise environment with decades of legacy systems.

Ben Kimball

Ben Kimball has been building web applications on the Mac platform since 1996, in the heady days of MacHTTPd, SSI, and WebSiphon. Later, after moving to The University of Texas in 2001, he had settled more or less comfortably into MAMP development. At the Division of Continuing Education, he was asked to train the mainframe developers on his team in more modern web development techniques, and chose Ruby as the basis for the course. A year later, the team has its first Rails application in production and many more in the pipeline.


Ruby in the Computer Science Classroom James W. McGuffee, Ph.D.

What role can Ruby play in formal computer science education? The speaker is an Associate Professor of Computer Science at St. Edward’s University and will discuss how he successfully used Ruby in an upper-division computer science course. Specifically, the brief talk will focus on the assignments given and how the choice of Ruby as a programming language allowed the focus of the class to be on the concepts and not difficulties of a particular programming language (e.g. syntax challenges).

James McGuffee
James McGuffee is an associate professor of computer science at St. Edward’s University in Austin, Texas. His research interests include the pragmatic uses of various computer programming languages. James received his B.S. in computer science from Louisiana Tech University in 1989 and a Ph.D. in computer science from LSU in 1994. James, his wife Lynn, and their son Gage live in south Austin.

James McGuffee


How not to Build a Service Mike Perham

FiveRuns launched the RM-Manage monitoring service targeting the Ruby on Rails market in 2007, but not without making plenty of mistakes in the process. This talk will discuss the social, technical and business lessons learned over the last year. In building the RM-Manage service, we experienced problems of all types:

  • Not invented here: building unnecessary technology instead of using standard technology
  • The customer as a trained poodle: making the customer jump through hoops just to use the service
  • Inappropriate technology: using the wrong tool for the job
  • Know your target market: enterprise systems management + $40/month customer = disaster
  • Failure to leverage Ruby’s strengths: not a single yield in the entire code base!

We’ve spent the last 6 months fixing these issues. This talk will examine these problems and what we did to fix them.

Mike Perham
Mike built his first open source application in 1995 using C and Win32. He’s a member of the Apache Project and has starting working with Ruby and Rails professionally after a decade in the J2EE world. He has a Masters in Computer Science and races his motorcycle in his spare time.
Ruby Anvil: The Desktop Application Framework Lance Carlson

Ruby Anvil promises to be the rails/merb equivalent framework for Ruby. By borrowing the ideas and knowledge accumulated from both frameworks, we can utilize Ruby to create yet another framework for developers and build desktop applications with ease, speed and beautiful code. In this talk I’d like to discuss some of my plans for the future of Ruby Anvil and what is currently being developed.

Ruby Anvil is bringing all the GUI toolkits available for Ruby (FxRuby and WxRuby) and attempting to build a standard DSL that will be usable in views of a desktop application. The goal is to eventually support all kinds of GUI toolkits and technologies like Swing, RubyCocoa and OpenGL. Anvil will utilize the MVC pattern so that you can delegate objects to the view in a clean way. The data will be grabbed from the database (using one of the 3 most popular ORMS- ActiveRecord, Datamapper, Sequel). It will provide a way for you to construct widgets that you can reuse as well as provide preformed widgets you can customize the attributes of using the DSL. Merb’s Modular plugin system is going to be emulated by utilizing rubygems as the package manager. In addition to having a DSL that can manipulate widgets, there will be a way to establish widgets by formatting a YAML file.

For the presentation I plan on walking everyone through creating their own Anvil application (most likely Hello World). Using the application we generated, I will show the features I’ve discussed in action as well as the current state of the implementation. Hopefully, I can get enough people interested to contribute!

Lance Carlson

I’ve been a ruby and a rails developer for over 3 years ever since I watched David’s screencast on how to make a blog in 15 minutes. I am the owner of a rails/merb/ruby consultancy called Ruby Skills. I am the creator of Ruby Anvil, a GUI framework in Ruby and am currently working with Bruce Tate to release the second edition of the book Ruby on Rails: Up and Running.


Merb: The Pocket Rocket Framework Yehuda Katz

Merb is a web framework that leverages the lessons learned from Ruby on Rails is a lean, mean package. Retaining a focus on ease of use and convention over configuration, Merb also focuses on modularity, hackability, and overall efficiency. Join as as we take a jaunt through Merb’s core. First, we’ll walk through the basics of getting started. Then, we’ll talk about the philosophy of Merb and how you can use its public interfaces to extend Merb without risking forward-compatibility.

Yehuda Katz
Yehuda Katz is the author of jQuery in Action, and is a core team member of the jQuery project. He contributes heavily to DataMapper project, is the creator of the DO.rb project, as well as SalesforceMapper, a a DataMapper adapter for Salesforce. He is a contributor to Merb, an up-and-coming MVC framework written in Ruby, and is a contributing author for the upcoming Manning Publications book Ruby in Practice. He has been working with Ruby on Rails and jQuery since 2005, and is currently taking the lead on the internal control panel for Engine Yard, while helping maintain Merb.
Resource-Driven Web Development With Waves Dan Yoder

I’d like to introduce a new Web framework that I launched back in February. It is a full-featured “next generation” framework with a variety of innovations that help make building and deploying Web apps simple. You can read all about the framework at our site, RubyWaves.com. Since launching, we’ve been written up on several blogs (including a mention in Matz’s own, which was kinda cool), including an in-depth interview on InfoQ, and attracted a strong core team. It is currently being used experimentally within YellowPages.com, where I head up our strategic research & development solutions group.

Ultimately, our objective is allow developers to write less code to implement new features, reuse existing code more easily, easily deploy high-performance Ruby Web apps using a variety of architectural models, and do it as much as possible in “the Ruby way”.

This session explore the motivations behind Waves and walk through building a non-trivial Waves application (beyond what is covered in the Web site tutorial) highlighting some of the key features of the framework, such as request lambdas, just-in-time resources, and inheritable configurations. In the process, we will introduce the concept of resource-driven development, which supports the Sun MVC model, but also allows developers to move beyond it and focus on REST-style resource-centric development. We will also touch on some features that are currently edge, including Layers, a Rubyesque mechanism to reuse features across apps, multi-application support, and true threaded request handling running on JRuby.

Dan Yoder
Dan Yoder has two decades of experience in virtually all aspects of the software industry, including extensive experience in enterprise and consumer applications architectures. He currently manages development for the nascent R&D group at YellowPages.com in Glendale, CA. He is a co-author of the popular DateJS library and author of the Ruby gems AutoCode, Functor, and Waves. Dan has worked in Ruby for three years and it was Ruby that brought him back to his programming roots. He somehow graduated in 1989 with a BS degree in Computer Science from the University of Michigan. His hobbies include music production, basketball, and boogie boarding in the Santa Monica surf.

Tactical Design Glenn Vanderburg

I’ve noticed that when people try to improve the state of the art of software design, they try to think bigger: big patterns, big principles, discussions about classes and modules and components, layers and tiers. Last year I heard a talk called “Strategic Design”.

But I’ve personally had a lot better luck thinking small.

In this talk, we’ll explore just a few small-scale, tactical design principles, and how they can help you and your team build better systems.

Glenn Vanderburg
Glenn Vanderburg works at Relevance, Inc., where he helps customers build great systems with Ruby. He has been working with Ruby since 2000, and thinking about good design for a lot longer than that. He lives in the Dallas area.
Ruby without Borders Matthew Todd

Having worked with RoleModel Software in Raleigh, NC, I’ve since moved to Tanzania, East Africa, where my wife runs a home for street children. I’m continuing to develop software for local organizations and have started pairing with a local guy who just graduated from university.

There are a number of non-profits doing worthwhile work here, but most of them are too understaffed and underskilled to address their computer needs. At the same time, people looking to write software have very little opportunity to learn from skilled developers.

It’s a nice intersection of low-hanging fruit opportunities: we can make big differences both to the organizations we help and to the guys we program with just by putting together a small Rails app with them.

It’s kind of a wild idea, but if you’re free to break away for a few weeks, consider making the trip. Climb Kilimanjaro, visit the Serengeti, relax on Zanzibar, and spend a couple of weeks programming with me and a couple of Tanzanian guys. We’ll have fun.

Matthew Todd
Matthew Todd lives in Moshi, Tanzania, at the base of Mt. Kilimanjaro, where he pairs with local programmers to build software for hospitals and non-profits. He also freaks out his mom with the occasional scary insect photo on http://matthewtodd.org.
Ruby and Virtual Teams Wynn Netherland

As a refugee of the cubicle jungle where the project status overlords patrolled the aisles, one of the most exciting aspects running a Ruby consultancy is using all the neat tools keep a virtual development team at cruising speed. This talk provides a quick overview for many of the (often free) tools available to distributed Ruby teams and how you can integrate them to improve communication and efficiency.

Source control

While Subversion has been the standard for many years, there is a groundswell of support for Git. Originally created by Linus Torvalds for managing the Linux kernel, Git has become popular due to its improved branch management and merging support as well as its distributed architecture which enables each developer to have local versioning (for working offline or on larger efforts in parallel to the rest of the team). The launch of Github (think MySpace for developers, Git has exploded in the Ruby community offering free hosting for Open Source projects and even a Gem Server for hosting uby Gems). Lighthouse from the guys at AlternateIdea is another popular Rails-based issue tracker and now the official tracker for Rails core.

Issue Tracking

While there are many issue trackers out there, an upstart Open Source Rails-based project named Redmine offers powerfully extensible issue tracking and source control repository integration. Rubyists can also extend the application with plugins.

Time keeping

SlimTimer and Freshbooks offer powerful tools for team members to log time and clients to see real-time project burn rates.

Tying it all together, real-time communication and workstreaming

For constant, asynchronous communication it’s hard to beat Campfire from 37 signals. Free for up to 4 simultaneous chatters, Campfire provides a quick-and-easy way to communicate with team members and clients without the formality or noise of email. The best part about Campfire is the Tinder gem from the boys at Collective Idea. Tinder is an unofficial api for Campfire that allows you to announce source control commits, builds, and other work events directly into the chat room. GitHub offers Tinder/Campfire support out of the box. Just enter your Campfire room configuration and each SCM commit will be announced in your room. Tinder can be called from Capistrano to do the same thing for each deployment event. GitHub also supports Twitter and Lighthouse integration.

Wynn Netherland
Wynn Netherland is Founder and Pixel Pusher at Squeejee, a Texas-based web development shop. Ruby helped save Wynn from the dark years of .NET, making it fun to code on the web again. When he’s not slinging front-end code, he can be found on the front porch strumming his six string.
What’s Ruby doing in an Java IDE like NetBeans? Lots! Jeffrey L. Taylor

What’s Ruby doing in an Java IDE like NetBeans? Lots!

Support for Ruby in the NetBeans IDE is growing as well as use of NetBeans among Ruby and Rails programmers. What does it bring to the table that an editor like Emacs, vi, or Textmate plus a bunch of terminal windows doesn’t? This is a lightning tour of its pluses and minuses.

Jeffrey L. Taylor
Jeffrey L. Taylor has been programming for fun for 40 years and for profit for 35 years. From humble beginnings with a mechanical computer, time in the Homebrew Computer Club and a guest appearence in the crowd scenes at the first Linux World Expo, he has built, bought, and programmed computers big and small. He currently is doing freelance writing and Ruby on Rails programming after decades of C/C++ with sidetrips through university teaching.