Sunday, July 29, 2007

Ethel Konigsberg, 1928-2007

My mother died last Saturday night.

That is to say, she suffered a cerebral hemorrhage, resulting in almost immediate brain death. Shortly after suffering the hemorrhage, she lost all her brain functions. She was kept on machines for a couple of days, allowing the entire family to congregate, and also to allow the New York State So-and-so board to legally declare her brain dead, and terminate the life support, at which point she ... I don't know. Died for real, I suppose.

If this sounds tragic, it is, in more ways than one. My mother was 79 years old. This may seem like an old age, but she was a vital, active person. In fact, the hemorrhage occurred mid-stride, moving from dinner to spending the evening with her boyfriend. My mother may have had a 79-year-old body, but she had a very active brain, and a body that kept her on the go. As my brother said, she had the body of a 60-year old. There was no pressing medical issue: in the last 12 years, she had been hospitalized maybe three times: once for back problems, once last month to have a stent installed, and once more, as I've described, at the end of her life. The many doctors (including those that are family friends) insisted that neither the stent nor other possible contributing factors had anything to do with the hemorrhage. The other thing every doctor said (including those that are family friends) was that she didn't know what hit her. When she died, the only ones that knew were absolutely everyone else. She died in motion.

I don't believe it was her time to die. She has a brother ten years older who, while primarily serving as my loving uncle, served as a sort of barometer to me. Since women live longer then men, and my mother was in good health, I expected unfailingly that my mother had at least ten more years of life in her. It turns out I was wrong.

It also turns out that the idea that you could die at any moment isn't just true, but is likely to happen to someone you know. I am amazed at the number of people who have told me they suffered a similar loss: "My friend died like this at 41," said the doorman of my brother's building.

Over the last four years, my wife and I have laid in bed and admitted secretly to each other about ourselves, "I'm so lucky that my mother is alive at this stage in my life. If she died, I don't know what I'd do." I guess at some point we'll pick up the pieces and start move on, but this is all so fresh, so if you asked me what I am going to do, I'll tell you: I have no idea what I'll do.

The relationship I have had with my mother in the last fifteen years, however, has been a fabulous one. We became friends as adults: this has given me a large part of my adult happiness. We talked often, and I didn't refrain from sharing things with her, so when she died, I felt like there was nothing left unsaid. When the nurse removed life support from my mother, and her body died, I sat with her. I told her who was visiting, what I was planning to do, some recent news, and some secrets that I had to keep from her. By doing that, I shifted from being hysterical to being complete. Mostly complete, that is. Grieving is a difficult process.

Then I realized there were some other final thoughts I had to share with her. I wrote those up as a eulogy, which I shared at the funeral the very next day. Now, almost a week later, I see there were other things my mother needs to know. I guess this will never end.

If you tell me she's in a better place, I'll say you're full of crap. She was in a fabulous place: full of life and happiness. She was with her friends and surrounded by love and hope. She was 79 years old, looking toward the future. The dirt isn't a better place for her.

While I'm being honest, please spare the "She's looking down from above" story. Unless you have some concrete proof, I'll take my comfort knowing she was one of the lucky few: she was happy and in motion, and she died quickly, with no knowledge, planning her next adventure.

One last happy facet before I conclude: this woman was loved, loved, loved, and the number of people that knew her and loved her was growing faster than the number of people that were forgetting her. That's not a bad way to go. Our job is to remember her.
---
If you are interested in making a contribution in the memory of my mother, please consider the Hebrew Free Burial Association, which can be found on the web at http://www.hebrewfreeburial.org. This organization gives destitute Jews a proper and dignified Jewish burial, and is an organization that was close to my mother's heart.

Saturday, July 21, 2007

Tesseract OCR, or basic PDF to text translation

Being a townhouse association president isn't as glamorous as it sounds. Sure, there's all that power from which comes an endless supply of women, and the opportunity to destroy people's lives.

Paperwork from my townhome's foundation was printed in 1974. In those olden days, I went to nursery school and nobody stored documents like these on a computer. My townhouse CC&Rs were sent to me via email, but as PDFs, mere photocopies of the original documents.

Thanks to an article on PDF-to-text translation and some patience, I managed to get my townhouse documents in text format.

Note that it's not great translation, but much better than typing it yourself.

Groklaw - Tesseract OCR How-To, by Dr Stupid; Scripts by Fred Smith

Wednesday, July 18, 2007

Zeno's Drinking Song

Repeat until out of beer.

One bottle of beer on the wall
One bottle of beer
If half of a bottle should happen to fall
A half of a bottle of beer on the wall.

A half of a bottle of beer on the wall
A half of a bottle of beer
If a quarter of the bottle should happen to fall
A quarter of a bottle of beer on the wall.

A quarter of a bottle of beer on the wall
A quarter of a bottle of beer
If an eighth of the bottle should happen to fall
An eighth of a bottle of beer on the wall.

Monday, June 25, 2007

Foolproof content assist for for-each

I recently figured out a strategy for guaranteeing that the Eclipse Java editor will infer the correct local variable while filling in one of the 'for' templates (for-each, for-each array, et cetera.) If it feels complicated, it's possibly because the refactoring keystrokes just aren't ingrained in your brain and your fingers.

After using the for- templates for a while you can get a feel for when Eclipse is likely to properly infer which variable over which you want to iterate. If it doesn't you can give it a great hint:

e.g.

List list = ... Map map = ... foreach{cursor}

{cursor} represents the cursor. Pressing ctrl-space, what will it infer?

The trick is to make it terribly obvious which variable you want foreach to choose for its completion. For instance, supplying a no-op statement that references an iterable object like this:
List list = ... Map<K,V> map = ... list; foreach{cursor}

will complete as
for (String string : list) { }

You can do really nice things with this like:
List list = ... Map<K,V> map = ... map.values(); foreach{cursor}

Now this doesn't *quite* infer correctly, so use Extract Local Variable (Ctrl-Shift-L) to make map.values a local variable:
List list = ...
Map map = ...

Collection values = map.values();
foreach{cursor}

which gets you
Collection values = map.values();
for (Integer integer : values) {
}

After that, use the Inline refactoring tool to inline the temporary variables.
for (Integer integer : map.values()) { }

Whee! Extract Local Variable and Inline are your friends.

Saturday, June 23, 2007

Rigatoni with Sausage

I lived in New Jersey for ten years, and I miss it terribly. I spent most of that time playing Ultimate Frisbee with a team that played (and still plays) in Brookdale Park. I spent eight years in Morristown and the last two were in Montclair, just a couple of miles from the park. About half a mile from the park are two locally famous ice cream parlors.

Applegate Farms not only makes fantastic ice cream, but they create a memorable family experience by serving outdoors barn-style (this also means attending their shop is slightly less attractive during winter.) They specialize in ice cream and other deserts, all of which are top-notch.

Holsten's, which is now absurdly famous, is an indoor parlor that also sells candy and has a lunch menu. I wouldn't necessarily go there just for ice cream, but if everyone wanted a meal followed by a sundae, this would be a great place to go.

There are other fantastic local ice cream shops without leaving Holstens' street (Broad Street). There's an unreal Gelato place (sadly I cannot find its name), and yet another fantastic and unassuming homemade ice cream shop called Magic Fountain next to the (ought to be) world-famous Nevada Diner.

None of this is really my point. I'm not trying to talk about ice cream and I'm not going to bring up the restaurants (but oh, how I pine for a dinner at Miele's in Verona, or absolutely anything from Casa Turano.)

My point is that baristanet posted a story where they interviewed the owners and employees of Holsten's about their newfound fame, and when I hear the young waitress speak in what I'll classify as the "Italian North Jersey" accent, all I want is to go home. That's my point. It was that, more than the video of my old neighborhood, more than the thought of satisfying my taste buds. It was the sound of their voices.

Now you will understand: one of the best parts of Miele's, besides the food (sigh), is my memory of the waitress asking "OK, who had the rigatoni with sausage?"

Friday, June 15, 2007

Maggie's Third and Fourth Day

Now before you go off thinking, "Will there be a post about days 5, 6, 7 and so on?" I promise you the answer is 'no.' But I think it's important to talk about the developmental changes in Maggie.

Maggie's third day was a much easier one. She started relaxing, and we did too. Every day, Maggie and I play tug-of-war. You can tell much about her temper these last days from tug-of-war. The first day she was frenetic, the second day she was going through the motions. Yesterday and today she was really enjoying herself. It's a good thing, this tug-of-war, because she's clearly a hunting dog, and I like knowing that there won't be an unresolved tension. She's been crapped-out tired every day, which suggests we're running her well.

Last night she came back up to the bedroom to sleep next to our bed.

As for being in the office, it seems to work OK. People love stopping by to visit Maggie. I think she is having trouble trying to find her place in the small room. I take her out, but not too much. I I'm sure she would like more space. (So would I!) We also need some decent toys and more of a cave-like space for the office. Basically, it seems to be working well.

Some other strange facts:
  • She doesn't like peanut butter, watermelon, or pizza crust, but she liked mildly roasted potatoes.
  • On the other hand, she loved the cookies my coworker Alison made. Peanut butter, milk and flour.
  • She won't eat hard treats or dry dog food (though we can mix dry dog food with a little canned food and she gobbles it up.) Someone suggested she may have dental issues. Then again, yesterday we thought she might have osteoporosis in her hind legs, but she sits just fine.
  • She doesn't mind if we leave for fifteen minutes or so, but...
  • She likes to bark a little more than we like. It's protective barking, which I can appreciate, but we would like to cut that off.

Today was the first day, when I came home, she wagged so much her butt shook. Yes-sirree, things are looking up.