Day One of the Craftsmanship Swap:
Today Micah and I paired on test driving a user interface through FitNesse. The UI in question is a JRuby rich client application that had reached the point where they wanted to have some acceptance tests that fire it up, click around, and assert that things are where they should be. We used DRb to stow away a reference to the application when it started up and then we could make the application dance. If you haven't used DRb it's yet another deceptively simple and powerful Ruby tool. Check this out:
~ $ irb
>> require 'drb'
=> true
>> object = "hello"
=> "hello"
>> DRb.start_service('druby://localhost:9001',object)
=> #
>> ref = DRbObject.new(nil, 'druby://localhost:9001')
=> #
>> ref.size
=> 5
>> ref.to_s
=> "hello"
Stick any object in and then another Ruby process can pick it up and do stuff with it. Neat.
I noticed 8th Light has the same desk space problem as Obtiva in that we have an open workspace, but people tend to settle into one space. And then they let all their personal junk pile up. Where do you keep all the personal products (toothpaste, dumbbells), mementos (awards, action figures, ninja swords (interesting side note: Every 8th Lighter got an engraved ninja sword for Christmas)), and other detritus (old specifications, note cards) when people don't really have a desk of their own? When I went up to Atomic Object a few weeks ago (I gave a talk at their XP West user's group) they had a bunch of cubby holes, like you might see in a school, big enough to toss a backpack into. At least it got the backpacks off the floor. Personal space is hard when you're committed to pairing. I've seen situations where developers had their own desk in addition to working in a 'war room,' but that can be tricky as when you're not used to the war room it can be tempting to sneak off to your desk so you can 'get some work done.' Phone calls can also be a problem. I love the pairing and the war room environment and there's no way I would have learned as much as I have without them, but they do present some unique problems.
I finished up the day having a good time ping-pong pairing with Eric Smith on a large rails app. It's funny how quickly you can pick up the spirit of an application and contribute when conventions are followed and there's an expert engaging you at every turn. Sure, the first 30-45 minutes I was asking a lot of questions but after that I was adding something to the process -- it really does surprise me every time.
Subscribe to:
Post Comments (Atom)
About Me
Backstop Solutions (current job)
Obtiva (old job)
ThoughtWorks (old job)
Object Mentor (apprentice)
Apprenticeship at Object Mentor Blog
Obtiva (old job)
ThoughtWorks (old job)
Object Mentor (apprentice)
Apprenticeship at Object Mentor Blog
Blog Archive
- December 2010 (1)
- August 2010 (3)
- July 2010 (5)
- June 2010 (4)
- May 2010 (4)
- August 2009 (21)
- July 2009 (22)
- June 2009 (19)
- May 2009 (12)
- April 2009 (12)
- March 2009 (4)
- January 2009 (1)
- December 2008 (1)
- November 2008 (12)
- October 2008 (2)
- September 2008 (10)
- August 2008 (5)
- June 2008 (3)
- May 2008 (3)
- April 2008 (2)
- March 2008 (3)
- February 2008 (2)
- January 2008 (5)
- November 2007 (1)
- October 2007 (1)
- September 2007 (1)
- August 2007 (6)
- July 2007 (3)
- June 2007 (4)
- May 2007 (5)
- April 2007 (4)
- March 2007 (10)
- February 2007 (13)
- January 2007 (7)
Categories-
- Code (61)
- Apprenticeship (57)
- Rails (53)
- commentary (48)
- Ruby (31)
- RSpec (20)
- Metrics (17)
- metric_fu (13)
- Flog (9)
- complexity (9)
- testing (9)
- RailsConf2009 (8)
- git (8)
- RubyConf2008 (7)
- test_coverage (7)
- Bugs (6)
- Mocking (6)
- craftsman_swap (6)
- not_code (6)
- Agile2009 (5)
- Amazon (5)
- refactoring (5)
- ActiveRecord (4)
- JRuby (4)
- Linux (4)
- LoneStarRubyConf2008 (4)
- RailsConf2010 (4)
- Saikuro (4)
- XP (4)
- churn (4)
- design (4)
- Fixtures (3)
- LoneStarRubyConf2009 (3)
- Math (3)
- Obtiva (3)
- RailsConf2007 (3)
- Rake (3)
- Rcov (3)
- RubyKaigi2010 (3)
- RubyMidwest2010 (3)
- Svn (3)
- legacy_code (3)
- Flay (2)
- GLSEC (2)
- Mingle (2)
- SQuiD (2)
- TextMate (2)
- Windows (2)
- WindyCityRails (2)
- javascript (2)
- lean (2)
- Backstop (1)
- Bundler (1)
- DUST (1)
- EVDO (1)
- GC (1)
- IO (1)
- MacRuby (1)
- MongoDB (1)
- OSS (1)
- OSX (1)
- Routes (1)
- RubyWorks (1)
- Tomcat (1)
- attachment_fu (1)
- cache-fu (1)
- citcon (1)
- consulting (1)
- craftsmanship (1)
- css (1)
- db (1)
- iPhone (1)
- interview (1)
- mac (1)
- memcached (1)
- memprof (1)
- oracle (1)
- ord_sessions (1)
- ostatus (1)
- pairing (1)
- redis (1)
- restful_authentication (1)
- singleton_class (1)



2 comments:
I love the idea of cubby holes and brought that up at Obtiva. Maybe we should play musical chairs every weeks so that every monday you move over one seat.
yeah, well, the really painful part of DRb only rears its head when you actually try to D(istributed) deploy it! Getting it to work over UDP broadcast discovery is a royal pain! :-S
Post a Comment