You might have a legacy enterprise application if . . . – level 000

You might have a legacy enterprise application if . . .

  • You can’t figure out which copy of the source code is the one deployed to production.
    • You find more than one source code repositories with the old shipping application.  Which one is the real one?  Every developer who worked on the project has left the company.
  • You modify the code and another system goes down.
    • Enterprise applications are notorious for being very interdependent.  You had no idea that this old application was making a file drop to another server in the Idaho office, and now I/T in Idaho is screaming that their product prices are 10 days old!
  • User workarounds for bugs in the application are published in a “user manual”
    • Whatever you do, don’t submit more than one request at a time!  The server will lock up and have to be rebooted.
  • There is a pager dedicated to support for the application.
    • Enough said.

Planning Party with Palermo 2006 @ Tech Ed – level 000

Last year’s Party with Palermo was a big success, and  you can read about it here:

I’m organizing Party with Palermo 2006 that will be the evening of June
10.  Tech Ed starts bright and early June 11th, so make sure to
book your plane so that you arrive by noon so you have time to settle

I’m currently open for ideas on location.  My plan is to organize
a supper location where we can retire to a bar later and hang out until
well after midnight (at which time, at least a few folks will be up for
a snack at the local IHOP).


  • Get the word out:  link to this post.  Advertise.
  • If you are familiar with Boston, suggest a venue that would work
    for a large group of people both for supper and hanging out at the bar
  • RSVP:  Let me know if you are planning to attend.  I need numbers so I can plan the location accordingly.

Design patterns are only useful if. . . – level 200

Design patterns are only useful if the team has a shared vocabulary.  In other words, when you say the name of the design pattern, the others on the team must know what that means.  Otherwise, it’s like a foreign language.

I was having lunch today with a co-worker, and we discussed the meaning of design patterns.  A singleton is only a singleton if we all agree that we are going to call it “singleton”.  An “observer” pattern is only that if I can say “observer” and the other members of the team know what I’m talking about.  Design patterns are a shared vocabulary.  It’s a way to speak in shortened jargon and convey meaning. 

Every field has their own jargon, and in software, we one of our categories of jargon is design patterns.  In football, you can tell a receiver to run a bootleg pattern.  Some teams have unique names for pass routes as well.  The words only have value because everyone on the team shares the vocabulary.

Consider this scenario:  A developer goes out and reads several design pattern books and then comes back and starts using the new terms in design conversations.  This has no value since the new terms have no meaning to the rest of the team.

Design patterns are useful when they can be used to convey specific meaning in design conversations.  On my team, if I say “I’m going to stub the web service call”, everyone knows that I am going to make a class that will fake the behavior of the web service so that the client code can function without the SOAP call actually occurring.  A stub obviously isn’t the most glamorous design pattern, but all these small pieces of jargon help when communicating on a software team.

It is very helpful for design patterns to be a shared understaning throughout the industry since we communicate about software beyond team boundaries.  I love that there are plenty of books on the topic these days, but it’s a shame that more developers don’t share the terminology.

I’ve received a Microsoft C# MVP award for 2006 – level 000

I am now a Microsoft MVP for C#.  I’ve been happy to serve as a user group leader for a little over a year now and also as an INETA membership manager for south Texas.  I program in C# every day.  I’m a full-time developer for an ISV in Texas, and I focus a lot of energy on application architecture and producing verifiable and sustainable software.  I hope I’ll be able to contribute to the developer community even more over the next year.  If you are in the Austin area, come out for a meeting or a lunch.  We have a very active .Net developer community here.

My MVP Profile

How Microsoft Virtual Server 2005 helps software development – level 200

Since Virtual Server 2005 and VMWare server are now both free to the masses, many more developers can take advantage of virtualization.  In short, with a virtual computer, you can do more things with one physical machine.  You can run multiple operating systems on one machine.  You can test your server farm on one machine.  You can test maintaining session state over a web farm on one machine.  You can configure a domain of computers on one machine.  You can test out the latest beta software without hosing your machine!

In my development shop, we only have one server that we use.  It’s a 1U 4-proc server with 4GB of RAM.  Obviously, you need some decent hardware to be productive with virtual machines running inside because each virtual machine still needs resources just as it does when installed as the base operating system.  We have CruiseControl.Net and FitNesse installed on the host machine, and we run 6 or 7 development servers all the time as virtual machines on Virtual Server 2005.  We need all the development servers, and it’s a lot easier having one physical server than it is to maintain a whole rack.  When a situation arises where we need another dev server, it’s no problem.  We can copy the .vhd file from an existing one, and we instantly have another server up and running.  We obviously have to change the network name, but that’s no problem.

My workstation has 2GB of RAM, so I’m able to run virtualization locally with Virtual PC 2004 (I have run Virtual Server locally but found it simpler to use VPC for local use).  I can test out a pre-release of software, and I’ve even been able to play around with a Longhorn (Windows Vista) beta (by the way, Virtual Server 2005 R2 has virtual machine additions for Longhorn – it’s dog-slow without them).

In short, virtualization is a boon for developers, and I’m glad I it as a tool in my toolbelt.

I haven’t installed R2 yet, but R1’s manager web site only works well with IE.  Here’s to hoping that’s fixed with R2.

Virtual Server 2005 is now free – level 000

Christoph De Baene
was early with the news on the blogosphere that Virtual Server 2005 R2 is now a free download.  The word is getting out very quickly, and I’m sure a lot of people will now download it for the first time.

I’ve used Virtual PC 2004 and Virtual Server 2005 since they debuted, and I was recently impressed that VMWare had decided to offer the server edition for free.  This competitive move has undoubtedly influenced Microsoft to compete in this space.

Congratulations to both players for competing, which is always better for the customer and industry advancements.

You can download Virtual Server 2005 RS enterprise edition here.

Tech Ed nearly sold out – level 000

Rob Caron has alerted us that Tech Ed is nearly sold out:
2006 US Nearly Sold-Out

This is no surprise to me since last year Tech Ed sold out before early registration ended!  If you are reading this post and intending to make it to Tech Ed, sign up now.  It’ll fill up completely in the next two weeks.

Also, plan on arriving the day before the pre-con for Party with Palermo.  I organized a meet-up before the conference last year, and it was a great success and was attended by more than a hand-ful of conference speakers as well.  I’ve made my initial post on Party with Palermo 2006, and in late April, I’ll be advertising more information about it.  I’m currently open to ideas on location, but it will definitely happen on Saturday, June 10th in the evening. 

To get an idea on how great the first Party with Palermo was, check out this google search.

XP iterations, estimating and executing (an add-on) – level 200

This is a response to Sam Gentile’s post: Iteration
XV and IterationXVI – The One Week Iterations

My team does 2 week iterations, and I think that timeframe works well.  It’s just enough time to bite off a measurable amount of work while minimizing the percentage of overhead that iteration planning brings.

Our boss keeps an Excel spreadsheet with our burndown list for the purpose of keeping upper management up-to-date, but the team goes off of the whiteboard.  The whiteboard is the master list and can be updated at any time. 

6 months ago, iteration planning took all day to do because we were unorganized, and we got too much into analysis (off track).  Now, our iteration plannings are much more focused.  If we have unanswered questions, we throw an analysis spike on the storyboard.  This keeps our planning meeting on target.  Now we have it down to about 2 hours. 

We estimate in points first to cap the work for an iteration.  Then we break down the stories into tasks and estimate in ideal hours.  Our minimum for a task is 2 hours, since nothing EVER takes just “5 minutes”. 

Last iteration, we got half-way through and were 3 days behind.  We had grossly underestimated.  It worked out, though because we caught up with some tasks that were grossly overestimated. 🙂  We’re still getting better.