OSCON 2006

2006-08-04 17:01:00

Our presentation for OSCON 2006 on Cosmo/Scooby went fairly well it seems, especially given how much content we were trying to stuff into such a short amount of time. Kevin Yank over at SitePoint did some really nice reporting on the presentation for the SitePoint blogs.

Here's a quick rundown of the stuff that stuck in my mind from the tutorials and sessions.

Rails Guidebook (tutorial) (Dave Thomas, Mike Clark)

This was in one of the larger rooms, and was (predictably) quite full. It was mostly a solid, basic, step-by-step intro to Rails -- naturally including the standard Rails demo of rapidly building a basic application.

There were also some bits beyond the basics that were pretty interesting:

  • Migrations -- a procedural way (in Ruby code, natch) to create and modify your database schema. I prefer sticking with the native database tools like pg_dump, but Migrations likely work better for a team, or if you don't want to be tied to a specific DB.
  • Model finder methods -- seeing some of the different ways to do it is helpful for someone like me who tends to use find_by_sql as a crutch.
  • Many-to-many associations -- a new way to manage this called 'through associations' that lets you hang metadata about the association on it
  • Generating XML -- using builder templates with 'rxml' files
  • Simply RESTful -- routing plugin that maps REST verbs to the normal Rails CRUD actions.

(No slides online.)

Testing Web Apps (tutorial) (John Paul Ashenfelter)

Covered both functional testing with Selenium, and load testing with Grinder.

  • Selenium is a full-fledged testing framework for Web applications that's free and open source (FOSS), and written in JavaScript and HTML. It was pretty cool to see his build script launch Firefox automatically and whiz through the tests.
  • Grinder is a free Java-based load tester. You can install and run it on multiple machines, and it can coordinate the tests and record the results in one central location. It also lets you record tests using a browser rather than scripting them by hand.

Slides are available online here.

Big Bad PostgreSQL (Theo Schlossnagle)

This talk was on converting a large (over 3 terabytes, largest table is 1.8 billion rows) data warehouse from Oracle 8i to PostgreSQL. They chose Postgres over MySQL because Postgres has had the kind of advanced features they needed for a very long time.

They needed (and were able to hack PostgreSQL to get) the following features:

  • Data partitioning (spreading tables over multiple drives)
  • Large selects (50-million-row return sets, over 100GB
  • of data)
  • Incremental COMMITs for really, really long queries
  • Replication

The conversion saved them $500,000 USD in licensing costs (on $100,000 of extra labor costs, still a decent chunk of change in savings).

Slides are available online here.

Ajax Optimization Techniques (Kevin Henrikson)

Covered the 'three Cs' of Ajax optimization:

  1. Combine: Put all your JavaScript and CSS files together into a single file (or a few files) instead of loading 12 or 15 different files.
  2. Compress: Use something like Crockford's JSMin or Dojo's ShrinkSafe on your JavaScript, and gzip your JS and CSS files, or use mod_gzip or mod_deflate.
  3. Cache: Cut down on the number of requests to the server for static images and frequently used resources.

Slides are available online here.

TimeTravel Tables in PostgreSQL (A. Elein Mustain)

Showed how to use timestamps to keep an audit trail of all changes in your DB. With this technique, you never actually delete records, you merely give them an end date. Multiple copies of a record (again, with timestamps for each one) also allow you to track edits. (This is a fairly normal approach, especially in 'validated' environments, or industries which are regulated by the government.)

The value of using Postgres here is in the advanced features like triggers that you can use with your deletes and updates to offload the work needed to maintain this 'time travel' system -- rather than forcing your app logic to keep up with all of it.

You can also use PostgreSQL's views to query the database for only the current data, or write procedural functions to query the state of the database at a particular point in time in the past.

Slides are available online here.

When Interface Design Attacks (Amy Hoy)

I was amazed to see how packed this session was. They propped the doors, and people were actually standing around outside the door trying to listen. It was really good to see that so many developers are looking for a way to make their interfaces more usable.

Slides are available online here.

Web Heresies: The Seaside Framework (Avi Bryant)

The Seaside Framework is an interesting departure from other mainstream Web-app frameworks in a number of ways:

  • It's written in the Smalltalk language.
  • It blows off traditional MVC templating in favor of generating markup programmatically directly in the application logic.
  • It keeps all session state in memory instead of serializing it -- which means you can store callback functions and closures in the session, and even use continuations (at the cost of requiring sticky sessions, lots of memory, and inability to recover session data in the event of server failure).

(No slides online.)


This is the blog for Matthew Eernisse. I currently work at Yammer as a developer, working mostly with JavaScript. All opinions expressed here are my own, not my employer's.


Previous posts

All previous posts ยป

This blog is a GeddyJS application.