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 264, FOPAL, Road Scholar

Friday, 8/23/2019

Wasn’t feeling totally pip-pip in the morning, even a little diarrhea (so–what was in that fancy meal last night?) so while I started out for a run, I turned it into a brisk walk for the latter half.

I had to skip my usual Wednesday stint at FOPAL this week, so instead I went there today, working from 10 to 2pm. Quite a few nice new books in the Computer donations, for a change; ones I could price at $10 and above. Then I sorted like a champ for three hours.

Back home, I made new shelf labels for the Computer section. When I took it over, I arranged it into interest groups, and made labels for the edges of the shelves. The hope is that somebody scanning the shelves will see “A.I. and Machine Learning” and think, oh, right, I’m interested in that, and browse the 20 or so books in that group. Where if books were sorted by author, or just unsorted as before, they might never find the book they are willing to buy.

The shelf labels I made two months ago are looking a little tatty, and also I thought they could be bolder, so I made new ones, scaled up a couple of points and in bold italic. When next I go down there (Monday?) I will put them up.

Before going in to supper, I checked my mailbox and found an envelope from Aon, the trip insurance provider for Road Scholar. In it, a denial of my claim for that rescheduled trip. I think they’re wrong, and I will try one time to get it reversed. Betty and Jerry invited me to sit with them, and we had a nice chat. I’m not happy with the old closets in my unit, even after sanding and sealing the drawers. So I asked about what they’d done. They told me a lot, and then we went up and they showed me what they’d done. Basically they had the old drawer and clothes rod structures completely gutted, and replaced them with a system of suspended hangars and drawers they’d bought through The Container Store. It isn’t quite what I would want, but I get the deal now. However, chances are this can’t be done during the coming upgrade. Next January I will probably pay for a remodel of my closets.

 

Day 263, Shustek, dinner

Thursday, 8/22/2019

In the morning I did a fifteen-minute workout based on a couple of online tutorials. It was enough to bring up a sweat and addresses my main concerns about core strength. I’ll keep adding to it over time.

Then I brought up the three drawers from the woodshop and put them back. Five of nine drawers refinished inside, and I’m not sure if I’ll bother with the remaining four, as I don’t use them much.

Off to a day at Shustek. Toni and I worked all day cataloging more of the collected donation of the Mother of Multimedia at Apple (Day 235).

Back to C.H. at 4:30, just time to change into my new blazer to attend the Sodexo Stop Hunger Dinner. This was a special annual event; I had to sign up and pay $80 in advance. Sodexo (our food contractor) donates the meal, all the money goes to local charities that feed the poor one way or another. The menu was elaborate, five separate courses, all very well presented and attractive to the eye. Flavors, not so great. But pretty to look at.

  • Clear Bloody Mary Consommé (juice of cherry tomatoes with tiny chives and vodka)
  • Ahi Crudo: small slices of almost-raw Ahi with chopped hazelnuts. I really don’t like raw fish so this pretty dish was wasted on me.
  • Arroz Caldo: basically a nice risotto decorated with chives and bits of pork belly
  • Adobo & Gnocchi: five-hour ox-tail braised in ginger and vinegar, with gnocchi made of sweet potatoes. The orange gnocchi were pretty but just a touch leathery; the meat was good.
  • Coconut Lychee Aspic Cake with passion fruit.

So they were really trying. I give them a 9 for imagination and for presentation, and about a 7 for flavor.

Anyway I was invited by Craig to join his table, which included his wife Diane, Kathleen (a different Kathleen from Day 260), Joanne, Connie, the other David, and a guy whose name I didn’t get although I’ve met him once before. Lot of pleasant conversation for about 2 hours, and now I’ve had my quota of socializing for a while.

Day 262, escrow, focus group

Wednesday, 8/21/2019

Started the day with a run; routine. At 10am the Drapery Lady came, as planned, to offer me a choice of materials. I don’t know her name; but she’s the contractor for all the drapery replacements that happen during the upgrade (which must be a fairly juicy contract for her). The point of discussion was my side window, which currently has a rather tatty and partly broken venetian blind and also drapes. She suggested, and I agreed, that both be done away with, and instead I will have a pull-down roller blind made of a beige fabric that allows 10% light penetration. It’s a modern version of the old roller blind. The works are in a neat case at the top of the window, and I think there’s a track down the sides.

I went down to the shop to collect the three drawers I’d varnished, but I decided that the inside bottom surfaces needed one more coat, which I applied, and then left them there.

At 12 I went down and ate a quick lunch, then drove to the Chicago Title office, on El Camino in San Carlos. There I met with Chuck and Andrew, and a very pleasant lady named Victoria walked me through signing about 15 different documents, the key one being my authorizing a transfer of the property deed. Well, the most interesting one was a detailed breakdown of the costs in escrow, with the bottom line of how much will be transferred into my Schwab account on, probably, the 27th.

Back at C.H. I participated in a Fitness Focus Group, a group of residents who’d volunteered to help the staff decide what to do about the gym and the various exercise programs. There was a lot of discussion and the staff people got some useful and constructive ideas. One from me, but I mostly kept quiet. There will be upgrades to the gym and some new equipment purchased. What, exactly, remains to be seen.

A lot of the cost of these things comes from the Heritage Circle, which is a voluntary fund raised and managed by residents. Building improvements, like better windows, new flooring, lighting, cabinets, etc., are paid by Channing House. But apparently things like a new stationary bike are bought with Heritage Circle funds. I haven’t been asked to donate into the Heritage fund but I imagine I will have that opportunity.

Ate supper alone. Back upstairs to research workout tutorials. I am going to begin developing a morning strength routine on my own.

 

Day 261, dumping the Y, drawers, docent, dinner, laundry

Tuesday, 8/20/2019

First thing, I drove to the YMCA and did my few exercises. But while doing them, something crystallized in my mind: surely I can achieve these same effects one way or another with simpler exercises. I’d been putting off doing anything until C.H. gets a new fitness director but that’s dumb. I’m done with this place. So on the way out I filled out a cancellation form to terminate my Y membership.

Back home I took out the three drawers from the kitchen area, which have a particularly strong fusty odor, and took them down to the shop. I sanded them and put on a coat of Varathane. That took less than two hours all told. I left them to dry. I changed into docent clothes, my red Computer History docent shirt and slacks, and after lunch I went to the museum to do the 2pm tour. Mike, who had answered the last-minute appeal for a docent to cover the noon tour, said his group was over 20 people. My group was only five, and only two of those stayed close to hear my golden prose. The other three orbited at various distances. Whatever.

Back home I changed back to regular clothes and had supper, along with Craig, Diane, Sue and Kent. I ran my other (non-bleach) load of laundry after supper.

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 259, visitors, house concert

Sunday, 8/18/2019

Coffee this Sunday was back at the café in Midtown. Part of cleaning up for the visitors coming, I needed to take some stuff down to the garage, so for fun took the car out to the old coffee place.

Back at home I fiddled around until finally Joanne texted they were ten minutes out, and went down to the lobby to meet them. Joanne and Brad and their daughter Sierra had visited me in January, Day 26, when I gave them some of Marian’s clothes. Now they are passing through on a vacation trip, in a rental Mustang convertible, nice choice guys.

Joanne is a sweetheart, great fun to talk to. We toured Channing House, sat for a few minutes in my unit deciding where to lunch, then went out and had lunch. They proceeded on toward Santa Cruz with the top down.

I had a couple of hours to pass then before I drove to Berkeley for a house concert. This one featured The Quitters, two musicians I’ve heard in several house concerts over the years. Glenn Houston is a wonderful guitarist, and sat almost knee to knee with him.

IMG_3889That was my chair, bottom center in the picture. House concerts are great.

I had actually signed up for a house concert on last Friday night and only remembered that when it was too late to start for it. It was in Oakland and on a Friday night one really should start about 2 or 3pm to have time for a restaurant meal before a 7:30pm concert. So I gave that one a miss.

From this one, a Sunday afternoon, there were only a few slow-downs going up 880 and the trip took less than an hour. Starting home at 9:30pm, however, I unwisely opted to keep right as I came out of Berkeley, over the Bay Bridge and down 101. That was 10mph from the middle of the bridge to the south City limit — on Sunday, at 10pm, is it ever clear? — and then around Whipple Ave CalTrans had decided to close the center lanes of 101 for construction, so it was 10-20mph for several miles more. I got in about 11:15.

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.

Day 256, docent, Yosemite, supper

Thursday, 8/15/2019

Starting a long busy day I didn’t exercise, but had breakfast in the dining room. On Monday I had seen an email from the museum about a private tour Thursday morning that needed covering. On Tuesday I had checked and it still wasn’t covered, so I reluctantly decided to do that tour and join the archival crew after lunch. So I left at quarter to ten for the museum where I met with a nice group of a dozen high school students in some kind of Stanford summer program. They paid attention pretty well, and Pat came in entirely of his own volition and gave them a 1401 demo, which they loved, as everyone does.

Drove to Yosemite where Aurora was trying to get people trained in her grand plan (see Day 242). Unfortunately there were not enough laptops to get everyone working, and I and Toni ended up sitting around at loose ends. So I left early.

In today’s mail: the replacement checks from Schwab, that I only ordered two days ago. Way to go, Schwab!

I had been invited to supper by a couple, Mary and Andrew. Turned out they had also invited Lily and her sister (name forgotten), both residents but living on different floors, and Michael, the “newer new guy” who came in last month. Lily is vivacious and talkative, and promoting her harmonica playing group and wants me to help her get her book of daily meditations online as an ebook. She’ll be my neighbor when I move to the 4th floor. There was some talk also of my book, in which people expressed interest.

Michael indicated although not in any detail that he was a recent widower; some remark about “this last year has been such turmoil” or such words. And there was some talk about how hard it is for everyone when they are trying to downsize. I didn’t contribute to that although I certainly agree.

In the evening I joined an audience of 50 or so in the auditorium to view a documentary on the life of Judy Garland.