Mid-iteration Session Recap
Since we have now decided to switch to 2 week iterations, we had talked about now posting a thorough session recap every 2 weeks, and just a brief summary after each mid-iteration session. This week was a mid-iteration session, but after typing everything I thought should be shared, I see that my summary was not that brief. Anyway, here we go…
The session started with just Kristie and me for the planning session, which was interesting because this was only the second session for Kristie. We took our time with this because Kristie had many good questions and topics for discussion, and this is, after all, a learning group. The planning session went very smoothly though. Of the data we have so far (our previous two 2-week iterations), we had finished 2 stories in one session, and none the second, so we did our planning based on a velocity of one story per iteration, with 5 iterations until the next release. Putting on our customer hats, we were able to pick 5 stories that looked like they would add up to a very useful release.
About an hour in, Tom arrived for his first session working with us, so we had a brief Q&A session, then got in (as I recall) just a bit of development before lunch. Over lunch, we brought the cards, and covered a bit about the stories in our release plan and how the planning process works. After lunch, we first had Tom watching and asking questions while Kristie and I worked on the "Simple Preview" story, then Sam arrived in the afternoon, and paired with Tom on the VB Line Reader as part of the "Context Parameters" story.
The work day went really well, especially considering the time spent working with new and newish participants, etc. We actually finished the Simple Preview story, and made significant headway on the "Context Parameters" story. This time, we remembered to stop coding in time to do the integration while most of us were still around to participate, and Sam stayed later, so he and I kept working a bit after the afterward.
We had an issue with the new version of the VB Lite Unit DLL on one of the machines, and had to muck with it to get the registration right. Finally, it seemed to work and pass all tests, but was giving repeated memory violation dialogs, which we automatically attributed to still having some problem with VB Lite Unit. We worked around this by having Sam and Tom work on Tom’s laptop, which worked fine.
After everyone else left, I did some debugging, and determined the problem to be an interaction with the code in our project and Access 2000 (we’re using Access 2002 on the other machines). There’s a place where we were not setting an automation object’s reference to Nothing before quitting the Access instance we got the variable from. Explicitly setting the reference to Nothing first solved the problem.
Note that for one of the cases of the memory error described above, the problem actually occurred with an implicit reference to the VBComponents collection looped through in a For Each loop. To solve this, I had to create a variable for an explicit reference to VBComponents, loop through that, then set the explicit variable’s reference to Nothing before quitting the application. It would seem that in this case, the implicit reference is not actually going out of scope automatically on exiting the For Each loop, but hangs around for some unknown period of time thereafter. In Access 2002, I don’t know if this is fixed because VBA drops the reference sooner, or because the reference to VBComponents no longer generates an error when its application is closed with a dangling reference. The same problem does not occur with the variable used to iterate, which was found to always be Nothing after the loop completes.
I guess this makes a case for being extra cautious in VB/VBA to explicitly drop object references used in reverse-dependency order, even if that means making the code messier by using some explicit reference variables where they appear to be unnecessary.
