CodeBetter.Com
CodeBetter.Com
RSS 2.0 via Feedburner
           Do you Twitter? Follow us @CodeBetter

Darrell Norton's Blog [MVP]

Fill in description here...

April 2005 - Posts

  • red-gate releases Best of SQL Server Central vol 2

    red-gate has just made The Best of SQL Server Central Vol 2 available for download on their website.

    Posted Apr 29 2005, 01:31 PM by darrell with no comments
    Filed under:
  • Testing International Addresses

    I've been working in a testing role recently, and it's interesting to come at an application "from the other side." Now when I hear all the typical developer excuses, they sound pretty contrite and hollow.

    Testing addresses is interesting. Most people understand how addresses work in their own country, but I for one did not know how addresses work in other countries, and since I was working on something that will be distributed internationally (though in English, which significantly cuts down on the testing), I needed to check these things. Fortunately, I found this great website called Frank's Compulsive Guide to Postal Addresses.

    Did you know:

    The best international addressing strategy is one that is not only consistent and inoffensive, but that also achieves to whatever degree possible several potentially conflicting goals:

    1. The address complies with the addressing guidelines of the originating country (USA in this case) and is dispatched to the correct destination country without any delay caused by the address itself.
    2. The address complies with the addressing requirements of the destination country and is dispatched to the target address without address-related delay.
    3. The address fits your own organization's database and record-keeping needs, ideally allowing reports and selections by country, city, etc.

    And when sending international mail in the US:

    1. The Country Line must be understandable by the USPS.
    2. The City Line must be understandable by the postal authorities in the destination country.
    3. The lines above the City Line must be understandable by the destination post office.

    Fascinating stuff.

  • Streaming music with Windows Media Services and ASP.NET

    Here's an interesting article by Shawn Wildermuth:

    Streaming with Windows Media Services and ASP.NET

    It shows you how to setup the Windows Media Services SDK on IIS, create a web site to browse a collection of MP3s on disk, create a playlist, and then stream it to the user's computer! Tres cool.

    I did something similar with RealPlayer and Cold Fusion back in the day that allowed the people in the repair lab to upload MP3s (hey, it was back in the days of Napster) and then stream short playlists over the intranet. But it wasn't this cool, and RealPlayer sucked back then. The more things change, the more they stay the same. :)

    Posted Apr 29 2005, 06:01 AM by darrell with no comments
    Filed under:
  • Extreme Programming Explained: 2nd ed - Part 1

    The first edition of Extreme Programming Explained had too much emphasis on practices and none on principles. Values were mentioned, but it was like talking about the CEO and the assembly line workers in a company with no mention of middle management. Thankfully Kent Beck has rectified that situation in Extreme Programming Explained: Embrace Change 2nd ed.

    First up are the values. Values are the root determinants of your behavior. There is always a root value underlying your actions when developing software. For example, say a developer decides that a UI bug is not important even though the customers clearly think it is and say so. His action may represent an underlying value that he doesn't respect non-technical people.

    XP's values are communication, simplicity, feedback, courage, and respect. Astute readers will notice that this is one more than in the previous edition. These values are behind the commonly-known XP practices (pair programming, test-driven development, etc.). But values don't map directory to practices; there is an intermediary step called principles. Extensive software requirement documents are intended to communicate, but so are face-to-face meetings. They both represent the value of communication, but your domain-specific principles will determine which one you prefer.

    The "new" XP has fourteen principles:

    • Humanity - software is written by people, XP takes it into account
    • Economics - "business" pays for software, so let's make sure to deliver business value
    • Mutual benefit - don't choose solutions that may work for you but really transfer the burden to someone else
    • Self-similarity - I don't know where Kent Beck was going with this one, but it sounds a lot like patterns (not just design patterns, all types of patterns)
    • Improvement - start now and constantly improve rather than trying to design the perfect solution "all at once"
    • Diversity - encouraging healthy conflict improves software development
    • Reflection - analyze why things work and don't work, do retrospectives frequently
    • Flow - like the Theory of Constraints shows us, small batch sizes (iterations) are good
    • Opportunity - continuous personal growth, or a high rate of L
    • Redundancy - make sure several practices address a problem, like a defense-in-depth technique against software development problems
    • Failure - if at first you can't succeed, fail a couple times first, then you'll figure it out
    • Quality - basically projects don't go slower by keeping quality high, they end up going faster
    • Baby steps - incremental change is more likely to work than big-bang changes
    • Accepted responsibility - business people may own the schedule, but programmers own their estimates

    Somewhere at the intersection of the values and principles you'll find each of the XP practices, which is where we'll pick up next time.

    Posted Apr 28 2005, 12:24 PM by darrell with 8 comment(s)
    Filed under:
  • TechEd 2005: Moderating the "TDD is Design" BOF

    It's official. Since Scott Bellware can't make it to TechEd, I'm going to be moderating his "Test-Driven Development is Design" BOF on Tuesday, June 7 at 6:30 PM.

    Posted Apr 28 2005, 06:44 AM by darrell with 7 comment(s)
    Filed under: ,
  • Image Rollovers in ASP.NET

    Just found a link on how to do image rollovers in ASP.NET. I remember back in the heady days of '98 when everyone was doing image rollovers, either hand-coding the JavaScript or using Macromedia's product (which at the time produced horrible JavaScript!). The good old days of HomeSite.

  • Review of Learning Windows Server 2003 by Jonathan Hassell

    I was so excited about my MVP announcement that I neglected to mention that I passed the 70-296 exam to upgrade my MCSE to include Windows Server 2003 on April 1st. As always when studying for certification exams, I looked to review and enhance my knowledge by checking out a good book or two on the subject. In this case Learning Windows Server 2003 by Jonathan Hassell happened to have just been added to O’Reilly’s Safari Bookshelf, so I put it on my virtual bookshelf.

    Jonathan talks all about the mechanics of doing things in Windows Server 2003, which I really like. He walks you through things step by step, explaining Windows nuances from personal experience. For example, take this piece from setting up Active Directory (Safari link: chapter 5, section 2):

    “You have three options at this point: you can rerun the test if you've identified your specific problem and want to re-test; you can instruct Active Directory to go ahead and install the DNS service on this computer, configure it correctly, and change this computer's LAN connection properties so that it points to itself for DNS services; or you can tell Active Directory, "To hell with DNS! Go ahead!" and proceed without having verified that DNS is installed and accessible. Let me offer a caution: do not use the second or third options.”

    Things like this are great. And here I was thinking “Damn the torpedoes, full speed ahead!” Seriously though, this book won’t teach you how to design an Active Directory network, but it will teach you what you need to know to setup, run, and manage most of what’s available on Windows Server 2003. And it’s not too long, weighing in at 704 pages, but that does include a good number of screenshots.

  • Mid Atlantic Code Camp sessions posted

    The Mid-Atlantic Code Camp session list has been posted. I'll be speaking on using Test-Driven Development with Databases. There's still room to sign up if you're interested.
    Posted Apr 26 2005, 04:25 AM by darrell with no comments
    Filed under: ,
  • Nullable type performance

    Posted Apr 25 2005, 10:12 AM by darrell with 2 comment(s)
    Filed under:
  • Troubleshooting IIS SMTP issues

    Posted Apr 25 2005, 04:49 AM by darrell with 2 comment(s)
    Filed under: ,
  • Fixed-Price contracts in an agile organization

    A reader asks about Agile vs. Fixed-Price, Fixed-Scope, Fixed-Schedule contracts:

    "Is there an Agile way of figuring out how long a project will take to deliver the final product a client wants? With this, how much money it'll cost a client?

    In all this, Agile seems a bit like 'We know nothing but promise to learn. We'll just start hacking and see where it ends.'
    Of course the client will get EXACTLY what he wants, but I think every client would like to know up front how much time and money will be consumed."

    Steve Eichert had a similar question:

    "The one thing that I still have a hard time with when it comes to Agile is the whole idea of giving the customer the opportunity to cancel the project after any iteration if the project isn't proving to be of enough value.  How does a small to medium size company plan for such a thing.  If at the end of an iteration the customer says that's it, pack your bags we done, then what?  Does the project team then get sent back to the “home office” to sit on the “bench” until another project starts up?  What if there isn't work that's ready to begin when the project ends?"

    To which Alistair Coburn responds:

    "There's some bravado talk in this quote from agile conversations. Take out the bravado and something sensible emerges that you can use.

    In house development: it quite often happens that the company runs short on funds before the project gets "completed". Normally there's a good lead time on this information, so it's not a great surprise (well, sometimes it is).
    If you run your project as though it could get canceled after any iteration, then you make sure you load up on delivering good business value early, so in case they run out of money, you've delivered the most value for the money spent. If they don't run out of money, no problem. Compare this with waterfall ---- if they run out of money 1 month before the end, you're left with nothing.

    Contracting situation, fixed-price, fixed-time. You do the usual thing with underbidding and get caught at the end needing more time. My friend Jeff would always make sure he loaded up on good business value along the way, so when he got caught at the end, the things they had to negotiate penalties over were obvious to everyone as being the least important. They customer often just forgave them the difference. His colleagues on the other projects, though, couldn't trim off the end that way, and simply worked massive overtime.

    Finally, the bragado. So no one will contract you to do XP (e.g.). What can you do? You offer them: You retain the right to cancel the project after any iteration if you're not satisfied with our progress; we're sure that you'll be so happy with what you see showing up that you'll keep us going. That's called putting your money where your mouth is. It's also called being cocky, (over)confident, and mouthing off.

    You don't have to do this to do agile, but it doesn't hurt to run the project as though it were the case."

    So maybe we won't agree to let the client cancel after every iteration. On the other hand, I don't think anyone will disagree that scheduling is a concern. I touched on this subject in my Responses to Agile Concerns post:

    "Technically, you cannot schedule/forecast with 100 percent certainty.  The problem is that scheduling and forecasting will no longer have the “crutch” of fixed-scope fixed-length contracts.  This is a standard staffing problem, and seasonal jobs offer some interesting possibilities.  Another possible response is to make sure that there is sufficient work in the “hopper” so that there is always more work.  And if there is a regular sizable backlog of work in the hopper, then it is time to hire more people.

    Short iterations work against a lot of current management practices.  For example, discounting initial work to get a customer could result in that customer getting a bunch of quality work done for cheap, and then taking their business to the next low bidder.  The easiest way to avoid this is to avoid making the initial discount.  I think, and a small amount of experience has proven me right so far (I am not making any definitive claims yet), is that this type of arrangement will self-select customers that want a relationship.  According to Crossing the Chasm, the pragmatists want a single supplier anyway, so once you have proven you worth, they will stick around.  And these are the kinds of customers with money that you want (compared to the visionaries).

    Certainly there is some risk and uncertainty. I believe the risk is nullified by the elimination of fixed-price contracts that go over budget and leave the development organization eating the cost.  The customer also wins by avoiding situations where the fixed-price contract covered 2 weeks worth of work that was finished in 2 days!  This can go a long way toward crossing the divide between the business people and the technical people.

    Also see The Predictability Paradox, by Mary Poppendieck."

    The more we try to predict, the more stable requirements have to be, which is antithetical to agile development. Martin Fowler explains:

    "Many people belive that you can't do a fixed price contract in an agile project. Since the whole point of an agile process is that you cannot predict the future, this isn't an unreasonable supposition. However this doesn't mean you can't come up with a fixed price agile contract, what it means is that you can't come up with a fixed price and fixed scope contract.

    Usually when people say fixed price, they mean fixing price, time, and scope. This requires detailed, stable, and accurate requirements. The whole point of agile development is that it works with more fuzzy requirements. To handle this with a fixed price contract you essentially come up with a plan that says "we have $x to spend and we need a release on 1 Dec. We'll collaborate together to come up with the best set of features to go live with on that date."

    The initial plan

    The initial plan for this kind of arrangement is not really any different to a predictive project. The essential difference is that we don't expect things to go according to plan. Instead we expect to deliver a better product that we can currently envision, because we'll learn more about the project as the project proceeds.

    Or if we find things are much tougher, we'll find that out too. In which case we'll modify the plan. If the customer doesn't like the resulting plan they can cancel. While this isn't good, they'll usually cancel earlier than they would under a predictive project, becuase predictive plans tend to discourage change, and thus make it easier to not realize when things are going off course."

    With an intial plan, what we need are resources. Luckily Mary Poppendieck has a good list of Agile Contract resources. Here are some of the downloads, check out the site for more:

    1. Fixed Price Contract & Agile Software Development - An Experience Report, by Christine Moore

    2. The Rule of 3rds - An Agile Approach, by Christine Moore

    3. Sample Language and Stories, by Cem Kaner

    4. Excerpt on Contracts from Lean Software Development, by Mary Poppendieck and Tom Poppendieck

    5. Sample Contract Wording (specifying a Prototype to provide learning)

    6. Draft DSDM Contract, Commentary, & License, by Richard Stephens and the DSDM Consortium 

    7. Optional Scope Project, by Marina Morgagni – Manager, eXtreme Programming Centre & Piergiuliano Bossi – Coach, eXtreme Programming Centre, Quinary SpA, Italy (Submitted to XP2003 Workshop)

    8. Pay Per Use Contracts, by Nora Sleumer, Massimo Arnoldi, Massimo Milan
      Lifeware SA, Switzerland (Submitted to XP2003 Workshop)

    Hopefully there is something in these resources that will help for your particular situation!

    Posted Apr 22 2005, 11:56 AM by darrell with 11 comment(s)
    Filed under:
  • Congrats Scott!

    Congratulations to Scott Galloway on joining Microsoft!

    Posted Apr 21 2005, 07:37 AM by darrell with no comments
    Filed under:
  • The Weblog FAQK, by Brunching

    It's a bummer that The Brunching Shuttlecocks quit as they had some really great humor. One of my favorites was the Weblog FAQK.

    ...

    So weblogs are all about disaster and war?

    Gosh Jesus no! Weblogs cover a wide range of topics, such as other weblogs, what the mainstream media are saying about weblogging, new weblogs, advances in weblog publishing, books about weblogging, the future of weblogging, and that one naked guy painted up like Spider-Man.

    Can I publish a weblog?

    You can and you should. Valuable and relevant communication is only possible when you don't have to put much work into publishing your thoughts. Usenet and talk radio prove this. Thus, many fine programmers are creating ways to get your ideas out there with the barest minimum of effort. Soon you'll be able to check out your weblog to see what your opinions are without even having to form them.

    Will weblogs eventually replace traditional journalism, causing all current bastions of establishment reporting and punditry to run, dog-like and cowering, back to the ink-stained pits from which they were spawned?

    Uh. Um. Hey, look! It's a naked guy painted up like Spider-Man!

  • How UML can add value to your software development process

    I just came across Aaron Junod’s Design Abstractions article. It’s a great example of how UML can add value to your software development process.

    Posted Apr 19 2005, 11:24 AM by darrell with no comments
    Filed under:
  • BlueWhaleCRM - open source CRM for .NET

    TechWhale Solutions released BlueWhaleCRM, an open source customer relationship management solution, in December 2004. You can view the demo here. It has some decent features around contacts and companies and support articles, and the graphics are very Windows XPish. Not bad for version 1.
    Posted Apr 18 2005, 12:20 PM by darrell with 3 comment(s)
    Filed under:
More Posts Next page »

Our Sponsors