Monday, September 26, 2005

Product Vision Meeting

I added five new JsUnit tests. I love it!

I attended a product vision meeting. It was great. I was able to pick up lots of user stories. I also started good relationships with people in contact with our customers around the country.

My goals for this week are:
  • Create user stories for the functionality that 1.0 does now that 2.0 still does not do.
  • Do the planning game with these user stories.
  • Post the user stories we are planning for the next iteration on a web page .
  • Collect the email addresses of those in the vision meeting. Email a link to our iteration plan page. Ask them for the names of users that would like to participate in development.
  • Create unit tests for any user stories I develop.

Friday, September 16, 2005

Test-driven, Z-layered webpages

I implemented a hideable <div> using JavaScript from code samples from Pixel Development. I also separated the content from the style of the div using their suggestion.

I created my first JsUnit test of a function I wrote here. It tests the JavaScript functions that make a div appear, disappear and a function that returns its hidden status. I also have a graphical test. It is not necessary for JsUnit to work.

Friday, September 09, 2005

That which is measured improves

This week I finished the first iteration of the sliding edge menu from Rasmus.

I kept a log of the time I estimated and the time I spent with each programming task in MS-Excel. That which is measured improves. I am going to continue logging my time this way.

I have implemented JsUnit on a local web site. I look forward to when I can start implementing a unit test for it.

Now that we have more browser real estate, my next tasks are to expand the content of the sliding menu.

My agile goals are:
1. Write down new user stories I have heard about the direction of fast map.
2. Create unit tests for the next tasks I do.

Friday, September 02, 2005

Can You Sleep While The Winds Blows?

An interesting story that seems to have an anonymous author1,2,3,4.
Years ago, a farmer owned land along the Atlantic seacoast. He constantly advertised for hired hands. Most people were reluctant to work on farms along the Atlantic. They dreaded the awful storms that raged across the Atlantic, wreaking havoc on the buildings and crops. As the farmer interviewed applicants for the job, he received a steady stream of refusals.

Finally, a short, thin man, well past middle age, approached the farmer. "Are you a good farm hand?" the farmer asked him. "Well, I can sleep when the wind blows," answered the little man.

Although puzzled by this answer, the farmer, desperate for help, hired him. The little man worked well around the farm, busy from dawn to dusk, and the farmer felt satisfied with the man's work. Then one night the wind howled loudly in from offshore. Jumping out of bed, the farmer grabbed a lantern and rushed next door to the hired hand's sleeping quarters. He shook the little man and yelled, "Get up! A storm is coming! Tie things down before they blow away!" The little man rolled over in bed and said firmly, "No sir. I told you, I can sleep when the wind blows."

Enraged by the response, the farmer was tempted to fire him on the spot. Instead, he hurried outside to prepare for the storm.

To his amazement, he discovered that all of the haystacks had been covered with tarpaulins. The cows were in the barn, the chickens were in the coops, and the doors were barred. The shutters were tightly secured. Everything was tied down.

Nothing could blow away. The farmer then understood what his hired hand meant, so he returned to his bed to also sleep while the wind blew.
I was thinking about this story a couple weeks ago as I considered our system's disaster recovery. It is chilling how it applies to hurricane Katrina.

What if something happened in my backyard? Could I sleep while the wind blows?

Use your wings

Or, “And the birds walked home” Once there were birds who did not know how to fly. One day a bird was starting a fire in his fireplace and flapped his wings to get it started. He rose into the air. He was amazed. After practicing a bit, he was soaring above the rooftops. He gathered his friends around and told them how amazing it was to fly. He talked about how beautiful the clouds were up close and shining in the sun. Everyone was excited about this and talked to each other about this new discovery. Then they all walked home. (Author unknown, paraphrased 8/17/2005) I am feeling this way about the things I read about at https://agilemanifesto.org,  http://www.cooper.com, http://www.extremeprogramming.org/index.html and http://c2.com/cgi/wiki?XpFaq . They seem incredible. They ring true about how to build better software. After I am done reading, I feel like walking home. It is so easy to do things as we have always have done them. We have deadlines. I know there are better ways to develop software.

My Danish friend in Bangkok

I just had a conversation with a new Danish friend in Bangkok.

http://www.menulab.com/personal/me.aspx

We just bought the sliding menu and I am implementing it like it is shown here

http://www.menulab.com/slidingmenu/examples/shopping_edge.aspx

I found a complex way to solve a problem. I emailed him to ask if there was a simpler way. He messaged me from Bankok. We had a nice conversation.

I love my new job! I am learning new things that apply to me personally. Such as,

assertEquals(refactoring, life);
http://www.cafepress.com/agilestuff.26911941

Refactoring is a newer programming term that mean, "Make the code that works, more easy to read and understand, more extendable". It is repentance for coders.

You can refactor more freely when you have automated unit tests. A test to see if the code works the way it should. You are then free to gut and rewrite the code. All you have to do is run your tests to ensure it is still working by design.

We can refactor our lives more freely when we test our lives regularly. For me, this is asking my wife, "How am I doing? Are you happy with me?" It can be as simple as, "am I happy?" If not, then the test has failed. Time to step back and look again.

Accurate, and kind feedback is gold.

assertEquals(refactoring, life); Am I refactoring my life?