Open Source Projects
I am super passionate about developing great software. I have noticed that software can't be great without collaboration and feedback, which is one reason why I actively contribute to the Open Source community in my spare time on a number of projects. Check them out:
Selenium Grid
I created Selenium Grid, a tool which dramatically reduce the feedback cycle for web acceptance testing.
Traditional functional and acceptance web testing have extremely slow feedback cycles which tremendously reduces their value and capacity to keep up with efficient development cycles. Selenium Grid solves this problem: The grid transparently distribute your web testing infrastructure across multiple machines and processes so that you can run Selenium tests in parallel and get fast results.
In the field, Selenium Grid has transformed web testing suites requiring 3 hours plus to run into sub-10 minutes builds that provide quick and accurate feedback while requiring minimal maintenance.
Learn more about Selenium Grid...
Caller for all Threads
caller_for_all_threads is
a patch for the Ruby interpreter which provides a
way to collect the stack traces of
all the threads of a Ruby application.
Without this patch the official Ruby interpreter
(M.R.I 1.8) only provides the stack of the current
thread, which, in my experience, makes
troubleshooting Ruby applications in production a lot more
challenging than it needs to be. With caller_for_all_threads,
just send a signal to your Ruby process to
capture all your application stacks!
Learn more about caller_for_all_threads...
System Timer
David Vollbracht and I pair programmed System Timer, an alternative timeout library for Ruby application.
The default Ruby timeout library (timeout.rb) is based on
green-threads and is not 100% reliable. In particular, it is
guaranteed to not work when you are issuing system
calls that can cause your Ruby process to sleep for a period of
time that is longer than your timeout.
This caveat led to significant production problems in a professional Ruby on Rails project David and I were working on, so we implemented System Timer.
System Timer provides guaranteed timeouts for Ruby applications — even when these applications cross boundaries and go down to the system level. The project sysadmin has been enjoying nights of uninterrupted sleep ever since.
Learn more about System Timer...
Deep Test
DeepTest is an amazing
parallel and distributed test runner for Ruby. It
alleviates the problem of slow functional tests, especially for Ruby on Rails applications:
DeepTest takes advantage of your fancy dual-core laptop and spawns
multiple processes to transparently run your tests in parallel
(whether you are a fan of Test::Unit or RSpec). If that's still
not fast enough for you, well, we've got that covered too: DeepTest can
also distribute the tests across multiple machines. Set up a
DeepTest farm with a couple of machines for your
team and enjoy sub-minute builds!
DeepTest was created by an insanely talented trio: zak Tamsen, Dan Manges and David Vollbracht who wrote the vast majority of the code. I occasionaly contribute ideas and patches though, especially since DeepTest is Selenium Grid's test runner of choice!
Selenium Remote Control
I am a core contributor to Selenium Remote Control, an extremely popular tool dedicated to functional and acceptance testing of web applications. Selenium Remote Control automates user interaction with a web browser — launching the browser, opening a url, clicking on a button, entering form content — and can also check the state of the current page — retrieving the value of a form field, checking the page title, checking whether some text is present, etc.
Learn more about Selenium Remote Control...
Selenium Ruby Client
I am the maintainer of selenium-client the
official Ruby client for Selenium Remote Control.
With Selenium Ruby client you can write idiomatic Selenium tests in Ruby, harnessing for your web acceptance test the power of an extremelly concise and expressive programming language. Selenium Ruby Client also comes with out-of-the box and art-of-the-field reporting support for RSpec: generated reports not only include the client stack traces but also capture the HTML state of the page, in-browser page screenshots, system screenshots, and a snapshot of the Selenium Remote control logs. All this information make troubleshooting build failures a breeze, especially when you run your tests on a distributed infrastructure (e.g. using Selenium Grid).
Learn more about Selenium Ruby Client...
XRay
Coming soon...
