Monday, November 9, 2009

On the cusp of locking

Kurt Vonnegut has written that there are actually 6 seasons, not 4. Between fall and winter comes locking, after the leaves have fallen and as the snows begin to bring on the winter quiet; then, between winter and spring we find unlocking, as the snows melt, the ice thaws, and the ground begins to soften for the first shoots of spring. I like this notion, and I've always found locking to be one the most difficult seasons emotionally. Fall has color, and the pleasure of the occasional warm day. Winter brings quiet and, of course, skiing. But locking - it seems to make me think hard thoughts and feel raw edges.

Today Katy and I attended the memorial service for Pat Field, who lived across the street from our first home in Cambridge. The service was in the beautiful Bigelow Chapel at Mt. Auburn Cemetery; after the service itself, we followed a sax player to the family plot, where Pat's ashes will be interred. A reception followed at Pat's home, and for the first time I got to see the interior of the house. It's stunning, full of incredibly elaborate woodwork and fine hand-knotted carpets. It's sad to think of this home, containing over a hundred years of furnishings from Pat's family, being broken up and scattered.

Pat died at home, attended by a great-niece, just weeks after the death of the last of her brothers. I gather the family has its depths; tensions in the family were hinted at in the memorial service. Much food for thought.

I walked home from Pat's and went outside to rake leaves. I've done a lot of raking over the past few weeks. I like raking; it's physical, but not really difficult, it gets me outside, and it has a tangible end point - even if it is a sure sign of the arrival of locking. This afternoon, as the sun was approaching the horizon of the surrounding houses, it lit up the red Japanese maple tree in our front yard, which stubbornly clutches its leaves long after most of the surrounding trees have dropped theirs. I had to take pictures; even these mediocre cell-phone images provide hints of just how lovely this tree is right now.



Here's a view from the other side, looking toward the sun.



Most of the trees, though, are bare by now, like this maple in our back yard.



So this afternoon I declared victory for the season; no more raking, I hope, until spring.

Tuesday, September 29, 2009

Farewell, Chemisa

We've known this was coming for a while, but that doesn't make it any easier.

This afternoon we had a vet come by the house and put down Chemisa.



Chemisa (we never really decided on a spelling for her name...), like all of our cats, was a foundling; Katy and the kids brought her home from Santa Fe some 15 years ago. She was never an especially friendly cat, but she mellowed a bit in her old age, and has slept with Katy and me for years.

She was initially an indoor-outdoor cat; our attempts to keep her in would cause her to start peeing outside the cat box. As she got older, she stopped going out in the winter, and after a run-in with another critter that resulted in a nasty, infected bite, she finally relented and stayed inside. After a period of stand-off-ishness she eventually accepted Willin and Ditz, and the three of them would sometimes curl up together.

Back in August Chemisa began to lose her appetite, and for the past few weeks she's been losing weight. Having seen what Willin went through to get to his diabetes diagnosis, we we decided we just couldn't do that with Chemisa and elected instead to put her down. Katy found a vet who would make a house call, and this afternoon, at about 1:30PM, Chemisa died, peacefully and quietly, in my lap, with Willin, Katy and RuthAnne next to her.

She's buried in the garden beneath a new tree. I'll update this next spring when it blooms.



Thank you, Chemisa, for being part of our family.

Monday, September 14, 2009

Emacs and Windows

My new job is forcing me, at long last, to embrace Windows as my primary development environment. As a result, I'm finally putting some real effort into getting emacs, complete with shell buffers, working well on Windows.

Here, as far as I can reconstruct it, is what I've done.

  • Download md5sums for Windows, so I can verify the MD5 checksums on other software I download.
  • Download and install keytweak, so I can remap the $#@ Caps Lock key to be a control key.
  • Add a HOME environment variable to the Windows environment. I've set this to C:\Documents and Settings\mylogin\My Documents, in an effort to be as natively Windows-ish as possible. Note that this will affect the location of things like the emacs initialization directory (.emacs.d) and bash initialization files (.bashrc).
  • Download and install emacs for Windows. Now I have an editor; I plunked a bare-bones init.el into $HOME/.emacs.d to get me going. It looks like this:

;; electric buffers
(global-set-key "\C-x\C-b"    'electric-buffer-list)

;; completion
(dynamic-completion-mode)

;; start the server 
(server-start)

;; font lock
(global-font-lock-mode t)

;; Don't store tabs. 
(setq-default indent-tabs-mode nil)

  • Download and install Cygwin/X. My reasoning here is that I'm bound to need an X11 server at some point, and this gives me enough of the entire Cygwin system (including bash, grep, find, etc.) to get started. I also added RCS (for super-easy source control for init files, etc.).

Now the main pieces are installed, but there's a lot of customization left to do. In particular, emacs shell buffers are lame; they run the Windows shell, not bash, and directory tracking doesn't work.

The next steps I acquired from Henry Kautz, specifically his page Using Emacs and Bash or Csh under MS Windows. I confess, this is essentially a black box for me, but it works like a charm. I added this to $HOME/.bashrc:
# directory tracking (from http://henrykautz.org/Computers/using_the_gnu_development_enviro.htm)

alias cd=cdpwd
function cdpwd {
'cd' "$1"
echo "Working directory is $(cygpath -wa .)"
} 
alias pushd=pushdpwd
function pushdpwd {
'pushd' "$1"
echo "Working directory is $(cygpath -wa .)"
} 
alias popd=popdpwd
function popdpwd {
'popd'
echo "Working directory is $(cygpath -wa .)"
}

I preceded these lines with a bit of path setup; this will no doubt vary based on your needs:
# Set up a vaguely useful path, in the context of an emacs shell. Thils will NOT have
# a bunch of standard Windows stuff on it.

cygdirs=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin
tcldirs=/cygdrive/c/Tcl/bin
windirs=/cygdrive/c/WINDOWS/system32:/cygdrive/c/WINDOWS:/cygdrive/c/WINDOWS/System32/Wbem
cmakedirs=/cygdrive/c/Program\ Files/CMake\ 2.6/bin
emacsdirs=/cygdrive/c/Program\ Files/GNUmacs/emacs-23.1/bin/

export PATH=$cygdirs:$tcldirs:$cmakedirs:$emacsdirs:$windirs

Then I added this to $HOME/.emacs.d/init.el:
(defun my-shell-setup ()
"For bash (cygwin 18) under Emacs 20"
(setq comint-scroll-show-maximum-output 'this)
(setq comint-completion-addsuffix t)
(setq comint-eol-on-send t)
(setq comint-file-name-quote-list '(?\  ?\"))
(setq w32-quote-process-args ?\")
(make-variable-buffer-local 'comint-completion-addsuffix)
(setq shell-dirstack-query "cygpath -w `dirs`")
(add-hook 'comint-output-filter-functions 'perfect-track-directory nil t)
(add-hook 'comint-output-filter-functions 'comint-strip-ctrl-m nil t)
)

(defun perfect-track-directory (text)
(if (string-match "\\w*Working directory is ||\\([^|]+\\)||" text)
(cd (substring text (match-beginning 1) (match-end 1)))))

(setq shell-mode-hook 'my-shell-setup)
(setq process-coding-system-alist (cons '("bash" . undecided-unix)
process-coding-system-alist))
(setq exec-path (cons "C:/cygwin/bin" 
(cons "C:/cygwin/usr/bin" (cons "C:/cygwin/usr/local/bin" exec-path))))
(setenv "PATH" (concat "C:\\cygwin\\bin;C:\\cygwin\\usr\\bin;C:\\cygwin\\usr\\local\\bin" 
(getenv "PATH")))
(setq shell-file-name "bash")
(setenv "SHELL" shell-file-name) 
(setq explicit-shell-file-name shell-file-name)
(cd "~")

Now M-x shell creates a fully-functional bash shell, with directory tracking enabled. Sweet!

While customizing .bashrc I ran into a little problem with line endings; I configured Cygwin to use Unix-style line endings (LF, or \n), but emacs by default creates files with DOS line endings (CR LF, or \r\n). Bash doesn't like this. Saving a text file in emacs on Windows to have Unix line endings is done via C-x <enter> f unix <enter>.
"Give yourself to the Dark Side."

Oh, and speaking of the dark side: Those ugly white-on-black command windows can be customised to be a bit less depressing. There's a "colors" tab in the properties menu of the command window, and you can save the preferences for subsequent sessions.

Sunday, September 13, 2009

Paranoid Nation


Today's New York Times has an article about kids walking to school by themselves. My kids, being homeschooled, didn't face this specific conundrum, but we did allow them to start taking the T and walking places unescorted at pretty young ages - and we definitely faced disapproval from other parents about this. Fear of abduction is one of the most oft-cited reasons for not allowing children to walk places.

This little pair of facts is embedded in the story; I wish it had been a bit more prominent.


Critics say fears that children will be abducted by strangers are at a level unjustified by reality. About 115 children are kidnapped by strangers each year, according to federal statistics; 250,000 are injured in auto accidents.


The Federal Highway Administration has a program to encourage walking and biking to school, with suggestions on how to improve safety for pedestrians and bikers, and ways to allay parental fears. For the sake of our children, I hope it succeeds.

Wednesday, August 19, 2009

Killer Micros

I recently wondered about the origins of the phrase, "attack of the killer micros." A little time on Google revealed many attributions of the phrase to Eugene D. Brooks III, who evidently presented a talk with that title at one of the annual Supercomputing conferences around 1989 or 1990 (there are conflicting references, but nothing I can substantiate). Brooks was profiled in the New York Times in May 1990, and the phrase is used as the headline of a May 1991 NY Times article. But I was really after the first, definitive use of the phrase.

Well, this may or may not be it, but Brooks' words appeared this way in the Usenet newsgroup comp.arch on October 15, 1989:


[...] Micros now dominate
the performance game for scalar code and are moving on to vectorizable code.
After all, these little critters mutate and become more voracious every
6 months and vectorizable code is the only thing left for them to conquer.
No NEW technology needs to be developed, all the micro-chip and memory-chip
makers need to do is to decide to take over the supercomputer market.

They will do this with their commodity parts.

Supercomputers of the future will be scalable multiprocessors made of many
hundreds to thousands of commodity microprocessors. They will be commodity
parts because these parts will be the fastest around and they will be cheap.
These scalable machines will have hundreds of commodity disk drives ganged up
for parallel access. Commodity parts will again be used because of the
cost advantage leveraged into a scalable system using commodity parts.
The only custom logic will be the interconnect which glues the system together,
and error correcting logic which glues many disk drives together into a
reliable high performance system. The CM data vault is a very good model here.

NOTHING WILL WITHSTAND THE ATTACK OF THE KILLER MICROS!


This was in a thread, not started by Brooks, entitled "Attack of the Killer Micros." So clearly the phrase had been kicking around before then.

This, BTW, was a bit of a Golden Age for Usenet news groups; The signal/noise ratio was very high, and some very smart, articulate people posted regulary: Brooks, John Mashey, Henry Spencer, Bob Colwell, Eric Raymond, many more. It was also an exciting time in the computer industry, with a lot of architectural experimentation and implementation. Fun browsing for old coots like me. :-)

Friday, July 31, 2009

Emacs for the Mac

Recently I've been making more use of my iMac for programming at home, and I've been struggling to get a comfortable, reliable emacs setup. Today I came across Tim Bray's blog entry on giving Aquamacs a personality transplant, and it really helped. In summary, I put these into my ~/.emacs file:


;;;========================================================
;;; AquaMacs tweaks
(setq mac-command-modifier 'meta)
(setq x-select-enable-clipboard 't)
(setq mac-option-modifier nil)


These turn the command key into a meta key, cause the emacs kill buffer to participate fully in the OSX clipboard and, ah, do something to the option key (which, now that I have command as meta, I don't use). Thanks, Tim!

Tuesday, July 21, 2009

7,565,349...

...is the number of my newly-issued patent for the frequency distribution operators.

I think of this as my first "real" patent; the prior patents for which I'm an inventor are the Torrent patents, where we all played a role but it's hard to point to anything specific and say, "That's MY idea." This one is really my baby; Mike Beckerle was a very helpful sounding board, but the main ideas and the implementation are mine. IBM, of course, handled the logistics of the filing process - all four and a half years of it.

I have decidedly mixed feelings about so-called software patents, but this one at least meets the "non-obvious to a skilled practitioner" bar; so far, no one I've described the problem to has come up with this solution.

So - it's a funny milestone, but a milestone nonetheless.

Thursday, July 9, 2009

Henna!

One of the things I enjoyed during my trip to India is the creative uses the Hyderabadis have for henna. It's used to make elaborate patterns on hands, called mehendi, and to color grey hair, for both women and men.

a young girl having a mehendi applied


From fabianfoo.com


From "10 Incredible Indian Beards and Moustaches" at sessionmagazine.com


I've been thinking of trying henna on my hair and beard since returning from Hyderabad. I recently found henna in the Little Market in Acton and tried it on a portion of my beard. I liked it, but the henna didn't seem very intense, so I ordered some henna from mehandi.com. It came last week while I was visiting my mother; last night I mixed it up, and this morning RuthAnne applied it.

Henna is basically ground up leaves from the henna plant, and it has an odd, funky, slightly-wet-dog odor to it. It looks remarkably like baby poo. RuthAnne wore gloves to avoid winding up with orange hands and slathered it on.

From HennaHead










I let it sit in my hair for about three hours; then Katy rinsed it out (a bit of a trick where the henna had dried out), I showered and washed my hair, and - voila!

Saturday, July 4, 2009

Independence Day, 2009

It's still July 4th, but I have a few moments while Mom naps to start my 4th of July entry. Mom and I were up late last night (11PM) working on a puzzle, and we both slept late this morning - me until about 7:45, Mom until about 8:30. After breakfast and some packing for tomorrow we took the shuttle to Buchanan for the picnic.

The weather is lovely; blue sky with a few puffy clouds, warn without being hot, and a bit breezy. We checked in at the dining hall and then headed outside for lunch. We sat at a table with some of Mom's neighbors, as well as a couple who have one of the duplexes at Buchanan. (Her name is Arlene; I can't recall her husband's name.) They do a lot of traveling and had very interesting stories. Here's the husband with Mom.



And here's a picture Dan (who lives two doors down from Mom) took:



After a nap we went over to Jeannie and Bob's for another picnic. We had a beautiful sunset; the fireflies came out in force, and we set off sparklers.

From Sparklers


The next three links are to video clips.








Jeannie Marie will be going to church with us in the morning; then we'll be back here for lunch and final packing.

This has been an interesting visit - certainly grist for another posting.

Thursday, July 2, 2009

Meeting Tony

I'm visiting my Mom in Elizabethtown, and this morning Karen and I took her to her physical therapy appointment with Tony. This is for her rotator cuff repair; Mom has been working with Tony since her surgery, and he's really helped her regain strength and motion. Here they are, going through the exercises.


before getting started





pumping iron, like Aahnold.






cranking away at full tilt



Before heading over to Lancaster for the appointment, we took a short walk to the top of the hill near Mom's apartment.

Mom and me




Mom and Karen