Thursday, December 08, 2005

Pictometry in Virtual Earth

I found out from All Points Blog that went live today (was virtual earth).

I like the new features. You can link to a bird's eye view of some locations, like the statue of liberty. I also like zooming in by drawing a box.

I would like them to get the tiles to load more consistently, and improve their geocoder results.

Wednesday, October 19, 2005

Idiomatic Pop up Dictionary

Update 2008-05-14. This web site no longer has this functionality that I can tell. The principle still continues. I updated the idiomatic URL. For my future reference the name of the article is "The Myth of Metaphor" by Alan Cooper June 1995 Originally Published in Visual Basic Programmer's Journal. The PDF is in my Gmail account.

Look at now highlight a medical term you don’t know. It will pop up a window and look the word up for you. You may need to turn off your pop up blocker. It must use JavaScript to do this. It reminds me of the Wikipedia feature of trillion. It will put a dotted line underneath a word. When you mouse over it, it open a tool tip like window and go an look it up in Wikipedia.

This is a great example of idiomatic design. My wife just happened to come across it. She was highlighting a word (I guess to look it up) and the pop up did it for her. She will never forget this feature and no one had to teach it to her. It was so useful that she shared it with me and now I will never forget it.

Tuesday, October 18, 2005

Stay Extreme

I have been feeling burnt out. I just went on a long weekend vacation to Disneyland with my four oldest kids. I am staying up late and started looking at blogs of those that share my interests. I found innovation fatigue and posted a comment. I found that Jon Conradt is also interested in agile development. He mentioned Scrum. I am not sure what it has in addition to XP.

I am going to initiate a 15 minute meeting every day this week. I am determined to use my wings.

Tuesday, October 04, 2005

Walk away from your desk

In Nov 2002 I was laid off. After a couple of weeks I was hired to finish the last six weeks of a contract. This was my first introduction to extreme programming. My supervisor was very into it, especially the small iterations. I was amazed how much I accomplished.

I worked by myself. I occasionally (every 2 or 3 days) be able to check in with my supervisor. Sometimes I got frustrated. It was then I realized that I needed to walk away from my desk.

Not that this is a great new revelation, but to me it was a breakthrough. I had read The Origin of Personas some time before. I realized that when I was walking, I was working! I was not loafing. Of course there is a line you can cross, walking a 10K for instance. This is where personal character comes in. Steve McConnell said personal character is related to superior software.

Monday, October 03, 2005

Do the simplest...

I did the planning game writing several user stories on note cards. This took some hours. After a while I was itching to start designing and getting the most important ones done. I took two of them and added them to an implementation of Gemini I set up a couple weeks ago. I created a version for Oct 2005 and added the two user stories to it. I emailed a link of Gemini to my work mates and asked our director if I could sent it to the members of the vision team. I want to encourage participation from them.

I also created a stored procedure that reports on the usage of a couple key features of the web application. I want to find out who is using these features. I will invite them to participate in the development process.

Backup plans. I have worked out a system of backing up the source code I work on. We do not currently have a source code version control system. I created a backup folder on another set of disk drives to hold backups of the source code. These disks are backed up monthly. I created batch files to back up the source code. I set up monthly ones that will copy the source code several days before the scheduled disk backup. Do the simplest thing that could possibly work was my inspiration for this system.

I may be assisting another programmer this week. I will take this opportunity to practice pair programming.

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, and . 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.

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

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);

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?