Author Archive for ‘ Eric Pugh’

Scrum War Stories Part Deux

Posted Friday, June 20th, 2008 by Eric Pugh

Come join Eric Pugh and other local and regional Scrum practitioners for drinks and dinner where
we’ll hash out real world issues that face Scrum Teams. We’ll be talking about what made us start using Scrum, the cultural challenges we’ve had, and how we measure our results. We’ll share some
stories about wins and losses since we last met in May 2007!

Please RSVP to epugh@opensourceconnections.com so I can make sure we have an appropriate sized room at West Main.

When: July 24th from 5:30 to 8 PM
Where: West Main Restaurant http://tinyurl.com/5kdphs
Who: Anyone who is using Scrum, thinking about Scrum, or quit using Scrum!
Help: Eric @ 434-466-1467

Relaunch of Charlottesville Dot Net User Group

Posted Tuesday, May 20th, 2008 by Eric Pugh

Last week I decided to learn a bit more about .NET, and attended the relaunch of the Charlottesville .NET User Group who was featuring Geoff Snowman talking about Windows Workflow Foundation.

I learned a couple of things that I wanted to share:

  • A great starting point for learning about WF is a demo site at http://dinnernow.net/
  • meant for developers, not an enduser/business analyst product. “It’s just a DLL” - Geoff Snowman
  • SharePoint heavily leverages the WF tool
  • Now being used by 3rd party folks.. K2 builds an enduser focused workflow tool. They have ditched their engine in favor of WF.
  • Workflow is a higher level of abstraction.. You can do it in C#, but why would you want to be in the weeds?

A big thank you to Matt Sposato for getting the relaunch of ChoDotNet started! He did a great job getting the meeting going, and with ~40 folks, I look forward to seeing the momentum maintained!

beCamp 2008 Rocked!

Posted Tuesday, May 13th, 2008 by Eric Pugh

Well, the thank you notes to sponsors and volunteers have been written and mailed, the venue has been cleaned up, and the accounting for funds spent has been dealt with. beCamp 2008 is officially complete, and what a wonderful experience it has been!

I want to thank the over 90 geeks that showed up to spend 36 hours sharing what they know, learning from each other, and pitching in to make beCamp flow smoothly. I know of no other approach to conferences that has such high signal to noise ratio with such a low level of administrative overhead. I’d say it turned the Pareto Principle on it’s head, and 80% of the effort came from 80% of the participants!

Thank you very much beCampers, and see you next year!

Agile-Friendly Test Automation Tools/Frameworks

Posted Thursday, May 1st, 2008 by Eric Pugh

I don’t normally post about another blog article, but Agile-Friendly Test Automation Tools/Frameworks by Elisabeth Hendrickson is spot on about the challenges of Test Automation in an Agile world and well worth reading.

Test Obsessed arm band

A couple year’s ago I worked on a LIMS system, and we had extensive regression tests written using Selenium. We used the Selenium HTML script, which was great, but maintaining them was a real challenge as over time we renamed buttons, reorganized menus, and were constantly fixing broken regression tests. One thing that I would disagree with Elisabeth on is that the maintenance burden for regression tests goes down if you are running them constantly. If you run them constantly, and the developers are responsible for them passing they same as unit tests, then that keeps them up to date, and adding more value then they might otherwise. But I agree, they are a burden, and sometimes really only worth it for certain high risk/high error portions of your application. Unfortunately putting something like Mercury Interactive based tests under CI is hard, and Selenium isn’t that much easier…

A lot of my interest about writing “Stories” using the RSpec framework comes directly from trying to make the tests easier for people to read, and separate out the logic of clicking on a button from the desire to perform an action that would require clicking on that button!

I met Elisabeth at CITcon 2007, and I still wear the Test Obsessed wrist band she gave me!

Trip Report: Shenandoah Ruby User Group

Posted Wednesday, April 30th, 2008 by Eric Pugh

Last night Joe Meade and I road tripped up to the Shenandoah Ruby User Group (ShRUG) meeting in Harrisonburg, Virginia, hosted at the RosettaStone offices.
Alex Herron kicking off ShRUG meeting
We went there to find out why there is a hotbed of Rubyists in rural Virginia! There were 20+ people at the meeting which was hosted in a conference room at RosettaStone. RosettaStone sponsors the group, kindly providing great sandwiches and soft drinks.

This week’s meeting was based around a Lightening Talk approch, so I of course spoke up and said I’d be happy to do one!

Lightening Talk 1: Learning Rails
Lynda.com is a good resource for beginners to Ruby and rails.. Most books deep dive into Ruby very quickly, and this site provies some simpler materials. Also some vidoes, including free ones…

Heroku.com is an online IDE plus platform for Ruby… So don’t fight with the installation, just go through web interface to get that first hit of coding Ruby on Rails!

He had setup an account for us, the username is shrug.friends@gmail.com, and I have the password, however not sure if he wanted to publish it.. Email me and I can share it. You can see the deployed application at http://shrug.heroku.com/, right now it’s just an empty shell.

The idea of using Heroku as a learning tool really worked for me. I know anytime I teach someone Ruby on Rails we have the initial battle in getting SQLLite to work, or the right gems in place. And I always have to say: trust me, the rest is much easier. Especially when showing some on Windows Ruby for the first time… With Heroku they can get something up quickly, and get over the “I Suck” stage quicker.

I didn’t catch the name of the presenter…

Lightening Talk 2: Open ID
I talked about OpenID, starting with Code Monkey, because I like the line about “Maybe manager wanna write goddamn page himself” which is at second 28 of the clip. I did a demo of how HighTechCville uses OpenID, and showed a bit of the Ruby on Rails OpenID plugin, and how easy it is to integrate.

Lightening Talk 3: Prototype
“Snuggs” did a presentation about how simple Prototype is, and showed us how he used it to quickly create a gallery of pictures that allows paging via Ajax and Javascript that is on his media site MonstarOnline The photowidget javascript all based on Prototype is at http://www.monstaronline.com/global/ecma/photowidget.js.

Lightening Talk 4: IRB
JeffMo talked about what IRB is and what we can use it for… He did a great session showing IRB and demonstrating how you can do things like spelunk what methods are available on your objects:

s = String.new
s.methods

or search for a specific method

s.methods.grep /reverse/

We also learned a bunch about how to use method_missing to catch methods that aren’t defined, and make intelligent decisions on what to do with them, as well as defining methods on the fly.

Lastly we saw a Domain Specific Language for playing Tic-Tac-Toe, all using dynamic methods and method missing! You can download the files and try it yourself from JeffMo’s site: http://www.jeffmo.us/shrug/
.

So, to sum up, while the Charlottesville RubyCodeJam has beer and cool shirts, and ShRUG has softdrinks, clearly we’re doing something wrong as they have double the turnout we usually do! It was great to meet some new people, and I hope some of them make it down to beCamp, which is THIS weekend!

Adding timeout to Net::HTTP.get_response

Posted Thursday, April 24th, 2008 by Eric Pugh

One of the parts of Ruby that show’s the languages lack of maturity is the Net::HTTP module. There are a lot of magic techniques that people have learned to make it work, and some methods work one way, and others differently.

For example, if you want to put a timeout on a GET request (which you SHOULD have!), then you have to use two different techniques for Net::HTTP.get and Net::HTTP.get_response. The difference between these two methods is that get_response is a class method that returns an Net::HTTPResponse while get is an instance method that returns a string. And get_response doesn’t support passing in timeouts of any kind! ARGH.

Apparently no one has really tried to put a timeout on get_response because the only post I could find was this one. And the code just looked very complex and more hackish then I liked.

In the solution I came up with, I am looking for Favicon’s at various websites. And if a website doesn’t actually exist (due to bad data!) then it can take ~160 seconds to timeout!

require 'net/http'
require 'uri'

url = URI.parse('http://www.opensourceconnections.com/favicon.ico')
#url = URI.parse('http://www.medicalrobotics.com')
http = Net::HTTP.new(url.host, url.port)

http.read_timeout = 5
http.open_timeout = 5
resp = http.start() {|http|
http.get(url.path)
}
puts resp.kind_of? Net::HTTPResponse
puts resp.code
puts resp.body

By wrapping my call to http.get in an http.start{} block, I get the timeout ability of http.get with the return of an HTTPResponse that Net::HTTP.get_response normally provides.

beCamp 2008 is May 2nd & 3rd

Posted Wednesday, April 16th, 2008 by Eric Pugh


beCamp 2008 is almost here! May 2nd and 3rd is just two weeks away!

If you’re a geek in or around the Charlottesville metroplex or even if you’re merely tech-curious, this is the event you don’t want to miss. beCamp is Charlottesville’s version of the BarCamp unconference phenomenon—organized on the fly by attendees, for attendees. Realizing that the most energizing parts of any tech conference are the ad hoc conversations that take place in the hallways between the sessions, beCamp facilitates these types of interactions for an entire event.
(more…)

OSC Team Members at UVA LSP Conference

Posted Wednesday, April 16th, 2008 by Eric Pugh

Yesterday four of us from OSC got to spend the day speaking to the UVA Local Support Professionals community on a series of development topics, and learning about the challenges that the UVA LSP folks face in supporting their local departments.

A big thank you to Jim, Arin, and Caleb for joining me at the LSP Conference!
(more…)