Category Archives: Uncategorized

The Underground Man by Ross Macdonald

The Underground Man (Lew Archer #16)The Underground Man by Ross Macdonald
My rating: 4 of 5 stars

Macdonald writes with an earthy Chandler-like style. His main character Lew Archer is a tough but decent private eye in Los Angeles. The book is written in the first person. It’s my first MacDonald novel. I enjoyed the writing style, despite some quirks. He never met a simile he doesn’t like and has no compunction about creating more, sensible or not. There’s a lot of dialog, so in that sense it’s an easy read, but there are many characters who have, or in the past, had, relationships both open and hidden. This makes it hard to follow. There are multiple murders but Lew Archer is on the job. The detective work is rather simple but also pretty realistic, speaking as an ex-FBI agent. That makes it more enjoyable for me. It reminds me of the Sue Grafton alphabet series in that respect. In fact, it also reminds me of that same series because it takes place largely in Santa Teresa, the fictional city representing Santa Barbara that Grafton also uses. The ending was a bit too neat and tidy for my taste, but I enjoyed how the author worked in the investigation of Archer with the local murders and the ongoing wildfire that served as a backdrop. It was unrealistic the way everybody seemed to tell Archer whatever he wanted to know, whether officials revealing official info, or involved persons who repeatedly told him to get lost and clammed up, only to start blabbing again and answering all his questions. If only it were that easy.

View all my reviews

Lands of Lost Borders by Kate Harris

Lands of Lost Borders: Out of Bounds on the Silk RoadLands of Lost Borders: Out of Bounds on the Silk Road by Kate Harris
My rating: 4 of 5 stars

This very interesting book is a combination travelogue, history lesson, philosophy primer, and farce. The author, a Canadian, and her best friend Mel biked across Asia along what is loosely the modern vestiges of Marco Polo’s Silk Road. Beginning in southeastern Europe and proceeding through the Stans to Tibet and China she experienced the trials, tribulations, and joys of adventuring in a land of skyscraping mountains, corrupt governments, warmly hospitable people, and extremely open landscape. At times it borders on being ponderous but it is frequently punctuated by light moments of mistranslation, bike crashes, stomach-turning food offers, lecherous men unused to seeing white women, or any women unaccompanied by men. There was enough sameness to much of it as to lose my interest from time to time, but it was an enormous benefit to have along with me in audiobook form as I made my own journey by car from the Bay Area to Olympia and back. There was an unmistakable touch of braggadocio permeating the story, but the author’s academic credentials are impressive, assuming she represented them truthfully. I found the reader’s breathiness a weak attempt at inserting suspense where there wasn’t any, but all in all she did a good job.

View all my reviews

Road Trip in my Volvo XC40 Recharge – Part 2

My return trip to California taught me a few lessons. I’ll be giving some hard numbers and recommendations at the end. But first, this trip was different from the first leg. To start with, I contracted Covid somewhere on my trip north. I was feeling under the weather by the time of the return leg, but not horribly sick. Fortunately, my son and his wife tested negative, and still do, so I must have picked it up in one of the crowded restaurants I visited en route. Still, I was traveling alone and could buy food at drivethroughs so as not to infect anyone, so I decided to make the journey home.

My first stop was at Woodburn Premium Outlets in Woodburn, OR. This mall is very long and the app only said the towers were near the Coach store. Of course, I had no idea where the Coach store was, but I will say that’s a good idea to include the store because as tall as the charging machines are, they are not as tall or obvious as the store signs. I found the station at the very end and charged easily. It was fast (23 minutes) but I only charged to 56% full. In a continuing trend, my first stop was dictated more by my need for a bathroom break than a charging stop.

Stop 2 was the same Target store as before in Springfield. I took in 57 kw in 57 minutes, the longest on-road charge of the whole trip, but I knew staying an extra fifteen minutes would obviate the need for another stop before Grants Pass.

Back at the motel that night I charged 69 minutes to get 71 kw. My symptoms were getting worse. I hit the road the next morning with the battery 95% full. One odd thing was that my car’s range indicator said I had only 140 miles of range. It normally showed 190 miles when charged to 90% or more. I thought it was an error that would correct itself once I started driving. I was hoping to make it to Anderson without a stop, but the car kept warning me I wouldn’t. The range is estimated based on the past 100 miles of driving, or so I thought. I expected it had been uphill to Grant’s Pass, skewing the number. However, I was mistaken. The motel was at less than 1000 feet elevation. The high point ahead was Siskiyou Pass at over 4000 ft. The range estimator must actually have taken into account that long climb. The car performed great on that climb, as it had the entire trip, but I’ll forgo the non-charging review for this post.

I heeded the warning and asked Google to find me a charging station. It recommended a Chargepoint station in Weed, CA. I was ready for another break and some coffee anyway. Once again, relying on Google’s directions sent me in a circle around the truck stop because it was telling me to turn where there was no obvious turning spot. The Chargepoint station turned out to be a single machine dwarfed by nearby trucks, so it was hard to spot. I found it in the parking lot of a motel. It was well-placed for my car, so I backed up to it and plugged it. I have a Chargepoint account and app on my phone but had no card with me. Supposedly the machine can read the account info with near field communication (NFC) if you hold the phone to the scanner panel, but that didn’t work. I wasn’t sure if it took credit cards, but I remembered reading something about Chargepoint accepting other EV cards. I had my Blink card, but that didn’t work. I got a little nervous. I had one more with me, an EVgo card. I tried that and the charger started right up. Whew! The screen on the charger said Welcome to EVgo, even though it was a Chargepoint machine. I was also pleasingly surprised by the speed of charging, a decent 63kw. My impression was that EVgo chargers, which I had used once before, all had a maximum of 50kw, usually much less. In 37 minutes I left with 38kwh and 92% charged.

At Anderson I used the same EA charger as before and dared to go inside the Safeway briefly to pick up some food. I wore a mask, used self checkout, and hoped I didn’t infect anyone. In 67 minutes I pulled down a disappointing 43KWh charging to 96%. Those last few percentage points really kill the average charging speed. I’ve seen the charge rate drop to single digits after 90% even on EA machines.

I had planned to charge at Dunnigan again, but once more I made a fateful error. I still had 50% of a charge as I approached there, so I thought I’d let it get down more and charge at Vacaville, which I had seen on my EA app and knew I had the range for it. Unfortunately, I didn’t know my geography well and missed the turnoff for 505, the straight shot from Dunnigan to I-80. I thought it was farther down the road. So when I asked Google to navigate to Vacaville, it said I didn’t have the range. That confused me until I looked at the map and realized that I was headed all the way into Sacramento before turning west. So I asked for it to find me another charging station. It told me of three EVgo stations. I chose the closest. It turned out to be in an urban park. The machines were right at the curb. The first one turned out to be dead. I called the service number for help and was on hold for almost 15 minutes. I was directed to another machine next to it and plugged in there, but it didn’t start up for me. The service rep kept giving me directions based on what was on the screen of the charger, but I kept replying I couldn’t read anything on the screen because it had been vandalized and was totally unreadable. With considerable effort, together we got it going and it was charging. I soon saw that it was charging very slowly, though (36kw). In 15 minutes I got only 9 kwh. I checked the range and saw I could make it to Vacaville, so I unplugged early and left.

This turned out to be a smart move. At Vacaville Premium Outlets  I had trouble locating the chargers among the 87 stores. I found the Tesla ones right off, but eventually found EA in front of the Coach store. This charger turned out to be the fastest of the entire trip. Even though it was rated at 150kw maximum, my app (and the car, which was always consistent with the app) showed it at 153-154kw for a long time. I left there after 18 minutes of charging and got 36 kwh of energy, enough to get me home.

Total time charging for the round trip (not counting at home): 695 minutes. If you exclude the ones at the motel when I wasn’t in on-road mode, it’s 545 minutes. That’s roughly 9 hours stoppage for 1800 road miles, counting the navigation errors I made, or a half hour of stoppage time for every 100 miles of travel. Much of that, but not all, is time I would have spent getting food, using the bathroom, etc., in any event, but it’s definitely more than I would have in a gas car. The cost of gas, though would be much greater than the electricity cost. I’ll leave that calculation to you, since it varies a lot by car. The total kilowatt-hours received was 636 for a total cost of $275.77. [Edit: I realized later that this could have been cut by at least $100 if I had joined the EA monthly plan for $4.] A round-trip ticket from San Jose to Seattle-Tacoma Airport runs about $197. But then you have to account for extras. Driving, there’s two nights of lodging. Flying, you have the last mile problem. The lowest Lyft fare one-way from Sea-Tac Airport, the closest to my son’s house is $127 and takes two hours. Or a rental car, if you can get one, would cost even more. On my end an airport shuttle ride could be had for $60 or so, or long-term parking is available, so add $350 or so for ground transportation unless you have rides from friends or relatives on both ends.  That’s more than the motel cost. Then there’s the problem of the heavy stuff we wanted out of our garage and had no way to ship. One was a treadmill mat I could barely squeeze into my car and could never have packaged for shipping. Paying for a moving company to come pic k it up would have been prohibitive. It would have had to have been thrown out, sold or given away. My son would have had to buy another, and there were sentimental items as well. All in all, I think I made the right choice driving. Having done it, I know I could do it a lot more efficiently the next time, even on a different trip.

EA chargers are by far the fastest units around here, but only when your charge state is low. They quickly level out to a similar speed as Chargepoint or EVgo once you get over 80% or so. Route planner apps like ABRP take this into account and recommend charging when you’re in the range of 20%-80%. Chargers are also inconsistent, ranging from 36kw to 154kw for me on this trip with similar initial states of charge. When you add in the time finding the charging stations, waiting to get service help sometimes, or waiting for a slot to become available, you need to add at least five minutes for every stop, probably ten, unless you’re very familiar with the station. A Chargepoint station right by the freeway exit may be quicker than an EA station in a Walmart or mall parking lot three miles away and hard to find. Staying and charging an extra 15-20-30 minutes to avoid another stop may be worth it. The most important lesson to take from this is that electric cars have made it. They can replace gas cars even on road trips and the Volvo XC40 is a fine car for that.

Road Trip in my Volvo XC40 Recharge

Over the weekend I took a road trip in my Volvo XC40 Recharge, an electric vehicle (EV). I want to share with others the pluses and minuses of doing this trip using public charging infrastructure. The goal was to drive from Los Altos, California to Olympia, Washington for a visit with my son and his wife, and to drop off some heavy (~150 lbs) items they had left behind when they moved up there.

I began by charging my Volvo to 100% at home the night before leaving. My first stop was to charge at an Electrifying America (EA) charging station in Dunnigan, CA, a distance of 127 miles. My first charging experience did not go very smoothly. For starters, I was relying on Google to give me spoken directions. When I got off the freeway, it sent me around in a circle because I did not realize when it said to turn at the next left, that it meant into a restaurant driveway. The charger turned out to be behind the restaurant in the parking lot of a motel. Once I got there it was difficult to position the car the right way because the tall charging machines (towers)  here were positioned for cars pulling in forward. My car’s charging port is on the left rear. I gave up on the first tower I tried because its screen faced due south directly into the sun and was unreadable. I moved my car to the one on the other side, backing in, and tried again. I used the EA app but I couldn’t get it started. I called the 888 help number and an EA support person walked me through the process. Much of the delay could have been avoided if I’d been more familiar with the app. I did get the car charged to 85% of capacity in 44 minutes of actual charging time. Call it an hour with the delays. I needed coffee and a bathroom break anyway, so it wasn’t totally wasted time.

The next stop was at a Safeway in Anderson, CA to charge at another EA station. This one was easy to find. I had no trouble positioning the car, but it stuck out a bit into the parking lot aisle. I needed another break. The charger here ran a little slower than most of the other EA chargers. They are rated at either 150 kw or 350 kw. My car can only handle 150 kw, If the battery level is low, it can take 150 kw, but it slows down considerably as the battery gets more “full.” That’s one reason not to charge your car to 100%. The other reason is that it hurts the battery life. This charge took 63 minutes to get 48 kwh (compared to 36 min. for 44kwh at Dunnigan).

One problem I had with all the chargers, regardless of brand, is the difficulty of handling the cable that attaches to the car. It’s heavy, stiff and thick. I have arthritis in my hands and a bad back. I know that many women are not strong enough to wrestle them into position. That’s something to test before undertaking a road trip in your EV or even before buying one. This applies only to the high-speed chargers (Level 3) out on the road. The home units are manageable although there is still a rather hefty cable.

Stop three was at a Walmart in Yreka, CA. The chargers were a little hard to find in the lot. It’s worth taking some time with the app to zoom in and orient yourself with respect to the buildings. You can have the app give you oral directions using Google Maps. They can be confusing though because it just gives a series of lefts and right. It never says how far away you are, even if you’re 20 feet away. They are normally quite visible, but a large truck, building, or trees can block your view. This was the fastest charging station on my trip north: 52 kwh in 39 min. This charge took me to my overnight location in Grants Pass, Oregon. That’s 425 miles in eight and a half hours, including meal and charging stops.

I chose this motel because there was a Walmart with an EA charger nearby. Only “nearby” turned out not to be that close and there was a highway I had to cross on foot. It was windy, cold, and drizzly, too. You don’t need the speed of an EA charger for an overnight stay. In fact, it’s a disadvantage in a way. I went to eat at a nearby restaurant while it charged, and I was getting alarmed to see it nearing full while I was still eating. EA costs you an arm and a leg if you don’t unplug within 10 min. of the end of the charge. I let it charge up to 94% while I finished my meal. The motel was okay, but not great.

The next day my first stop was at the Target in Springfield, Oregon. The first charger plugged in and started up okay, but stopped immediately. My EA app wouldn’t let me start charging again. I had to move my car to another unit. I couldn’t start there, either, so I called for help. The service person got the machine started.  It was of average speed (57 kw in 44 min).

Next I made a blunder that cost me a lot of time. I told Google to navigate to the Walmart in Vancouver, WA, which was my next planned stop for an EA charger. What I didn’t know was that there were several Walmarts in Vancouver. I was directed to the wrong one, which did not have a charging station. If you’re relying on Google or Apple, you have to be very specific. Then  it got worse. I gave Google the correct address, which was still 20 miles away or so. It started me on my way there. I got nervous with my low state of charge so when I was stopped at a light I pulled up the EA app and asked it to find the nearest EA station. It said there was one 3 miles away. I selected that and asked for Google Maps to direct me there. What I didn’t realize was that didn’t cancel the existing navigation direction. So when I started driving, I was getting conflicting directions in the same Google voice. At one point as I came to a split the voice told me to go left at the split and to go right at the split. I ended up taking some right and some wrong turns and wasted time and energy getting nowhere. It was dangerous. I told the car to cancel all navigation and just headed north on I-5. after a couple of minutes I asked it for directions to next Walmart north of my position. It directed me to one shortly ahead. It wasn’t the one I’d originally intended, but it did have a charging station. Great! I started the charge going and went inside to get a late lunch. There were no restaurants nearby, so I had settle for the awful Subway inside. I was inside for over 20 minutes when I noticed on my EA app that it was charging at a rate of 36 kw. It should have been going at 150 kw or close. I finished my meal quickly and went out to the car. I verified the slow rate and called EA service. The rep there confirmed it was unusually slow and suggested I move to a different tower. I did that and it began charging faster, at around 63 kw, which is still not great. Then another driver pulled into the slot I had left and his car began charging at a rate of 90 kw. Go figure.

This got me to Olympia. I needed to charge up before getting to my son’s house because he did not have a 240V plug accessible to me to charge there. I stopped at the Capital Village Shopping Center to charge. I had real trouble finding the charging units. I learned from my prior experience and asked the app to direct me. Unfortunately, it was the usual problem with a bunch of “next left” or “then right” commands that are confusing since they may mean at the street, or to turn up the next aisle. For these big malls, it’s helpful to find out which store the charger is near. You can usually do that on the EA website before you go, but then you have to remember that when you get there. The store names are not shown on the EA app. In any event, I got there and had dinner at a Red Robin while the car charged. Just as in Grants Pass, I was worried it would charge up fully while I was eating and I’d have to run over there (several hundred yards) to unplug and then come back. This ended up having an overall slow charging rate, but that was mainly because I let it charge all the way to 97% as I ate. The last 5% can take an hour even when the first 50% can take 20 minutes. I finished up and drove to my son’s house.

Obviously some of the difficulties wouldn’t apply if you know the area well and especially if you are familiar with the specific chargers. On my return trip, I used some other chargers. I’ll detail that in my next post.

Origin: A Genetic History of the Americas by Jennifer Raff

Origin: A Genetic History of the AmericasOrigin: A Genetic History of the Americas by Jennifer Raff
My rating: 4 of 5 stars

Raff sets forth alternative theories about the origins of Native American populations and the evidence supporting or weakening them. She is a geneticist, not an archaeologist, and focuses on the genetics but there is a lot of archaeology, too. I enjoyed the detailed descriptions of her lab work. Recovering, replicating, and analyzing ancient DNA is a much more daunting and labor-intensive task than I had imagined. Dealing with modern DNA samples is less so, but still an impressive endeavor. The book is aimed at the scientifically-inclined and educated lay reader. Be prepared for a great deal of technical and geographic terms including ethnic ones that look odd and unpronounceable to most Americans. I also learned a lot about the various discoveries in the field and I’m encouraged that many of the disputes between scientific factions will be mostly resolved in the near future.

The same cannot be said about the various indigenous peoples’ stories. The author bends over way too far, and spends way too much time, telling us all to respect these various traditions and myths (which she calls origin stories). She undercuts her scientific credibility in doing so. For example, in Chapter 5 she describes the elaborate procedures used to garb up and sanitize the workbench which she calls a “specific mindfulness” that “acknowledges responsibility for past transgressions and unscrupulous methodologies.” No. Sorry. The gowns and bleach and controlled airflow are to prevent contamination of the DNA, not to admit to being a racist. The sins of the father are not visited on the son and all that. The duty of a scientist is doing science, not baby-sitting the fictions of less educated people. Perhaps that sort of “woke” mindset, or pretense of one, is a mandatory prerequisite to working in the field, since cooperation from various tribes and academia in general is necessary, so it’s forgivable, but I notice that other reviewers had the same reaction I did.

One last peccadillo is worth mentioning: it has not been carefully proofread. I noted several errors like “adler” trees and doubled words. Even so, it is generally well-written and educational. I found it interesting.

View all my reviews

Pervasive illiteracy

Every day I see misspellings, wrong word, and grammar errors. My wife usually points out two or three amusing ones each day, too. They’re everywhere. Today I heard or read four within a span of a half hour so I thought I would share my despair.

  1. A real estate mailer advertised its resedential properties (a home for sedentary people?)
  2. A news report said a court printer had mixmatched names and juror numbers (almost makes sense)
  3. A radio pundit declared that he was reading between the tea leaves (a mixmatched metaphor?)
  4. A published hard copy science book I’m reading mentioned an ancient pine and adler forest (discovered by the Austrian psychotherapist?)


Electrify America

I have an electric vehicle (EV), my second, in fact. My first, a 2011 Nissan Leaf, could charge from several format chargers and different levels: level1 (120V house current, normal plug), Level 2 (240V J1772 plug), and Level 3 (480V CHAdeMO plug). Level 1 and 2 are alternating current (AC) while level 3 is the much faster direct current (DC). Its theoretical fastest rate of charge is 46 Kw, but I never got it to charge that fast. The fastest I ever did get was about 19kw. I sold the Leaf. Now I have a Volvo XC40 Recharge. It has a much bigger battery and longer range. It also has the ability to charge much faster. This is important because I am about to take a long road trip.

Today I tried charging at an Electrify America (EA) charger.  It went well. EA is the network of EV chargers set up by Volkswagen. That company is trying to rectify its major booboo that got it in trouble with Uncle Sam. You may recall a few years back it was discovered that VW had installed a software feature that allowed it to cheat on its mileage numbers on US test machines. As part of the settlement of charges, VW agreed to lower its average fleet MPG in all US cars by a large amount. One of the main ways to do that was to increase the number of EV models it sold. And that in turn led to it ramping up efforts to spread EV charging stations in necessary locations to encourage EV sales.

I don’t have a VW, but I appreciate the effort. It turns out that EA chargers not only charge at Level 3, but their chargers are typically 150kw and even 350kw units. My Volvo can only charge at the 150kw rate, and that’s what I did today. That still turns out to be more than six times the rate of charging that I typically did with my Leaf. I was impressed.

The charging station was at a large shopping center anchored by a Walmart. There were six stations and all six were full when I got there. Within five minutes a car pulled out and I was able to pull in to charge. I went from 56% full to 90% full in a half hour. I probably could have gone from 20% to 80% in about that same time because it charges a lot faster the lower the beginning state of charge and slows down a lot as the battery gets close to fully charged.

I had accounts and cards for other EV charging systems (ChargePoint, Blink, EvGo) and at first I was reluctant to get yet one more. But I’ve come to learn that these other stations aren’t always working, often have only one or two chargers, and don’t give you advance knowledge as to whether it is working or being used. They also typically have a maximum rate of 50kw. The EA installation was modern and clean looking and all six units were working. There are also more of them along I-5, the route I’ll be taking on my trip next week. So I’m glad I chose to join EA and I applaud VW.

I also got to see a bunch of other EVs, some for the first time: two different KIA models, a Porsche Taycan, a Tesla (not using a Tesla charger!), a Rivian, and a VW id.4). Cool!

The Replacement Wife by Darby Kane

The Replacement WifeThe Replacement Wife by Darby Kane
My rating: 3 of 5 stars

Elisa is suffering from the trauma of a workplace shooting a few months ago. She suffers from dizziness and nausea. The author does everything he can to make us consider her the now-trendy-in-novels “unreliable narrator.” She is convinced that her brother-in-law Josh killed his first wife and probably his second, Abby, who is now missing. Josh insists Abby left him. Her husband, Harris, takes Josh’s side and tells Elisa she needs therapy. Then we find out there was yet another wife for Josh before the “first” one. That’s the set-up.

Is she paranoid? I won’t spoil it. Elisa does some illogical things and clearly isn’t thinking straight, but she is frustrated at Harris’s disloyalty to her and is convinced she being gaslighted by Josh. Oh, yes, gaslighting is another trendy shtick in thrillers, especially in these dime-a-dozen unreliable narrator books. The author uses a lot of tricks to stretch things out, like Elisa getting interrupted every time she’s on the brink of something – reading a key text or telling Harris about a key incident. The reader is kept waiting so often you’ll be tempted to just skip to the last chapter to see how it all comes out.

The writing is fluid enough, even if it uses a lot of cheap tricks, and the plot no worse than others that came before it and which it shamelessly copies. It passed the time well enough that I can squeeze out three stars, although I can’t really recommend it.

View all my reviews

Varsity Blues weirdness – Amin C. Khoury

The last two parents charged in the Varsity Blues college admissions scandal recently agreed to plead guilty, or so press reports say. Gregory and Amy Colburn of Palo Alto face prison time and are scheduled to be sentenced today. I say they are the last of the parents’ cases to be wrapped up because that’s what the press reports say and the DOJ website on the case shows no others. But that’s not true. What about Amin Khoury?

Khoury was indicted in September 2020 for allegedly paying a bribe to get his daughter into Georgetown as a tennis recruit. He was one of many in a similar position in the large-scale scandal. His name appeared regularly. As of last December he was mentioned in news reports as one of the last parents to still be fighting the charges. Then all mention of him disappeared. The DOJ website no longer lists him among the defendants. The only other parent who didn’t get convicted either through a plea deal or being found guilty at trial was a Miami businessman named Zangrillo who was pardoned by President Trump on his last day in office. Another bribe maybe? But Zangrillo stills appears on the DOJ site as having been charged and then pardoned. So why is Khoury no longer listed there? I’m certain he was earlier. This is still weird. If the charges were dropped, that should still be shown on the DOJ site.

I checked for Khoury’s Wikipedia page but only found mention of his father, Amin J. Khoury, reportedly a billionaire. It is the son Amin C. Khoury who was indicted. There’s no mention of the case on the father’s page.  He doesn’t have a Wikipedia page, but he does have his own blogspot page. I found this:


Amin C. Khoury

Listed links:


He was suspended from Twitter and his blogspot posts have also been blocked for inappropriate content. The other pages don’t exist now.

I contacted the public information office of the U.S. Attorney in Boston but got no response. However, I was able to find on the court’s public docket that Khoury is scheduled to appear for a pretrial conference today in the courtroom of Judge Patti B. Saris. Obviously he’s still an active case and he’s still resisting the charges. Why is the press overlooking him? Why is DOJ so close-mouthed about his case? If he goes to trial, I suspect it will be an interesting case to follow. All the coaches have either pled guilty, agreed to do so, or been convicted. Of course the big fish, Rick Singer, the mastermind turned informant, has yet to face final sentencing.

Bonecrack by Dick Francis

BonecrackBonecrack by Dick Francis
My rating: 4 of 5 stars

My wife likes what she refers to as “factory movies.” We used to see those in school as kids. The term as she means it is a general one that applies to any movie or TV show that explains how things are made, or even more generally, takes an inside look at a field of endeavor. That’s the main appeal of this book for me. All the inside scoop on thoroughbred horse training and racing was fun to learn. The writing was well done, but the plot really was all too predictable to be ranked high as a mystery or thriller. In fact, there was no mystery at all. Neil, the main character, is beaten by a very bad man who threatens even more harm if his son is not allowed be the lead jockey on the best horse in England. The son is an arrogant little snot … at first. Then he and we readers are educated on the proper way to train horses and learn the jockeying ropes from the ground up. You can pretty much guess the rest. The ending was rather neat and lazy, but inevitable. I enjoyed the book, but now that I’ve seen the factory movie, I don’t have any desire to read another Dick Francis book.

View all my reviews

Computer cipher solving – word list scoring part 2

In my last post I discussed how to break up undivided text strings into words in order to be able to score trial decryptions. In that post I mentioned blanking out words that have been found in order not to double count letters. I’ll provide an example to clarify: suppose your trial decryption is “HBSTUMBLEDTXERE.” Using the length-based approach I recommended, your algorithm would first find the word STUMBLED when it gets to length 8. What you should do is then convert the test decryption to HB——–XERE for the next loop. The final score would be 8, or,  if you have ERE in your word list, 11. If you leave the trial decryption in the original form, the algorithm would find TUMBLED, STUMBLE, TUMBLE, BLED, and LED as it tested shorter word lengths. The same letters would be counted multiple times and artificially increase the score. What you’re really looking for is the percentage of the decryption that forms words.

I suggested the score should be the number of letters that are found to be in words and that’s a simple way that works. But I believe a test decryption with longer words in it is more likely to be on the right track, and the score should reflect that. So you may wish to give extra points for longer words. Perhaps add L*(L-1) or L*(L-2) where L is the length of the word found would work better. You may want to deduct unmatched letters. But you have balance this against the situation where your bonus rewards inaccurate parsing too much. For example HULALIGHT would parse as HUL ALIGHT. HOLYLIGHT would split after the Y. The second form is more likely right. With simple letter count, the second one scores higher. But what if there’s a bonus for length? HUL ALIGHT might score higher depending on how big a bonus.

Now compare HULALIGHT to HALFLIGHT and to HOLYLIGHT. Without a length bonus these score the same. How do we fix that so the best one scores highest?  It’s possible to try alternate ways of parsing the word divisions and then scoring higher for the result that is most common, as I’ll explain below. I’ve found this to be much too time-consuming to be practical in hill-climbing. Another way I do use for cipher types with word divisions such as Aristocrats, Key Phrase, and Tridigital, is to score word pairs together based on the frequency of the pairing. I’ve downloaded 2-grams from the Google N-gram site and processed the files to delete irrelevant data adjust the frequency numbers to more manageable size and spread. and alphabetize them. I use these files to score the word pairs. You might be tempted just to use the frequency of the individual words rather than the pairs, as it would be faster to look up. That might work with the above example since HALF is more common than HULA or Holy. So is HALF LIGHT the most common combo. But take TWENTY T??. The most frequent combo is TWENTY TWO but TWENTY THE would score higher based on individual word frequency. Tetragram scoring can take care of some of this and for simple substitution types cost in time is rarely worth two-word scoring. But for some very tough ones, like very short Headline puzzle headlines, it’s the only way to crack them, and in a Key Phrase I’ve found it essential.

I mentioned above that trying alternate means of parsing is not practical for hillclimbing. But another application of this technique is not used for solving at all. When I solve a cipher and the result is without word divisions, I like to submit the result in a more readable form for the Solutions Editor. That means I insert spaces at the word boundaries. My program to do this uses four steps. The first step consists of dividing up the text using the technique I described in my first post, but either method will work for step 1. The second step is to score the word pairs from the N-gram data as described in the last paragraph. These two steps are virtually instantaneous. Then the program goes back and checks for common parsing errors I’ve compiled in a list, such as changing “i snow” to “is now.” This is still instantaneous. The final step is to go back through and try moving one and then letters to the left and the right at every space and testing the resultant word pairs. For example, “butt he” would be tested against “but the” and “bu tthe.” “But the” would outscore the others and be the output form. All this testing and then altering the output is very slow. For one already solved text the forty seconds or so it takes is acceptable but it can’t be used in hillclimbing.

Computer Cipher Solving – word scoring part 1

I’ve described various computer solving techniques in earlier blogs, but I only briefly mentioned  scoring using word lists. For most computer applications I use tetragram scoring because it’s fast and easy to implement. But it’s not always the most accurate way. If your solving program already “knows” the word break points then it’s relatively easy and fast to look up each trial string to see if it’s a word. I’ll get to that method in a minute. But what about the many cases where the trial output is one continuous string without breaks?

There are two approaches to that situation. The first is to begin at the first letter and keep appending letters until the string is no longer a word. For example, if the trial output begins “THEMAN” this program would go through “THEM,” which it recognizes as a word, and assume the break point comes after the M and begin looking for the next word at AN…. Or, if the word THEMA (Latin, but used in English) is in your reference word list, it will break there and start looking for the next word at the N. As you can see, this does not always find words as you would by eye. You naturally think it begins with the two words THE MAN or possibly THE MANY, etc. If it doesn’t find a word starting with the first letter, it moves on and does the same with letter 2 and so forth. The scoring algorithm won’t give an accurate number if it is breaking the text incorrectly. The final score is based on how many total letters are found to be in words.

The second approach is to start with longest words first. Start with the longest word length in your available lists and then shorten the search length incrementally. Let’s say you start with length 24, the maximum word length in my normal lists. You check to see if the first 24-letter string is a valid word. If it is, you blank that out and test the next string beginning at letter 25. If not, you do the same beginning at letter 2, and so on. You probably won’t find any words of that length, but the next cycle, you try 23-letter words, and so on. Whenever you find a word, be sure you eliminate that section of the output from future testing so that it’s not double counted using shorter words found within the longer ones. The final score in this version is also the total number of letters that are in words.

Neither method is perfect. Take a sentence beginning TWOSTRINGS. The first program will find TWOS T RINGS, dropping the T from the count. The second method would get it right. But with  BUTOUR, the second method gets BU TOUR, losing the BU, while the first method gets BUT OUR, the correct parse. I’ve written programs both ways and in my experience this second way is best.

Now for the question of how to determine if a string is a word. Of course it is very simple to write a program that reads from an alphabetical list and when it comes to the point where your test string should appear, determine whether or not it is there. This works reasonably fast on very short lists or if your candidate begins with an A or B. Otherwise, it is quite slow. Another approach is to use a hash function. I’m not going to discuss that since I don’t use one. If you already know what this is and how to use one, you don’t need me, and if you don’t, I can’t tell you. I believe Python and maybe other languages have this built in and it’s fast even for unordered lists but is complicated and has some computing overhead to build a hash table.

But there’s a fast method for Delphi, the language I use, which I believe is available in other languages, too. My FindWord function takes a string S as input and returns a true if it’s a word and false if it is not. It depends on using the AnsiCompareStr function. This function takes two strings as input, and compares them. If the first one is less than (i.e. alphabetically earlier than) the second, it returns a negative number, if it’s greater, it returns a positive number, and if they are the same, a zero. To use this, first you load your reference word list in alphabetical order and count the number of entries; call that X. This only needs to be done once when the program is loaded not each time the function is called. Your search function will begin its first comparison of S with the word in the middle, i.e. at position 1/2 x. If the test word is less than the list word, you next try S with the word at 1/4 x. If the first comparison shows S is greater than the list word then your second test is against the word 3/4 x. In other words, you keep splitting the search domain in half with every search. When you get a match, the function returns a True and stops looking. When you get down to the last word without a match, the function returns a false. It’s written recursively so that it automatically keeps calling itself until one of those two points is reached. For a list of 80,000 words, the maximum number of comparison you’d have to do is 17.

To make it even faster, don’t load all the words into a single list. Use a separate list for each word length. I sometimes use a two-dimensional array ranging from 2 to 24 for the word length, and 1 to 13000 for the word count. Since there are more 8-letter words than any other length and there are just under 13,000 words in that list. I treat one-letter words separately in my function, giving a False for anything besides A or I. This cuts the maximum number of searches to 15 for length 8 and for most strings, much fewer.

This can be refined even more. I’ll discuss that in my next post.


The Lincoln Highway by Amor Towles

The Lincoln HighwayThe Lincoln Highway by Amor Towles
My rating: 2 of 5 stars

This book was highly rated or strongly recommended to me by three different people whose taste and judgment I trust. So it was a big disappointment that I didn’t like the book. I got about 40% of the way through it and gave up because I still hadn’t become interested in the story or characters. It’s too long a book to spend the necessary time to finish something I don’t like. I found none of the characters credible or relatable and none of the events believable either. I could point out more specifics I didn’t like, but I don’t take any joy in throwing a wet blanket on the joys of others, so if you liked it, good for you. Towles’s earlier book A Gentleman in Moscow was somewhat better, but I was lukewarm on that one, too, for many of the same reasons. There’s just something about the artificiality of Towles’s style I don’t like.

View all my reviews

Project Hail Mary by Andy Weir

Project Hail MaryProject Hail Mary by Andy Weir
My rating: 4 of 5 stars

Weir has followed his first novel The Martian, with this very sciency thriller. The Earth is threatened by a microbe (astrophage) that is eating the sun. If it continues, in a few decades the Earth will be a frozen world and mankind will perish. Scientists obtain a sample through a probe and identify enough about it that they are able to determine that many other stars in the local cluster are infected, but one isn’t. Earth governments join together to build a mission to that solar system (Tau Ceti). It is up to the crew to determine how that other star has survived the astrophage infection and send back the solution.

{Mild spoiler, although you learn this very early in the book] Only one of the crew members survives to reach Tau Ceti. From this point on it resembles The Martian quite a bit as our hero uses his knowledge of science and engineering to overcome all sorts of problems, although he gets some help from an unexpected source. I’ll say no more on that. I did love the cleverness of much of the science workarounds and I learned quite a bit. It was also nice not to have the gore and violence of many other science fiction thrillers, the so-called space operas.

The book has its flaws, however. It is too long. It is much less plausible than The Martian. Weir gets lazy and just creates crises and then impossible and unexplained solutions. There are many inconsistencies. It’s also too silly. The lighthearted tone doesn’t fit well with the seriousness of the mission. The light tone reduces the suspense by a large factor. It’s as though Weir couldn’t make up his mind whether to write a sci-fi thriller or an travel adventure book. It becomes tedious after page 200 or so. Another crisis, another implausible solution. All in all, though, I enjoyed it and can recommend it.

View all my reviews

Ukraine’s neighbors

Everyone has heard plenty about what’s happening in Ukraine. Russia invaded it and Ukrainian refugees are fleeing. This has been going on for weeks. They’ve mostly been fleeing to neighboring countries. This chart shows Google searches in the U.S. for the four countries that have taken in the most Ukrainian refugees.

The bump for Poland and Hungary back in May 2021 is probably due to interest in their blockage of Gender Equality language at the EU Social Summit. Whatever you think about that, all four of these countries are showing tremendous generosity to the Ukrainian refugees. If you need a geography refresher, here’s a map.

Poland has taken in more than any other country, at least for now. The others listed are next in sheer numbers. Eventually the refugees may settle in other countries. I’ve skipped Russia, which would also be on this list, but many of the “refugees” there were forced there and did not go there to seek refuge. They are more like hostages or POWs.

Lemon by Kwon Yeo-sun

LemonLemon by Kwon Yeo-Sun
My rating: 1 of 5 stars

After reading the entire book I have no idea who did what. A beautiful girl died, years pass, and another crime occurs, but I don’t want to give a spoiler so I won’t say more on the plot. There were multiple suspects in both the crimes – pretty much the same people – but no one seems to have a motive and it’s never revealed who did either. I couldn’t even tell which character was narrating each chapter. Each was in the first person but there was no label or chapter heading to reveal who it was. In most of them it became obvious, but in several of the key ones, it wasn’t. The writing was also awkward and wandering into irrelevant anecdotes. I don’t know if it was bad writing or bad translating but this is definitely a book to skip. Its best (or least bad) feature is that it was very short.

View all my reviews

Cost of energy per mile – gas v. electric

With gas prices soaring, there’s a lot of outrage among the public. Everyone’s prone to blame someone, usually the “opposite” party’s policies. There’s no question that the Republican tax cuts and the Democrat spending plan have both contributed to the current inflation. But let’s just look at the cost of driving a car.

Stop blaming politicians and look in the mirror. If you’d purchased an electric vehicle (EV), you wouldn’t be having this problem. I drive a Volvo XC40 Recharge, an EV. My rough calculations put my energy cost per mile at around 7.5 cents. My wife’s car, an Acura gas car, costs over 20 cents a mile at today’s prices and that doesn’t include other costs the EV doesn’t have like oil changes and the $75 I just paid for a smog check. In California the electric grid uses very little fossil fuel so it’s not affected by the Russia oil ban. America’s policy is to eventually be almost all EV. Norway has done it. It’s time everyone got on board with it. The petroleum age is ending.

Worbot updated

I now have enough puzzle solutions to make some meaningful observations about my Worbot program that solves the daily Wordle puzzle. First, here are my Wordle stats (left) and Worbot’s (right).

Obviously, I started tracking Worbot stats a month or so after I started working the puzzle myself, hence the different totals. The stats on the right also don’t show the first few attempts where I tested the program, including the one where it failed to solve PROXY.

As you can see, Worbot has a better record than I do. It has three times as many solves in three attempts than in five. My ratio is about 2 to 1. It plays in hard mode, too; I don’t. In case you don’t know what hard mode is, it means that you must use the letters that have been identified in prior guess each time you guess. Worbot also takes it further and cannot guess a word that uses a letter than has previously been shown NOT to appear in the target word, i.e. the gray letters become off limits. I think the key to its success is the word lists I have programmed it to use. The list it uses for its initial guess is limited to 64 words that: 1) have all or almost all high-frequency letters; and 2) have been verified to appear in the actual Wordle program target word list (2315 words). The program chooses randomly from those 64. It at least has a chance of getting the word on the first try, although it hasn’t succeeded at that yet. Neither have I.

The main list that Worbot uses for all subsequent guesses is my normal master 5-letter word list, but ordered by frequency in English. That master list (over 4,000 words) does NOT use any knowledge of the official Wordle list. So later guesses may be of words that have no chance of being the correct one. Nevertheless, the fact that it searches the list in order of frequency makes it highly likely it will find the most common word that fits all the previous clues from the colored squares. I believe this increases the chance that it will guess the right word in fewer guesses than me, since I make guesses based on instinct and general vocabulary with no knowledge of whether other words may be more common. That’s because I have made the assumption from the relatively low number of words in the official Wordle list that all of the target words are quite common.

By the way, I had fun programming the statistics page to look much like the Wordle one. That was actually the hardest part of the programming.

The Spy and the Traitor by Ben MacIntyre

The Spy and the Traitor: The Greatest Espionage Story of the Cold WarThe Spy and the Traitor: The Greatest Espionage Story of the Cold War by Ben Macintyre
My rating: 5 of 5 stars

This is by far the best book I’ve read in many months, perhaps years. It is outlandish and unbelievable, yet it has the added distinction of being absolutely true. It is the story of a KGB agent who spied for England. When I joined the FBI this is the kind of case I hoped one day to be involved in. It never came to pass, because this is the sort of case that happens once in a lifetime to an intelligence agency and only a tiny handful of people ever know about it at the time due to its absolute secrecy.

The beginning is well-written, but unexciting, setting the stage by introducing the characters and refreshing for us the realpolitik history of the Reagan-Thatcher-Andropov-Gorbachev era. I remember it well, but younger readers will find it eye-opening. By the second half of the book, the tension ramps up. PIMLICO, the mole, rises in the KGB and becomes more valuable, while at the same time the intelligence he provides puts him at greater risk as it is used. He is eventually put in peril. As it happens, western intelligence has its own mole betraying its secrets to the KGB. I’ll leave it there to avoid spoilers, but rest assured the last third of the book is a page turner. Do yourself a favor and don’t read through the photographs until the very end, as they contain some spoilers for what comes later.

View all my reviews

Law & Order season 21 – a disappointment

One of my favorite television shows was the original Law & Order starring Jerry Orbach as detective Lennie Briscoe. The writing involved complex legal issues in addition to the clever detective work. The acting and writing were excellent. It ran for 20 years, from 1990 to 2010. So I was excited to see it coming back starting tonight in Season 21. The various spinoff series were too gory or sensationalized with an unappealing set of actors. I never watched any of them for more than one episode.

Unfortunately, the reboot is poorly done. I’ve already taken it off my watch list. The writing is bad, the casting is bad, the acting is bad, the main characters are all unlikable, and it’s succumbed to the same problems as the spinoffs – more gore, more swearing, more overall nastiness. My wife called it ham-handed. I can’t recommend it.