Friday, January 02, 2009

Christmas Letter from the Kevin J. Rice

Update from the Holidays and the Rice Household:

The summer this year was taken up by working on a wrap-around brick patio for our house, so when we get out of the van it's onto a brick walkway instead of mud. This hopefully contributes to the cleanliness of our entrance hall. We (mostly me) broke out the concrete walk with a jackhammer (me! Fun!), and dug down 14 to 18 inches to put in a drain tile system. This turned out to be about 20 yards of dirt and gravel moving.

I put on some muscle during this. Unfortunately, it's still not finished. The hole has about 6 inches of lift left before we can put the bricks in. I would have finished with another weekend, but something interfered with this plan: a broken jaw.

On October 27th, I was working at clearing and burning some brush (buckthorn trees/bushes) at my church. While moving some large branches in the fire, I bent one back and then had it fly up and hit me in the face. It broke my jaw in 2 places (chin and near my ear). I've had my jaw wired shut for about 7 weeks and it the last two have had it opened but not unwired. There's still with the 'dental arch' in place sticking the insides of my cheeks with sharp wires, but hopefully this will come off in the next week or so.

So, drinking through a straw has meant losing 20 pounds, which makes me look nicer and I could certainly have used it, but I don't recommend it as a weight loss method.

Other news of the family:

Beck is working on her writing, and enjoying that. She's not enjoying arthritis in her foot and hip, and some plantar fasciitis to go with it.

Atticus is in kindergarden. He just turned 6, and there was much celebrating. He will (of course) be bummed out for the rest of his life having a birthday so close to Christmas, but we did what we could to make it properly a birthday just for him, with cake and a party and such things.

Xander is 7 and in first grade, doing very well. He's reading to himself some, and we've all been gathering at night (all the kids and mama at least) on the master bedroom bed, while Beck reads from the Harry Potter series. This is going over VERY well, even with some of the scary parts. We're in book 4 now and much of the kids' free-play has Harry Potter motifs.

Carter is 4 and frequently tries to get her way by screaming loudly. This hurts my ears horribly, and I've found my stress level increases directly with the noise level. With stress, I get a little angry, so I've taken to wearing earplugs during times of likely noisy events, which give me much more patience and thus ability to parent well.

Of course, the whole house has quieted down significantly since Christmas, when the boys got Nintendo DS's and Carter got a Leapster. Lego StarWars is a favorite, followed by Mario. We had a relaxing drive of over an hour when they had something to do besides pester the driver.

Speaking of driving, I saw good friends at New Years' eve and day. Kevin Gordon (who lives about 1.5 hours away) and his family, and Steve Brodson (who is minutes away from us) and his family, then the Brodsons' again for football on new years' day. Not that I'm THAT into football, but I like watching it occasionally and it's always fun to hang out and be social, especially since the kids have made such events less frequent.

The party at Kevin's on the eve was very interesting conversationally. One guest was a neighbor who does electrical contracting for a railroad nearby. He told some stories about putting up a whip antenna near high tension wires and having the induced voltage from the lines of several hundred volts on this relatively short antenna. Apparently everything has to be VERY well grounded around railroads due to lightning strikes, etc., too.

My work at Textura is taking up a lot more time recently, due to our serving the construction industry, which (as everyone knows) is being hit hard by the recession. We're working on putting out a new feature that solves a larger business problem and are hoping that it will generate some more business / revenue because people will find it more useful. So, lots of extra hours for me, but it's fun work since I can readily see the benefit to our users and hope our business outlook grows with the additional users and usage that this feature will bring.

Today we got a new kitten/cat, which had been at my mother in law's house, but she's not home enough for it so we took it. This brings our total back to 3; we had 3 but one had to go away because of a behavior problem and it's good to have a group again. They play together very interestingly (cat politics) and it's fun to watch and warm to be sat upon whilst watching TV, reading, etc.

Fitnesse ArrayFixture: my simple example

Recently I've been fighting with Fitnesse, specifically a pyFit server, trying to get an ArrayFixture to run properly. The only example of ArrayFixture I could find was the generic one. Here is a better example of ArrayFixture.

I'm calling this from within a DoFixture, mind you, so sorry if there's that added complication, but you should be able to figure out what's happening based on this.


class LwRow(object):

_typeDict = {}

def __init__(self):
self.rowNumber = None ; self._typeDict['rowNumber' ] = "Int"
self.indent = None ; self._typeDict['indent' ] = "Int"
self.refobjType = None ; self._typeDict['refobjType'] = "String"
self.refobjId = None ; self._typeDict['refobjId' ] = "Int"
self.sNumber = None ; self._typeDict['sNumber' ] = "String"
# ... blah more here...

def name(self):
self._typeDict['name'] = "String"
return self.linkOrgEditContractorText or ''

def getSetOfRowObjects(self):
rows = []
obj = LwRow()
obj.rowNumber = 1
obj.indent = 3
# ... more setting here...
rows.append(obj)
# blah, repeat, appending more rows...
return rows

class ReviewLwsArrayFixture(ArrayFixture):

def __init__(self, p, c, dr, user, trans=None):
ArrayFixture.__init__(self)
rows = []
#... do stuff here to retrieve data...
retData = getSetOfRowObjects()
print "Have retData=%s" % (pformat(retData))

# THESE ARE PRO-FORMA, MUST BE HERE:
self.paramCollection = retData
self.setActualCollection()

def getTargetClass(self):
return LwRow

def reviewLwsArrayAsUserPpCcDrUser(self, p, c, dr, user, trans):
return self.ReviewLwsArrayFixture(p=p, c=c, dr=dr, user=user, trans=trans)


# then you can write your UAT / Fitnesse code as follows.
# Note that I can use ANY attribute of the lwRow object without declaring it
# in my arrayfixture code (I have LwRow declared in a non-fixture related module)

|review lws array as user | gcUser| pp | p1 | cc | c1 | dr| Dr1 |
|rowNumber|name|indent|refobj type|
|1|manual name one|Manual|False|
|2|subMc1|LW Sub|True|
|3|subMc2|LW Sub|True|
|4|subMc3|LW Sub|True|


and / or:

|review lws array as user | gcUser| pp | p1 | cc | c1 | dr| Dr1 |
|rowNumber|name|sNumber|
|1|x|62|
|2|y|63|
|3|z|64|
|4|z|46|
|5|z|55|
|6|z|63|
|7|q|64|

That's it!