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” or “cyberdad” (interesting titles that we 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.

On the day in 1958, The World Changed

For devotees, [today is the anniversary] of an event in Copenhagen that transformed toys and revolutionized childhood itself.

It was at 1:58 p.m. on January 28, 1958, that then-Lego head Godtfred Kirk Christiansen filed a patent for the iconic plastic brick with its stud-and-hole design. Since then, the company has made a staggering 400 billion Lego elements, or 62 bricks for every person on the planet. And if stacked on top of one another, the pieces would form 10 towers reaching all the way from the Earth to the Moon.

This Lego Logo is composed entirely of Minifigures.

(Image credit Lee LeFever, Creative Commons License.)

Read more at Time.com.

Santa’s Dirty Secret: An Analysis of How Santa Really Supports His Operation

Santa.

Theories abound about how he finances and operates his North Pole operation.

A number of people believe Santa is a Communist. Others believe that Santa’s elves are slave laborers being exploited by the big red taskmaster.

Neither of these theories stands up to examination. The suggestion of Communism is just silly. We know from certain documentaries that Santa’s operation runs all year; that the elves who manufacture the toys are unionized and follow an apprenticeship-to-mastery program. It seems that the elves are humanoid enough to expect reasonable compensation for their work. Further, even if the elves were enslaved, vast quantities of materials and significant manufacturing infrastructure would need to be paid for. It is estimated that the retail value of Santa’s products is over $23 billion in the U.S. alone.

So how does Santa finance this massive operation?

Let’s take a look at two things we know about Santa’s abilities: (1) He can travel virtually instantaneously (650 miles per second) anywhere in the world; (2) he can enter any building, no matter how secure, with complete impunity.

Given these abilities, isn’t it more reasonable to conclude that Santa is, indeed, using them all year? He needs a vast quantity of cash to pay the elves, purchase raw materials, cover utilities, finance his public relations and legal departments, and upgrade manufacturing capabilities each year. Bearer bonds, gold bullion, gems, and good old Greenbacks and Euros are easily gathered by one with his abilities.

In a vicious cycle, our dear Santa “Sticky Fingers” Claus spends the year financing his operation via ill-gotten gains. Psychologically, this has to take its toll—Santa is certainly not a psychopathic personality, but he each December 25 he can assuage his guilt by delivering free toys and materialistic joy the world over.

Tangential factors further support this theory. We note that these toy deliveries appear to be unequally distributed throughout the planet, with the children of First World countries receiving far more than their fair share. Would it not be reasonable for Santa to compensate the children in wealthier countries more than elsewhere in regard to the unequal drain he would have had on their particular, more wealthy, economies?

And think about the infamous “naughty list.” Is there any evidence for anyone, no matter how naughty, ever being denied a gift from Santa? Bill Clinton, Martha Stewart, Kenneth Lay, Michael Jackson, Kim Jong Il, or the children for whom the “Parents, there is no candy in this aisle,” supermarket program was developed … Santa never delivers the threatened coal.

Like most people given super powers, Santa could not resist the temptation to use them for doing wrong. In time, the need to compensate for that wrongdoing led to the gift distribution system we enjoy today. And, the day after Christmas, the cycle begins again.

Yes, Virginia, there is a Santa Claus … and he’s a thief.

Losing

If I were to lose you today
I would lose …

The one who mothered my children
The one who was my only lover
The one who laughed at my jokes
The one who tolerated my inability to get my socks into the hamper right-side out
The one whose smile always brightened my day
The one who cut my hair
The one who prepared my meals
The one who shared my poverty
The one who shared my wealth
The one whom I have laughed with
The one whom I have cried with
The one whose illness tested my faith, showing me that it was okay to let God know I was really angry with Him
The one who received all my love notes
The one whose every success I applauded
The one who left clumps of hair everywhere in the house
The one safe driver in the family
The one who encouraged me when I did crazy things like ride my bike in the snow
The one who I could eat ice cream with
The one who made a million double standards
The one who was my water-fight and snowball target
The one who was my Snugglebunny
The one with whom I have shared a Caribbean sunset
The one who made me change my clothes when they do not match
The one woman I have ever kissed
The one who kicks my butt as my personal trainer
The one with whom I can watch chick-flicks
The one who supported me when my brain would not work right and I did not know what to do
The one who taught me how to exercise
The one who couldn’t stay awake for reading Starship Troopers
The one for whom I have prayed
The one who tolerated and tried to understand my anxieties
The one who was my Queen of Sarcasm
The one who made me not afraid to walk down dark alleys
The one who always froze me with her feet in bed in the winter
The one who prayed for me when I most needed it
The one who recognized all my Star Wars quotations
The one for whom I have bought flowers
The one who trusted me with her secrets
The one who always beat me to the bathroom
The one who my family liked better than they liked me
The one for whom I asked God
The one who pampered me when I was sick
The one whose drinks I could sip and then make “that face”
The one for whom I always thanked God
The one by whom I defined the word beautiful
The one who got me to eat mostly healthily
The one whom I did not see Hyannis with on our honeymoon
The one whose adventure dreams I always envied
The one with whom I could talk through any decision
The one who let me decorate with Lego
The one who always ignored my advice about computing
The one who has made my vacations worth taking
The one who realized immediately that we needed to live closer to work
The one who kept our children safe when I was not cautious enough to do so
The one whose laugh always made me smile
The one who made me think “Wow!” the first time I saw her
The one who was my friend for years
The one whose voice was the most beautiful one in the world to me
The one whose body I always longed to touch
The one for whom I lived
The one whom I love.

Nichelle is moving out today, pursuant to her intent to divorce me. I wrote this a couple of months ago, after a conversation we’d had. Nichelle’s decision was unilateral, and has been the most heartbreaking thing I have ever experienced, but there’s nothing I can do to prevent it.

Goodbye, my darling. Know that I love you, unconditionally and unceasingly.