Knothole Island

The Knothole Island downloadable content expansion for Fable 2 on the XBOX 360 released today.  This is the first additional content available for Fable 2.

Knothole Island contains one new region for Fable 2 expanding the game from thirteen to fourteen regions.  The region contains three new quests and many new items for the player to collect.  Knothole Island does not contain any additional gargoyles or silver keys but it does have its own collectable item, Knothole Island History books of which there are ten to find throughout the region.  Knothole Island also adds one hundred additional achievement points bringing the game total to eleven hundred.  The additional achievement points come in the form of three distinct achievements: fifty points for completing all three Knothole Island themed quests, twenty-five for collecting all ten books and twenty-five for obtaining all of the curiosities in the specialty shop in town.  The village of Knothole Island also has several additional houses and shops in which you are free to invest as well.

I began playing Knothole Island almost as soon as the download became available.  The additional content took me approximately two and a half hours to complete so the size is rather disappointing for the ten dollar price of admission, but for desperate Fable fans it is a highly anticipated addition.

Knothole Island is definitely a beautiful addition to the world of Albion.  My favourite feature of the new content is the innovative weather control system at the center of the plot driving the new quests.  The addition of the weather patterns adds a unique way of expanding the layout of the single region to feel larger.  It also adds more “scenery” than you would normally experience in the single region.  Exploring the Knothole Island region under drought, flood and freezing conditions is very interesting and extremely well done.  The planning that went into the layout of the region is quite impressive.

Each Knothole Island quest involves its own unique dungeon.  The dungeons are not really as impressive as many of the dungeons in the core Fable 2 quests.  The overuse of the lock-disc mechanism as the key to forward momentum at almost every moment within the dungeons is frustrating and boring.  Some additional variety would have been nice.  Some of the lock-disc tasks are extremely simple to figure out but difficult to execute.  Not a fun combination.

Overall the new content is enjoyable and a nice addition to the existing content.  I feel that the new content will work best for players who have not yet completed the main quest in Fable 2 or for players who have not yet started playing Fable 2.  Having the additional content mixed in with the rest of the game would make for a nice break from the rest of the game from time to time and give the player time to make use of the additional items that are only available in Knothole Island.

Playing these quests after having completing Fable 2, though, makes them extremely easy.  The new plot and content does not feel connected to the rest of Albion and almost feels as if you have left the game to go into a separate mini-game somewhere.  This effect is magnified by playing all of Knothole Island at one time without mixing it into the rest of the content.

Knothole Island contains some neat innovations, beautiful scenery and some interesting new content.  The downsides are that it is short, some of the dungeons are tedious and the integration into the Fable 2 universe is not as good as it might have been.  Serious Fable 2 fans definitley want to partake of the content but more casual players may want to save their money until Knothole Island is made part of the standard content (similar to Fable: The Lost Chapters) as it is bound to do in the future.

I am looking forward to additional downloadable content from Lionhead Studios for Fable II.  I really hope that future content will involve expansions to the main storyline or an intersting arc that expands the known Albion regions.

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.