January 12, 2009: Liesl Turned Over

Today is a big day in baby Liesl world.  Today she turned herself over for the very first time!  I was not there to see it, of course, as I was in the basement office working.  Liesl’s awake time is during the day so her most active moments happen while I am working.  I heard Dominica cheering and guessed what had happened.  Liesl is doing really well.

Oreo is contuining to feel better and better.  He is not happy about the continuing bland diet but he is happy and healthy again.

I found out the exciting news today that Fable 2: Knothole Island downloadable content is going to be released tomorrow (Tues, Jan 13th.)  I am so excited.  I have been looking forward to this for a month or more.  I will be getting that the moment that it releases for sure.  It is going to be 800 Live Point on XBOX Live which is exactly $10, I believe.  There are patches and some extra content available for free to anyone with Fable 2 too so don’t forget to check out the DLC even if you don’t plan to buy the expansion.

Work was fairly busy today.  Nothing abnormal.

At the end of the day, just before the post office closed, I ran down to the Beach Shopping Center to mail out some letters, warranty cards and to return a Netflix disc.  I swung into GameStop to check out the used game deals.  I ended up coming home with Mass Effect and Grand Theft Auto IV, both used and both for the XBOX 360.

This evening, Dominica and I watched College Road Trip, the G-rated Disney movie with Raven-Symone.  It was cute.  Nothing special.  Raven is always enjoyable.

I set up the XBOX 360 in the basement and got it set up to be online for the first time.  That worked pretty well.  I got it installed with the latest updates, set up an XBOX Live profile for myself and made sure that everything was ready for tomorrow’s release of Knothole Island.  I have the 360 hooked up to the 16″ Westinghouse LCD that I have in the basement at the moment until we get it mounted in the kitchen.

January 11, 2009: Katie Meets Liesl

Today was our one and only sleep in late day for the week.  With yesterday being a full work day just like any other I really needed the rest today.

We got up and it was straight to “prep for guest” mode.  Dominica got Liesl into a state where I could then take care of her (i.e. fed) and then she made a quick dash for the grocery store.  I attempted to take a shower but ended up taking a call from Oreo’s vet in Peekskill who was calling to follow up on Oreo’s condition.

We are really impressed that Oreo’s vet called us on a Sunday with his updated blood work results and to see how he was doing.  I don’t think that we have ever had a vet that would follow up over the weekend on a patient.  We are extremely happy to report that Oreo is much improved this morning.  Yesterday was a big improvement and then this morning he is a happy, excited dog looking to play and eat and spend time with us.  He is almost back to normal from his appearance.

Then it was back to the shower and then time to take care of Liesl before getting paged out.  I was stuck working for the office when Katie arrived.  This is her second trip to Peekskill to see us and the first one since we really moved into the house and since Liesl has arrived.  Dominica returned from the store just a few minutes after Katie arrived.

Katie hung out with us from about noonish until early evening.  She was a big help helping Dominica do some cleaning, especially in the kitchen, and then the two of them cooked a big dinner.  I ended up being paged over and over again throughout the day.  All in all I worked most of a normal day today.  Not much of a relaxing weekend for me.  I ended up missing dinner and only half got to eat with the girls after they had done so much work to prepare dinner.

In between pages I managed to get the Nintendo Wii hooked up in the living room.  We have not had it hooked up since we packed it for the move and since then we have gotten the Wii Fit and have not yet tried it.  Katie has never played a Wii before so we wanted her to check it out.  The Wii really looks awful on the 52″ LCD.

I had to work almost the entire time that Katie was visiting but at least she and Dominica got to spend some time together and a lot of house cleaning was completed too.  I can see Katie when I am working in the city so it is much more important for her to get to see Dominica.

Katie left around sixish and Dominica and I did some Wii online shopping.  We got Dr. Mario Online so that we can play against her family online.  We also got The Legend of Zelda: Ocarina of Time on the Virtual Console.  OoT is Dominica’s all time favourite game and even though I owned it back in the day on the N64 in 1998 I never really played it as it didn’t seem to be fun at all.  A lot of that was because it was promoted by the press as an RPG and it is not at all an RPG but a very prototypical action-adventure game which left me extremely disappointed.  Now, with all of the hype that it has received over the years, I decided to give it another go.

January 10, 2009: Oreo Is Much Improved

I went to bed around seven last night and was asleep before seven thirty.  Oreo came in and slept with me for a little while at the foot of the bed.

Dominica woke me up at ten because Oreo was laying in the middle of the upstairs hallway and was not willing to move.  He had not eaten his dinner and was very obviously extremely ill.  I tried taking him for a walk and he tried but was having a really hard time getting around.  So we decided that he needed to go to the emergency room at the hospital in Bedford Hills.

We were out the door before ten thirty having already called and prepped the hospital that we were coming.  It takes roughly half an hour to get out to Bedford Hills from Peekskill.  We arrived just before eleven.  Only Oreo and I went to the hospital as Dominica needed to stay home and take care of Liesl as well as to cook Oreo’s stew so that he would have good food again as soon as we needed it.

Oreo’s stay at the hospital ended up taking a pretty long time.  We didn’t get to leave the hospital until one thirty in the morning and boy were we tired.  Only a little less than three hours of sleep for me in two days and he has not had much sleep either.

The final verdict, after more blood work, was that Oreo is dehydrated now and has developed pancreatitis which is causing additional problems.  They have him a fluid treatment to help “jump start” his system but he is off food until tomorrow and then only light and bland food for several days.  He is not going to like this.  But, most importantly, they think that he is going to be okay.  He needs time to rest and to work the food out of his system.

So we got home around two in the morning.  Oreo seemed a little better even by the time that we got home.  The extra fluids must be helping already.

Oreo and I went straight to bed.  Dominica was up for a while longer taking care of Liesl and cooking for Oreo.  I have to be up before eight tomorrow morning which is going to be exceptionally painful.

I got up at a quarter till eight this morning.  I felt awful.  I didn’t fall asleep for a long time last night and my night was very restless.  I figure that I got a total of less than five hours if even more than four plus the slightly less than three that I got earlier.  So in two night’s I have gotten about seven to seven and a half hours of sleep.  Enough to function but not enough to feel good at all.

I got right to work by eight.  I ended up not getting the files from the team that I was supporting and was unable to do any work for a while.  Oreo got up just minutes after me and followed me down to the basement so that he could sleep on his Star Wars pillow by my side.  That is a good sign.  Previously he felt that he was unable to go up and down the stairs on his own.  A partial night’s sleep and the fluids must be helping.  I brought down a water dish for him so that he would have one down stairs too.  He has one on the main floor and in our bedroom but I wanted to make sure that he was encouraged to drink as much water as possible.

My morning work ended up being a much larger project than I had anticipated. I was working for about fifty minutes when my virtual desktop as well as my primary desktop got cut off from me due to a massive network outage on Wall Street.  So very quickly my morning turned from a small installation process and some routine patching into a pretty major endeavor just to be able to work let alone to do the scheduled work let alone to deal with the major outage.  Not that I deal directly with network outages but they do impact me and I need to be available when they happen.

I ended up working an entire day today making it a full six day week.  I can’t complain as we really need the money with Oreo’s surprise six hundred dollar day at the vet’s yesterday.  We really appreciate that I am able to get overtime.  It really makes a difference for us.

The new television set arrived mid-afternoon.  It was delivered via a minivan and it took two movers to bring it in to the house.  This thing is huge.  I didn’t get a chance to hook it up until pretty late in the evening.

The first thing that we popped in to test on the new 52″ Samsung LCD was Fable II on the XBOX 360.  We set the 360 to 1080p and were completely wowed by Fable II.  Having completed the game already going back and seeing it on this monitor at full resolution was really something.  It looked like a completely different game!  There is so much detail that we hadn’t seen before.  Very impressive both for the TV and for the game.  Now I am sorry that I played it before getting the new set.  The game is so much more gorgeous than I had realized.  At least when the Knothole Island downloadable content arrives in a week or two I will have this to play it on.

For the time being we have moved the Samsung on the floor in front of the fireplace below the Westinghouse 32″ that is mounted on the wall.  The Samsung is going to take its place at some point but I am not able to wall mount it by myself so we just have to wait until someone is here who can help me.  The TV is just too large for me to be able to lift like that all alone.

Oreo improved throughout the day.  He is definitely feeling much better today.  He is not happy at all about his bland food diet.  He can’t wait to be back on real food again later in the week.

I have a bunch of work that needed my attention today so I spent a lot of time in the basement catching up on Active Directory management issues and other problems.  My plan had been to go to bed quite early, maybe as early as seven, but that didn’t happen at all and I did not even quite make it by eleven.

Katie is coming up to Peekskill sometime tomorrow morning.  She has not had a chance to meet Liesl yet.  Katie has seen the new house but not since we moved any of our furniture in.  She came up to see the house during the time when we had first gotten it but had not moved in yet.

Scope Creep in Software Development

Few words strike fear into the hearts of software development managers and developers than scope creep. Long the bane of the development industry, scope creep has affected almost everyone who works on software – even those who work for themselves but especially those who report to a client providing software specifications.  The perennial question in software development management has always been “How can we manage or eliminate scope creep?”

First, let us define scope creep for the purposes of this discussion.  Scope Creep refers to the tendency within software development projects for the scope of a project to slowly grow over time through changing requirements and specifications.  Scope Creep is a disaster for software projects because it makes budgeting nearly impossible, predictions of completion nearly always incorrect – often by astounding margins, makes determination of project feasibility questionable as the development team may not be aware of technical challenges that will be faced due to expanded requirements and can even cause a project to “scope thrash” in a state where “feature complete” is never clearly defined and a project never completes because the current state is never accepted as finished even if all existing features work correctly and current scope is far beyond the original requested scope.

While thinking about this article it occurred to me that there are two schools of thought on scope creep: those who believe accept that scope creep is an inherent artifact of the software development process and those who believe that it can be eliminated through project management practices (rather than simply mitigated.)  But that is not the whole story.  In reality, I realized, these two schools of thought are products of two higher issues: that some people believe that big design up front (aka BDUF) is a necessity and those who do not.  Even this, though, is not the whole picture.  At a higher level than this is the old argument as to whether software is an engineering discipline (engineering efforts require a small amount of design followed by a large amount of manufacturing or construction) or a design effort (where the design requires almost all of the effort and duplication is a trivial afterthought.)

Disclaimer: I am well aware that certain small segments of the software development community work on project types which absolutely require BDUF and locked requirements such as nuclear power station control systems or control systems for the space shuttle.  This represents a niche software market and falls outside of a more general discussion.  However, many projects of this type are only believed to be locked into BDUF processes because of client requirements and not because non-BDUF methodologies would necessarily produce less stable or reliable software.  Statistics indicate that we may, in many cases, be increasing risk and failure rates by requiring these projects to avoid the best practices of the industry in general.

The logic goes like this: If you believe that software development is an engineering task then you assume that you must complete all design before “construction” begins.  This requires that all or almost all design be completed prior to the beginning of construction or manufacturing.  This is the origins of big design up front.  This, in turn, requires that scope be carefully controller as BDUF has means of managing changes in scope and small changes can have catastrophic effects on an engineering project.  Imagine a bridge where, after construction has started, the people who have request the bridge decide that they choose the wrong location or that its load bearing properties need to be changed to carry trains in addition to automotive traffic!

One of the key differences between software development and traditional engineering disciplines in that traditional clients understood that if the products was already made or partially made that the cost of retooling for changes would be staggering.  Even a small change to a car (make it 2 inches longer) would send the entire design team back to the drawing boards and all aspects of the engineering portion would begin again and safety certifications, marketing, etc. would all have to retool almost as if they were starting from scratch.  In software, though, clients do not see the final product as immutable and do not understand the impact of changes.

Scope creep in software development is deeper than a misunderstanding between clients and software engineers, however.  In specifing a traditional engineering project it is generally fairly simple for the person requesting the product to provide meaningful and useful specifications.  Here is an example, I can actually order a bridge from the engineering firm by stating: the location at which I need the bridge, the carrying capacity of the bridge (two lane road, four lane road, etc.) and any special features (one walking path on the side, two paths, open sides for a view, etc.)  The rest of the bridge design is carried out without my input because what do I know about designing a bridge?  In some cases there might be several designs submitted, all which meet the specifications but with wildly different looks, from which I can choose one to build.  Once planning for that build has begun there will be cost involved with me changing my mind for obvious reasons.

Software engineering is not like this, though.  In bridge building (or car manufacturing or whatever traditional engineering discipline you wish to imagine) the people physically putting the bridge or car together make absolutely no decisions about what parts to use or how to assemble them. They are provided a design that tells them every nail, rivet, girder, component, material type, weld type, etc.  In software, the architect provides only a high level design and the software engineers or developers who actually create the software continue the low level design process choosing the design, components, structure, etc.  So the design process continues until completion, at least a a low level.  So in software everyone is an engineer and no one is a construction worker (or factory worker.)

This means that design is always underway no matter what we do.  If software developers were not doing any design and simply assembling code as specified by a higher level designer then that piece of the work would be automated simply and the higher level designer would “become” the developer in question.  That may sound strange until you think about high level languages like Java or C# .NET with large support libraries, application platforms like JBoss or Rails, GUI designers, toolkits like JQuery or Dojo, etc. all which come together to eliminate many routine design decisions for most projects allowing developers to switch from writing extremely low level code to focusing on more design issues and domain specific problems.  The “moving up” of the designer is a constantly occurring process that year by year makes the average developer able to do so much more than they could in the past and makes bigger and more complex software projects possible.

Given that we know that scope creep can and will happen to most projects we have three choices: due nothing and see what happens, manage and mitigate scope screep (the BDUF approach) or “embrace change” and build scope change into the ongoing design process (the Agile approach.)  Obviously, doing nothing, is a recipe for disaster and should be discounted.  Only the naive take this approach.

Managing and mitigating scope creep is a challenging and difficult project management endeavor.  This generally requires a large amount of client education and heavy contractual agreements limiting the client’s ability to make changes, to accept a reworking of scheduling and budgeting with each significant request and to lock client’s to a design at some point so that no further changes may be made.  This approach can work and often does but its failure rate is one of the most significant contributing factors to the high percentage of failed software development projects throughout the industry.

This approach forces clients to make many decisions at the beginning of a project at the point when the least is known about it.  It does not address changes external to the project that may force the need for scope change upon the project.  It also risks clients becoming disatisfied with the project partway along and finding it easier to pull out and start again than to rework what already exists.  Even when a project does complete it risks being outdated, poorly specified and at lower than anticipated relevance.

Moving to an Agile approach, where scope creep is accepted as being inherent to software development, things work very differently.  In most Agile practices there is some design up front but the idea is to design only those portions very unlikely to change and only to design enough to provide the basic foundation and to address any hidden problems that could arise but would have been discovered through an up-front design process.  Obviously no project will work well without any design at the beginning.  How would you even know where to begin?

Agile does not dispute the need for design but, in fact, is designed around the idea that the design is so important that it can’t be determined at the outset and left as-is.  Agile takes the approach that the design is far more important than that ands builds design into every aspect of the development project.

A moderate amount of design is done from the beginning.  Then design, both low lever and architectural, continues throughout the project.  This approach moves design decisions from the time when the least is known about the project to the time when the most is known.  It builds in flexibility so that as the client or business requesting the software learns how the software can and will work they can learn more about how they will use it or expand what they need it to do or even reduce features that they later feel are unnecessary (although we all know how unlikely that is to happen.)

With many Agile processes, such as Extreme Programming, there is a concept of keeping the project in a continual “shippable” state in which everything that has been implemented is currently working and functional.  In this way, at any point, if the project budget for time or money runs out the project is at least usable in some form even if not in the form originally envisioned.  In this manner, the scope starts very small and grows with each project iteration.  This is not creep but a built-in function of the development process and very much intended.  In this way, the client or business can decide to use the software at any time while allowing for growth and advancement to continue as well.  The project can peacefully continue until the client feels that additional features are no longer necessary.  There is still a risk that the client will never call an end to the addition of features but since the project is continuously shippable or usable the risk involved in not reaching the “end” of a project does not exist.

An important aspect of Agile methodologies is that features are prioritized and completed discretely on a priority basis.  By addressing features purely by their priority we can assure that the system always exists in its most usable state for the amount of time that has been given to it.

Both approaches to scope creep management have their merits.  The risk of the traditional BDUF approach is that it is often used to shift responsibility from the software development team to the client.  This is handy when you are the developers and have no long-term interest in the viability of the software but are only concerned about meeting contractual obligations (whether to a third part or to an internal business unit.)  The BDUF approach is about solidifying responsibility with the client even though they are not software designers.

The Agile approach accepts that the client or business requiring software is not a software engineer and needs to work with the team to produce something that will meet the business needs.  This approach is about meeting business needs not to lock the customer into paying for whatever original requirements were specified.  Locking in customers may sound great to some outsourcing shops but businesses would be well advised to look elsewhere for companies whose interest lies in making great and working software not in meeting contract requirements alone.

Businesses looking to generate software internally have no reason to support the use of BDUF which operates in the disinterest of the business itself.  This ideology pits the software development team against the business when, in reality, they should be aligned to work towards mutual benefit.

When deciding on a scope creep management strategy you must ask yourself, “Are you going to embrace the unknown and use it to your advantage or are you going to ignore it and continue to make software designed before all current information was gathered.”  Businesses whose processes are Agile have a distinct advantage in the marketplace as their products are based on current market needs and pressures and not based as a response to pressures that existed when the project was first proposed.

January 9, 2009: Oreo Goes to the Vet

We tried to go to bed around midnight last night but that did not work out so well for me.  Oreo was feeling pretty bad and needed me to take him outside roughly every twenty to thirty minutes for several hours.  I kept trying to go to bed after each trip thinking that it must be the last one but inevitably he would ask to go out again just before I could fall asleep.

The constant trips outside lasted until around five in the morning when Oreo just got sick and made a mess in the living room.  So I set about cleaning that up.  Then several more trips outside.

Around six thirty or so Oreo went out and got sick and then was able to stay inside for a while.  I gave up on the idea of going to bed tonight as I need to be able to work in the morning and just getting to bed at six thirty or later just does not work for that.  So I headed down to the basement to log in and get started on the day.

Oreo stayed in the living room for half an hour or so just standing behind the dining room table not feeling well.  He often stands like taht when his tummy hurts.  Then, around seven, he came down to the basement and laid down on his pillow beside me and fell asleep.  He must be very, very tired.  Any sleep that he can get is important in allowing him to feel better later today.

We managed to get a vet appointment for Oreo at the Peekskill Animal Hospital right around the corner on Crompond for a quarter till eleven this morning.  This is Oreo’s first vet trip since moving to Peekskill.  We have some concern that he has more than just an upset tummy and might have bloat.  He gets tummy problems frequently but this is far more serious than the usual.

We went to the vet and that took a while.  It looks as though Oreo just has a tummy ache and nothing to be too concerned about.  They took blood and urine samples, gave him an examination, gave him a shot to discourage vomiting so that he can get some nutrients into his system and put him on a mild anti-biotic for a few days.  We have to feed him lightly tonight and see how he does.  Likely he will be doing well by tomorrow.

Oreo was a nervous wreck at the vet’s office.  Poor little dog.  A long, painful, sleepless night then a trip to the doctor’s and his first time at this particular doctor’s office so he was extra nervous.  They had to try three times to get blood too which was really sad.  One of the needles got bent in his little leg.  He tried his best to be good and never yelped or barked.  He was definitely scared and in pain a few times.

After the vet we ran over to Stop and Shop, which is right next door to the animal hospital, and picked up the missing supplies for making Oreo’s food.  We aren’t going to let ourselves run out of that again anytime soon!  We will be making a batch this evening.

My afternoon and evening went by in a blur.  I was so tired that everything really was hazy.  Much of the afternoon I felt genuinely ill trying to force myself to keep working when all that I wanted to do was to collapse and get some rest.  Not a wink all night long and today was a very long work day as well.

We had a small Amazon shipment arrive today.  “The Baby Book” arrived which is our instruction manual for Liesl.  We also got the six volume of Family Guy on DVD.  We currently have the complete collection.  Now to get that working on both the AppleTV and the PS3.

I talked to Andy yesterday and got him turned on to h.264 (via the x.264 codec) rather than legacy MP4 like XVid and now he is in love with Handbrake and h.264.  He has his XBOX 360 updated and is using it to watch video content from his desktop.

The courier that is bringing our new television called today and scheduled to have the unit delivered sometime tomorrow.  It should arrive during normal business hours from nine till five.  Sweet.  I am very excited to move to a big 1080p LCD in the living room!  Very excited indeed.  Also excited to finally be able to watch stuff in our bedroom as well.

I am scheduled to work tomorrow morning.  That is going to be tough because I need some time to sleep before then.  I have to be up before eight in the morning.  At least I will be awake in order to deal with the television shipment.  The television is about seventy pounds without the packaging and extra stuff like the stand so this is going to be hard to move around.

Before calling it a night I set up the desktop to do a couple of Handbrake jobs.  We are now rather desperate to get stuff converted again so that it will work on the PS3 and the AppleTV and not just on the AppleTV.  I am hoping that maybe tomorrow I can test out the XBOX 360’s media capabilities as well as that is going to be important really soon as well.

Jenn and Angelo are planning on coming out to visit us in two weeks.  They live in the Philadelphia area and were married recently.  Angelo and I still have not met, in fact.  That will be awfully nice to get to see them.  Having a baby is a handy way to get everyone to come visit you 🙂

I am heading to bed around seven this evening.  I have caught my second (or is it third now) wind but I will be in horrible shape all day tomorrow if I do not get a lot of sleep now.  I am skipping dinner (I also skipped breakfast but did have lunch with Dominica) and just going to bed.  Hopefully Oreo will come snuggle too. He is also very tired as he only barely slept last night.  More than me but not by much.

Liesl had a very good day today which is crappy because I really didn’t get to see her at all.  I was either working or out taking care of Oreo all day and only got to spend about twenty minutes with my daughter.  At least I get to sleep through her fussy evening hours.  That leaves Dominica alone to deal with those hours which is going to be awful for her.  I can’t stay up until midnight, though.  It just isn’t a possibility.  Oreo will probably come to bed which does mean that Dominica will not have to take him out repeatedly while trying to deal with Liesl.  That makes the evening hours so much more difficult.  Both Oreo and Liesl suddenly go from low-maintenance to needing constant attention at about the same time every night.