Will.Whim

A weblog by Will Fitzgerald

Monthly Archives: February 2008

Harmonia Sacra online

Here’s a labor of love: the Harmonia Sacra online.

The Harmonia Sacra is a shape-note tunebook in the Mennonite tradition. Originally published in 1832 by Joseph Funk as A Compilation of Genuine Church Music, it has gone through twenty-six editions. This on-line version provides both seven-shape and four-shape (“Sacred Harp”-style) versions of tunes.

I created a website (static website, but generated with Ruby) using James Nelson Gingerich’s excellent newly typeset versions of this tune book.

Happy 77th Birthday, Dad

It was my father’s birthday today, and we visited him at the nursing home this evening. We called several of my brothers and even got through to them. Steve complained that I haven’t been writing much in my weblog–guilty as charged, but more than you write in yours, Steve!

Dad has swallowing problems, so we couldn’t bring him cake, but he’s recently been able to eat toast, so we brought our toaster and home made flax bread. Dad loves his toast, so this we a good present. Unfortunately, he did have trouble swallowing it, and he coughed a lot.

Well, I love my toast, too, and I decided today that that’s how I want to go, so I give you my obituary template:

William Fitzgerald, age XX of Kalamazoo, Michigan, passed away yesterday after a long and valiant battle with toast.

Glitches

Back when I was a child, I had two choices for watching moving images: watching live television or going to the movies.

Now, we have a large array of choices, and this weekend we used quite a few of them, but it was interesting (and frustrating) to see the large array of troubleshooting techniques they required.

I watched a BBC production of Dorothy L. Sayers’s Gaudy Night using the ‘instant watch’ feature of Netflx. It’s not available for the Macintosh, so I had to watch it on our Vista computer. But Firefox isn’t supported, so I had to use Internet Explorer. The show would freeze every once in a while, sometimes quite frequently. Eventually, it would start: first the audio would come on, at normal speed, but the video would fast-foward until it caught up. There was nothing I could do about it, except be patient; but I don’t think I’ll be watching a lot of shows this way.

Bess and I watched Seven Samurai on a Netflix DVD. Just before the final battle scene, there were some flaws on the disc that made the picture pixelated and stutter and pause. Sometimes, fast forwarding through the bad sections works, but not this time. I cleaned the disc, but it looks like the disc itself was damaged. Skipping to the next section solved the problem (although, of course, we missed that section of the movie).

Jane and I watched the TV show Psych on the Macintosh, downloading it from the USA Network. I was thinking this was flawless, but then I remembered that the power on the Mac got low, and I had to run off for a power cord to get it to work.

I tried to watch an episode of Battlestar Gallatica recorded on our first generation Tivo. But our cable box doesn’t take a serial input, so we have to rely on the IR interface, which is very flaky. So the episode was really an episode of some other show. I did get to watch most of an episode of House that Jane started recording 20 minutes in. But there’s no way to recover those first 20 minutes. We’d spring for a new Tivo, perhaps, but we got a lifetime subscription when we got the Tivo originally, and you can’t transfer the subscription to a new box.

The three of us also watched a Netflix DVD of Laugh-in. No technical glitches, but we did feel a need to pause to explain some of the humor (“Ralph Nader: Your Car is Ready”), and feel embarrassed by the ethnic humor.

More better spec for Arc

A DESCRIBE form now creates a procedure, which, when run, returns a set of results, which can be printed. Also, errors in test forms are caught.

See spec.arc

Can an HTML format be far behind?

(= test-basics
   (describe "Basic ARC list functions"
     (prolog
      (= li '(a b c))
      (= pair '(a . b)))
     (it "CAR should return the first item in a list"
       (is (car li) 'a))
     (it "CAR should return nil for an empty list"
       (is (car '()) nil))
     (it "CADR should return the second item of a list"
       (is (cadr li) 'b))
     (it "CADR should return NIL for an empty list"
       (is (cadr '()) nil))
     (it "CADR should return NIL for the 2nd item of a one item list"
       (is (cadr '(a)) nil))
     (it "CDR should return the rest of a list"
       (iso (cdr li) '(b c)))
     (it "CDR should returns '() for an empty list"
       (is (cdr '()) '()))
     (it "CDR should return the rest of a dotted pair"
       (is (cdr pair) 'b))
     (it "CDDR should return the rest of the rest of a list"
       (iso (cddr li) '(c)))
     (it "CDDR should return '() for an empty list"
       (is (cddr '()) '()))
     (it "CDDR should returns '() for a one item list"
       (is (cddr '(a)) '()))))

(print-results (test-basics) t)

;; Basic ARC list functions
;; CAR should return the first item in a list: t	(is (car li) (quote a))
;; CAR should return nil for an empty list: t	(is (car (quote nil)) nil)
;; CADR should return the second item of a list: t	(is (cadr li) (quote b))
;; CADR should return NIL for an empty list: t	(is (cadr (quote nil)) nil)
;; CADR should return NIL for the 2nd item of a one item list: t	(is (cadr (quote (a))) nil)
;; CDR should return the rest of a list: t	(iso (cdr li) (quote (b c)))
;; CDR should returns '() for an empty list: t	(is (cdr (quote nil)) (quote nil))
;; CDR should return the rest of a dotted pair: t	(is (cdr pair) (quote b))
;; CDDR should return the rest of the rest of a list: t	(iso (cddr li) (quote (c)))
;; CDDR should return '() for an empty list: t	(is (cddr (quote nil)) (quote nil))
;; CDDR should returns '() for a one item list: t	(is (cddr (quote (a))) (quote nil))
;; Tests: 11; Good: 11; Errors: 0; Pct: 100.0

It’s not perfect. But parts of it are excellent.

First experiment with Arc

I decided to try to write a simple but useful program in Arc, the programming language recently released by Paul Graham.

One thing I’ve liked about using Ruby is a testing framework called Rspec, in which you describe the behavior of your program in a kind of narrative form. So I decided to try and write a similar system for Arc.
Read more of this post