Day 334, not much

Friday, 11/1/2019

Went for a run, remembering to wear a jacket, which I was glad for. Well, people in serious parts of the world would laugh, but a morning temp under 60º is chilly, here.

At 10am there was a meeting where 6th floor people shared experiences of their move-out with 5th floor people who are about to begin the preparation for move-out. I had nothing much to say, since my move was so smooth: not a lot of possessions, moving to a unit with nearly the same floor plan.

What  happened the rest of the day? I remember avoiding writing for most of the afternoon. I am in a bad relationship to my novel just now. I spent a little time getting back to speed on Lisp and reading further in that textbook.

At suppertime when I went downstairs, I found the odor of the “catch of the day” to be powerful and offensive. And nothing else on the menu looked attractive. So I left, got in my car, and drove to Mike’s cafe for a light supper, followed by ice cream from across the street in Midtown.

 

 

 

 

Day 293, docent, quiet afternoon

Saturday, 9/21/2019

Today I was scheduled to lead a private tour, that is, one requested by some group, not a regularly-scheduled one. The group was from the Buddhist temple of Palo Alto. The leader was disappointed there was only the one docent. I signed up for this some time ago, because I like private tours: I can go slower and run over the 1-hour limit on the scheduled tours. But the leader complained, with justice, that he had phoned Poppy the person who schedules these a week ago, to warn her that he would have a full group of 38 people, and requested two docents. Somehow that message wasn’t effective, or at least, Poppy didn’t do anything to recruit another docent, like sending out an email, that I recall.

Wait, let me check. Yes, in an email on Monday the 16th, she requested a docent for a private tour on Wednesday. In that email, she also listed three other private tours, Thursday, Friday, and then this one on Saturday with the note, “1 more docent needed.” But that didn’t draw any response, not surprisingly since it was the fourth request down in a long email. Pretty clearly the Museum is either short of docents, or long on private tours. And they have recently reduced the paid staff, including the woman who was in charge of recruiting docents.

Anyway, we proceeded, and I held the attention of most of them, there were still at least 30 with me at the end. So it worked out.

Back home I ate lunch in the dining room, and later supper, and this may be the first time ever I ate all three meals there. I’ll note that the chef is really trying. The entrees tonight were 1, Salmon Teriyaki, 2, Duck meat (breasts and thighs, your choice) in gravy, and Pepper Steak. There was a vegetarian dish as well, and green beans and bok choi. The salmon was perfect;  the duck was nice, I passed on the steak. And Saturdays are do-it-yourself Sundae days, two drums of ice cream with scoops and ad-lib toppings on the side.

After lunch I spent an hour working in my Lisp textbook; otherwise I pretty well wasted the afternoon.

Oh. On the “should contact Katie” issue. Actually not just Katie but I’ve not contacted her mother or sister either.  So yesterday I sent a cheerful email giving my updated postal address, to anybody in my contacts list I thought might ever want to send me a card or something. I was careful to include Katie’s mother, sister, and friend/caretaker Michelle. Figuring that, maybe they’d take the excuse to write back. But so far, a couple of other people did, but not any of them.

 

Day 283, writing, FOPAL

Wednesday, 9/11/2019

Went for a run. After that I spent an hour on the YA book, and worked out the general outline of an ending. The problem had been, that I’d allowed my party of protagonists to split up and I needed a convincing reason for them to get back together in time to figure out and thwart the disastrous action planned by the villain. And I did, I see how it can all go down now. This was very satisfying. There is a positive endorphin rush that comes from working out a creative problem.

Then I spent another hour on Lisp. Then it was 11:30 and I went to FOPAL for a pleasant afternoon of sorting. I had meant to do four hours, but at 3pm my feet and back were hurting, so I called it a day.

In the evening I cleaned the interior of my printer, which has been smearing ink on printouts. Emboldened by a couple of youtube videos I got in there with tissues and paper towel and alcohol and sopped up the excess ink and cleaned the bottom of the print head.

 

 

Day 282, quiet Tuesday

Tuesday, 9/10/2019

For exercise I ran my series of this and that, but I need to either increase reps or add things. Then I had breakfast here, apparently for the first time ever on a Tuesday. I know that because at supper last night, we were talking about the meal service and I mentioned that I never see pancakes or waffles at breakfast. Nobody then at the table had any thoughts other than “they do sometimes — I think?”

But this morning there were waffles on offer. I said “oh boy, waffles” to the guy in front of me in line, and he confidently informed me, there are always waffles on tuesday and pancakes on wednesdays. Well, Wednesday I usually run, and have breakfast in my room for an earlier start. But I guess on Tuesdays I’ve always done that also.

During the morning I spent an hour and a half on Lisp, doing the exercises at the end of a chapter of the book I’m using now. (It is a print book, ANSI Common Lisp by Graham, not the tutorial etext I mentioned earlier. Graham’s is a college-level text and quite challenging.)

I also spent an hour working on the outline of my YA novel. I started this back in 2016 or so, and have over two-thirds of it done. When I re-read what I’ve written, I like it a lot; it’s really good writing, and for tone and character it accomplishes just what I wanted to do. But there are structural/plot issues that I need to correct, and in particular I need to work out a clear outline for the ending.

In the afternoon I thought about actually buying some things. I have a list of things I’d like to splurge money on: a TV, a sound bar, and a printer. I went to the local Best Buy to eyeball some of these things. I was able to see the particular TV model, but mounted about 8 feet up on a wall in a dark room; and actually listened to the sound bar, which sounded good. I almost bought that, but couldn’t quite pull the trigger on it. They didn’t have the printer on view, although I think their website said they did.

At 4:30pm was the monthly fourth-floor residents’ meeting in the lounge. Everybody welcomed me and Patti, their new 6th floor “campers”. After the meeting, the floor rep, Mary Beth, had reserved a big table for 18 in the dining room. Made pleasant conversation with people until almost 7pm.

 

Day 281, FOPAL, money

Monday, 9/9/2019

Went for a run first. Then to FOPAL where I found eight boxes of books for the computer section. It took just over two hours to do the culling and pricing. The monthly sale is this weekend so it was time to tidy up. I had an email asking section managers to do a pre-sale count. This makes good sense, to be able to report how many books sell from each section, but I’d not done it before.

After grabbing a bit of lunch at the grocery next door, I headed over to the financial advisors’ office. We worked out how much of the house money to keep as liquid reserve, and how to allocate the rest between the different brokers, and began the process of creating accounts and disbursing things.

Back home I spent some time on Lisp. I’ve finally gotten to the syntax for iteration and it is… well, the kindest thing is to say it is extremely general. To put it in my terms, a loop is encoded as

(do ( iterators ) ( test finals ) ( actions ) )

Doesn’t look so bad except that an iterator is a three-element list,

( var initial_value ( increment_expression ) )

and there may be more than one. test is a parenthesized expression which when it yields T (true) ends the loop, and finals is a series of parenthesized expressions to be executed at the end of the loop and determine the value of the loop. actions is the sequence of parenthesized expressions in the body of the loop. So, a simple loop to count 0..9, printing each one and returning NIL, comes to,

 (do ( (i 0 (+ i 1) ) )
     ( (> i 9) NIL)
     (format t "~A~%" i)
)

That’s the right number of parens, I just ran that and it runs.

 

Day 279, docent, quiet

Saturday, 9/7/2019

Right, of course, do the blog post next day and… what did I do yesterday? Well, I did lead a tour, the 12oclock one, and had about 30 people to start, 25 or so stuck around to the end. In the morning I called Dennis and arranged our schedule for tomorrow. Afternoon? Read some from my Bridge Defense book, read some from the Lisp book. I remember that at supper, I was disappointed with the entree. The menu said “scallops in polenta” and I was picturing a couple of seared scallops on a nice bed of polenta, but the reality was more of a stew, small scallops stirred in with mush.

I settled in to the new room, which is perfectly adequate. One minor point of annoyance is the drawers in the bathroom vanity cabinet. They are originals, similar in make to the ones I started varnishing in #621. I’ve given up on that project for #621; I’m determined that in February or so, after I’ve moved back, I’ll have all the closets professionally rebuilt. But for here in #435, maybe I’ll sand and varnish these ugly little drawers. I’ll see the top one daily; it’s where I store my hairbrush and comb etc, and I open it at least once a day. The unfinished interior has been stained, and has the outline, the ghost as it were, of a pair of scissors that were put in wet and stained the wood.

 

Day 265, Docent, Lisp

Saturday, 8/24/2019

I was chillin’ and killin’ time before my 11am departure for the museum when I remembered, oh, I should check the plants, maybe they need water. Stepped out on the deck and discovered that the plant stand holding the hanging pot for one of the wax plants had at some time fallen over, the pot shattered, and the plant, now a naked root ball, was looking water-stressed, not surprisingly.

Fortunately I had a spare pot and a bag of soil, so in a rather frantic ten minutes I got the plant re-established in a pot with dirt and water. All this while successfully keeping my white slacks clean. (This morning I noticed the plant was looking ok, and also that both the wax plants were putting out buds, they’re going to bloom again. They already bloomed prolifically back in — May? I remember they had just finished blooming before I moved to Channing House in June.)

Anyway I arrived at the Museum in plenty of time for my docent tour. I had a good sized group, 25 or so at the start, at least 15 still with me at the end.

There was an annoyance: I don’t recall if I mentioned about this dude who runs private tours. He’s big, looks Irish (sparse reddish hair, florid complexion), and appears to do a decent job of guiding small parties of 2-4 people through the museum. Unfortunately he seems to always be starting his tours just before 12 when I start my Saturday tour. So I catch up with him, lead my group through his, then he catches up and is there talking to his group on the fringes of my group. Today I twice turned up my little amp and deliberately talked over him. I’ve previously complained to Jesse, the floor manager, who said he would speak to the guy. We have no problem with people leading private tours. But it’s no bleepin’ secret that the official tours start at 12 and 2. If he’d just schedule for half an hour before or after, there’d be no problem. I sent an email to Jesse complaining. We’ll see.

Back home I spent some time with Lisp. I have finally found a decent tutorial book! It is Common Lisp: A gentle introduction to symbolic computation by David Touretzky. I’m using the free online version; an updated version is available on Amazon. This guy knows how to introduce a complex subject! He takes it from the most basic fundamentals and builds concepts step by logical step, at every step showing the why of each idea, not just the what. It’s a model of good pedagogy, and I say that as a professional writer of manuals.

Part of the fun of Lisp is seeing the ancient roots of the language. It was first implemented on an IBM 704, a vacuum-tube computer, and features of that first implementation are still fundamental to the semantics of the language. Touretzky makes that clear, where none of the other tutorials I’ve seen did. None of the others made the very important connection between the way lists are laid out in memory and the way the language primitives work, and so forth.

Day 260, cardiologist, FOPAL, realty, singing, Lisp (sucks)

Monday 8/19/2019

Began the day with a run, which felt fine. Paid a bill or two. At 10:30 left in the car for PAMF for my routine checkup by my cardiologist, Dr. DiBiase. She thinks I’m ok but wants me to do a “stress echo” where you do the echocardiogram while exercising to various levels. Ok. Scheduled that on the way out. She also gave me the name and number of a trainer she recommends. Not sure I want to follow up on that.

DiBiase “challenged” me to do more cardio exercise than 3x morning runs. But she doesn’t know about FOPAL. At the start of my stint there I checked the Health app, and when I was leaving after three hours of toting books and boxes, I checked again. Just over 4,000 steps. I do that twice a week. I think that qualifies.

From FOPAL I went to Chuck’s office. He’d texted me there were a few more forms to sign. Plus, I had prepared a nice letter to the buyers. I included a printed copy of the Tasso street neighborhood directory that Leslie Mahoney prepares each year. That gives them the name, number and email of every resident on that two-block stretch. I recommended that they continue with Richard as gardener. I gave a link to a gallery of pictures of the house at various times. And noted the late news that the Tasso block party will be on 9/28. I gave this document to Chuck, to pass on to their agent. He noted that I’d included my email, and hoped they wouldn’t bug me with a lot of questions. I figure they won’t, but if they do, I can set boundaries.

I am to meet Chuck at the Escrow company office on Wednesday to sign the Grant Deed transfer. That will be my last signing. Not too many days after that the buyers should put their money in, and the transfer will be complete. Can’t wait!

Going in to dinner I was asked to join Marcia and Kent. They own an Adventurewagen like the one we used to own. We were joined by Kathleen and Marianne. After dinner there was an informal sing-along in the lobby. I joined it for about 25 minutes as we worked through a lot of standards on a 12-page booklet of lyrics. It was getting into a lot of songs I didn’t know so I left. In the elevator Bert put the arm on me to join the choir when it starts rehearsing. Yeah, maybe.

I had planned to do laundry tomorrow but checking the sign-up sheet there were no openings. Plus, there was an email asking please please please, will some docents sign up for the Tuesday tours? Oh, well. I signed up for the 2pm one. I want to do more drawer sanding and varnishing. So I did the first of my laundry loads, the bleach load, after supper. I’ll do the second load after supper tomorrow.

While the laundry was running I explored another angle on learning Lisp, based on this blog post, A Road to Common Lisp. I already have two Lisp implementations installed and they work in their ungainly, beginner-hostile way. But he recommends a third, ClozureCL. So why not, it claims to be good for Mac OS. I downloaded it. And it exemplifies everything that is amateurish, clumsy, and annoying about Lisp implementations. It’s like going back to the 1990s, a time when I had to use a lot of UNIX apps that were minimally documented and had to be compiled from source and tinkered with. And the complete opposite of what you expect from today’s slick, well-packaged development environments.

Just an example or two. (Perhaps I should spin this adventure off to its own blog, like my dormant This Page Intentionally blog.) You download the package, a zip file, and you unzip it and you have a directory. In the Terminal app you move into that directory and list files. First problem: there’s no README. Every Unix/Linux app has a README. Oh wait, there’s a folder named doc. List that; aha: doc/README exists. All it contains is the URL of the online manual. About 3,000 words into the manual it actually tells you how to start Lisp. I do, and try a couple of expressions. It’s working so I try to terminate it the way you terminate every damn Unix program on the planet by entering ^d, EOF. Which it ignores. (About 20,000 words further in the manual one finds that there is a Lisp expression you can enter which tells it to “quit on EOF” but that behavior is not the default. Why not?) Well, I want this thing to shut down, what do I tell it? Entering “quit” just produces a syntax error. I try ^C, which throws it into some kind of debugger mode…

[21:56:20 ccl] scripts/ccl64      <--- I launch Lisp
Clozure Common Lisp Version 1.11.5/v1.11.5 (DarwinX8664)
? ^D         <--- it prompts with "?", I hit ^D
? ^D         <--- which it ignores, I hit it again
? ^Csigreturn returned   <--- now I hit ^C and get this
? for help
   (at this point I am in a "kernel debugger")
   (I've no idea why it prompts with [24279], or what
    commands it accepts. So I try ^C again)
[24279] Clozure CL kernel debugger: ^Csigreturn returned
? for help
[24279] Clozure CL kernel debugger: help
[24279] Clozure CL kernel debugger: [24279] Clozure CL kernel debugger: %rsi (arg_z) = 3145728
%rdi (arg_y) = 0
%r8 (arg_x) = 0.000000
------
%r13 (fn) = 34222
------
%r15 (save0) = 17591952791858
%r14 (save1) = 125
Unhandled exception 10 at 0x38b7b, context->regs at #x7ffeefbfd540
Exception occurred while executing foreign code
at sprint_function + 27
received signal 10; faulting address: 0xfffffff0
? for help
[24279] Clozure CL kernel debugger: Segmentation fault: 11

Entering the word “help” instead of the “?” it wanted, caused it to display some machine registers (%r8, etc) and then report an “Unhandled exception” and then a Seg fault (invalid memory access) at location negative 16 (0xfffffff0). In other words, the debugger, when given a command it doesn’t understand, crashes. Well, isn’t that special.

Hey, at least I know how to kill it: ^C followed by “help”.

Much further along in the manual is directions on preparing the Mac OS IDE (interactive development environment, some kind of helpful source editor). In fact, “Building the Clozure CL IDE is now a very simple process” it assures me. All I have to do is start Lisp and enter one expression, and it will do a bunch of compiling and produce an IDE that I can run. Let’s try it!

[22:08:29 ccl] scripts/ccl64
Clozure Common Lisp Version 1.11.5/v1.11.5 (DarwinX8664)

? (require :cocoa-application)
sigreturn returned
? for help
[24289] Clozure CL kernel debugger:

When it evaluated that “require” expression, all that happened was — the same as when I entered ^C earlier, “sigreturn” and entry to the “kernel debugger”.

This is the kind of sloppy, amateurish shit that I battled with back in the 80s and 90s. I don’t need it any more, thanks.

 

 

 

 

 

 

 

 

Day 258, Docent, house concert

Saturday, 8/17/2019

In the morning I spritzed some more stain remover on the carpet. It will pass. My guests probably won’t be in the room very long anyway.

Speaking of the guests, I texted Joanne about 10 to check in. They’ll arrive sometime around noon. I told them not to stress about making it here in time to eat in the dining room; we can have lunch anywhere outside.

Then I left for the museum to lead a tour. Afterward I chilled in the room for a couple of hours before going out to Suzanne and Chuck’s place, where they hosted a recital by one of Chuck’s piano students. Hanna is just out of high school and will be going to UC Berkeley to study computer science this fall. She performed pieces by Chopin, Liszt, and the first movement of a Brahms concerto for piano and orchestra. Chuck played the orchestral part on a second piano (they have three grand pianos in their music room) and Hanna played the solo parts. It was rather awesome to hear these very complex pieces played with power and accuracy by a slip of a girl, but she did it.

I noshed on cheese and crackers afterward while  talking with Suzanne and with Hanna’s parents. That was almost enough food so it didn’t matter that I wasn’t back in time for supper here. I had a PBJ in my room.

While watching some old Naked and Afraids with one eye, I spent a little time on Lisp. Strange language. Old, as I’ve said, and it kind of has the same relation to computer science that Latin had to the Catholic Church. And the 1989 standard for Common Lisp was presumably thought through and argued out by big brains. So, how did they manage to leave blatant inconsistencies in the design?

Case in point, the whole damn language revolves around lists; the list is a basic data type and there’s a bunch of operators for manipulating lists. Dandy. But there is a set of related standard functions, floor, truncate, ceiling etc., all of which can return two values. For example, (floor 25 4) evaluates to two numbers, 6 and 1, respectively the quotient and remainder of dividing 25 by 4. This is very useful. The comparable function in Python is called divmod, and divmod(25, 4) returns a tuple, (6, 1), a tuple being a standard data type in Python.

Does the Lisp function (floor 25 4) return a list of two items, (25 4)? It bloody well does not! At this point all I know is the documentation says it returns the “multiple values” of 25 and 4. You can’t access the second of the values (the remainder) in any normal way. The only way to get at it — and of course finding this out involved an internet search leading to an answer on Stack Overflow; it was of course not to be found in the index of any damn tutorial — is to use the multiple-value-bind function. This special function has the magic to trap the multiple values returned by floor and related functions and assign them to names you supply. So this old well-thought-out language, used in much AI and other cutting-edge research, ignores its own basic data types and has a magic special extension to handle the special magic values returned by several fundamental arithmetic functions. Great.

Day 257, drawers, lisp

Friday, 8/16/2019

Started again with an early run. Then I went out in the car to the hardware store. I wanted supplies for two projects.

The first is cleaning my carpet. I had a little coffee disaster Thursday morning: set a fresh cup down without looking, and it caught the edge of the table and tilted onto the floor. I wiped and sponged it up with many paper towels but it left a pale brown mark in the carpet.

This is not a major issue because I move out in two weeks, and when I come back in January, the floor in the living room will be wood-grain vinyl laminate, not carpet (and the carpet in the bedroom will be new). It’s a minor issue because I’ve got visitors coming Sunday and would like to not be embarrassed by a coffee stain on my carpet.

Thursday is cleaning day and Wanda, my housekeeper, worked on it and improved it some. But today I wanted to get some stain-removing carpet product and do some more cleaning. The reason I took the car is that I didn’t think the hardware store would have that, and wanted the option of going on to another store. In fact they had a spray that promises to remove “…coffee…” and many other stains. On return I applied it and it had some effect. I’ll do some more tomorrow.

The other project is the drawer project. I bought some 220 sandpaper, a couple of cheap sponge brushes, and a can of clear satin finish Varathane. I took two drawers, one shallow and one deep, down to the residents’ workshop. I dug around and found a nice little orbital sander and it took half an hour to sand the insides of the two drawers and vacuum up the sawdust neatly. Then I applied one coat of Varathane to the insides. This was the first time I’ve used the type of disposable brush that is basically a gray sponge on a stick. It works pretty well. It holds and releases paint differently from a hair brush but it did the job.

Later in the day I went back and brought the two drawers up. The varnish is hard to the touch but a little soft to a fingernail, so I don’t dare put anything in the drawer until it has dried further. But they look better and smell better than before for sure.

In the afternoon I spent two hours working through a couple of chapters of the Lisp tutorial. The basics of Lisp are radically simple; it is famous for having brutally simple syntax. But there are many subtle surprises and the tutorial I’m using (as I said, the least bad of the ones I’ve sampled) does nothing to help the beginner. It’s quite annoying, to a person who has written tutorials, to be the victim of these pedagogical oversights. They’ll drop in some item that they haven’t defined and don’t explain, and I’m saying, “Wait, what? Where did that come from?” and then I go and google around and check the couple of other references I have open in browser tabs, and work out what is going on. And say, “Why did you drop that on me now, and why didn’t you explain it when you did?” OK, example. Lisp syntax is simple and regular. Everything is expressed as open-paren, function, arguments, close-paren. Add: (+ 3 5) evaluates to 8. Compare: (> 9 1) evaluates to T. Divide: (/ 5.5 2) evaluates to 2.75.  There is no expression syntax like in other languages — I thought. Then I meet this in the section on comparisons, where they tell me to try

(= 3/1 6/2)
T

Wait, what? What the hell is that? Lisp doesn’t do expressions with infix operators! It took me 45 minutes of searching different sources to work out that an “atom” of the form two integers with a slash (no spaces) is a special class of number called a “ratio”. It makes excellent sense once you understand it; it allows Lisp to retain values like 10/3 with full accuracy, where in other languages it would be evaluated to a floating point 3.33333… with the inevitable loss of accuracy that entails.

But the tutorial just started using these ratio numbers without introducing them, with no discussion or explanation. They had talked about “basic data types” early on and never even hinted there was anything beyond numbers, strings, and lists of those. Just terrible pedagogy.