Why Can’t Vacation Last Forever?

I am feeling the post-vacation blues. Not only did I not win the Powerball lottery for the biggest jackpot in American history, I had the unfortunate luck of returning to work in the same week a major release was scheduled to go out. The release was originally scheduled the week before, but it was postponed, leaving me with the unenviable responsibility of being on the conference call for the go-live moment, scheduled conveniently at 11:30 at night. I had volunteered to do the release call while on the vacation, but was told that no one should work on vacation. Frankly, I’d rather do this on vacation because I don’t have to work the next day. I am a cranky jerk when I am sleep-deprived.

The vacation was exciting. We took a long road trip to take the kids to see both sets of grandparents and my sister in Philadelphia. My son keeps asking when we’re going back. I’m sure that being showered with far more presents than any kid actually needs has a lot to do with that. It’s probably also really nice to have a good stretch of time when Mommy isn’t glued to her computer. Guilt? Yeah, I have a lot of that and some to spare. While in TN visiting my parents, we took our kids to a lovely local playground where I managed to get the worst ankle sprain of my life. There is NO logical reason for spraining my ankle where I did. I didn’t step into a hole. The ground was flat and stable. All I did was step off a small platform, a step down of about 8 inches. My ankle just buckled underneath me.

I am proud that I had the fortitude not to scream out the various conjugations of the f-bomb since there was a crowd of small children running around and having a great time. I sat down, blinded by pain, and waited for about two minutes, breathing deeply, until I could calmly call Dan over and tell him I had managed to injure myself for no reason whatsoever. I limped to the car and somehow into my parents house. I was not able to walk on my ankle for the rest of the day. I had to use a pair of my Dad’s old crutches to get around. My sister, the physical therapist, said the healing process is about two to three months for a sprain this bad. I can walk on it now, two weeks later, but it still hurts and feels weak and unstable when it is not wrapped in an Ace bandage and ankle brace. To say the least, my first week back to work was strictly work from home.

Two days after we got home, we went shopping for groceries. On this fateful trip, our son fell out of a shopping cart and busted one of his front baby teeth. It was too damaged to salvage, so it had to be pulled. Yep, we are those parents. The parents who let their kid ride in the back of a shopping cart against all recommendations and warnings posted on the carts themselves as well as the warnings given by the dentists and doctors who have to treat kids who are injured by falling out of these carts every day. Heathcliff will be The Kid Who Is Missing a Tooth for three or four years before his permanent tooth comes in. He will also be The Kid Who Is Never Allowed to Ride In The Back Of A Shopping Cart Ever Again.

In the midst all this holiday excitement and the handling of physical injuries, I did not have much time to work on Brixen. Shortly before we left on the Big Christmas Road Trip, I converted more of the code base over to C# and discovered to my disappointment that the decorator pattern in the Java code base is not possible in C#. Extension methods cannot satisfy the contract of an interface. And since C# does not have the equivalent of default interface methods, I am basically shit out of luck with the decorator pattern in C#. Therefore… this codebase will be a lot more verbose because classes needed to implement multiple interfaces will have to inherit from an implementation of one of them and then provide implementations for the methods of all of the rest of them. So, that kind of sucks.

One of the nice benefits of doing this translation is that it brought to my attention that I had made a bad design choice for the ControllableBean and its associated builder. Reflection is in powerful tool, but it should be used sparingly. Here is the original source code for ControllableBean:

So, this is a total abuse of reflection. The two-arg setters for adding new controls should not take a control name and a class type for the bean. They should take a name for the control and an instance of the bean. This is a much more logical and simpler design and I feel like a dolt for not realizing this from the beginning. Here is the new and improved version of ControllableBean:

This is much better. This interface is easier to implement and easier to understand. These code changes will be uploaded to GitHub soon. Meanwhile, we’ll just keep this little over-complication a secret between ourselves, won’t we?

In other news, it seems that my company is finally going to allow us to use Sauce Labs. I honestly did not think that anything would come of the research into the cost of their services that I was asked to do a couple months ago. However, it seems that we are doing a trial run with them soon and there is a manager assigned to the task of driving it now. I am so excited I can barely contain myself. Having access to some decent infrastructure to run large Selenium suites would be a sea change for my team. It seems that my employer just might have finally taken a first step down the road to building Good Automation.

Share This:


Leave a Reply

Your email address will not be published.