Rusty Divine

Live, Love, Learn, Teach

Geocaching with a Three-Year Old

My son loves to find treasure. He is outside right now playing his latest favorite game where he rides his trike around the patio a few times, then the “mail man” hands him a padded envelope with one of his little toys in it – a bouncy ball, a hot wheels, a sticker, etc. – and he opens it up and either takes the toy or gives it back saying “Return to sender.”

We just got back from a geocaching trip where we hiked through a wooded park named Wilderness Park that is near our house looking for a peanut butter jar that has been wrapped in camouflage tape and stuck into the head of a decapitated statue. He only likes the geocaches that are big enough to hold toys – some are just a log book, and others may be just a puzzle or marker.

We didn’t find that cache today, likely because we took the wrong fork in the path, but we did see a lot of amazing things we wouldn’t have if we had stayed home.

Not long after we parked and started walking on a grassy trail, we found a painted turtle. We picked him up and felt his claws and his shell and talked about how he can hide in his shell when he wants to, then let him go on his way.

Soon, we crossed over a creek on a bridge made of cement blocks from some torn up street or building. We saw some trees that had fallen into the creek to make a dam.

Farther up the trail we noticed a doe watching us. She stood perfectly still even as I picked Rowan up and we pointed at her.

Then we found a muddy puddle with lots of tracks. He wanted to know what left the mountain bike tracks and the goose tracks and the dog tracks.

We followed the compass on my phone until we realized we had passed the cache and it didn’t look like our trail was going to turn the right direction, so we turned around. On the way back, we walked to the edge of an embankment and looked down at a creek that had flooded recently and washed several dead trees into a pile in an elbow of the creek.

Just before we got back to the boulder bridge, we noticed some deep purple mulberries within reach from the path and enjoyed a few while talking about coming back tomorrow with a couple of buckets so that we could make some mulberry syrup.

On our way to another cache, we stopped on the gravel road to see a flock of wild turkeys. We parked and walked toward them and were impressed at how well those big birds can fly!

After we traded a little monster toy that lit up from the inside for a couple of google-eyes, we talked on the way home about wanting to make the world a better place by leaving toys that were better than the ones we took in contrast with some of the pieces of garbage we find in geocaches sometimes.

Our adventure was under two hours, but we really packed it in! Not every excursion is this successful, but its nights like these that make such great memories and are worth sharing with you.

We Scrubbed our QA/Prod Move

It was quarter-after eleven Friday morning and I noticed my teammate’s brow was furrowed. It was her turn this iteration to coordinate the move to QA and Production, which involved enough steps that we have created several process documents and an iteration calendar to help keep the move on track.

The seven of us were in the basement for our weekly team technical training meeting – two hours set aside to explore new technologies and discuss how to improve our code base. It’s a time we look forward to each week as a fun way to start a Friday and a time to talk openly about our ideas and interests.

Two of the team were discussing or debating something while the rest of us worked through a tutorial on SignalR on our Azure VMs.

I asked the developer in charge of the QA move how it was going and she told me there was a problem.

“Could you open the QA website and check the obligation transaction page? We are getting a work phase not found error,” she said.

I checked and found the same error. It was strange and took a minute to process what could be going on to cause this error message. Neither our developers nor our very thorough QA tester had encountered this in our development branch during the iteration.

After a few minutes of conferencing about it, we realized one of the stories we sent to QA was failing because the table it was expecting to update did not have any data loaded yet, and would not until we turned on this multiple-iteration release in production, converted the data, and took over the functionality we were replacing in the main frame system.

Our application is complicated by having some parts that are used in production, and some parts that are technically in production but are turned off and hidden until we can complete the entire set of features and turn them off in the current main frame system. This particular feature bridged both worlds, which is why it caused a problem when we got to QA – in demo, we have data loaded from production, but QA matches production exactly and does not have that data loaded.

What to do. We could scrub moving to QA and Prod this iteration, roll back the problem feature, and do a normal QA/Prod move next iteration. We could populate the empty tables with production data so that our cross-over feature would work, but the data would become stale as soon as someone used the main frame system, so that was out. We decided our best option was to scrub the move because there was only one minor feature that would have been visible in production.

The QA mover and I went upstairs to talk to the product owner. We explained the situation and she agreed, the minor feature wasn’t important enough to do an emergency fix for and we should just scrub the move.

To me, this issue and how our process handled it so smoothly was awesome. Sometimes its easy to overlook something like this that appears trivial – it was no more than 20 minutes between the time we realized the issue to when we decided to scrub the move. We didn’t need to debate or discuss, it was clear from our process what we should do – and that included both developers and the product owner.

Days like this make me so happy to be working with an agile team!