Search the web
Sign In
New User? Sign Up
xpstl
? Already a member? Sign in to Yahoo!

Yahoo! Groups Tips

Did you know...
Real people. Real stories. See how Yahoo! Groups impacts members worldwide.

Best of Y! Groups

   Check them out and nominate your group.
Having problems with message search? Fill out this form to ensure your group is one of the first to be migrated to the new message search system.

Messages

  Messages Help
Advanced
Messages 2124 - 2153 of 2182   Newest  |  < Newer  |  Older >  |  Oldest
Messages: Show Message Summaries   (Group by Topic) Sort by Date v  
#2153 From: Mani Swaminathan <rupmans@...>
Date: Mon Feb 4, 2008 12:32 pm
Subject: Ruby on Rails
rupmans
Offline Offline
Send Email Send Email
 

I have seen many post here for Ruby on Rails. Our company is planning to make a key decision to develop our software in RoR or PHP.
I am really concerned with RoR hosting providers and I did read something regarding performance issues with RoR in www.rubyonrails.org site.

  •  Can anybody clarify whether this is true?
  • What precautions do I need to take before making such a decision, though I love to develop stuff on Ruby on Rails (gained practice as an enthusiast): basically the reality check?
  • Who is a recommended hosting provider?



#2152 From: "jennifershedd" <jennifershedd@...>
Date: Mon Jan 28, 2008 9:37 pm
Subject: Agile Coach/Engagement Manager Opportunity
jennifershedd
Offline Offline
Send Email Send Email
 
Rally Software Development (www.rallydev.com) located in Boulder, CO
is a dynamic, growing company that provides software-driven
enterprises with the knowledge, coaching and tooling needed to
succeed with Agile development practices.

Due to our success, we are seeking an experienced and motivated Agile
Development Consultant and Engagement Manager. An ideal candidate
would have experience and interest in extending skills in the
following areas.

Qualifications:

• Consulting background with process, change management with
Agile preferred– you will be working with multiple clients through on
site collaboration and remote support
• Coaching Agile project teams - bringing experience with
methods such as Scrum, XP, Lean, FDD, DSDM, or Crystal.
• Vendor and Engagement management experience - experience
leading consulting engagements, managing scope, time, cost, quality,
risk, and stakeholder expectations.
• Solutions selling experience - Identifying new areas of
opportunity and proposing
potential solutions.
• Training experience – we develop our own collateral in close
partnership with leading experts in the agile community and deliver
training to customer teams.
• Experience in leading technical teams - coaching, teaching
and guiding people in the various roles in a project driven
organization.
• Facilitation skills in leading planning meetings, reviews,
and retrospectives.
• Excellent presentation skills -
• Willingness to travel 50%– we're a company that is expanding
within the US and beyond.
• 7 years or more experience in technology/software
organizations.
• Certified ScrumMaster (Practitioner or Trainer), Certified
Facilitator, or equivalent are all plusses.

Locations:,  Anywhere in the continental US near a major airport.

Culture: At Rally, we value teamwork, an ability to meet commitments,
skill, and a successful track record.  Our company is comprised of
people who are passionate about the software industry and the success
that implementing Agile Development practices can bring our clients.
We are looking for those who share our passion and the desire to work
with the best and brightest.

In our Professional Services organization we actively encourage
speaking engagements and participation in agile committees. Our
Coaches have been key-note speakers, organizers of agile conferences
and authors of articles and whitepapers.

We offer excellent compensation for proven performers, stock options
and generous benefits with an exceptional opportunity to grow.  If
you are interested in being considered or would simply like more
information about what it's like to work here at Rally, one of our
coaches would be happy to discuss the possibilities. Please email
jobs@....

#2151 From: Jay Zimmerman <jzimmerman@...>
Date: Fri Jan 11, 2008 4:44 pm
Subject: Registration Opens...Join Us for the 2008 Gateway Software Symposium returning March 7-9th to St. Louis (XPSTL Discount Available..)
jz_tcpn
Offline Offline
Send Email Send Email
 
The No Fluff Just Stuff Software Symposium series is pleased
to announce the premier technically focused Java/Agility event, 
2008 Gateway Software Symposium returning to St. Louis on
March 7-9th!

Event Name: Gateway Software Symposium 2008
Dates: March 7-9th
Venue: St. Louis Marriott West

GSS 2008 will offer six (6) concurrent sessions for you to choose from.  
You will have the opportunity to attend multiple sessions on variety of interesting 
topics covering core Java, Enterprise Java, Web 2.0, Dynamic Languages, 
Architecture, Security, Testing, CI and Agility.

We have a great set of speakers lined up for you to enjoy featuring:

Brian Sletten, REST Expert
Scott Davis, author of "Groovy Recipes"
Neal Ford, Application Architect with ThoughtWorks
Ted Neward, author of "Effective Enterprise Java"
Venkat Subramaniam, co-author of "Practices of an Agile Developer"
Richard Monson-Haefel, author of "J2EE Web Services"
David Geary, co-author of "Core JSF"
Mark Richards, author of "Java Transaction Strategies"
Nathaniel Schutta, co-author of "Foundations of Ajax"
Michael Nygard, author of "Release It"
and many more....

The No Fluff Just Stuff Symposium series is regarded as the premier
Java/Agility event series anywhere serving over 22,000 attendees with
some 130 events since 2002. The popularity of the NFJS symposium series
can be traced to the following:

1). Exceptional Speakers
2). Limited Attendance - capped at 250 people
3). No Vendors, No Sales Pitches, no Marketecture
4). Excellent networking opportunities with speakers and fellow attendees
5). The Best Value in the Java conferencing space period

******************************************************************************************************

Early Bird Registration: $800/person good thru February 18th, after $900

Registration Fee includes:

1). Three Day All Access Pass to GSS 2008
2). All Meals/Snacks - duration of the symposium
3). Custom Laptop Bag - Best in the Industry ($150 Retail Value)
4). One Gig USB Drive - All Symposium Content included
5). Custom NFJS Binder

Special $50 discount available to all XPSTL members, use the discount 
code, nfjsusergroup50 when registering.  NOTE: This discount is not combinable 
with the group discount.

Excellent Group Discounts Available - bring your entire development team 
to the show: (good thru 2/18/08)

5-9 Attendees: $700/person
10-14 Attendees: $675person
15-24 Attendees: $650/person
25-over Attendees: $625person

Excellent Giveaways - Apple iPods & iPhones

Join us for a great show! We appreciate your support and patronage!!

Gateway Software Symposium 2008: www.nofluffjuststuff.com/sh/2008-03-stlouis

Venue: St. Louis Marriott West - rate of $99/night available

All the Best,

Jay Zimmerman
2008 NFJS Symposium Director 


#2150 From: "CORUM, M E [AG/1000]" <m.e.corum@...>
Date: Mon Jan 14, 2008 2:53 pm
Subject: RE: January Meeting Announcement
mecoru
Offline Offline
Send Email Send Email
 
I'll be there.

Mike Corum

-----Original Message-----
From: xpstl@yahoogroups.com [mailto:xpstl@yahoogroups.com]
Sent: Thursday, January 03, 2008 2:28 AM
To: xpstl@yahoogroups.com
Subject: [xpstl] Digest Number 689

There is 1 message in this issue.

Topics in this digest:

1. [Mid Mo XP] January Meeting Announcement
     From: James Carr


Message
________________________________________________________________________

1. [Mid Mo XP] January Meeting Announcement
     Posted by: "James Carr" james.r.carr@... jay_c_the_man
     Date: Wed Jan 2, 2008 9:36 pm ((PST))

HI All,

The next meeting of the mid mo xp usergroup will be Wed, January 16th
at 6:30pm, our guest speaker will be Ron Jeffries. As always, we will
be meeting at CARFAX, INC's data center in Columbia, MO on Maguire
Blvd.

Please RSVP by Jan 14th we can get a head count for refreshments and
seating.

If you are coming from St.Louis, these directions are handy:
http://maps.google.com/maps?f=d&hl=en&geocode=&time=&date=&ttype=&saddr=
St.Louis,+MO&daddr=Maguire+Blvd,+Columbia,+MO+65201+&sll=38.62757,-90.19
896&sspn=0.451663,1.2854&ie=UTF8&z=9&om=1

Jeff City:
http://maps.google.com/maps?f=d&hl=en&geocode=&time=&date=&ttype=&saddr=
Jefferson+City,+MO&daddr=Maguire+Blvd,+Columbia,+MO+65201&sll=38.7938,-9
1.24049&sspn=0.901206,2.570801&ie=UTF8&z=10&om=1

Thanks,
James


Messages in this topic (1)
________________________________________________________________________
________________________________________________________________________



------------------------------------------------------------------------
Yahoo! Groups Links



------------------------------------------------------------------------



--------------------------------------------------------------------------------\
-------------------------
This e-mail message may contain privileged and/or confidential information, and
is intended to be received only by persons entitled to receive such information.
If you have received this e-mail in error, please notify the sender immediately.
Please delete it and all attachments from any servers, hard drives or any other
media. Other use of this e-mail by you is strictly prohibited.


All e-mails and attachments sent and received are subject to monitoring, reading
and archival by Monsanto, including its subsidiaries. The recipient of this
e-mail is solely responsible for checking for the presence of "Viruses" or other
"Malware". Monsanto, along with its subsidiaries, accepts no liability for any
damage caused by any such code transmitted by or accompanying this e-mail or any
attachment.
--------------------------------------------------------------------------------\
-------------------------

#2149 From: "James Carr" <james.r.carr@...>
Date: Thu Jan 3, 2008 2:14 pm
Subject: Re: [Mid Mo XP] January Meeting Announcement
jay_c_the_man
Offline Offline
Send Email Send Email
 
Hi,

Sorry, forgot to mention that the topic that Ron will be presenting on
is "The Dynamics of Software Development".

Thanks,
James

On Jan 2, 2008 11:36 PM, James Carr <james.r.carr@...> wrote:
> HI All,
>
> The next meeting of the mid mo xp usergroup will be Wed, January 16th
> at 6:30pm, our guest speaker will be Ron Jeffries. As always, we will
> be meeting at CARFAX, INC's data center in Columbia, MO on Maguire
> Blvd.
>
> Please RSVP by Jan 14th we can get a head count for refreshments and seating.
>
> If you are coming from St.Louis, these directions are handy:
>
http://maps.google.com/maps?f=d&hl=en&geocode=&time=&date=&ttype=&saddr=St.Louis\
,+MO&daddr=Maguire+Blvd,+Columbia,+MO+65201+&sll=38.62757,-90.19896&sspn=0.45166\
3,1.2854&ie=UTF8&z=9&om=1
>
> Jeff City:
>
http://maps.google.com/maps?f=d&hl=en&geocode=&time=&date=&ttype=&saddr=Jefferso\
n+City,+MO&daddr=Maguire+Blvd,+Columbia,+MO+65201&sll=38.7938,-91.24049&sspn=0.9\
01206,2.570801&ie=UTF8&z=10&om=1
>
> Thanks,
> James
>

#2148 From: "James Carr" <james.r.carr@...>
Date: Thu Jan 3, 2008 5:36 am
Subject: [Mid Mo XP] January Meeting Announcement
jay_c_the_man
Offline Offline
Send Email Send Email
 
HI All,

The next meeting of the mid mo xp usergroup will be Wed, January 16th
at 6:30pm, our guest speaker will be Ron Jeffries. As always, we will
be meeting at CARFAX, INC's data center in Columbia, MO on Maguire
Blvd.

Please RSVP by Jan 14th we can get a head count for refreshments and seating.

If you are coming from St.Louis, these directions are handy:
http://maps.google.com/maps?f=d&hl=en&geocode=&time=&date=&ttype=&saddr=St.Louis\
,+MO&daddr=Maguire+Blvd,+Columbia,+MO+65201+&sll=38.62757,-90.19896&sspn=0.45166\
3,1.2854&ie=UTF8&z=9&om=1

Jeff City:
http://maps.google.com/maps?f=d&hl=en&geocode=&time=&date=&ttype=&saddr=Jefferso\
n+City,+MO&daddr=Maguire+Blvd,+Columbia,+MO+65201&sll=38.7938,-91.24049&sspn=0.9\
01206,2.570801&ie=UTF8&z=10&om=1

Thanks,
James

#2147 From: Joseph Little <jhlittle@...>
Date: Fri Nov 30, 2007 8:25 pm
Subject: REMINDER: the Agile-ANN yahoo group
jhlittle1
Offline Offline
Send Email Send Email
 
Hi,

There is a relatively new group called Agile-ANN, where we hope to
draw a large crowd interested in Agile Announcements.  (yes, actually
interested)

The hope is that regular discussion groups will
receive...fewer...announcements.

See here: http://finance.groups.yahoo.com/group/Agile-ANN/

The announcements can be about almost anything:
* courses
* jobs or gigs that are open
* new or existing groups
* group meetings
* services offered
* etc.

And any discussion of such announcements.

These will be announcements for any flavor of lean or
agile.  Including Lean/Agile that is oriented toward software dev and
toward more business implementations.

Scope is worldwide.

Hope this helps.  Hope everyone joins...I think you'll find some of
these announcements useful.

Regards, Joe

#2146 From: Niraj Khanna <niraj@...>
Date: Mon Nov 12, 2007 6:49 pm
Subject: ANN: SDT Conference Nov 30 - Dec 2, Free Registration
nkhanna_01
Offline Offline
Send Email Send Email
 
Hello Everyone,

Just a brief announcement to encourage attendance for the Simple  
Design and Testing conference (SDTConf) , being held at Penn State  
University in York, Pennsylvania from Nov 30th - Dec 2nd 2007.

Our objective is to facilitate intense discussions about Simple design 
and testing aspects of any software project. The theme is broad  
enough so that the participants can have diverse discussion topics  
and still feel they have learnt something at the end of the conference.

* Cost: Free. Open to people from all aspects of software projects

Visit www.sdtconf.com for more details including highlights of the  
SDTConf 2006.

Sincerely,
Niraj.

#2145 From: "Jeff Grigg" <jeffgrigg@...>
Date: Sat Nov 10, 2007 3:34 am
Subject: Re: Observation I had about TDD with and without pairing
jeffgrigg63132
Offline Offline
Send Email Send Email
 
Maybe it's a Pattern.
If so, it wouldn't be surprising to find that other people independently discovered it.
 
 
----- Original Message -----
Sent: Thursday, November 08, 2007 9:38 AM
Subject: [xpstl] Observation I had about TDD with and without pairing
 
[...]

Has anyone else felt this? Is this so blatantly obvious that I've bored you all to tears?

[...]

#2144 From: "Jeff Grigg" <jeffgrigg@...>
Date: Sat Nov 10, 2007 3:32 am
Subject: Re: Observation I had about TDD with and without pairing
jeffgrigg63132
Offline Offline
Send Email Send Email
 
I like to call it "Evil Programmer TDD:"
 
Gallant writes a failing test, specifying the desired behavior.
[Evil] Goofus deliberately writes the simplest code possible that...
  1. Passes all tests.
        - and -
  2. Is wrong.
 
Now there are some limitations on how evil The Evil Programmer is allowed to be.  Otherwise the whole exercise can be quite wasteful:  The evil programmer's "bad / wrong" implementation can't be any more complex than the correct implementation.
 
You might want to restrict the Evil programmer to *not* hard code arbitrary constants, like having the 'getName()' method return "Fred Brown", knowing that this is what your test used in the setter.  Otherwise, your tests will be "better," in a trivial way, but clearly more costly; like doubling the number of tests you need to write, typically.
 
I did have to limit the evilness in another way (or at least explain it better) to assure some developers that they don't have to use random numbers generators in their tests to force The Evil Programmer to do a real implementation.  Use of random number generators can make it difficult to reproduce and debug failed tests unless you're careful to report the seed values used, and to provide a way to force a test to use a given seed value, to reproduce the failing conditions.
 
 
 
----- Original Message -----
Sent: Thursday, November 08, 2007 9:38 AM
Subject: [xpstl] Observation I had about TDD with and without pairing
 
[...] an effective pairing situation.

* First person writes a test, and knows what they're trying to accomplish in this test.
* Second person is obnoxious (productively so!) and writes something else entirely, probably something much more
trivial, to get the test to pass. P2 then throws the keyboard at P1, laughing at their distress.
* First person writes another test, vainly trying to get the right code out of his idiotic pair, who just can't write
the right code.
* Second person laughs hysterically and writes something different than the test writer wanted. He cackles gleefully.

and so it repeats.  [...]

#2143 From: "Jody Breshears" <jody.breshears@...>
Date: Fri Nov 9, 2007 3:21 pm
Subject: Re: Need some help teaching TDD
jody.breshears@...
Send Email Send Email
 
My bad.  I meant Code Rush and Resharper.  I am trying to get those two to play together, with only modest success.

On Nov 8, 2007 9:32 PM, Bryan - K0EMT < k0emt@...> wrote:

Jody,
 
Didn't have to do anything special.  Installed Code Rush and then Refactor! and haven't run into any problems.
 

Bryan

http://www.dbBear.com/

 

From: xpstl@yahoogroups.com [mailto:xpstl@yahoogroups.com] On Behalf Of Jody Breshears
 
 You mention CodeRush and Refactor.  Are you able to get them to play nicely together? I hadn't used Code Rush before, but I stumbled on it when doing some prototype Linq stuff on my own.  Resharper doesn't handle the new 3.5 language constructs, and Code Rush does, so I started using the evaluation version.  How do you configure them to use both?



--
Jody Breshears

Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."

#2142 From: "Bryan - K0EMT" <k0emt@...>
Date: Fri Nov 9, 2007 3:32 am
Subject: RE: Need some help teaching TDD
b_nehl
Offline Offline
Send Email Send Email
 
Jody,
 
Didn't have to do anything special.  Installed Code Rush and then Refactor! and haven't run into any problems.
 

Bryan

http://www.dbBear.com/

 

From: xpstl@yahoogroups.com [mailto:xpstl@yahoogroups.com] On Behalf Of Jody Breshears
 
 You mention CodeRush and Refactor.  Are you able to get them to play nicely together? I hadn't used Code Rush before, but I stumbled on it when doing some prototype Linq stuff on my own.  Resharper doesn't handle the new 3.5 language constructs, and Code Rush does, so I started using the evaluation version.  How do you configure them to use both?

#2141 From: "Toby Kraft" <Toby_Kraft@...>
Date: Thu Nov 8, 2007 9:21 pm
Subject: Re: TDD, Linq, and small bites
tkrafte1
Offline Offline
Send Email Send Email
 
//todo:Look at aggregate

Very useful in this case.  The following code seems to do what you're looking for unless I missed something.

I figured Task was responsible for reporting the time spent on it so I added that property using Linq Sum operator and everything got simpler.

Toby

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Tasking
{
    class Program
    {
        static void Main(string[] args)
        {
            canGetSumOf2CardsFromParentChild();
        }

        public static void canGetSumOf2CardsFromParentChild(){
            List<Task> list = new List<Task>();
            Task task1 = new Task(){Name="test1"};
            Task task2 = new Task(){Name="test2"};
           
            list.Add(task1);
            TimeCard timeCard1 = new TimeCard(){ Time=new TimeSpan(0,10,0), TimeStamp=DateTime.Parse("10/10/2007")};
            TimeCard timeCard2 = new TimeCard(){ Time=new TimeSpan(0,15,0), TimeStamp=DateTime.Parse("10/10/2007")};
            task1.TimeCards.Add(timeCard1);
            task2.TimeCards.Add(timeCard2);

            task1.Children.Add(task2);

            TaskReporter reporter = new TaskReporter(list);
            TimeSpan? totalTime = reporter.getTotalTime();
            Console.WriteLine("Test - {0}", totalTime == new TimeSpan(0, 25, 0)?"Passed":"Failed");
        }
    }

    public class TaskReporter
    {
        private readonly List<Task> list = new List<Task>();

        public TaskReporter(List<Task> list)
        {
            this.list = list;
        }

        public System.TimeSpan? getTotalTime()
        {
            double totalSeconds = list.Sum(t => t.TotalTaskTime);
            return new TimeSpan(0, 0, (int)Math.Truncate(totalSeconds));
        }
    }
   
    public class Task
    {
        private string name;
        private bool isProductive;
        private List<Task> children = new List<Task>();
        private List<TimeCard> timeCards = new List<TimeCard>();

        public string Name
        {
            get { return name; }
            set { name = value;}
        }

        public bool IsProductive
        {
            get { return isProductive; }
            set { isProductive = value; }
        }

        public List<TimeCard> TimeCards
        {
            get { return timeCards; }
            set { timeCards = value; }
        }

        public List<Task> Children
        {
            get { return children; }
            set { children = value; }
        }

        /// <summary>
        /// Returns total of timecards for this task + total time from children tasks
        /// </summary>
        public double TotalTaskTime
        {
            get
            {
                return TimeCards.Sum(t => t.Time.TotalSeconds) +
                    Children.Sum(c => c.TotalTaskTime);
            }
        }
    }

    public class TimeCard
    {
        TimeSpan _time;
        DateTime _stamp;

        public TimeSpan Time
        {
            get { return _time; }
            set { _time = value; }
        }
        public DateTime TimeStamp
        {
            get { return _stamp; }
            set { _stamp = value; }
        }
    }
}



--- In xpstl@yahoogroups.com, "Jody Breshears" <jody.breshears@...> wrote:
>
> I am having trouble getting some linq tests down to small bites, and
> wondered if anyone else had some suggestions.
>
> I had this code, used to read a simple collection of tasks, and get the
> time.
>
> public class Task : ITask {
> private string name;
> private bool isProductive;
> private TaskList children = new TaskList();
> private List<TimeCard> timeCards = new List<TimeCard>();
>
> public List<TimeCard> TimeCards {
> get { return timeCards; }
> set { timeCards = value; }
> }
>
> public string Name {
> get { return name; }
> set {
> name = value;
> }
> }
>
> public bool IsProductive {
> get { return isProductive; }
> set {isProductive = value;}
> }
>
> public TaskList Children {
> get { return children; }
> set{children=value;}
> }
> }
>
>
> public class TaskReporter {
> private readonly List<Task> list = new List<Task>();
>
> public TaskReporter(List<Task> list) {
> this.list = list;
> }
>
> public System.TimeSpan? getTotalTime() {
> var query = from taskItem in list
> select taskItem.TimeCards.Sum(timeCard =>
> timeCard.Time.TotalSeconds );
> double totalSeconds = 0;
>
> totalSeconds = GetTotalSecondsFromQuery(query);
> return new TimeSpan(0,0,(int)Math.Truncate(totalSeconds));
> }
>
> private double GetTotalSecondsFromQuery(IEnumerable<double> query) {
> double totalSeconds = 0;
> foreach (double item in query) {
> totalSeconds+= item;
> }
> return totalSeconds;
> }
> }
>
> I wrote this test, to allow it to read a heirarchical list.
> [Test]
> public void canGetSumOf2CardsFromParentChild(){
> List<Task> list = new List<Task>();
> Task task = new Task(){Name="test"};
> Task task2 = new Task(){Name="test2"};
>
> list.Add(task);
> TimeCard timeCard = new TimeCard(){ Time=new TimeSpan(0,10,0),
> TimeStamp=DateTime.Parse("10/10/2007")};
> TimeCard timeCard2 = new TimeCard(){ Time=new TimeSpan(0,15,0),
> TimeStamp=DateTime.Parse("10/10/2007")};
> task.TimeCards.Add(timeCard);
> task2.TimeCards.Add(timeCard2);
>
> task.Children.Add(task2);
>
> TaskReporter reporter = new TaskReporter(list);
> TimeSpan? totalTime = reporter.getTotalTime();
> Assert.That(totalTime, Is.EqualTo(new TimeSpan(0, 25, 0)));
> }
>
> One freaking hour later, I had this code:
>
> public System.TimeSpan? getTotalTime() {
> TimeSpan? result = TimeSpan.Zero;
> foreach (ITask task in list) {
> result += getTimeForTask(task );
> }
> return result;
> }
>
> public TimeSpan? getTimeForTask(ITask task){
> var query = from card in task.TimeCards
> select card.Time;
> TimeSpan? totalSeconds = GetTotalSecondsFromQuery(query);
> foreach (Task childTask in task.Children) {
> totalSeconds += getTimeForTask(childTask);
> }
> return totalSeconds;
>
> }
> //todo:Look at aggregate
> private TimeSpan? GetTotalSecondsFromQuery(IEnumerable<TimeSpan?>
> query) {
> TimeSpan? totalSeconds = new TimeSpan();
> foreach (TimeSpan? item in query) {
> totalSeconds+= item;
> }
> return totalSeconds;
> }
>
> Does anybody see smaller bites?
> --
> Jody Breshears
>
> Christopher Marlowe - "Money can't buy love, but it improves your bargaining
> position."
>

#2140 From: "Jody Breshears" <jody.breshears@...>
Date: Thu Nov 8, 2007 7:07 pm
Subject: Re: Observation I had about TDD with and without pairing
jody.breshears@...
Send Email Send Email
 
I am stuck in St. Louis like Jimma Hoffa's feet in concrete.  ;) Thanks though.

On Nov 8, 2007 10:20 AM, Gary Brown <glbrown@... > wrote:

Quoting Jody Breshears <jody.breshears@...>:

> I'd love to see the blog post. Until I can manage to get myself into a
> situation where pair programming is allowed, I think this is going to be a
> struggle for me.

We are looking for a few good people here at CARFAX, in Columbia, MO,
and we pair on all production code ...

GB.




--
Jody Breshears

Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."

#2139 From: Mark Balbes <mark@...>
Date: Thu Nov 8, 2007 6:49 pm
Subject: Re: Observation I had about TDD with and without pairing
mbalbes
Offline Offline
Send Email Send Email
 
You seem to take it for granted that effective pairing means that one
person is writing the test and the other is writing the code to make the
test pass. I've never done pairing with that adversarial approach.
Usually, my pair and I write the test case together and agree it's doing
what we want. Then we make it pass together. Are you advocating the
adversarial approach over the cooperative one?

Mark

Brian Button wrote:
>
> I'm working on a project for a client (that's right, they're letting
> *me* write code!), and I'm a team of one right now.
>
> That's important, because as I was writing my tests, I realized
> something. I *knew* the code I wanted to write for a
> given test, and I'd write that code without thinking about it to make
> my current test pass. I knew beforehand what I was
> doing, where I was going, and why. This led me to writing the exact
> code I expected to write as I wrote my test.
>
> Contrast this to how code is written test first when in an effective
> pairing situation.
>
> * First person writes a test, and knows what they're trying to
> accomplish in this test.
> * Second person is obnoxious (productively so!) and writes something
> else entirely, probably something much more
> trivial, to get the test to pass. P2 then throws the keyboard at P1,
> laughing at their distress.
> * First person writes another test, vainly trying to get the right
> code out of his idiotic pair, who just can't write
> the right code.
> * Second person laughs hysterically and writes something different
> than the test writer wanted. He cackles gleefully.
>
> and so it repeats.
>
> This creates a tension between test writer and code writer that
> results in much better, more simple code.
>
> That tension is missing without a pair, and it takes a tremendous
> amount of self-awareness and discipline to get to the
> same level of coding goodness without it.
>
> Has anyone else felt this? Is this so blatantly obvious that I've
> bored you all to tears?
>
> I'm planning on turning this into a blog post RSN, with a bit more
> detail and description.
>
> bab
>
> --
> Brian Button bbutton@... <mailto:bbutton%40agilestl.com>
> VP Engineering http://www.agilestl.com <http://www.agilestl.com>
> Asynchrony Solutions http://oneagilecoder.agilestl.com
> <http://oneagilecoder.agilestl.com>
> St. Louis, MO 636.399.3146
>
> Extreme Programming in St Louis - http://groups.yahoo.com/group/xpstl
> <http://groups.yahoo.com/group/xpstl>
>
>

--
Mark Balbes, Ph.D.
Vice President, Architecture
Asynchrony Solutions

mobile: 314-835-7800
email: mark.balbes@...
Attachment: vcard [not shown]

#2138 From: Cory Foy <usergroup@...>
Date: Thu Nov 8, 2007 6:45 pm
Subject: Re: Observation I had about TDD with and without pairing
cory_foy
Online Now Online Now
Send Email Send Email
 
Brian Button wrote:
> * First person writes a test, and knows what they're trying to accomplish in
this test.
> * Second person is obnoxious (productively so!) and writes something else
entirely, probably something much more
> trivial, to get the test to pass. P2 then throws the keyboard at P1, laughing
at their distress.
> * First person writes another test, vainly trying to get the right code out of
his idiotic pair, who just can't write
> the right code.
> * Second person laughs hysterically and writes something different than the
test writer wanted. He cackles gleefully.

Luckily for me, I'm so obnoxious I annoy myself! ;)

Actually, I know I've run into this with the current series I'm working
on - but I think it's more that I haven't been as astute about
refactoring out duplication in the test code. Nothing motivates like a
pair. ;)

--
Cory Foy
http://www.cornetdesign.com

#2137 From: Cory Foy <usergroup@...>
Date: Thu Nov 8, 2007 6:43 pm
Subject: Re: NUnit constraint syntax versus RSpec
cory_foy
Online Now Online Now
Send Email Send Email
 
Ed Howland wrote:
> Does IronRuby work like JRuby where you can into .Net and .Net can
> call into Ruby? Does that allow you to script and test your .Net
> classes with a tool like RSpec?

Yes...sort of. It's in a very early stage. But they've done several
releases on RubyForge (yes, MS is releasing it on RubyForge), and there
are demos of hooking up to .NET:

http://weblogs.asp.net/scottgu/archive/2007/07/23/first-look-at-ironruby.aspx

> LINQ sounds interesting. In Rails, the ActiveRecord ORM layer hides a
> lot of pure SQL, so you can do a lot of queries in Ruby. but it
> doesn't go as far as LINQ. For instance, you can use an instance range
> class in place of the 'between' clause. E.g. :conditions => {
> :updated_at => start_time..end_time }

I'm thinking about it differently. Yes, you can use LINQ for SQL. But
you can also use it for objects. And the syntax is really syntactic
sugar for generics, so I'm more thinking about tricking it to be able to
write specs more like RSpec does.

> BTW, the project we are working on in our St. Louis Ruby Meetings is
> driven by RSpec. If anyone is interested in learning more about RSpec
> and BDD, come out to our meeting this coming Monday.

Wish I was still in the area! ;) If anyone is coming to the SQE Agile
Conference in Orlando next month, I'll be speaking (for Microsoft) and
would be happy to sit down and talk RSpec or any other cool things.


--
Cory Foy
http://www.cornetdesign.com

#2136 From: "Jody Breshears" <jody.breshears@...>
Date: Thu Nov 8, 2007 4:27 pm
Subject: TDD, Linq, and small bites
jody.breshears@...
Send Email Send Email
 
I am having trouble getting some linq tests down to small bites, and wondered if anyone else had some suggestions.

I had this code, used to read a simple collection of tasks, and get the time.

    public class Task : ITask {
        private string name;
        private bool isProductive;
        private TaskList children = new TaskList();
        private List<TimeCard> timeCards = new List<TimeCard>();
       
        public List<TimeCard> TimeCards {
            get { return timeCards; }
            set { timeCards = value; }
        }

        public string Name {
            get { return name; }
            set {
                name = value;
            }
        }

        public bool IsProductive {
            get { return isProductive; }
            set {isProductive = value;}
        }

        public TaskList Children {
            get { return children; }
            set{children=value;}
        }
    }



    public class TaskReporter {
        private readonly List<Task> list = new List<Task>();

        public TaskReporter(List<Task> list) {
            this.list = list;
        }
       
        public System.TimeSpan? getTotalTime() {
            var query = from taskItem in list
                        select taskItem.TimeCards.Sum(timeCard => timeCard.Time.TotalSeconds );
            double totalSeconds = 0;

            totalSeconds = GetTotalSecondsFromQuery(query);
            return new TimeSpan(0,0,(int)Math.Truncate(totalSeconds));
        }

        private double GetTotalSecondsFromQuery(IEnumerable<double> query) {
            double totalSeconds = 0;
            foreach (double item in query) {
                totalSeconds+= item;
            }
            return totalSeconds;
        }
    }


I wrote this test, to allow it to read a heirarchical list.
        [Test]
        public void canGetSumOf2CardsFromParentChild(){
            List<Task> list = new List<Task>();
            Task task = new Task(){Name="test"};
            Task task2 = new Task(){Name="test2"};
           
            list.Add(task);
            TimeCard timeCard = new TimeCard(){ Time=new TimeSpan(0,10,0), TimeStamp= DateTime.Parse("10/10/2007")};
            TimeCard timeCard2 = new TimeCard(){ Time=new TimeSpan(0,15,0), TimeStamp=DateTime.Parse("10/10/2007")};
            task.TimeCards.Add(timeCard);
            task2.TimeCards.Add(timeCard2);

            task.Children.Add(task2);

            TaskReporter reporter = new TaskReporter(list);
            TimeSpan? totalTime = reporter.getTotalTime();
            Assert.That(totalTime, Is.EqualTo(new TimeSpan(0, 25, 0)));
        }


One freaking hour later, I had this code:

        public System.TimeSpan? getTotalTime() {
            TimeSpan? result = TimeSpan.Zero;
            foreach (ITask task  in list) {
                result += getTimeForTask(task );
            }
            return result;
        }

        public TimeSpan? getTimeForTask(ITask task){
            var query = from card in task.TimeCards
                        select card.Time;
            TimeSpan? totalSeconds = GetTotalSecondsFromQuery(query);
            foreach (Task  childTask in task.Children ) {
                totalSeconds += getTimeForTask(childTask);
            }
            return totalSeconds;

        }
        //todo:Look at aggregate
        private TimeSpan? GetTotalSecondsFromQuery(IEnumerable<TimeSpan?> query) {
            TimeSpan? totalSeconds = new TimeSpan();
            foreach (TimeSpan? item in query) {
                totalSeconds+= item;
            }
            return totalSeconds;
        }

Does anybody see smaller bites?
--
Jody Breshears

Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."

#2135 From: Gary Brown <glbrown@...>
Date: Thu Nov 8, 2007 4:20 pm
Subject: Re: Observation I had about TDD with and without pairing
gb70840
Offline Offline
Send Email Send Email
 
Quoting Jody Breshears <jody.breshears@...>:

> I'd love to see the blog post.  Until I can manage to get myself into a
> situation where pair programming is allowed, I think this is going to be a
> struggle for me.

We are looking for a few good people here at CARFAX, in Columbia, MO,
and we pair on all production code ...

GB.

#2134 From: "Jody Breshears" <jody.breshears@...>
Date: Thu Nov 8, 2007 4:12 pm
Subject: Re: Observation I had about TDD with and without pairing
jody.breshears@...
Send Email Send Email
 
Actually, I was about to post that VERY same question.  I am at a client who *ahem* discourages pair programming.  I am constantly finding myself ending up with code I intended to write.  Just lately, I have been able to break away from that, and let myself be a little dumber (perhaps not such a long way to go.:)  I ended up with an astounding result.  I just wrote tests and dumb code till something jumped out at me, and ended up with a 2 line solution to a complex problem.
For me, the problem seems to boil down to taking smaller bites.  When I write a test that I can get passing in less than 10 minutes, I seem to get more emergent design.  When a test takes longer (say, 30 min to 1 hour) I end up with what I was expecting.  Since I am constantly preaching "smaller bites" here, I am looking for ways to take my own medicine.

I'd love to see the blog post.  Until I can manage to get myself into a situation where pair programming is allowed, I think this is going to be a struggle for me.

On Nov 8, 2007 9:38 AM, Brian Button < bbutton@...> wrote:

I'm working on a project for a client (that's right, they're letting *me* write code!), and I'm a team of one right now.

That's important, because as I was writing my tests, I realized something. I *knew* the code I wanted to write for a
given test, and I'd write that code without thinking about it to make my current test pass. I knew beforehand what I was
doing, where I was going, and why. This led me to writing the exact code I expected to write as I wrote my test.

Contrast this to how code is written test first when in an effective pairing situation.

* First person writes a test, and knows what they're trying to accomplish in this test.
* Second person is obnoxious (productively so!) and writes something else entirely, probably something much more
trivial, to get the test to pass. P2 then throws the keyboard at P1, laughing at their distress.
* First person writes another test, vainly trying to get the right code out of his idiotic pair, who just can't write
the right code.
* Second person laughs hysterically and writes something different than the test writer wanted. He cackles gleefully.

and so it repeats.

This creates a tension between test writer and code writer that results in much better, more simple code.

That tension is missing without a pair, and it takes a tremendous amount of self-awareness and discipline to get to the
same level of coding goodness without it.

Has anyone else felt this? Is this so blatantly obvious that I've bored you all to tears?

I'm planning on turning this into a blog post RSN, with a bit more detail and description.

bab

--
Brian Button bbutton@...
VP Engineering http://www.agilestl.com
Asynchrony Solutions http://oneagilecoder.agilestl.com
St. Louis, MO 636.399.3146

Extreme Programming in St Louis - http://groups.yahoo.com/group/xpstl




--
Jody Breshears

Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."

#2133 From: Brian Button <bbutton@...>
Date: Thu Nov 8, 2007 3:38 pm
Subject: Observation I had about TDD with and without pairing
bbutton
Offline Offline
Send Email Send Email
 
I'm working on a project for a client (that's right, they're letting *me* write
code!), and I'm a team of one right now.

That's important, because as I was writing my tests, I realized something. I
*knew* the code I wanted to write for a
given test, and I'd write that code without thinking about it to make my current
test pass. I knew beforehand what I was
doing, where I was going, and why. This led me to writing the exact code I
expected to write as I wrote my test.

Contrast this to how code is written test first when in an effective pairing
situation.

* First person writes a test, and knows what they're trying to accomplish in
this test.
* Second person is obnoxious (productively so!) and writes something else
entirely, probably something much more
trivial, to get the test to pass. P2 then throws the keyboard at P1, laughing at
their distress.
* First person writes another test, vainly trying to get the right code out of
his idiotic pair, who just can't write
the right code.
* Second person laughs hysterically and writes something different than the test
writer wanted. He cackles gleefully.

and so it repeats.

This creates a tension between test writer and code writer that results in much
better, more simple code.

That tension is missing without a pair, and it takes a tremendous amount of
self-awareness and discipline to get to the
same level of coding goodness without it.

Has anyone else felt this? Is this so blatantly obvious that I've bored you all
to tears?

I'm planning on turning this into a blog post RSN, with a bit more detail and
description.

bab

--
Brian Button  bbutton@...
VP Engineering  http://www.agilestl.com
Asynchrony Solutions http://oneagilecoder.agilestl.com
St. Louis, MO  636.399.3146

Extreme Programming in St Louis - http://groups.yahoo.com/group/xpstl

#2132 From: "Ed Howland" <ed.howland@...>
Date: Thu Nov 8, 2007 2:56 pm
Subject: Re: NUnit constraint syntax versus RSpec
ulysees2001
Offline Offline
Send Email Send Email
 
On Nov 7, 2007 7:28 PM, Cory Foy <usergroup@...> wrote:
>
>  I've been pondering in my head a way to use LINQ to do some interesting
>  things. I've also been trying RSpec on IronRuby and hope to have a
>  little more time to see if I can get that running.

Hey Cory.

Does IronRuby work like JRuby where you can into .Net and .Net can
call into Ruby? Does that allow you to script and test your .Net
classes with a tool like RSpec?

LINQ sounds interesting. In Rails, the ActiveRecord ORM layer hides a
lot of pure SQL, so you can do a lot of queries in Ruby. but it
doesn't go as far as LINQ. For instance, you can use an instance range
class in place of the 'between' clause. E.g. :conditions => {
:updated_at => start_time..end_time }

BTW, the project we are working on in our St. Louis Ruby Meetings is
driven by RSpec. If anyone is interested in learning more about RSpec
and BDD, come out to our meeting this coming Monday.

Info at www.stlruby.org

Ed

--
Ed Howland
http://greenprogrammer.blogspot.com

#2131 From: Cory Foy <usergroup@...>
Date: Thu Nov 8, 2007 1:28 am
Subject: Re: NUnit constraint syntax versus RSpec
cory_foy
Online Now Online Now
Send Email Send Email
 
Ed Howland wrote:
> Along those same lines, RSpec has merged in rbehave like functionality
> in its trunk. This gives rise to the new Story Runner which is like
> adding integration testing to RSpec while keeping it simple enough for
> customers, BAs and QAs to author.
>
> Is there any push to make NUnit see any of the BDD or IT-type functionality?

Right now we're at ground zero. We are hashing out licensing, and the
plugin model and some other things. I'll pass it along to see how far we
can push it.

I've been pondering in my head a way to use LINQ to do some interesting
things. I've also been trying RSpec on IronRuby and hope to have a
little more time to see if I can get that running.

--
Cory Foy
http://www.cornetdesign.com

#2130 From: Gary Brown <glbrown@...>
Date: Wed Nov 7, 2007 7:56 pm
Subject: Re: NUnit constraint syntax versus RSpec
gb70840
Offline Offline
Send Email Send Email
 
Quoting Jody Breshears <jody.breshears@...>:

> How about half a smiley, since I am 40, and no longer so young.   ;)
> In fact, I don't think I can claim enlightenment, either.
> If fact, I was feeling a bit sloggish this morning....

It's all downhill from there ...

GB.

#2129 From: "Jody Breshears" <jody.breshears@...>
Date: Wed Nov 7, 2007 7:52 pm
Subject: Re: NUnit constraint syntax versus RSpec
jody.breshears@...
Send Email Send Email
 
How about half a smiley, since I am 40, and no longer so young.   ;)
In fact, I don't think I can claim enlightenment, either.
If fact, I was feeling a bit sloggish this morning....

Oh Crap!  Assert.That won't compile any more!

On 11/7/07, Gary Brown <glbrown@...> wrote:

Hi, Jody,

Quoting Jody Breshears <jody.breshears@...>:

> I don't think so. I am pretty sure NUnit makes a reflective call under the
> hood to
> System.Reflection.CurrentDev.IsOldUnenlightenedSlog;
> If it comes back true, the new syntax is disabled.

Don't I get a smiley with that insult?!?

That would be ...
System.Reflection.CurrentDev.IsFatOldStupidUnenlightenedSlogSir;

to you, young whippersnapper, Jody!

8^)

GB.
>
> On 11/6/07, Gary Brown <glbrown@...> wrote:
>>
>> Quoting Cory Foy <usergroup@...<usergroup%40cornetdesign.com>
>> >:
>>
>> > Craig Buchek wrote:
>> >> While NUnit is more verbose, the new syntax reads just about as nicely
>> >> as the RSpec syntax, and expresses the intent of the tests just as
>> >> well. The original NUnit syntax and Ruby Test::Unit don't do a good
>> >> job of distinguishing between the expected and actual arguments. And
>> >> you can add your own custom constraints/matchers in both NUnit and
>> RSpec.
>> >
>> > Also - if anyone has suggestions of things they'd like to see in the
>> > next version of NUnit, we've got a working group together talking about
>> > it, and I'd be happy to pass along any feedback.
>>
>> Does the classic stuff still work for us unenlightened slogs?!? 8^)
>>
>> GB.
>>
>>
>>
>
>
>
> --
> Jody Breshears
>
> Christopher Marlowe - "Money can't buy love, but it improves your bargaining
> position."
>




--
Jody Breshears

Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."

#2128 From: Gary Brown <glbrown@...>
Date: Wed Nov 7, 2007 7:49 pm
Subject: Re: NUnit constraint syntax versus RSpec
gb70840
Offline Offline
Send Email Send Email
 
Hi, Jody,

Quoting Jody Breshears <jody.breshears@...>:

> I don't think so. I am pretty sure NUnit makes a reflective call under the
> hood to
> System.Reflection.CurrentDev.IsOldUnenlightenedSlog;
> If it comes back true, the new syntax is disabled.

Don't I get a smiley with that insult?!?

That would be ...
System.Reflection.CurrentDev.IsFatOldStupidUnenlightenedSlogSir;

to you, young whippersnapper, Jody!

8^)

GB.
>
> On 11/6/07, Gary Brown <glbrown@...> wrote:
>>
>>   Quoting Cory Foy <usergroup@...<usergroup%40cornetdesign.com>
>> >:
>>
>> > Craig Buchek wrote:
>> >> While NUnit is more verbose, the new syntax reads just about as nicely
>> >> as the RSpec syntax, and expresses the intent of the tests just as
>> >> well. The original NUnit syntax and Ruby Test::Unit don't do a good
>> >> job of distinguishing between the expected and actual arguments. And
>> >> you can add your own custom constraints/matchers in both NUnit and
>> RSpec.
>> >
>> > Also - if anyone has suggestions of things they'd like to see in the
>> > next version of NUnit, we've got a working group together talking about
>> > it, and I'd be happy to pass along any feedback.
>>
>> Does the classic stuff still work for us unenlightened slogs?!? 8^)
>>
>> GB.
>>
>>
>>
>
>
>
> --
> Jody Breshears
>
> Christopher Marlowe - "Money can't buy love, but it improves your bargaining
> position."
>

#2127 From: "Craig Buchek" <yahoo@...>
Date: Wed Nov 7, 2007 7:23 pm
Subject: Re: NUnit constraint syntax versus RSpec
craig_m_buchek
Offline Offline
Send Email Send Email
 
>> Does the classic stuff still work for us unenlightened slogs?!? ]

The NUnit documentation shows that they still support the "Classic
Model" assertions, as well as the "Constraint Model":

http://www.nunit.org/index.php/docs/index.php?p=assertions&r=2.4.3

It says that the classic versions are now implemented on top of the
constraint versions.

Craig

#2126 From: Bryan Nehl <k0emt@...>
Date: Wed Nov 7, 2007 7:18 pm
Subject: Re: Re: Need some help teaching TDD - No test runner?
b_nehl
Offline Offline
Send Email Send Email
 
Yep, no fancy tricks.
As others have pointed out there are far more test
frameworks out there than one would at first think...

Later,

Bryan
--- Craig Buchek <yahoo@...> wrote:
...
> So basically, you just write your own stand-alone
> test functions, and
> call them all from the master function? That's what
> I've been doing to
> try adding tests to some existing PHP code.

> No fancy tricks or tips?

#2125 From: "Jody Breshears" <jody.breshears@...>
Date: Wed Nov 7, 2007 6:58 pm
Subject: Re: NUnit constraint syntax versus RSpec
jody.breshears@...
Send Email Send Email
 
I don't think so. I am pretty sure NUnit makes a reflective call under the hood to
System.Reflection.CurrentDev.IsOldUnenlightenedSlog;
If it comes back true, the new syntax is disabled.

On 11/6/07, Gary Brown <glbrown@...> wrote:

Quoting Cory Foy <usergroup@...>:

> Craig Buchek wrote:
>> While NUnit is more verbose, the new syntax reads just about as nicely
>> as the RSpec syntax, and expresses the intent of the tests just as
>> well. The original NUnit syntax and Ruby Test::Unit don't do a good
>> job of distinguishing between the expected and actual arguments. And
>> you can add your own custom constraints/matchers in both NUnit and RSpec.
>
> Also - if anyone has suggestions of things they'd like to see in the
> next version of NUnit, we've got a working group together talking about
> it, and I'd be happy to pass along any feedback.

Does the classic stuff still work for us unenlightened slogs?!? 8^)

GB.




--
Jody Breshears

Christopher Marlowe - "Money can't buy love, but it improves your bargaining position."

#2124 From: "Ed Howland" <ed.howland@...>
Date: Wed Nov 7, 2007 12:00 am
Subject: Re: NUnit constraint syntax versus RSpec
ulysees2001
Offline Offline
Send Email Send Email
 
> Craig Buchek wrote:
>  > While NUnit is more verbose, the new syntax reads just about as nicely
>  > as the RSpec syntax, and expresses the intent of the tests just as
>  > well. The original NUnit syntax and Ruby Test::Unit don't do a good
>  > job of distinguishing between the expected and actual arguments. And
>  > you can add your own custom constraints/matchers in both NUnit and RSpec.
>
>  Also - if anyone has suggestions of things they'd like to see in the
>  next version of NUnit, we've got a working group together talking about
>  it, and I'd be happy to pass along any feedback.

Along those same lines, RSpec has merged in rbehave like functionality
in its trunk. This gives rise to the new Story Runner which is like
adding integration testing to RSpec while keeping it simple enough for
customers, BAs and QAs to author.

Is there any push to make NUnit see any of the BDD or IT-type functionality?

Ed



>
--
Ed Howland
http://greenprogrammer.blogspot.com

Messages 2124 - 2153 of 2182   Newest  |  < Newer  |  Older >  |  Oldest
Advanced
Add to My Yahoo!      XML What's This?

Copyright © 2009 Yahoo! Inc. All rights reserved.
Privacy Policy - Terms of Service - Guidelines - Help