Thursday, December 31, 2009

Announcing EventMachine CouchDB (em-couchdb)

I thought it will be a good idea to end the year with a bang.. So here is the announcement for an awesome client for CouchDB based on EventMachine.

People who follow me on twitter (@sai_venkat) know that I am crazy about things like EventMachine, node.js, eventlet and NoSql databases. This is one of my attempts to dive into the NoSql world.

I was looking for clients for CouchDB in Ruby and found most to be using Net/Http and blocking in nature. So I began my quest of writing an asynchronous non blocking awesome EventMachine based CouchDB client inspired by EventMachine::Redis client.

Here is a sample code to enjoy... It creates a database, saves a document inside it, reads the doc, deletes it and then deletes the database.

require "rubygems"
require "eventmachine"
require "../lib/em-couchdb"

# Need to write test for updating doc...
# But before that write example test framework :)
# Also need to implement get all docs in db
EventMachine.run do
couch = EventMachine::Protocols::CouchDB.connect :host => 'localhost', :port => 5986
couch.get_all_dbs {|dbs| puts dbs}
couch.create_db("test-project")
couch.get_all_dbs {|dbs| puts dbs}
couch.get_db("test-project") do |db|
puts db
couch.save(db["db_name"], {:name => "couchd", "description" => "awesome"}) do |doc|
couch.get(db["db_name"], doc["id"]) do |doc|
puts doc
couch.delete(db["db_name"], doc) do
couch.delete_db(db["db_name"]){
EventMachine.stop
}
end
end
end
end
end


The current version supports database manipulation like creation and deletion and document manipulation.

Looks cool but still there are things to improve (a lot of things actually). One to start off with is the Continuation Passing Style.

So the current response to em-couchdb from one of the committers of CouchDb is ...

"em-couchdb looks right-on. Streaming JSON parsing would let large views and docs be processed without memory bloat."

Please feel free to fork and contribute and happy hacking :).

The code is available at http://github.com/saivenkat/em-couchdb

Wednesday, September 30, 2009

ChromeWatir and FireDriver updates

Latest News - ChromeWatir is in github now.

I have finally managed to move ChromeWatir to Github at http://github.com/saivenkat/chrome_watir. I was planning to move to Github as the first Watir project and now I am the last. Anyhow I am now working towards using Chrome's test framework to make the integration with Chrome more stable.

The other project I have been working on is FireDriver (FireWatir + WebDriver). If anyone is wondering why I am doing this please read my blog post on this. In short, this is an attempt to replace the legacy Jssh code with something stable and I am using WebDriver's XPCom based core to do it. The code is at http://github.com/saivenkat/firedriver.

If anyone is interested in contributing, please feel free to fork :).

Sunday, September 6, 2009

Paranamer 2.1 released

Paranamer gives you a String array of parameter names for a Java method:

Method doFoo = Foo.class.getMethod("doFoo",
String.class, String.class);

String[] paramNames
= paranamer.lookupParameterNames(doFoo);

It is very embeddable and can either retrieve this parameter information from a class' debug tables, or from an added static field (added by QDox and ASM).

If you are writing a Java IDE, as web-framework, a SOAP transport, a DI Framework (etc), you are going to want to depend on Paranamer (and maybe consume the 27K or less of bytecode into your jar using JarJar or Maven's Shade).

This release updated QDox and ASM dependencies and added a NullParanamer implementation (NullObject pattern).

See the project site.

Saturday, September 5, 2009

QDox 1.10 released

QDox parses Java source (much like Javac does) but spits out an object model rather than bytecode and does not process method bodies.

QDox remains widely used, and a very neat demonstration of highly decomposed Java project. It is beautifully tested with small snippets of Java code, making tests very readable.

Since Robert Scholte came on board as a committer, QDox has seen it's outstanding feature requests and bugs reduced with each release. The latest is 1.10 leaving only a couple of outstanding minor bugs and a few requests and tasks for the team.

With the next release we may clear both remaining bugs, and leave only a wish-list for a 2.0 version.

Check out the project site

Tuesday, June 30, 2009

CruiseControl.rb 1.4.0 released!

We are happy to announce the release of CruiseControl.rb 1.4.0. This release adds support for three distributed version control systems - Git, Mercurial and Bazaar - in addition to Subversion.

CC.rb remains easy to install, pleasant to use and simple to hack. Since the source has now moved to a git repository, it is easier than ever to fork and contribute. We're looking forward to your pull requests!

Downloads are available from both Rubyforge and Github.

Friday, May 29, 2009

Announcing a new release of SWTBot

You can download the latest and greatest from the SWTBot download page.

A listing of some of the new features available:

Bug 263036 - SWTBot finally has an icon that was missing since two years!
Bug 269919 - Added support for toggle buttons
Bug 271246 - Better support for handling editors. This should serve as a good start towards providing support for multipage, forms based editors
Bug 271132 - Using Display#post() to support sending native click events instead of fake events. This is still work in progress and not all widgets support native events yet.
Bug 273624 - Use native keyboard events for typing. SWTBot currently defaults to using AWT robot. SWT's Dispay#post() is available as well -- it is however buggy across platforms and swt versions. Since SWTBot uses native keyboard events, it needs to understand various Keyboard Layouts.
Bug 267189 - Support capturing screenshots of widgets.
Bug 277093 - Support for Link widgets.

There are also a lot of minor bugs that were fixed in this release.

Wednesday, May 27, 2009

Selenium 1.0 released!!

Well, something that ThoughtWorks started about 5 years ago is now reaching the formal & final 1.0 state.  It is of course already an open source success despite being not 1.0 yet.  

We have had some 20 ThoughtWorks staff work on it over the years, and as many non-ThoughtWorks folks, but principal amongst developers is Jason Huggins who started "Selenium Core" in 2004 when he was at ThoughtWorks.

To herald this wonderful moment, we also have a new documentation set, that is a 10x improvement over the previous set, and has been almost entirely contributed by the user community.

Going forward the Selenium team thinks it will get busy with 1.0.x and 1.x releases, not withstanding the effort already in place for Selenium 2.0 (nee WebDriver) also by a former ThoughtWorker, Simon Stewart. 

There is a Meetup  event in play right now. Watch out for Twitter tags #sfse and more formal event snapshots and write-ups.