# Saturday, 26 June 2010

I had the misfortune and pleasure earlier this week to work in an Emergency Operations Center view from my home.  Fire is about 1 mile away.(EOC).  Early Sunday morning the Schultz wildfire broke out and moved extremely quickly towards several communities.  I was amongst 1,000 residents evacuated.  

On Monday, I was called into the EOC to help with information flow to the website and twitter.  Over the next three days I worked a little over 40 hours.  It was exhausting but it was amazing and I am proud to have been of service. 

View from friend's home.  Fire is about 1/2 mile away.

 

 

The EOC was a great example of agile even though the team responsible for the EOC didn’t plan with the agile movement in mind.  It reinforced to me that many of the principles in agile can be applied almost anywhere.

 

 

Manifesto:EOC

Individuals and interactions over processes and tools.
Working software over comprehensive documentation.
Customer collaboration over contract negotiation.
Responding to change over following a plan.

The EOC exemplified the manifesto.  The amount of teamwork and information flow in the room was astounding.  Emergencies rarely follow a plan and as such responding to change is paramount to a great EOC.  This EOC was incredible at adapting versus the blind following of a plan.  Wildfire can be incredibly unpredictable.  Even though the EOC had comprehensive documentation and plans for handling emergencies it clearly valued interactions, collaboration and change over processes, documentation/plans and allowed for teams and individuals to improve upon tasks and adapt to needs quickly.

Principles:

Our highest priority is to satisfy the customer….

The EOC has many customers, everyone from the public to the people on the ground responding.  The central theme of the EOC was to keep the accurate and timely flow of information at peak performance.  It accomplished this with co-location of personnel, frequent and short team meetings and a constant emphasis on informal communications and information sharing.

Welcome changing requirements, even late in development….

While the EOC has practiced, ran drills, created plans and procedures for execution of an EOC, the ability to adapt was embraced over absolute following of the training and plans.

Deliver working software frequently….

In this case the EOC is delivering information and logistics.  The EOC worked on a constant cycle of information gathering and dissemination.  The EOC every few hours had a short briefing where all of the table/section leaders gave a report to the team and in between there was constant information flow.

Business people and developers must work together daily….

EOCThe EOC was staffed with expertise in each section that focused mainly on their tasks.  Also in the room were sections for leaders who would be the face for the media and citizens.  Additionally, the call center staff were only yards away from the EOC staff.  This allowed for a constant stream of communication at all levels.

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

This was perhaps one of the most impressive executions I found in the EOC.  The EOC was staffed EOCwith seven sections, each section was staffed with at least a couple people and as much as six.  Each section was responsible for a general task such as Public Information, Logistics, Operations, Finance, etc.  Each section had a team leader that was responsible for that section.  The interaction between sections was high.  Flip charts, whiteboards abounded along with three projectors displaying relevant but different information.   

At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

The EOC was extremely concerned with identifying weaknesses and improving them ASAP.  For items that we knew would take longer to correct than the EOC’s existence, the issues and ideas for correction were captured electronically and have been given to staff to work on.

Parting Thoughts:

During the height of operations there were around fifty people in the room.  The energy in the room was high which aided everyone in pushing through long hours and helped keep the room charged.  The dull roar that existed in the room was hardly a distraction as each team was so intent on doing their job well.  Ideas such as co-location and transparent information flow were key to the EOC’s success much like agile proposes.  The organization of each team was self-governing and while overall leadership was provided this leadership did not get in the way of the sections.  The leadership guided and aided in keeping the teams marching forward.

My experience with the EOC was nothing short of amazing.  I feel extremely proud of how the operation center worked and found that many of the ideas and principles held by agile were key in the EOC’s strong success.

Agile | Process | Teams
Posted 06.26.2010  #    Comments [0]  | 
# Saturday, 29 May 2010

This weekend I decided to update my VS 2008 Express with MVC2.  You can do this with the Web Platform Installer (WPI). In order to install MVC2 you do need to be on SP1 for VS 2008 Express.  Your version needs to be "9.0.30729.1 SP".

Installing with WPI is a breeze but in my case WPI stated it installed MVC2 successfully but I didn’t have the MVC2 Project as a choice in my project list.  I tried it a few times and I always received a successful install message but still only had the MVC1 project choice.

The fix for me was pretty simple.  I just downloaded and installed MVC2 directly from the download center.

Happy Coding!

Posted 05.29.2010  #    Comments [0]  | 
# Friday, 07 May 2010

A few posts back I wrote about adding character counting to the .Net AJAX HTML Editor.  Recently, I received a question asking how to hide and show the character count element for the .Net AJAX HTML Editor when the editor goes in and out of focus.  The short and sweet answer is to wire up a function on the focus and blur events of the editor control and call the hide / show methods in jQuery on your count element.

$(GetEditor()).focus(function() {
  $(Editor1InfoArea).show();
}).blur(function() {
  $(Editor1InfoArea).hide();
});

Just add the above code in the $(document).ready function and away you go.  The GetEditor function and Editor1InfoArea variable are referenced in code in the original post.

However, jQuery has a lot to offer and I wanted to show some of these offerings.  I took advantage of method chaining to save myself having to call $(GetEditor()) twice as shown below.

$(GetEditor()).focus(function() { $(Editor1InfoArea).show();  });
$(GetEditor()).blur(function() { $(Editor1InfoArea).hide(); });

If your new to jQuery chaining may throw you a bit but it works great for saving keystrokes and once you get used to the syntax can be easy to follow. 

Beyond the show and hide methods you could call on many other methods to add some panache (Come on, give this one to me,  I am French after all).

You could replace show/hide with some of these combinations:

Nothing like making your app a little more appealing with some animation.  But wait! There’s more.

You can also change the style with the css method:

$(Editor1InfoArea).css("display", "block");
$(Editor1InfoArea).css("display", "none");
Or
$(Editor1InfoArea).css("visibility", "");
$(Editor1InfoArea).css("visibility", "hidden");

Of course, you are using classes to make easier management of your styling right?  You can use the addClass/removeClass methods:

$(Editor1InfoArea).addClass("showCounter");
$(Editor1InfoArea).removeClass("showCounter");

* What about the toggle method? Ah, I’m glad you asked. In this case since we are tracking the focus and blur events you may end up with the toggle working the opposite as you expect.  This is because toggle does the opposite of what the targeted element’s visible value is when called.  You can fix this by calling the show or hide on your element after the focus/bind methods are setup.  Toggle is really designed for the click event but can be used in this situation.

So there you have it.  More ways than you probably care to know and I wouldn’t be surprised if there were more. 

A parting thought.  Earlier this week I read a great post on the performance of show/hide vs. toggle, css and addClass/removeClass.  Check it out if you want to read more on it but the basic answer is calling the css method is the best.  However, there is one more way that’s even faster but you’ll just have to read the article to find out what it is.

Happy Coding! :-)

Posted 05.07.2010  #    Comments [0]  |