What I Did Over My Summer Vacation

Photo © 2009 epSos.de CC 2.0 BY

I did not laze around on the beach all day, everyday, reading books, writing on my laptop– Ah, that would have been fun.

I’m actually still on my “summer vacation,” even though the calendar and the weather both say we’re well into autumn. Because it wasn’t really a vacation, although it was a vacation from full-time writing.

I’ve been spending most of my time on a full-time software contract, developing software for a commercial search engine (which does not have a ‘G’ in its name). A big surprise to me: I discovered that I haven’t lost my touch. I fell into developing code just as easily as if it had been riding a bike. But I also have been maintaining a sense of distance from the project, doing the work for the money–doing my best work, yes, and giving my best advice, but not becoming personally invested in the results. (And if you don’t understand why this is such an important transformation for me, I recommend a National Geographic documentary about stress, which I recently watched, especially the very last segment.

I also discovered that I still make mistakes after almost 30 years, but at least I learn from them. And at least the mistakes are on the margins, subtle.

(Warning: technical stuff here. Click here to skip ahead.) For example, I recently wrote Perl like the following:

my $var = value if condition;

Now, the my keyword limits $var to the current lexical scope. I expected that if condition evaluated false, $var would be undefined. And indeed it was– the first time the statement was executed. But this statement appeared inside a subroutine, and if condition evaluated false, $var would retain the last value it had, from the last time the subroutine executed! (If you’re not a programmer, and you’ve followed me this far, congratulations, even though you probably don’t get why that should be such a big deal.) Yes, in Perl, my variables are never destroyed, even if they go out of scope, just in case they come back in scope (such as in a closure), and this funny behavior is one of the side-effects. The correct code to achieve the desired effect is:

my $var;
$var = value if condition;

Now, $var will be re-initialized to undef every time the code snippet runs.

(UPDATE: This behavior—or rather, the undefinedness of the behavior—is documented in perlsyn, but Perl 6 presumably avoids the ambiguity.)

So these are the kinds of software mistakes I’ve been making.

Then there’s my battle with the mythical monster named Writer’s Block. I call it a “mythical monster,” because I don’t actually believe in Writer’s Block. What I’ve been wrestling with is mental exhaustion. Full-time coding while the coding is good, it may be profitable, but it didn’t leave me with much energy to play with characters and plots. I didn’t realize until this summer how much energy and focus I use while I’m plotting out a story.

We also said goodbye to Old Herb. He was the first new-for-us car we got when the girls were little. Over 15 years old, and too many memories. But just too long a list of stuff keeping him off the road, and some of them quite expensive to fix. His front exhaust pipe needed to be replaced. He needed 4 new tires and a new mass airflow sensor (which had already been replaced more than once during his life). He also had some sort of electrical problem that drained the battery on rainy days, causing him not to be able to start. This, on top of a long-standing issue with one of the electrical harnesses going to the brake lights, which made some of them not work sometimes. Neither rear door would open, each for a different reason. And to top it all off, all four speakers in the sound system were shot, and the air conditioner no longer worked.

So when my parents gave us a new Toyota Corolla–well, a new-for-us Toyota Corolla, one of the ones with an alleged-funky accelerator (which we got replaced)–we reluctantly put him away, knowing that someday we’ll drive him again on that great Autobahn in the sky.

In the meantime, I’m putting more miles on my 12-year-old Saturn SL1, which has a slightly shorter list of things that could keep it off the road, the most important being what feels like a flaky clutch. The car has a standard transmission, with an hydraulic-assisted clutch, and it feels like the hydraulic-assist part is not working reliably. But with over 150,000 miles on it, and still on its original clutch, it will probably need a new one of those soon. Putt putt.

The reason I’m putting so many miles on this old car is because my Firstborn daughter (who I’ve called “C” before), my Firstborn got into a new high school, and I’m now driving her a half-hour to school every morning, and a half-hour back in the afternoon. And I’m happy to do so, because this new school is a gift from God. (But that’s a story for another day.)

As a result, I spent a couple weeks finding all the best WiFi hotspots in Chelmsford, MA. But my favorite is in Billerica, the Starbucks at Treble Cove Plaza. They have a drive-thru, so the foot traffic inside is reasonably light. I can usually curl up in a chair with my computer and a Grande Decaf Café Americano (lightened with a little half-and-half), and code or write for a few hours. No reason to battle the traffic back home; I can stay close by until my Firstborn is done with school for the day, so I can pick her up.

So now I finally got a new GPS to find places where I can hang out in the area– Well, the GPS is new for me, a used Garmin nüvi 1350T, which came pre-loaded with all the data (including the home address) of the previous owner. My friend Tom also recently got a used GPS, a different model from a different manufacturer, which he bought from a different vendor, and it also came pre-loaded with all the personal data of its previous owner. Note to self: whenever you sell, give away, return, or discard any electronic device, be sure to clear its memory first, or at least delete all personal data.

Of course, the previous owner of this GPS got back at me for inadvertently peeking at some of his private data. He inadvertently forgot to unregister the device from his Garmin.com account, so now I can’t register it there, at least not until I talk to Garmin’s support people. (I’m hoping they will believe me that I legitimately purchased it, and will reset the website so that I can register it there for service and upgrades, should it need any.)

I have a couple more stories to tell from the summer, but they’ll have to wait, as this post is already too long.