Loading ...
Sorry, an error occurred while loading the content.

Re: [XP] An XP Experiment (long)

Expand Messages
  • David Corbin
    ... Nothing useful, but I do want to say Great idea . I look forward to learning from your project :) ... -- David Corbin Mach Turtle Technologies, Inc.
    Message 1 of 29 , Nov 29, 2000
    • 0 Attachment
      Paul Michali wrote:
      >
      > Hi,
      >
      > In my quest to learn more about XP, I've decided to take a program
      > that I had wrote before and redo it from scratch using XP practices.
      >
      > I'm posting about it here, in the hopes to stimulate some discussion
      > and learn more about the XP practices from others.
      >
      > For this exercise, my primary goals are to try test first programming,
      > work with stories and tasks, and get some more exposure to working
      > with Java. Having already implemented the application, I'd like to
      > see how test first programming influences the design.
      >
      > So, if you're interested, read on (it's long)...
      >
      > Any other comments/suggestions?
      >

      Nothing useful, but I do want to say "Great idea". I look forward to
      learning from your project :)
      > PCM (Paul Michali)
      >
      > Voice Gateway Solutions Business Unit (VGSBU)
      > Cisco Systems, Inc.
      > 250 Apollo Drive
      > Chelmsford, MA 01824
      >
      > Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
      > Paging: (800) 365-4578 [voice] pcm@... [email page]
      >
      > To Post a message, send it to: extremeprogramming@...
      >
      > To Unsubscribe, send a blank message to: extremeprogramming-unsubscribe@...
      >
      > Ad-free courtesy of objectmentor.com

      --
      David Corbin
      Mach Turtle Technologies, Inc.
      http://www.machturtle.com
      dcorbin@...
    • Paul Michali
      ... Yes, it has a high nerd rating. Every time I tell people that I use my pager to signal to me when the traffic conditions are bad, then laugh. That is,
      Message 2 of 29 , Nov 29, 2000
      • 0 Attachment
        Ron Jeffries wrote:

        > This is a cool writeup.

        Yes, it has a high nerd rating. Every time I tell people that I use my pager to
        signal to me when the traffic conditions are bad, then laugh. That is, until the
        day I get home in 45 minutes and they get home in 2.5 hours :^)


        > Keep it going. I'll note some things here. They are
        > just suggestions, refinements, things that come to mind. As always I wrote
        > a lot. Take it as support, not criticism. I'd be really brief if I didn't
        > think you were doing great!

        Thanks.

        > ... This is true of most real
        > products also: get value to SOMEONE early on.

        Yes, I was wondering how I'd get some value, without having to do all
        the stories.

        >
        >
        > One last thing: the stories are written so that you don't get much benefit
        > until at least story 1 and 2, and maybe part of 3, are done. See if you can
        > think of useful stories like these:
        >
        > "Monitor Web site X every 5 minutes and beep pager with the text"
        >
        > This has only one web site, no evaluation, a fixed interval. But in fact,
        > though it would drive you nuts beeping, it would be useful. Then your next
        > story is
        >
        > "Fix that infernal beeping. Only beep for bad messages, i.e. those that say
        > 'accident' and not 'cleared'", or something like that.
        >
        > Then you go to an alternate route only to find that it sucks even worse.
        > Add the story "beep for this other specific route also".
        >
        > And so on. You're making the program useful in the very first half hour
        > (more like a week in a real application), and then making it more and more
        > useful as you go along.
        >

        Hmm. That's are very good idea. I really like the idea of getting something
        very simple up and working quickly and then building on it. I'll look at my
        stories and see if there is a way to adapt them to incorporate a similar method.

        >
        > Don't let the length of t his reply or the changes I'm suggesting get you
        >
        > down: you're doing great! These are just things that take teams months to
        > really begin to learn. Keep it going!

        Will do. Thanks for the input, it is showing me some things I haven't considered,
        especially since this is new to me and I'm working on it solo. I guess it reinforces
        the "pair programming" practice, that of having two people looking at the
        problem from different perspectives.

        BTW, how was the metaphor (if it stinks let me know)? In reading the white and
        pink XP books (I've got the green, but haven't had time to start it yet), this was one
        concept I had a hard time understanding. I don't know if the metaphor for this
        problem really helps much. Any one have other suggestions for a metaphor?


        PCM (Paul Michali)

        Voice Gateway Solutions Business Unit (VGSBU)
        Cisco Systems, Inc.
        250 Apollo Drive
        Chelmsford, MA 01824

        Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
        Paging: (800) 365-4578 [voice] pcm@... [email page]
      • Ron Jeffries
        ... I thought the metaphor was great, should have said so. Scouts reporting back on the route - excellent analogy. Be interesting to see if the objects can
        Message 3 of 29 , Nov 29, 2000
        • 0 Attachment
          At 02:36 PM 11/29/2000 -0500, Paul Michali wrote:
          >BTW, how was the metaphor (if it stinks let me know)? In reading the white and
          >pink XP books (I've got the green, but haven't had time to start it yet),
          >this was one
          >concept I had a hard time understanding. I don't know if the metaphor for this
          >problem really helps much. Any one have other suggestions for a metaphor?

          I thought the metaphor was great, should have said so. Scouts reporting
          back on the route - excellent analogy. Be interesting to see if the objects
          can reflect that. If they can ... it's a good metaphor.

          R

          Ron Jeffries
          www.XProgramming.com
          www.objectmentor.com
        • Paul Michali
          ... Like Ron was saying, I d get a ton of annoying pager messages. However, it s a good idea as the way I send the pager message is by e-mailing to a specific
          Message 4 of 29 , Nov 30, 2000
          • 0 Attachment
            Kevin Smith wrote:

            > As Ron mentioned, the stories are pretty verbose, and don't
            > seem to point to business value as quickly as they could.
            > I'll take a stab (along the same lines as Ron). Perhaps it
            > will help.
            >
            > Story 1:
            > Scrape relevant stuff off website X (hard-coded) every "n"
            > (hard-coded) minutes and email it to the pager (a hard-coded
            > email address).

            Like Ron was saying, I'd get a ton of annoying pager messages.
            However, it's a good idea as the way I send the pager message is
            by e-mailing to a specific address. I can just as well hard code my
            regular e-mail address, instead of my pager address.


            > Story 2:
            > Scrape and page between two (hard-coded) start end times
            > each day [weekday?].
            >
            > Story 3:
            > Only send pages if/when the status has changed since the
            > previous page.
            >
            > Story 4:
            > Scrape a second route at the same time. Still only send if
            > the primary route status has changed.
            >
            > Story 5:
            > Additional bells and whistles, such as reading email
            > address(es) and/or time and interval settings from a
            > configuration file.
            >

            I see how each of these are building on value. One thing that
            is confusing to me is that, if these stories are so simple, how
            do I make tasks out of them?

            I was thinking of taking my Story 2 and breaking it into tasks
            that are of the detail of what you are showing for stories. Here's
            what I was thinking for tasks...

            A. Read one web site and send a hard-coded mail message.
            B. Parse the route info for that web page and send the status code.
            C. Parse the time and status msg and send that
            D. Only send, if status is not OK
            E. Store previous reading and report if status changes or status
            msg changes and status is not OK
            F. Read and parse a second site and send msg (A-E for 2nd site).
            G. Notify info for second site when notifying for the first site or if
            the second site state changes and first site is not OK.

            I figured that Story 2 would deal with how to process one event
            and that Story 1 would only deal with doing the process repetitively
            and for a set duration. Story 3 would still be handling configuration.

            This is a bit different approach than having a story that does the
            periodic monitoring and sends a simple message. Any flaws or
            concerns about my revised approach?


            > Hopefully I got all your requirements in there. Personally,
            > I would want to be notified if either route status had
            > changed, because if the primary route changed to "bad" and
            > stayed there, but the secondary route then changed from
            > "good" to "horrible", I'd want to know it. Of course, you're
            > the customer.

            Yeah, once I thought of this more. I realized that this is the
            behavior I want:

            If primary route changes from good to bad or vice versa, notify
            the user of both the primary and secondary routes.

            If the primary route is not good and the secondary route changes
            status then notify the user.



            > I think if you focus more on little slices of value, you'll
            > find fewer dependencies.

            I'm beginning to see how that helps.

            > Keep in mind that YOU are the
            > customer, so if YOU can live with hard-coded values, there's
            > no need to spend time making them configurable. YAGNI.

            Good point. From the current version of the app, I don't expect
            to change the web site nor the text strings that indicate the route.
            I do play with the intervals though, to tune the app.



            > > The next step will be to start writing tests for each of these tasks.
            > > I'll track the time I spend to see how the estimates come out.
            >
            > I assume you mean that the next step will be to attack the
            > first task, repeatedly cycling between writing a little
            > test, writing a little code, and doing a little refactoring.
            > You wouldn't write all the unit tests for a task at once,
            > let alone tests for multiple tasks at once.

            Yeah. That's what I meant; I wasn't very clear.


            > I am considering starting my own ruby project at home, doing
            > XP-for-one. Assuming I move forward with it, I'll probably
            > toss my story list up here for a critique like you did.
            > Thanks for sharing.
            >

            Well, I don't know anything about Rudy (and I'm so busy right now I
            can't tear away to look at it), but I think seeing more of these types
            of examples really help drive home some of the concepts (and bring
            out the little subtleties).

            Thanks for the comments.


            PCM (Paul Michali)

            Voice Gateway Solutions Business Unit (VGSBU)
            Cisco Systems, Inc.
            250 Apollo Drive
            Chelmsford, MA 01824

            Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
            Paging: (800) 365-4578 [voice] pcm@... [email page]
          • Paul Michali
            Not knowing how to type, I wrote... ... nor do I know anything about Ruby :^) PCM (Paul Michali) Voice Gateway Solutions Business Unit (VGSBU) Cisco Systems,
            Message 5 of 29 , Nov 30, 2000
            • 0 Attachment
              Not knowing how to type, I wrote...

              > Well, I don't know anything about Rudy ...

              nor do I know anything about Ruby :^)


              PCM (Paul Michali)

              Voice Gateway Solutions Business Unit (VGSBU)
              Cisco Systems, Inc.
              250 Apollo Drive
              Chelmsford, MA 01824

              Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
              Paging: (800) 365-4578 [voice] pcm@... [email page]
            • Paul Michali
              ... As Ron wrote (probably several times), this is where the rubber meets the road. I started to think about some of these tasks and although I know how I d
              Message 6 of 29 , Nov 30, 2000
              • 0 Attachment
                Paul Michali wrote these list of potential tasks for the Java app:

                > A. Read one web site and send a hard-coded mail message.
                > B. Parse the route info for that web page and send the status code.
                > C. Parse the time and status msg and send that
                > D. Only send, if status is not OK
                > E. Store previous reading and report if status changes or status
                > msg changes and status is not OK
                > F. Read and parse a second site and send msg (A-E for 2nd site).
                > G. Notify info for second site when notifying for the first site or if
                > the second site state changes and first site is not OK.
                >

                As Ron wrote (probably several times), this is where the rubber meets
                the road. I started to think about some of these tasks and although I
                know how I'd implement the code, I'm not sure how I'd write a test
                (first) for the tasks. I guess it is a "how do I get started" thing. Where's
                my pair partner! (Oh yeah, I'm doing this solo :^)

                Anyone have some words of wisdom on how I should approach testing
                for task A?

                I'm thinking, to implement this, I need to open up a URL to a hard
                coded web page. Then I read the contents of the page. Then I open
                a socket to my mail server and form and send a hard coded message to
                my e-mail account. (I can see one sub task is to just try to send a
                hard coded e-mail message to may account).

                I'm not sure to how to write a test for this? Any suggestions? Thinking
                out load, I could make a class that listens on a socket and send the
                message to that socket to see if it gets there. Would that be a place
                to start, or is that going too far out of the way? Is this something I
                test by inspection, instead of automating a test?

                What about verifying that I can read from the web site? Should I
                write a test that looks at the page contents to see if there are a few
                of the basic HTML tags?

                Boy this test first stuff is hard!


                PCM (Paul Michali)

                Voice Gateway Solutions Business Unit (VGSBU)
                Cisco Systems, Inc.
                250 Apollo Drive
                Chelmsford, MA 01824

                Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
                Paging: (800) 365-4578 [voice] pcm@... [email page]
              • Dossy
                ... [ ... ] ... The code that reads the website presumably puts what it reads into some kind of data structure. Start with a canned webpage to read where the
                Message 7 of 29 , Nov 30, 2000
                • 0 Attachment
                  On 2000.11.30, Paul Michali <pcm@...> wrote:
                  > Paul Michali wrote these list of potential tasks for the Java app:
                  >
                  > > A. Read one web site and send a hard-coded mail message.
                  [ ... ]
                  > Anyone have some words of wisdom on how I should approach testing
                  > for task A?

                  The code that reads the website presumably puts what it reads into
                  some kind of data structure. Start with a canned webpage to read
                  where the data never changes. Try to read it, and compare what
                  you've read to what you expect to read. Each comparison can be
                  seen as a test case.

                  You can use a number of canned webpages as well. Or, a dynamic
                  page given a certain set of predictable inputs generates predictable
                  outputs. Make sure you get what you expected.

                  Sending the mail message: set up something on the receiving end
                  of the mail message (for testing, this could be a special address
                  set up for testing purposes) which parses the incoming email and
                  validates it. (Chicken and egg: how do you go about writing the
                  program which parses and validates the email ... heh heh.) If
                  the email is what you expected, it passes. Otherwise, it fails.

                  - Dossy

                  --
                  Dossy Shiobara mail: dossy@...
                  Panoptic Computer Network web: http://www.panoptic.com/
                • Ron Jeffries
                  ... Super answer, Dossy! Ron Jeffries www.XProgramming.com www.objectmentor.com
                  Message 8 of 29 , Nov 30, 2000
                  • 0 Attachment
                    At 02:34 PM 11/30/2000 -0500, Dossy wrote:
                    >The code that reads the website presumably puts what it reads into
                    >some kind of data structure. Start with a canned webpage to read
                    >where the data never changes.

                    Super answer, Dossy!

                    Ron Jeffries
                    www.XProgramming.com
                    www.objectmentor.com
                  • Laurent Bossavit
                    ... You seem to be on the right track. (Well, this is from one beginner to another...) ... If it s not automated, it s not a test. Install a local mail server
                    Message 9 of 29 , Nov 30, 2000
                    • 0 Attachment
                      > I'm thinking, to implement this, I need to open up a URL to a hard
                      > coded web page. Then I read the contents of the page. Then I open a
                      > socket to my mail server and form and send a hard coded message to
                      > my e-mail account. (I can see one sub task is to just try to send
                      > a hard coded e-mail message to may account).

                      You seem to be on the right track. (Well, this is from one beginner
                      to another...)

                      > I'm not sure to how to write a test for this? Any suggestions? Thinking
                      > out load, I could make a class that listens on a socket and send the
                      > message to that socket to see if it gets there. Would that be a place
                      > to start, or is that going too far out of the way? Is this something I
                      > test by inspection, instead of automating a test?

                      If it's not automated, it's not a test. Install a local mail server
                      (I recommend the shareware ArgoSoft it you're using Win32). Do the
                      Simplest Thing and rely on J2EE's JavaMail API to send mail as well
                      as read it (or, if the JavaMail API isn't congenial with you, have a
                      look at OROInc's NetComponents). In your test, send mail to
                      "localhost" (SMTP), then retrieve mail from "localhost" (POP3); check
                      that it is the same mail.

                      > What about verifying that I can read from the web site? Should I
                      > write a test that looks at the page contents to see if there are a
                      > few of the basic HTML tags?

                      Let's see... If your hardcoded URL were "http://www.yahoo.com", is
                      there any text string much more likely to occur in that page than
                      elsewhere that you could look for ? ;)


                      -[Morendil]-
                      Use of this tagline in nuclear applications prohibited.
                    • Paul Michali
                      ... Hmm. Hadn t thought of using a local mail server. I ve never set one up, so I don t know how hard that is. This is one area that I m hung on (how to test
                      Message 10 of 29 , Nov 30, 2000
                      • 0 Attachment
                        Laurent Bossavit wrote:

                        > If it's not automated, it's not a test. Install a local mail server
                        > (I recommend the shareware ArgoSoft it you're using Win32). Do the
                        > Simplest Thing and rely on J2EE's JavaMail API to send mail as well
                        > as read it (or, if the JavaMail API isn't congenial with you, have a
                        > look at OROInc's NetComponents). In your test, send mail to
                        > "localhost" (SMTP), then retrieve mail from "localhost" (POP3); check
                        > that it is the same mail.

                        Hmm. Hadn't thought of using a local mail server. I've never set one
                        up, so I don't know how hard that is. This is one area that I'm hung on
                        (how to test e-mailing). Maybe I should do a spike to see how to do
                        this.

                        I'll need to look into the JavaMail API too, as I forgot that this is
                        something I can use. My old app opened a socket to our mail server to
                        send e-mail. I was thinking of using a socket and have a thread that
                        listens on the socket for the message and then send my "mail" to that
                        socket instead.


                        PCM (Paul Michali)

                        Voice Gateway Solutions Business Unit (VGSBU)
                        Cisco Systems, Inc.
                        250 Apollo Drive
                        Chelmsford, MA 01824

                        Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
                        Paging: (800) 365-4578 [voice] pcm@... [email page]
                      • ejfried@ca.sandia.gov
                        ... I did precisely this on a recent project: wrote a tiny SMTP + POP3 mail server for testing purposes only. I put them both in the same server, so there was
                        Message 11 of 29 , Nov 30, 2000
                        • 0 Attachment
                          I think Paul Michali wrote:
                          > Laurent Bossavit wrote:
                          >
                          > > If it's not automated, it's not a test. Install a local mail server
                          > > (I recommend the shareware ArgoSoft it you're using Win32). Do the
                          > > Simplest Thing and rely on J2EE's JavaMail API to send mail as well
                          > > as read it (or, if the JavaMail API isn't congenial with you, have a
                          > > look at OROInc's NetComponents). In your test, send mail to
                          > > "localhost" (SMTP), then retrieve mail from "localhost" (POP3); check
                          > > that it is the same mail.
                          >
                          > Hmm. Hadn't thought of using a local mail server. I've never set one
                          > up, so I don't know how hard that is. This is one area that I'm hung on
                          > (how to test e-mailing). Maybe I should do a spike to see how to do
                          > this.
                          >
                          > I'll need to look into the JavaMail API too, as I forgot that this is
                          > something I can use. My old app opened a socket to our mail server to
                          > send e-mail. I was thinking of using a socket and have a thread that
                          > listens on the socket for the message and then send my "mail" to that
                          > socket instead.
                          >


                          I did precisely this on a recent project: wrote a tiny SMTP + POP3
                          mail server for testing purposes only. I put them both in the same
                          server, so there was no persistent message store; the SMTP server
                          received messages and put them into a HashMap of ArrayLists by
                          username, and the POP3 server pulled the messages out of the HashMap
                          and returned them. It was actually pretty easy -- you only need to
                          implement a few commands. You're not testing SMTP or POP3 protocol
                          compliance, so you can be pretty lax about what you accept. Use
                          JavaMail for the client side -- it's pretty painless.



                          ---------------------------------------------------------
                          Ernest Friedman-Hill
                          Distributed Systems Research Phone: (925) 294-2154
                          Sandia National Labs FAX: (925) 294-2234
                          Org. 8920, MS 9012 ejfried@...
                          PO Box 969 http://herzberg.ca.sandia.gov
                          Livermore, CA 94550
                        • Kevin Smith
                          ... Assuming you re hooking into a proven, third-party API of some sort, you might just mock it. Create your own code that supports the API, and make sure your
                          Message 12 of 29 , Nov 30, 2000
                          • 0 Attachment
                            On Thu, 30 Nov 2000 18:55:32 -0500 Paul Michali <Paul Michali <pcm@...>> wrote:

                            > Laurent Bossavit wrote:
                            >
                            > > If it's not automated, it's not a test. Install a local mail server
                            > > (I recommend the shareware ArgoSoft it you're using Win32). Do the
                            > > Simplest Thing and rely on J2EE's JavaMail API to send mail as well
                            > > as read it (or, if the JavaMail API isn't congenial with you, have a
                            > > look at OROInc's NetComponents). In your test, send mail to
                            > > "localhost" (SMTP), then retrieve mail from "localhost" (POP3); check
                            > > that it is the same mail.
                            >
                            > Hmm. Hadn't thought of using a local mail server. I've never set one
                            > up, so I don't know how hard that is. This is one area that I'm hung on
                            > (how to test e-mailing). Maybe I should do a spike to see how to do
                            > this.
                            >
                            > I'll need to look into the JavaMail API too, as I forgot that this is
                            > something I can use. My old app opened a socket to our mail server to
                            > send e-mail. I was thinking of using a socket and have a thread that
                            > listens on the socket for the message and then send my "mail" to that
                            > socket instead.

                            Assuming you're hooking into a proven, third-party API of
                            some sort, you might just mock it. Create your own code that
                            supports the API, and make sure your program is calling it
                            in the right sequence with proper parameters. Simpler than
                            writing your own POP and SMTP servers! And probably simpler
                            than setting up mail servers on your box if they aren't
                            already there. Faster, too.

                            Kevin
                          • Kevin Smith
                            ... Do you need to? Sometimes a story is just a task. Especially since these stories are intentionally very small. Of course, a task consists of subtasks, so
                            Message 13 of 29 , Nov 30, 2000
                            • 0 Attachment
                              > I see how each of these are building on value. One thing that
                              > is confusing to me is that, if these stories are so simple, how
                              > do I make tasks out of them?

                              Do you need to? Sometimes a story is just a task. Especially
                              since these stories are intentionally very small. Of course,
                              a task consists of subtasks, so perhaps that's what you're
                              asking. The difference would be that you wouldn't plan your
                              subtasks in advance. Through test-first, your code will tell
                              you what subtask is needed next.

                              >
                              > I was thinking of taking my Story 2 and breaking it into tasks
                              > that are of the detail of what you are showing for stories. Here's
                              > what I was thinking for tasks...
                              >
                              > A. Read one web site and send a hard-coded mail message.
                              > B. Parse the route info for that web page and send the status code.
                              > C. Parse the time and status msg and send that
                              > D. Only send, if status is not OK
                              > E. Store previous reading and report if status changes or status
                              > msg changes and status is not OK
                              > F. Read and parse a second site and send msg (A-E for 2nd site).
                              > G. Notify info for second site when notifying for the first site or if
                              > the second site state changes and first site is not OK.
                              >
                              > I figured that Story 2 would deal with how to process one event
                              > and that Story 1 would only deal with doing the process repetitively
                              > and for a set duration. Story 3 would still be handling configuration.
                              >
                              > This is a bit different approach than having a story that does the
                              > periodic monitoring and sends a simple message. Any flaws or
                              > concerns about my revised approach?

                              Sounds fine. I would reverse stories 1 and 2, however.
                              Getting one alert at 9am would be more "valuable" (to me)
                              than watching a program tick every five minutes, I think.

                              Kevin
                            • Paul Michali
                              ... Definitely. I was planning on working it 2, 1, then 3. ... Although a cool idea using a local server, as I think about this more, I m not totally convinced
                              Message 14 of 29 , Dec 1, 2000
                              • 0 Attachment
                                Kevin Smith wrote:

                                > Sounds fine. I would reverse stories 1 and 2, however.
                                > Getting one alert at 9am would be more "valuable" (to me)
                                > than watching a program tick every five minutes, I think.

                                Definitely. I was planning on working it 2, 1, then 3.


                                > > Laurent Bossavit wrote:
                                > >
                                > > > ... Install a local mail server
                                > > > (I recommend the shareware ArgoSoft it you're using Win32). Do the
                                > > > Simplest Thing and rely on J2EE's JavaMail API to send mail as well
                                > > > as read it (or, if the JavaMail API isn't congenial with you, have a
                                > > > look at OROInc's NetComponents). In your test, send mail to
                                > > > "localhost" (SMTP), then retrieve mail from "localhost" (POP3); check
                                > > > that it is the same mail.
                                > >

                                I wrote:

                                > > Hmm. Hadn't thought of using a local mail server. I've never set one
                                > > up, so I don't know how hard that is. This is one area that I'm hung on
                                > > (how to test e-mailing). Maybe I should do a spike to see how to do
                                > > this.

                                Although a cool idea using a local server, as I think about this more, I'm not
                                totally convinced that I should go through the effort for what I want to do.
                                Is there a simpler way?


                                > > I'll need to look into the JavaMail API too, as I forgot that this is
                                > > something I can use. My old app opened a socket to our mail server to
                                > > send e-mail. I was thinking of using a socket and have a thread that
                                > > listens on the socket for the message and then send my "mail" to that
                                > > socket instead.
                                >
                                If anyone has a sample of how JavaMail can be used to send a simple
                                text mail message and then read it, I'd appreciate it. I just downloaded
                                the JavaMail 1.2, but it will take some time to figure this all out.

                                One thought this stirred up was about DTSTTCPW. For me, the simplest
                                thing for me is using Sockets (because I know how to do it). Whereas
                                JavaMail looks like a lot more effort, but will most likely be a simpler
                                solution...

                                Kevin Smith wrote:

                                > Assuming you're hooking into a proven, third-party API of
                                > some sort, you might just mock it. Create your own code that
                                > supports the API, and make sure your program is calling it
                                > in the right sequence with proper parameters. Simpler than
                                > writing your own POP and SMTP servers! And probably simpler
                                > than setting up mail servers on your box if they aren't
                                > already there. Faster, too.

                                I think I get what you are suggesting, but I'm not sure how to
                                implement it in this context. I like the idea of not going through the
                                effort to setup a mail server. Is the following correct?

                                Make a test case that creates a target object and tells it to
                                send a message. The message would be sent to some mock
                                object instead of to a real mail server. The mock object would
                                verify that the message was correct.

                                If it is, then the fuzzy part is how to fake out JavaMail with the
                                mock object (again, because of my lack of knowledge of JavaMail).

                                These area some great replies. Thanks!


                                PCM (Paul Michali)

                                Voice Gateway Solutions Business Unit (VGSBU)
                                Cisco Systems, Inc.
                                250 Apollo Drive
                                Chelmsford, MA 01824

                                Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
                                Paging: (800) 365-4578 [voice] pcm@... [email page]
                              • Paul Michali
                                ... Sure, but I don t know how good they are as I ve never done XP before and I m doing this solo. ... Nope :^) I just looked at each task and guestimated
                                Message 15 of 29 , Dec 1, 2000
                                • 0 Attachment
                                  Duncan McGregor wrote:

                                  >
                                  > Can I ask what you based your estimates on?

                                  Sure, but I don't know how good they are as I've never done XP before
                                  and I'm doing this solo.

                                  > It seems to me like 2.5 ideal
                                  > hours was a little, well, optimistic. Whereas a velocity of 1/3 when you are
                                  > working alone and at home seems low.
                                  >
                                  > I would have estimated the lot at 15 hours. When I'm working on my own stuff
                                  > the meetings and so on that are normally accounted for in velocity don't
                                  > apply - instead I just estimate the end time bases on the number of hours I
                                  > expect to be able to devote to the problem (say 2 hours tonight, 4 over the
                                  > weekend, one more on Monday). I'm on my own, so there's no pairing factor to
                                  > include either. The result is that, bar statistically-large unforeseen
                                  > technical hitches, I usually get away with a velocity of one.
                                  >
                                  > I guess if I was working out how many elapsed weeks it would take to do a 5
                                  > ideal-man-day project I would fall back on a velocity of (10 hours a week =
                                  > 1.5 days a week = 0.2). Hey, that's pretty close to yours - was that your
                                  > reasoning?

                                  Nope :^)

                                  I just looked at each task and "guestimated" how long it would take me sitting
                                  at my PC, punching out code (I think that's what I read I should do). Pure
                                  programming, without any other distractions. I'm cheating a bit, as I have an
                                  application that I made a while back, so I know most of the things I have to
                                  do.

                                  On the other hand, now that I'm getting so great ideas from everyone, I'm
                                  learning about things that I have no experience with (JavaMail, mail servers),
                                  so I may have to re-estimate the new task list that I have for Story 2.

                                  I was also thinking of doing some "spike solutions" to learn about these
                                  technologies to see if they would apply to my solution. Then maybe I can
                                  do a better estimate.

                                  Anyway, I was then thinking of multiplying all the ideal numbers by three
                                  and then track how long I really spend to see how well it comes out.


                                  > Waiting to see how it turn's out...

                                  Me too, as I'm only working on it in my spare time. Darn job. Can't find
                                  any time to have fun and play with XP :^(


                                  PCM (Paul Michali)

                                  Carrier Voice Gateway Business Unit (CVGBU)
                                  Cisco Systems, Inc.
                                  250 Apollo Drive
                                  Chelmsford, MA 01824

                                  Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
                                  Paging: (800) 365-4578 [voice] pcm@... [email page]
                                • Kevin Smith
                                  ... You have mentioned that you wrote this app once before. What solution did you use to send mail then? In other words, is there a workable solution that you
                                  Message 16 of 29 , Dec 1, 2000
                                  • 0 Attachment
                                    > > Assuming you're hooking into a proven, third-party API of
                                    > > some sort, you might just mock it. Create your own code that
                                    > > supports the API, and make sure your program is calling it
                                    > > in the right sequence with proper parameters. Simpler than
                                    > > writing your own POP and SMTP servers! And probably simpler
                                    > > than setting up mail servers on your box if they aren't
                                    > > already there. Faster, too.
                                    >
                                    > I think I get what you are suggesting, but I'm not sure how to
                                    > implement it in this context. I like the idea of not going through the
                                    > effort to setup a mail server. Is the following correct?
                                    >
                                    > Make a test case that creates a target object and tells it to
                                    > send a message. The message would be sent to some mock
                                    > object instead of to a real mail server. The mock object would
                                    > verify that the message was correct.
                                    >
                                    > If it is, then the fuzzy part is how to fake out JavaMail with the
                                    > mock object (again, because of my lack of knowledge of JavaMail).

                                    You have mentioned that you wrote this app once before. What
                                    solution did you use to send mail then? In other words, is
                                    there a workable solution that you already know how to use?
                                    Once it's working, you could later switch to JavaMail if you
                                    wanted to. Or was that app in a different language/platform?
                                    I'm just looking for ways to deliver that business value as
                                    quickly as possible.

                                    If you are going to mock JavaMail, then I think you
                                    described it pretty well. In a perfect world, JavaMail would
                                    have a published interface. You could write a class that
                                    implements that interface.

                                    If it instead publishes a class, then it's harder to mock. I
                                    think you would create your own interface, with two
                                    implementations. One would simply pass through to JavaMail.
                                    Since it's trivial, you could get away with no UT's for it.
                                    the other implementation would be your test stub.

                                    I'm not a Java guru, so grab a grain of salt.

                                    Kevin
                                  • Chris Booth
                                    ... set one ... hung on ... to do ... more, I m not ... want to do. ... I felt I just had to point out that just because something is EASY doesn t mean it is
                                    Message 17 of 29 , Dec 1, 2000
                                    • 0 Attachment
                                      --- In extremeprogramming@egroups.com, Paul Michali <pcm@c...> wrote:
                                      > I wrote:
                                      >
                                      > > > Hmm. Hadn't thought of using a local mail server. I've never
                                      set one
                                      > > > up, so I don't know how hard that is. This is one area that I'm
                                      hung on
                                      > > > (how to test e-mailing). Maybe I should do a spike to see how
                                      to do
                                      > > > this.
                                      >
                                      > Although a cool idea using a local server, as I think about this
                                      more, I'm not
                                      > totally convinced that I should go through the effort for what I
                                      want to do.
                                      > Is there a simpler way?

                                      I felt I just had to point out that just because something is EASY
                                      doesn't mean it is SIMPLE. "Easy" is a property of the process,
                                      but "simple" is a property of the product. XP wants a simple design
                                      so that your intention is communicated (amongst other things). You
                                      want an easy implementation to make the process fast. I think XP
                                      says that you should do the simple thing rather than the easy thing,
                                      because in the long term it will save the customer's money. Even if
                                      he is you, I believe :-)

                                      Regards,

                                      Chris.
                                    • Paul Michali
                                      ... I had used sockets by opening a socket to the corporate mail server, forming a mail message, and then sending it. It is about 50 lines of Java and is not
                                      Message 18 of 29 , Dec 1, 2000
                                      • 0 Attachment
                                        Kevin Smith wrote:

                                        > You have mentioned that you wrote this app once before. What
                                        > solution did you use to send mail then? In other words, is
                                        > there a workable solution that you already know how to use?
                                        > Once it's working, you could later switch to JavaMail if you
                                        > wanted to. Or was that app in a different language/platform?
                                        > I'm just looking for ways to deliver that business value as
                                        > quickly as possible.

                                        I had used sockets by opening a socket to the corporate
                                        mail server, forming a mail message, and then sending it. It is
                                        about 50 lines of Java and is not very robust (it doesn't check
                                        to see if the message was sent successfully).

                                        I have been toying with the idea that I could do it this way and
                                        then change it later. I've also been thinking about doing a spike
                                        solution with JavaMail to see how that works.

                                        I been pondering about whether I should do what is quickest for
                                        me versus what is "the simplest thing". I just read this e-mail, which
                                        is along the same thoughts...

                                        Chris Booth wrote:

                                        > I felt I just had to point out that just because something is EASY
                                        > doesn't mean it is SIMPLE. "Easy" is a property of the process,
                                        > but "simple" is a property of the product. XP wants a simple design
                                        > so that your intention is communicated (amongst other things). You
                                        > want an easy implementation to make the process fast. I think XP
                                        > says that you should do the simple thing rather than the easy thing,
                                        > because in the long term it will save the customer's money. Even if
                                        > he is you, I believe :-)

                                        Kevin Smith wrote:

                                        > If you are going to mock JavaMail, then I think you
                                        > described it pretty well. In a perfect world, JavaMail would
                                        > have a published interface. You could write a class that
                                        > implements that interface.
                                        >
                                        > If it instead publishes a class, then it's harder to mock. I
                                        > think you would create your own interface, with two
                                        > implementations. One would simply pass through to JavaMail.
                                        > Since it's trivial, you could get away with no UT's for it.
                                        > the other implementation would be your test stub.
                                        >
                                        > I'm not a Java guru, so grab a grain of salt.

                                        Yeah, me neither, and there's quite a bit to learn about all of
                                        the Java packages that are available. I've going to look at the
                                        stuff that Robert Crawford posted recently on this thread to
                                        learn more about JavaMail.


                                        PCM (Paul Michali)

                                        Carrier Voice Gateway Business Unit (CVGBU)
                                        Cisco Systems, Inc.
                                        250 Apollo Drive
                                        Chelmsford, MA 01824

                                        Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
                                        Paging: (800) 365-4578 [voice] pcm@... [email page]
                                      • Joe Tatem
                                        This is just me, but I would start with the code you have. It may not be very good, but at least it does something. Then, you can write tests that break it,
                                        Message 19 of 29 , Dec 1, 2000
                                        • 0 Attachment
                                          This is just me, but I would start with the code you have. It may not be
                                          very good, but at least it does something. Then, you can write tests
                                          that break it, make the fixes and refactor mercilessly.

                                          You still have to have a test setup, tho. Maybe the poster who wrote the
                                          in-memory SMTP/POP3 server could share it?

                                          Joe

                                          Paul Michali wrote:
                                          >
                                          > Kevin Smith wrote:
                                          >
                                          > > You have mentioned that you wrote this app once before. What
                                          > > solution did you use to send mail then? In other words, is
                                          > > there a workable solution that you already know how to use?
                                          > > Once it's working, you could later switch to JavaMail if you
                                          > > wanted to. Or was that app in a different language/platform?
                                          > > I'm just looking for ways to deliver that business value as
                                          > > quickly as possible.
                                          >
                                          > I had used sockets by opening a socket to the corporate
                                          > mail server, forming a mail message, and then sending it. It is
                                          > about 50 lines of Java and is not very robust (it doesn't check
                                          > to see if the message was sent successfully).
                                          >
                                          > I have been toying with the idea that I could do it this way and
                                          > then change it later. I've also been thinking about doing a spike
                                          > solution with JavaMail to see how that works.
                                          >
                                          > I been pondering about whether I should do what is quickest for
                                          > me versus what is "the simplest thing". I just read this e-mail, which
                                          > is along the same thoughts...
                                          >
                                          > Chris Booth wrote:
                                          >
                                          > > I felt I just had to point out that just because something is EASY
                                          > > doesn't mean it is SIMPLE. "Easy" is a property of the process,
                                          > > but "simple" is a property of the product. XP wants a simple design
                                          > > so that your intention is communicated (amongst other things). You
                                          > > want an easy implementation to make the process fast. I think XP
                                          > > says that you should do the simple thing rather than the easy thing,
                                          > > because in the long term it will save the customer's money. Even if
                                          > > he is you, I believe :-)
                                          >
                                          > Kevin Smith wrote:
                                          >
                                          > > If you are going to mock JavaMail, then I think you
                                          > > described it pretty well. In a perfect world, JavaMail would
                                          > > have a published interface. You could write a class that
                                          > > implements that interface.
                                          > >
                                          > > If it instead publishes a class, then it's harder to mock. I
                                          > > think you would create your own interface, with two
                                          > > implementations. One would simply pass through to JavaMail.
                                          > > Since it's trivial, you could get away with no UT's for it.
                                          > > the other implementation would be your test stub.
                                          > >
                                          > > I'm not a Java guru, so grab a grain of salt.
                                          >
                                          > Yeah, me neither, and there's quite a bit to learn about all of
                                          > the Java packages that are available. I've going to look at the
                                          > stuff that Robert Crawford posted recently on this thread to
                                          > learn more about JavaMail.
                                          >
                                          > PCM (Paul Michali)
                                          >
                                          > Carrier Voice Gateway Business Unit (CVGBU)
                                          > Cisco Systems, Inc.
                                          > 250 Apollo Drive
                                          > Chelmsford, MA 01824
                                          >
                                          > Phone : (800) 572-6771 x 45817 (978) 244-5817 [direct]
                                          > Paging: (800) 365-4578 [voice] pcm@... [email page]
                                          >
                                          > To Post a message, send it to: extremeprogramming@...
                                          >
                                          > To Unsubscribe, send a blank message to: extremeprogramming-unsubscribe@...
                                          >
                                          > Ad-free courtesy of objectmentor.com
                                        • Dossy
                                          ... Never label leveraging past experience as cheating . That s a lot of what differentiates good programmers from really good programmers. Speaking of
                                          Message 20 of 29 , Dec 1, 2000
                                          • 0 Attachment
                                            On 2000.12.01, Paul Michali <pcm@...> wrote:
                                            > I just looked at each task and "guestimated" how long it would take me sitting
                                            > at my PC, punching out code (I think that's what I read I should do). Pure
                                            > programming, without any other distractions. I'm cheating a bit, as I have an
                                            > application that I made a while back, so I know most of the things I have to
                                            > do.

                                            Never label "leveraging past experience" as "cheating". That's a
                                            lot of what differentiates good programmers from really good
                                            programmers.

                                            Speaking of cheating, let me ask the XP folks a question:

                                            Say you recognize that a set of stories the customer asked for could
                                            be solved with a third-party product. Completing these stories would
                                            be by integrating this third-party product into the project you're
                                            delivering to your customer.

                                            o How does this affect your velocity? Should you even count these
                                            completed stories towards your velocity? Should the time it takes
                                            to integrate product XYZ count as the velocity?

                                            o Should the original stories be thrown out and a new story written
                                            along the lines of "integrate product XYZ into project"?
                                            Should the original stories be kept and the task and story
                                            completion be tracked as "completed by integrating product XYZ
                                            into product"?

                                            o How do you give an estimate for something like this? Pretend you
                                            have no experience with product XYZ at all, other than the fact that
                                            you know for certain that it will meet your customer's needs. Is it
                                            fair to give WAG's at that point, and perhaps adjust them as SOON
                                            as you know they're wrong and let the customer make decisions then?
                                            Do you just say "I really have no idea, and no way of making an
                                            educated guess" and go forward with NO estimates? (Scary thought.)

                                            (Pretend that no spike you could run would really give you a good
                                            idea of the difficulty with any real level of confidence. Pretend
                                            that the cost of product XYZ would be the same or less than what you
                                            would charge the customer to develop it yourself, and that time to
                                            integrate product XYZ would be the same or less than the time it
                                            takes to implement it yourself.)


                                            I'm sure there are other questions that should be asked, but these
                                            are the only ones I can think of off the top of my head.

                                            - Dossy

                                            --
                                            Dossy Shiobara mail: dossy@...
                                            Panoptic Computer Network web: http://www.panoptic.com/
                                          • John Brewer
                                            ... takes ... (See below) ... If the team already has an estimate for doing the story by hand. So now you re handing your customer an alternative story, buy
                                            Message 21 of 29 , Dec 1, 2000
                                            • 0 Attachment
                                              --- In extremeprogramming@egroups.com, Dossy <dossy@p...> wrote:
                                              > On 2000.12.01, Paul Michali <pcm@c...> wrote:
                                              > o How does this affect your velocity? Should you even count these
                                              > completed stories towards your velocity? Should the time it
                                              takes
                                              > to integrate product XYZ count as the velocity?

                                              (See below)

                                              > o Should the original stories be thrown out and a new story written
                                              > along the lines of "integrate product XYZ into project"?
                                              > Should the original stories be kept and the task and story
                                              > completion be tracked as "completed by integrating product XYZ
                                              > into product"?


                                              If the team already has an estimate for doing the story by hand. So
                                              now you're handing your customer an alternative story, "buy and
                                              integrate XYZ" instead of "write XYZ functionality in house." You
                                              estimate the new story, apprise your customer of the risks (per-seat
                                              licensing, and product immaturity, for example). Then he gets to
                                              decide.

                                              > o How do you give an estimate for something like this? Pretend you
                                              > have no experience with product XYZ at all, other than the fact
                                              that
                                              > you know for certain that it will meet your customer's needs.

                                              If I have no experience with it, how can I be certain it'll meet my
                                              customer's needs?

                                              > Do you just say "I really have no idea, and no way of making an
                                              > educated guess" and go forward with NO estimates? (Scary
                                              thought.)

                                              You spike. If the spike is going to take a large chunk of time, you
                                              get the customer to schedule it.

                                              > (Pretend that no spike you could run would really give you a good
                                              > idea of the difficulty with any real level of confidence.

                                              If no spike could give me an estimate, then I'd consider it too risky
                                              to try.

                                              > Pretend
                                              > that the cost of product XYZ would be the same or less than what
                                              you
                                              > would charge the customer to develop it yourself, and that time
                                              to
                                              > integrate product XYZ would be the same or less than the time it
                                              > takes to implement it yourself.)

                                              Which one? If integration can cost as much as doing it ourselves,
                                              then any cost of product XYZ represents an additional cost to the
                                              customer.

                                              John Brewer
                                              Jera Design
                                            • Dossy
                                              ... Pretend you received advice from an expert whose knowledge you respect that the product will meet your customer s needs. Pretend that the expert has
                                              Message 22 of 29 , Dec 1, 2000
                                              • 0 Attachment
                                                On 2000.12.02, John Brewer <jbrewer@...> wrote:
                                                > > o How do you give an estimate for something like this? Pretend you
                                                > > have no experience with product XYZ at all, other than the fact
                                                > that
                                                > > you know for certain that it will meet your customer's needs.
                                                >
                                                > If I have no experience with it, how can I be certain it'll meet my
                                                > customer's needs?


                                                Pretend you received advice from an expert whose knowledge you
                                                respect that the product will meet your customer's needs. Pretend
                                                that the expert has first-hand experience with the product, and
                                                you have shown him your story cards---you have just paired on story
                                                estimation---and he made this recommendation to use product XYZ.

                                                The gut reaction is "why can't this expert make the estimate?" and
                                                the quick answer is "perhaps the expert can do it in X days, but
                                                your team probably won't be able to." No, the expert cannot take
                                                part in any of the integration, not even to answer questions. (Say,
                                                the expert is a friend only doing you a favor.)

                                                Do you ignore what the expert has to say and implement in-house since
                                                you lack any experience, or... what?


                                                > > Do you just say "I really have no idea, and no way of making an
                                                > > educated guess" and go forward with NO estimates? (Scary
                                                > thought.)
                                                >
                                                > You spike. If the spike is going to take a large chunk of time, you
                                                > get the customer to schedule it.


                                                What if you can't spike because you can't get an evaluation copy of
                                                the product to spike with, and you can't convince the customer to
                                                purchase the product just to run a spike?

                                                (Most companies will give eval. copies, but this is just a hypothetical.)


                                                > > (Pretend that no spike you could run would really give you a good
                                                > > idea of the difficulty with any real level of confidence.
                                                >
                                                > If no spike could give me an estimate, then I'd consider it too risky
                                                > to try.


                                                That's what I was thinking.


                                                > > Pretend
                                                > > that the cost of product XYZ would be the same or less than what
                                                > you
                                                > > would charge the customer to develop it yourself, and that time
                                                > to
                                                > > integrate product XYZ would be the same or less than the time it
                                                > > takes to implement it yourself.)
                                                >
                                                > Which one? If integration can cost as much as doing it ourselves,
                                                > then any cost of product XYZ represents an additional cost to the
                                                > customer.


                                                The win is speed or cost. Let me expand what I said into what I
                                                was really trying to express (un-refactoring, whatever we used to
                                                call this back in Algebra class... multiplying out?):

                                                If it would cost the same, it would take less time to buy the
                                                product.

                                                If it would take the same amount of time, it would cost less to
                                                buy the product.


                                                - Dossy

                                                --
                                                Dossy Shiobara mail: dossy@...
                                                Panoptic Computer Network web: http://www.panoptic.com/
                                              • Tim Mackinnon
                                                Guys - be careful with this approach. I would reccomend viewing connecting to something real (even if its fake) as a kind of System test which is allowed to
                                                Message 23 of 29 , Dec 3, 2000
                                                • 0 Attachment
                                                  Guys - be careful with this approach. I would reccomend viewing
                                                  connecting to something real (even if its fake) as a kind of System
                                                  test which is allowed to fail.

                                                  I say this because by virtue of the protocols involved you often get
                                                  one-off failures when you run your unit tests (its hard to guarantee
                                                  that you started your server in time to run tests against it,
                                                  similarly shutting it down can be tricky as well).

                                                  We have stuff like this, and we are slowly getting rid of it and
                                                  replacing it with objects we can mock up - e.g. Url is final in Java
                                                  but we have wrapped it and we use something we call a WebConnection.
                                                  We pass this object around and for our tests we pass in a fake
                                                  version that does no url connections at all. This is great for
                                                  repeatable unit testing.

                                                  We then have some separate "system tests" (I say system because they
                                                  aren't really acceptance/functional becuase the user didn't really
                                                  write them) that connect to live things and prove some of the lower
                                                  level connectivity. These tests will sometimes fail, but that is
                                                  acceptable within reason (e.g. 1 time in 10 or something like that).

                                                  Tim

                                                  --- In extremeprogramming@egroups.com, ejfried@c... wrote:
                                                  > I think Paul Michali wrote:
                                                  > > Laurent Bossavit wrote:
                                                  > >
                                                  > > > If it's not automated, it's not a test. Install a local mail
                                                  server
                                                  > > > (I recommend the shareware ArgoSoft it you're using Win32). Do
                                                  the
                                                  > > > Simplest Thing and rely on J2EE's JavaMail API to send mail as
                                                  well
                                                  > > > as read it (or, if the JavaMail API isn't congenial with you,
                                                  have a
                                                  > > > look at OROInc's NetComponents). In your test, send mail to
                                                  > > > "localhost" (SMTP), then retrieve mail from "localhost" (POP3);
                                                  check
                                                  > > > that it is the same mail.
                                                  > >
                                                  > > Hmm. Hadn't thought of using a local mail server. I've never set
                                                  one
                                                  > > up, so I don't know how hard that is. This is one area that I'm
                                                  hung on
                                                  > > (how to test e-mailing). Maybe I should do a spike to see how to
                                                  do
                                                  > > this.
                                                  > >
                                                  > > I'll need to look into the JavaMail API too, as I forgot that
                                                  this is
                                                  > > something I can use. My old app opened a socket to our mail
                                                  server to
                                                  > > send e-mail. I was thinking of using a socket and have a thread
                                                  that
                                                  > > listens on the socket for the message and then send my "mail" to
                                                  that
                                                  > > socket instead.
                                                  > >
                                                  >
                                                  >
                                                  > I did precisely this on a recent project: wrote a tiny SMTP + POP3
                                                  > mail server for testing purposes only. I put them both in the same
                                                  > server, so there was no persistent message store; the SMTP server
                                                  > received messages and put them into a HashMap of ArrayLists by
                                                  > username, and the POP3 server pulled the messages out of the HashMap
                                                  > and returned them. It was actually pretty easy -- you only need to
                                                  > implement a few commands. You're not testing SMTP or POP3 protocol
                                                  > compliance, so you can be pretty lax about what you accept. Use
                                                  > JavaMail for the client side -- it's pretty painless.
                                                  >
                                                  >
                                                  >
                                                  > ---------------------------------------------------------
                                                  > Ernest Friedman-Hill
                                                  > Distributed Systems Research Phone: (925) 294-2154
                                                  > Sandia National Labs FAX: (925) 294-2234
                                                  > Org. 8920, MS 9012 ejfried@c...
                                                  > PO Box 969 http://herzberg.ca.sandia.gov
                                                  > Livermore, CA 94550
                                                • Laurent Bossavit
                                                  ... Given the above assumptions, isn t there an extra risk involved when choosing the integration strategy over the development strategy ? The above
                                                  Message 24 of 29 , Dec 4, 2000
                                                  • 0 Attachment
                                                    > Pretend that no spike you could run would really give you a good
                                                    > idea of the difficulty with any real level of confidence. Pretend
                                                    > that the cost of product XYZ would be the same or less than what
                                                    > you would charge the customer to develop it yourself, and that time
                                                    > to integrate product XYZ would be the same or less than the time it
                                                    > takes to implement it yourself.

                                                    Given the above assumptions, isn't there an extra risk involved
                                                    when choosing the "integration" strategy over the "development"
                                                    strategy ? The above implies that the "time", "scope", and "cost"
                                                    variables are controlled, leaving what variable unconstrained ?..


                                                    ========================================
                                                    Bless n'a pas de modele : son ambition
                                                    est d'en devenir un.
                                                    ========================================
                                                    Laurent Bossavit - Software Architect
                                                    >>> laurent.bossavit@... <<<
                                                    >>> 06 68 15 11 44 <<<
                                                    >> ICQ#39281367 <<
                                                    Agence Bless http://www.agencebless.com/
                                                    ========================================
                                                  • Dossy
                                                    ... The idea was that quality, scope and cost would be fixed by choosing the third-party component. Quality, time and cost could be fixed by implementing
                                                    Message 25 of 29 , Dec 4, 2000
                                                    • 0 Attachment
                                                      On 2000.12.04, Laurent Bossavit <laurent.bossavit@...> wrote:
                                                      > > Pretend that no spike you could run would really give you a good
                                                      > > idea of the difficulty with any real level of confidence. Pretend
                                                      > > that the cost of product XYZ would be the same or less than what
                                                      > > you would charge the customer to develop it yourself, and that time
                                                      > > to integrate product XYZ would be the same or less than the time it
                                                      > > takes to implement it yourself.
                                                      >
                                                      > Given the above assumptions, isn't there an extra risk involved
                                                      > when choosing the "integration" strategy over the "development"
                                                      > strategy ? The above implies that the "time", "scope", and "cost"
                                                      > variables are controlled, leaving what variable unconstrained ?..

                                                      The idea was that quality, scope and cost would be fixed by choosing
                                                      the third-party component. Quality, time and cost could be fixed
                                                      by implementing in-house.

                                                      Still, my question really was: how do you give estimates for something
                                                      you've never done before, and either there IS no spike that would give
                                                      you an estimate you have confidence in, or you can't think of a spike,
                                                      or the spike itself would be too time consuming/costly.

                                                      It seems the common theme amongst the XP'ers is: "Too risky, don't
                                                      do it."


                                                      - Dossy

                                                      --
                                                      Dossy Shiobara mail: dossy@...
                                                      Panoptic Computer Network web: http://www.panoptic.com/
                                                    • Russell Giebelhaus
                                                      I am currently reading Martin Fowler s book Refactoring: Improving the Design of Existing Code. I was intrigued to read about the Smalltalk Profiler for
                                                      Message 26 of 29 , Dec 8, 2000
                                                      • 0 Attachment
                                                        I am currently reading Martin Fowler's book Refactoring: Improving the
                                                        Design of Existing Code.
                                                        I was intrigued to read about the Smalltalk Profiler for discovering and
                                                        pinpointing performance concerns in the code.

                                                        Are there similar profilers available for Java code?
                                                        We are currently writing a transparent persistence layer (utilizing XP) and
                                                        will soon be at the stage of needing to pinpoint performance issues.

                                                        Thank you for your help,
                                                        Russell Giebelhaus

                                                        Developer, Web Solutions, net-linx Americas Inc.
                                                        200, 12420 - 104 Avenue, Edmonton, Alberta, Canada T5N 3Z9
                                                        russell.giebelhaus@...
                                                      • Jason Yip
                                                        ... wrote: ... It s like these things come in groups... PerfAnal,
                                                        Message 27 of 29 , Dec 8, 2000
                                                        • 0 Attachment
                                                          --- In extremeprogramming@egroups.com, "Russell Giebelhaus"
                                                          <russell.giebelhaus@n...> wrote:
                                                          <snip>
                                                          > Are there similar profilers available for Java code?
                                                          > We are currently writing a transparent persistence layer (utilizing
                                                          > XP) and will soon be at the stage of needing to pinpoint
                                                          > performance issues.

                                                          It's like these things come in groups...

                                                          PerfAnal,
                                                          http://developer.java.sun.com/developer/technicalArticles/Programming/
                                                          perfanal/

                                                          or jProf, http://www.inttek.com/~jlnance/mozilla/jprof/
                                                        • Chad Fowler
                                                          ... For a cheap solution, try java -prof . It s not beautiful to read, but it can be helpful.
                                                          Message 28 of 29 , Dec 9, 2000
                                                          • 0 Attachment
                                                            >
                                                            > Are there similar profilers available for Java code?

                                                            For a cheap solution, try "java -prof <your class>". It's not
                                                            beautiful to read, but it can be helpful.
                                                          • Kevin Lewis
                                                            The commercial players I know about: http://www.optimizeit.com/ http://www.jprobe.com/software/jprobe/ I do think that the profiling support in the JDK is
                                                            Message 29 of 29 , Dec 16, 2000
                                                            • 0 Attachment
                                                              The commercial players I know about:
                                                              http://www.optimizeit.com/
                                                              http://www.jprobe.com/software/jprobe/

                                                              I do think that the profiling support in the JDK is pretty good.

                                                              --
                                                              Kevin Lewis
                                                              Axys Solutions
                                                              http://www.AxysSolutions.com/
                                                            Your message has been successfully submitted and would be delivered to recipients shortly.