Beaten by Children

Each Friday evening I take a class in Mandarin at the Chelmsford Chinese Language School. After that class, I go to chess club, while Naomi studies Chinese Folk Dance. I wrote this at the end of last year.

Carissa is quietly contemplative. She keeps her body movements still, with a level of concentration that seems incongruous with her age. She looks disarming. Yet she plays chess with such aggression that I find myself doing nothing more than react to her constant attacks the entire game, with no chance to implement a winning strategy of my own.

Jeffrey is “all boy.” Every time he makes a good move, his whole body shakes with elation. He laughs with glee every time he puts forth another reveal, or forces me to choose which of two pieces I am going to have eaten by his.

I am 42. They are both just seven years old. In addition to their age, they have one other thing in common: They absolutely destroy me at chess.

But the children weren’t the only ones who learn and improve. I go back every week, and I get better.

Building a Future with LEGO: My Nephew Andrew Roberts

(Excerpt from the Community Advocate Newspaper, Friday, February 3, 2012, article by Sue Wambolt, Contributing Writer.)

Marlborough – Prior to November 2011, Andrew Roberts worked for County House Research performing in-court background checks. By the end of November, though, he retired to pursue his lifelong passion, building Army tanks with LEGOs.

Lego tank and APC, designed and built by Andrew Roberts.
A sample of the many tanks that can be built with Andrew Robert’s LEGO kits.

Roberts’ love for LEGOs began at age 5 when he was given a big bucket of the brightly colored building blocks as a gift, and he has been playing with them ever since. About two years ago, Roberts heard about a man who was building World War II tanks out of LEGOs. Intrigued, he decided to build his own LEGO tank which he then put on eBay – and it sold. He made another and it sold as well, snowballing into something bigger than Roberts could have anticipated.

… Read the full article at the Community Advocate Newspaper site.

Andrew Roberts poses with a Lego M1 tank he designed and built.
Andrew Roberts has made building with LEGOs a full-time business.

To see or purchase any of Andrew’s sets or instructions, visit his eBay store: http://stores.ebay.com/Battle-Brick.

See You Later, “New Dad”

Five years ago my Mom remarried at age 80, several years after the death of my father. “New Dad,” as I generally referred to him, was George Fortini, a sweetheart of a guy who proved (along with Mom) that being crazy-in-love and romantic wasn’t just for young people.

The five years he and Mom had together were marked with many of the typical struggles of octogenarianism, but they took care of each other with love, grace, a large amount of very good-natured ribbing, and constant delight with what God had given them. George demonstrated that God’s grace was just as attainable and life-changing as falling in love still was.

Mom and "New Dad"
Mom and "New Dad," George Fortini

Their story of finding each other has brought a smile to the face of every one of the many people with whom I have shared it. Their obvious, genuine affection has been just as inspiring.

Most of our family attended their wedding. Mom and George were neighbors, and a path had been worn into the front lawn between their two houses. (George refused to move in with Mom until after the ceremony, insisting that he wanted to “do things the right way.”) New Dad was always grateful that our side of the family accepted him as readily as we did.

How could we not?

Late last week, George was admitted to the hospital with some internal bleeding from an ulcer. Efforts to stop it were unsuccessful. He was moved to hospice on the weekend, and passed away quietly and peacefully, while holding his daughter’s hand, at around 10:30 last night.

Although our reunion in Heaven will come, now we feel the sorrow of missing him especially sharply.

How could we not?

From We to Me

An involuntary divorce is, quite frankly, a terrible event. I doubt that will surprise anyone. There are dozens of expected perils and adjustments. It is tragic, and painful beyond belief.

But that pain does, eventually, well and truly end. One adjusts. Balance returns. Life becomes fabulous again.

But occasionally, there are bits of adjustment that are just plain odd or unexpected.

The one of these, with which I struggle constantly, is whether to use the plural first person pronoun, we, to describe events in the past that were performed when there was a we. Do I say, “We always wanted a daughter, and had the name Naomi chosen for many years,” or should it be, “I always wanted …”?

As the time passes, I still find myself waffling on this one. Some weeks I strongly lean toward, “I will describe things as they were,” and other weeks I think, “No! I have to be clear that I’m single. What if some unmarried Nobel-prize-for-science-winning* supermodel missionary gal is eavesdropping on this conversation and mistakenly thinks I am married?”

Anyway, these are the kinds of post-divorce things that nobody talks about.

Cheers.

*No, the Nobel Prize for Economics does not count. (I have standards, you know.)

(And, yes, I know that I am not using parallel structure in the title. The rhyme seemed more appropriate.)

9/11: An Eyewitness Account

Originally published on September 11, 2003. Republishing for the 10th anniversary of this terrible, world-changing event.

Personal background: Michael Frenchman is my “not-father” (an interesting title that I coined with a history of accusation, assumption, adoption, and eventual DNA test), a dear-but-distant friend to our family, and a videographer/producer/diver/etc. He and his wife, Karen, reside on West 27th Street, in New York City. Coincidence brought him very close to the tragedy, and his well-written perspective goes well beyond the sound bites we (especially today) are accustomed to hearing from NYC residents.

From: Michael Frenchman
Sent: Thursday, September 13, 2001 13:23
Subject: Where were you…

Sorry to have been out of touch in the last few days. We still can’t get long distance service and even email is sporadic.

Karen and I arose early on Tuesday morning, preparing to drive to the Staten Island car-ferry and another day working on our rental apartments there. We were running late and began to think we would miss the 8:45 boat. Our best route was straight down 7th Ave. to Vesey St. and then right a block to take the West Side Highway a few blocks further downtown to the ferry entrance at South Ferry. I suppose we turned onto Vesey Street at about 8:44 and onto the West Side Hwy at about 8:45. That corner is the northern base of the World Trade Center. We had the radio on. As we pulled into the ferry area, I heard one brief report that there had been an explosion at the WTC. Looking nearly straight up, we saw smoke and clouds of paper flying towards the east, to Brooklyn.

As soon as our car was loaded on board the ferry, we scrambled to the rear upper deck and watched in amazement as nasty gray-white smoke poured from the northwestern tower looming above us. Someone said they’d just heard that a twin-engine plane had hit the tower. Karen thought it might have been an accident—a small-plane pilot having a heart attack or some such and losing control. But I was convinced it was a deliberate act, by whom, I could only begin to guess.

A few other passengers joined us on that rear deck as the ferry pulled away from the terminal. The skies were crystal clear and blue. A foreign couple gazed in shocked amazement and tried to get a better look through the 25-cent binoculars. They offered us a peek. But the unaided view was clear enough from our close south side vantagepoint. We could see numerous plumes of smoke and tongues of flame pouring from broken out windows. We could not, of course, see the huge and gaping diagonal slash on the opposite north side of the building where the first plane had hit.

The ferry was perhaps a half-mile from the towers when we saw a silver and blue two-engine jetliner flying unusually low and slow up the harbor in-between us and the Statue of Liberty, passing less than a thousand feet to the west of our boat. People who often land at LaGuardia Airport know that the pilots frequently treat the passengers to a run up the Hudson River for a spectacular view of the city. The sentence was only half formed in my mind that the pilot of this jet must have been trying to see and show what was going on at the Trade Center when the actual trajectory of his course became frighteningly clear. As the plane banked slightly to its right, I said aloud “He’s going to hit it!” We stood fixed in horror for the 5 to 10 seconds it took for my prediction to be realized. Set against a perfectly clear and blue sky, our reality transformed into a wide screen movie as each frame presented a new millisecond of action: the jet angling for its final alignment, the glide of the now-irrevocable projectile, the counterclockwise-tilted plane disappearing into the building, a fractional moment of black gashed wall instantanously billowing out one-two-three conjoined black and orange balls of fire and debris, the slap of thunder three or four seconds after the impact.

“We’re under attack,” I said twice.

We watched as long as we could from the open deck until two police officers on board ushered everyone inside, I don’t know why except for some irrational and false sense of control in the midst of the surreal. We watched through the windows as all the other passengers gathered, some crying, some staring in disbelief, some talking excitedly on cell phones, many still all but oblivious to the event and unwitting as to it’s meaning. Karen and I touched the arm of a nearly frantic woman crying on her cell phone as if she were in communication with someone in the doomed buildings. There was nothing for us to say or comprehend.

Once off the ferry, we drove half wild to our apartments and sat with one of our tenants to watch the terrible drama unfold on TV just like the rest of the world. We are now somewhat like those hundreds of people who were in Daley Plaza in Dallas and had a glimpse of the Kennedy motorcade and those awful moments and who then watched that eternal frame replayed and replayed for the past forty years. Our actual memory: the sights, the unwarned, unformed reactions, the smells of the harbor, the brush of the breeze, the heat of the early morning sun, the murmur of the other passengers, the rumble of the ferry engines, the hand of Karen in mine, the raw surprise as the world tipped on a new and unexpected pathway. All this will now blend and merge into the TV images of others’ amateur video, of traffic-helicopter cameras and sky cams on network TV buildings uptown.

I remember that in the plaza in front of where the towers stood was/is a sculpture depicting two pyramids—an allusion to the notion that these structures would last as long as their antecedents at Giza. Like you, we watched them melt to the ground and blow like so much desert dust.

So that is where I was and what I saw on one of those days which we will all always remember. “Where were you when ….?”

Karen and I spent the rest of Tuesday alternating between the TV and our chores at the apartment. What else could we do? We spent the night with friends on Staten Island, obviously unable to return to a besieged and cut-off Manhattan.

By late afternoon yesterday (Weds.), enough access had opened into the City that we were able to wend our way across the Verrazano Bridge, up the Brooklyn-Queens Expressway, past the prohibited Brooklyn, Manhattan and Williamsburg bridge entrances, onto the Long Island Expressway, past the “show your driver’s license” check point at the Midtown Tunnel and back into a quiet and subdued city. We have traveled a lot this summer. No time away has seemed as long as these 36 hours.

Thanks to everyone who called to see how we were. We were never in any real danger except during the moments we were driving below the base of the now-disappeared twin towers. We’ll never know what flaming debris may have fallen to the street yards behind our passing car. But our personal story is so many orders of magnitude less significant than that of the thousands dead and injured and directly traumatized and so picayune compared to the onrushing and unpredictable consequences of this ugly act that I even hesitate to retell it.

We hope you are all well and that some good ultimately comes out of this tragedy.

Love and peace,
Michael and Karen

Pagination Control While Printing in Flex: Unwrap mx.printing.FlexPrintJob’s Private flash.printing.PrintJob Variable

I’ve worked with Adobe’s Flex platform now for several years, beginning with my Star Trek transporter simulator, a project I wrote for a Boston University course.

Now, my job at Transparent Language involves mostly FFA (Flash/Flex/AIR) development, and I enjoy the challenges of working in this fairly cutting-edge environment. This week, though, I was shocked by an apparent limitation in the mx.printing.FlexPrintJob class: It doesn’t return the operating system’s print dialog information to the Flex application. So, if I want to print, say, the first five pages of a document, it cannot normally be done. It’s all or nothing, regardless of what I specify in the OS print dialog.

Windows XP operating system print dialog.

The FlexPrintJob class wraps an older class, PrintJob. The primary difference is that PrintJob, designed for Flash, takes a Sprite as passed parameter to its addPage() function, whereas FlexPrintJob’s equivalent addObject() takes a UIObject. Fair enough.

But, what’s weird, is that the FlexPrintJob class contains a private PrintJob object, but it doesn’t expose any of the useful properties of that PrintJob object, except pageHeight and pageWidth. Want the printer name? The first and last pages in the page range the user has entered? The paper size? The orientation? Forget it! None of them are accessible.

Granted, most of these properties are AIR-only, but I’m working on an AIR project, and it would be darned useful for my users to be able to control their output, which can often run to many tens of pages, so I really need access to the properties of the “hidden” PrintJob object.

Thankfully, there’s a relatively easy solution. I can du plicate the FlexPrintJob class, and add accessors (getters) that will allow me to read the variables I need. Normally, I’d extend the class, but because the object and properties I need are private, I can’t even do that. I have to essentially clone the class, and add what I need to it. Thankfully, FlexPrintJob is part of Adobe’s code that has been open-sourced, so I can do this with impunity, and even distribute it.

So, I open the FlexPrintJob code, copy it to an empty class, rename it to FlexPrintJobExtended, and remove the reference to import Version.as, and add the following:

//--------------------------------------------------------------------------
//
//  Additional accessors for PrintJob object
//
//--------------------------------------------------------------------------

public function get copies():int {
    return printJob.copies;
}

public function get firstPage():int {
    return printJob.firstPage;
}

public function get isColor():Boolean {
    return printJob.isColor;
}

public function get jobName():String {
    return printJob.jobName;
}

public function get lastPage():int {
    return printJob.lastPage;
}

public function get maxPixelsPerInch():Number {
    return printJob.maxPixelsPerInch;
}

public function get orientation():String {
    return printJob.orientation;
}

public function get paperArea():Rectangle {
    return printJob.paperArea;
}

public function get paperHeight():int {
    return printJob.paperHeight;
}

public function get paperWidth():int {
    return printJob.paperWidth;
}

public function get printableArea():Rectangle {
    return printJob.printableArea;
}

public function get printer():String {
    return printJob.printer;
}

Then, wherever I needed the FlexPrintJob class, I can then use my FlexPrintJobExtended class instead, and get access to all the glorious properties on the now-much-friendlier printJob object. Note that I’ve kept the properties read-only, by only writing getters. I did not envision any need to change the values: I only wanted to know what the user told the operating system.

The next obstacle is in the sample code provided for printing multipage documents. Begin by consulting the published examples for Printing with multipage PrintDataGrid controls. I’m not going to elaborate too much on this, merely illustrate how to get to the next step, printing multiple pages using the pages the user specified.

Looking at the section of the sample code marked with // The function to print the output, there are only a few things we need to change.

First, we need to change the FlexPrintJob instance created to use our new class:

// Create a FlexPrintJobExtended instance.
var printJob:FlexPrintJobExtended = new FlexPrintJobExtended();

The user might not have chosen to start on page one, so we need to advance to the first page the user has chosen.

// Jump to the first specified page, not necessarily page 1.
while (errorPrintView.pageNumber < printJob.firstPage && errorPrintView.printGrid.validNextPage) {
	thePrintView.printGrid.nextPage();
	thePrintView.pageNumber++;
}

Then we modify the

while(true)

so that it won't go further than the number of pages the user has specified.

// Loop through the following code until all pages are queued.
// If the user has chosen to print all pages, printJob.lastPage will be zero.
while(printJob.lastPage == 0 || thePrintView.pageNumber <= printJob.lastPage)

Voila!

Feel free to download the code cited in this post: FlexPrintJobCode.zip.

If you find this to be useful, or find a better way to do it, let me know, by e-mailing "doug" at this domain. Cheers!

Nope, Nothing Familiar Here

On the left is Psycho, with his nanosuit in strength mode, from the Crysis game. On the right is a movie poster from Green Lantern. See any similarities?

Of course, this isn’t the first time the Crysis Nanosuit has been copied in film. [cough]GI Joe: The Rise of Cobra[/cough].

Minecraft

We became involved with Minecraft early in its beta development cycle. Frankly, it’s been amazing and fascinating. We operate our own server at home, modded with Runecraft so we could make teleporters (generally it’s up from early evening until the morning), and have started to add more users to the system. There are still some open slots, if you’re interested in joining us.

The new addition of powered rail boosters has gotten us rail-and-rollercoaster-crazy.

My Little April Fool

When I got home yesterday, I discovered that NaNi had put her snow day time to very good use.

R2 looks a little different. But he does have a huge smile.
"Dad, please lifted up the helmit."
Under the helmet ...
NaNi did some redecorating.
"Hay, you. Kiss me, please."
"No. Well, just one. I love this!!! Happy April Fool's Day. I love you, Dad. "Thank you for the kiss, you kind Jedi."
I love the details. Lipstick attached to the phaser.
... and matching shoes.

Dance Macadam

Naomi had been very, very sick for almost 10 days—double ear and ear canal infections, that we finally got under control. Even though she stayed home from school, she hadn’t had a fever all day, and I let her go to ballet. (Isaac took care of her while I was at work—my first day back in the office in a while. I am very grateful that Transparent Language has such excellent work-from-home infrastructure.) So I went home, got her ready for ballet (tights need help), and off we went. Gate City Ballet is pretty much on the same street as my job, so I normally drop her off, go back to work, and pick her up at the end.
Naomi with her artwork.

On the way to ballet, we stopped at the school department offices, where one of her pieces of artwork is being displayed. Naomi was thrilled to see it.

Naomi's Art on Display at the Nashua School System Offices.
Naomi's Art on Display at the Nashua School System Offices.

We got to ballet (on time, even—everything in Nashua is close and convenient), and she exclaimed, “My ballet bag!”

I said, “No problem, you can see if they will let you start in your stockings,” and I went home to get the bag. I picked it up, and realized there were no tap shoes in it. So, I hunted around her room to find tap shoes, and put them in the bag, and delivered them to ballet.

“Dad, these are my old tap shoes. They hurt my feet if I wear them.”

I laughed. “Okay, I’ll be back in a bit.” Back to the house … play the “find the real tap shoes” game—not as easy as finding the wrong pair. Back to the ballet studio. Along with a sweater she forgot to pack.

I hold up the correct shoes and the sweaters. Naomi beams and blows me a kiss.

I am in Heaven.

It's two years old, but this is still one of my favorite ballet photos of NaNi.
It's two years old, but this is still one of my favorite ballet photos of NaNi.