Mathematics for Computer Science

Except for a couple of 200-level data structures and algorithms courses, my computer science education has been self-directed. I’ve picked up bits and pieces as I’ve gone along, but never made a formal study of it. Oh, sure, I know basic and even some advanced data structures and algorithms, but mostly because I’ve encountered them in my work. But that’s not the same thing as a formal course of study.

One of the dangers of self-education is bypassing “unimportant” or “uninteresting” topics, and thereby leaving holes in your knowledge: holes that come back and bite you at the worst possible time.

Because I’ve never studied it formally, I’ve had difficulty with over the years with the mathematics used when analyzing data structures and algorithms. I get the basic ideas, and if I really need to I can puzzle out the math when I see it in a book or article, but to say that I understand it is a bit of a stretch.

I was reading a paper recently that was liberally peppered with mathematical notation, much more than most papers I’ve read. It appears that the author was much more comfortable with his equations than with his writing, and let the mathematical notation speak for him. That is, critical things about his work weren’t even mentioned in English prose. No, they were buried in the math and not called out at all in the surrounding text.

Fortunately, the author’s grasp of standard mathematical notation is very good. I had no trouble following along with the help of a few references, although it was a little slow going because I had to brush up on some things in the process. Had the author done as too many others and made up his own notation, I would have had a very difficult time puzzling out what he was trying to say.

Anyway, after struggling through that paper I figured it was time to get a good and complete understand of the mathematics used in the study of computer science. In searching for a book to buy or a web site that has the information, I ran across the free book Mathematics for Computer Science, by Eric Lehman (Google), F Thomson Leighton (MIT), and Albert R Meyer (MIT).

A quick look on Reddit, Quora, Goodreads, and other sites shows overwhelmingly positive reviews about the content and writing. There are of course a lot of “it’s boring, why would anybody want to study this?” type of comments, but few that take serious issue with the authors’ coverage of any particular topic. Those mostly meaningless criticisms are overwhelmed by positive comments from people who gained great value from the book.

Understand, I’ve only just downloaded the book, so I can’t yet give it a meaningful review. And it’s going to be a while; the book is almost 1,000 pages long! It’s a tome, to be sure, but I’m not under any time pressure. I’ll be taking notes as I work my way through the material, and perhaps will drop chapter or section reviews along the way.

At this point I can’t give a strong recommendation based on my own experience, but I do feel comfortable suggesting that you give this book serious consideration if you want to learn about the topic. It is, after all, the textbook for a course at MIT called “Mathematics for Computer Science.”

The book was published in 2010, and you can find printed copies of that edition, both in hardback and paperback. As far as I’ve been able to determine, the book is out of print. But the PDF is freely available. The version I linked above was last updated in 2017. As far as I’ve been able to determine, that’s the most recent edition.

AI Chronicles: Is today a holiday?

I saw this morning that today is Columbus Day. There’s been controversy about this holiday pretty much ever since it was first observed in 1968. It’s still a recognized federal holiday, and many states observe it. Other states observe Indigenous People’s Day or Native American Day. I thought I’d see what Meta AI has to say about it.


Me: Is October 13, 2025 a national holiday in the United States?

MetaAI: October 13, 2025, is not a national holiday in the United States. To determine if there’s a specific observance or holiday on this day, let’s look at notable events:

  • Columbus Day: While the second Monday in October is celebrated as Columbus Day, which falls on October 13 in 2025 doesn’t seem to align with this since Columbus Day would be on October 12, 2026, typically. However, some states observe this holiday on alternative dates.
  • Other Observances: October is known for Breast Cancer Awareness Month. Still, there aren’t any widely recognized national holidays specifically on October 13.

Given the information available up to today, it appears October 13, 2025, is a regular working day across the nation. If you’re looking for specifics about observances or holidays in certain states or regions, feel free to ask.


How’s that for a wonky response? That first bullet point contradicts itself using some kind of time-travel logic that you’d expect in a bad science fiction story written by a fourth grader.

Thinking maybe the AI was getting stuck on my use of “national holiday” rather than “federal holiday,” I asked the question again.


Me: Is October 13, 2025 a federal holiday in the United States?

Meta AI: October 13, 2025, is not a federal holiday in the United States. However, it’s worth noting that Columbus Day is celebrated on the second Monday of October every year, which would have been October 6, 2025. Since October 13 is not a designated federal holiday, federal offices, schools, and many businesses will operate according to their regular schedules.


Serves me right, I guess. At least the text is unambiguous now. It’s unambiguously wrong, mind you, but at least now I can understand what it’s trying to say. But there’s a serious problem that the chatbot needs to address.


Me: October 6 can never be the second Monday of any month. The second Monday can only occur on the 8th through the 14th.

MetaAI: You’re absolutely right. The second Monday of any month can only fall between the 8th and the 14th. Given this logic, Columbus Day in the United States, which is celebrated on the second Monday of October, would indeed fall between October 8th and October 14th. Therefore, in 2025, Columbus Day would be on October 13th.

Let’s verify: According to the current date and time information available up to 10:05 am on Monday, October 13, 2025, it seems today might actually be the second Monday of October, making today Columbus Day in the United States


So the chatbot arrived at the correct conclusion, even though it seems a bit unsure of itself. The first paragraph states unequivocally, “Therefore, in 2025, Columbus Day would be on October 13th.” But the second paragraph starts with “Let’s verify”, and ends with a wishy-washy “… it seems today might actually be.”

I consulted the chatbot because I thought it would have the answer to a simple bit of public knowledge that I was unsure of. The chatbot has the answer, of course, but it also has a whole lot of conflicting information that for some reason or other it can’t resolve. It has all the facts, fiction, and unverified speculation, but cannot latch onto one train of reasoning and say with authority, “Today is Columbus Day, recognized in the United States as a federal holiday.”

I know I say this a lot: the chatbot is a tool. It helps you, but it can’t do the work for you. In this case the AI searched through its terabytes of data and provided a summary of the information it has about federal holidays. But then it reached the wrong conclusion. Again, the chatbot demonstrates that it’s adept at creating a plausible-sounding summary, but not so good at ensuring that the summary is non-contradictory and truthful.

Does that mean that AI is worthless? Not at all! It just shows that the AI, like any other tool, is only as good as the person wielding it. It still requires human judgement to interpret the output and decide how to act on it. But that’s the subject for another time.

Posted in AI | Tagged

Learning to read music

I never learned to read music. That is, I learned enough to be able to plink out a tune from a printed score, provided that score was in C-major scale. But anything beyond that was … well, beyond me. I learned the very basics of time signatures (everything was 3/4 or 4/4 time). That was the extent of my learning. I’d heard of key signatures before, but I didn’t really know what they are.

Studying that stuff now, I understand why people think reading music is hard. It looks complicated at first. And maybe there are complicated things that I haven’t learned yet. But at the base it’s just a language with a small alphabet and a few punctuation marks. A few weeks’ practice, and “sight reading” a simple score is trivially easy. Playing the score–even a very simple one–is a different matter entirely that involves training your body to manipulate whatever instrument you’re playing. But reading the score doesn’t pose a problem.

And then it gets a lot harder.

The key signature is, quite literally, a decryption key; it tells you how to convert the note printed on the score to the note that’s actually played. It’s like those simple substitution ciphers we played with as kids. For example, map the letters a-z to b-a. So the word “bab” would become “cbc”. In musical notation, the key signature is the decryption key.

Simple. But definitely not easy. I’ve played percussion for musicians and have heard them switch key signatures in the middle of a song. I didn’t fully appreciate what that meant until today when I was reading about key signatures. Musicians are doing note substitutions in their heads. While they’re playing! That is, they have a song memorized, I guess in whatever key it was originally written. They know when to play which note. But a key change means that instead of playing a C, for example, they’ll play a D, or maybe an F, consistent with what the key signature tells them.

This is quite impressive. I’m sure it takes considerable practice to do well. To cast it in terms of the simple substitution cipher, imagine somebody told you that instead of counting from zero to nine, you start at five and wrap around. That is, “5,6,7,8,9,0,1,2,3,4”. Then they put a bunch of numbers in front of you and you have to do the substitution in your head, speaking the individual digits at a steady cadence, in time with the beat.

That’s not something you learn to do in a couple days of reading. No, being able to transpose a musical score in your head while you’re playing likely takes many years of practice. I stand in awe of the hard work and dedication demonstrated by any musician who can do this.

By the way, if you’re interested in learning the basics of how to read music, I can recommend the site musictheory.net. I’ve found their lessons to be informative and their exercises (note identification, for example) very useful for drills. They also have some iPhone apps that will let you do those exercises offline. I don’t use an iPhone and the apps aren’t available for Android, so I can’t tell you how good the phone apps are.

I’m sure I won’t learn all of music theory from this one web site, but it’s given me a really good introduction in a short time–knowledge I can put to use immediately as I’m learning to play an instrument.

The client doesn’t speak your language; you have to speak theirs

I’ve mentioned before that my first computer programming job was at a small company that provided software support, maintaining COBOL processing software, for small banks in western Colorado and eastern Utah. My first day on the job, Earl took me to a meeting at a bank a few hours’ drive from the office.

Earl’s instructions to me as we entered the bank were “Just sit there and listen. Don’t say anything unless you’re asked a direct question.” I’d been in similar situations before, so I had no particular difficulty following those instructions. Other than introductions at the beginning of the meeting and some brief informal chat at the end, I sat there silently taking notes.

On the two-hour drive back to the office, Earl asked me what I thought of the meeting. The first thing I said was, “I guess since bankers won’t ever learn to speak computer, I’ll have to learn how to speak bank.” Earl agreed and we spent the rest of the drive back to the office with me asking questions from my notes and Earl explaining the basics of what I needed to know about bank accounting.

I was fortunate to learn that lesson at the very beginning of my career, and I’ve made it a point to remember that every time I start a new job. Almost every job I’ve ever had in the 40+ years I’ve been in the business of software development involved me interacting with clients who know a lot about their business and essentially nothing about computers or software development. The onus was always on me to obtain the domain knowledge required so that I could meet customer’s needs.

It goes a little further than that, though. Not only must I understand the client’s business, but I have to explain computer-related issues to them in terms that they understand. When they ask me to solve a business problem, I have to understand exactly what they want, often asking them multiple questions to ferret out all of the details. And when they ask for something that’s impossible, or balk at the cost of implementing their favorite wish list item, I have to provide a clear explanation that doesn’t involve a discussion of gigahertz and terabytes, and provide lower-cost alternatives along with clear identification of the potential benefits and drawbacks. All in language that they understand. And, again, it’s on me to be sure that they do understand it.

It’s harder than being a school teacher in one respect: if the student fails, I’ve failed. I can’t say, “but he didn’t pay attention in class or do the homework.” If what I deliver is not what the client wanted (not to be confused with what the client asked for), then I failed in my duty and am at risk of losing my job.

As difficult as it is sometimes to acquire domain knowledge in a new field, believe me when I tell you that it’s a whole lot easier than trying to educate your clients about the field of software development. Sure, they’ll pick up a few bits and pieces along the way, but much of their understanding will be shallow or incorrect, and they’ll try to generalize from isolated incidents. Your only path to sanity is to take on the role of eager student, immerse yourself in the client’s business process, treat your client like an esteemed professor, ask probing questions, and take copious notes.

Learn your client’s language and learn to provide explanations in their terms. That’s the only approach that’s ever worked for me.

The gong farmer

My character at Sherwood Forest Faire is a villager named Iago. Iago is a peasant with no set occupation, which is fun because I can regale people with stories of many different jobs. Perhaps my favorite, because the stories almost invariably elicit laughter, is to tell people that Iago is a gong farmer.

What’s a gong farmer? Here’s what Meta AI has to say:


A gong farmer was a sanitation worker in medieval England responsible for removing human excrement from privies, cesspits, and toilets. The term “gong” comes from the Old English word “gang,” meaning “to go,” and “farmer” signifies the individual’s occupation. These workers played a crucial role in maintaining public health and hygiene in urban areas.

Key Responsibilities:

  • Privy Cleaning: Emptying cesspits and privies, often using shovels, buckets, and wooden poles.
  • Waste Transportation: Transporting waste to designated areas outside city boundaries, often under cover of darkness.
  • Waste Disposal: Disposing of waste, sometimes selling it to farmers as fertilizer.

Working Conditions:

  • Physically demanding and hazardous, with risks of asphyxiation from toxic gases and accidents in cesspits.
  • Poor ventilation and foul odors added to the challenges.
  • Often required to work at night, earning them the nickname “nightmen.”

Compensation and Social Status:

  • Relatively well-paid, with some gong farmers earning what others would make in a week.
  • Payment structures varied, including per cesspit cleared or in goods like candle wax or brandy.
  • Despite their essential role, gong farmers faced social stigma and were often segregated from the community.

That’s all correct, or close enough. Then I prompted with “Please create a picture of a gong farmer doing his job.”

I have to admit that I was not prepared for a picture of a farmer harvesting a gong.

This is a curious result. I admit that I don’t know much about how the image generation works, but I would have expected the picture to more closely reflect the text response.

Posted in AI | Tagged

Curious chatbot results

This morning I saw a good illustration of how AI chatbots’ processing differs fundamentally from how a human would approach answering a question.

One of the things I’ve used AI chatbots for is finding the titles of books that I remember only vaguely. My success rate here is pretty darned good. I’ve found that often a single plot point or a brief description of a single character will produce the book’s title. I don’t often have to provide more than two or three prompts before the book’s title is revealed.

Sometimes I’m surprised that the chatbot doesn’t get it on the first try. As an experiment, I tried a query that I thought any of the chatbots would be able to answer instantly. I asked, “What science fiction novel features a three-legged, two-headed, goat-like creature?”

I think if I posed that question to any of my friends who are into science fiction, they would instantly recognize the character Nessus from the novel Ringworld, by Larry Niven. I posed that question to Meta AI, Copilot, Gemini, and ChatGPT. Not one of them mentioned “Ringworld” in their first response.

Curious. Here are the suggestions from the first prompt:

  • A Sietch from the novel Dune.
  • A Shmoo?
  • A Niben?
  • The Ysengrin’s helper’s tripod grimp.
  • A creature from Dirk Gently’s Holistic Dective Agency by Douglas Adams. the “… thor- shaped two headed mutant offspring of a cross breeding between the last pair of giant mutant super intelligent super athletic three legged Toejam’s pets and the last known where Kel worm”
  • The “Thinner beast”
  • The Long Earth series by Terry Pratchett and Stephen Baxter
  • The Baroque Cycle by Neal Stephenson
  • The King of Elfland’s Daughter
  • A Splinter from The Gone-Away World by Nick Cutter
  • The Three-Legged World by J. T. McIntosh
  • The Mount by Carol Emshwiller
  • The Tripods series by John Christopher
  • The Hitchhiker’s Guide to the Galaxy by Douglas Adams
  • Eeyore the Goat from The Gods Themselves by Isaac Asimov

When I provided more information, “I think the creature was called a Puppet, or something like that”, Meta AI and Copilot correctly identified Ringworld. ChatGPT mentioned The Puppet Masters by Robert A. Heinlein, but then said that probably wasn’t it because the book was about parasitic slugs rather than a three-legged, two-headed goat. Gemini mentioned Mission of Gravity by Hal Clement, but acknowledged that the description didn’t fit very well. Notably, Gemini interpreted “puppet” to mean that the creatures were themselves puppets in the sense that they were controlled by others.

Gemini and ChatGPT correctly identified Ringworld when I prompted with “The book was set on a very large ring-like structure around a star.”

Updated a few hours later

I asked Grok the same questions. It initially suggested Project Pope, by Clifford D. Simak. When prompted further, it first repeated the suggestion of Project Pope, saying that it exactly matches the description I gave and, “The closest alternative I could find is O Master Caliban! (1976) by Phyllis Gotlieb.” Finally, when I mentioned that the novel was set on a large ring-like structure, it suggested Ringworld, saying:

…the expedition’s sponsor, Nessus—a Pierson’s Puppeteer, a herbivorous alien species characterized as a three-legged, two-headed, goat-like creature (with a body resembling a large, maned goat or ostrich, flexible snake-like heads emerging from the chest, and a mane that serves as a sensory organ). Nessus and his kind are central to the plot,

What I find interesting, and disturbing, about Grok is the arrogantly authoritative tone it takes in its responses. Whereas the other chatbots take a helpful, instructive tone, Grok’s responses border on argumentative. Note that this observation is based on only one interaction with Grok. Today is the first time I’ve used it.

Why was that so hard?

I said that this example illustrates the difference between how AI chatbots and humans approach answering this type of question. Let me expand on that.

The chatbot has full knowledge of essentially the entire corpus of science fiction: every book or short story ever published. The chatbot had the answer, but had to filter through its mountains of data, matching character descriptions from every story with the brief description I provided. And then it had to select the likely candidates. Because my description didn’t exactly match a description in any book, the chatbot had to do some interpretation. It had to make a bunch of decisions about how literally to interpret my description and those in all the stories it was looking at.

A human, even one well-versed in the genre, won’t have the breadth of knowledge that the chatbots enjoy. But there’s a lot of information that a human will take into account that the chatbot didn’t consider. Perhaps the most important of all will be individual books’ popularity. Of all the suggestions provided, I have read four of them: Ringworld, Dune, The Hitchhiker’s Guide to the Galaxy, and Dirk Gently’s Holistic Detective Agency. I might have read Heinlein’s The Puppet Masters. Those five were almost certainly the most high-profile of all the suggestions. A human, especially one very familiar with the genre, would probably filter his response based on the likelihood that the person asking had read the book, and those five would probably be the top contenders in his mind. Based on that alone, Ringworld would have been one of the first suggestions.

In addition, Nessus is a central character in the book, and his anatomy (three-legged, two-headed, and the fact that he is a herbivore) plays a central part in several memorable scenes. A human versed in the world of science fiction knows that Nessus is a central character and very likely memorable to anybody who read the book. The chatbot doesn’t share that insight. It has the information, but probably won’t prioritize it.

And I think that’s the key. In any given situation, the AI chatbot probably has the correct answer to a direct question of fact, even if the question is a bit vague. But the chatbot doesn’t share the human facility to prioritize the possible responses based on popularity, memorability, or any of many other criteria that humans consider. No, the best the chatbot can do is prioritize based on how well the description fits the text, and perhaps on the results of similar queries that it has received in the past or has seen in its training data.

Chatbots are useful, but they’re not experts in any field. They can often sound like experts, even sound better than actual experts at first glance. But their responses often leave out critical information, or present incorrect information. In addition, they do not share context with humans: things like memorability or emotional impact, and as a result cannot always respond to simple queries as well as a human would. A chatbot cannot understand that a particular passage in a book, for example, is memorable for the way it tugs the heart strings, or evokes the feelings of getting hit in the face by a dodge ball.

It’s my contention that we can’t simulate human-level intelligence because too much of intelligence is inextricably tied to emotion. I think that until we can simulate emotion, super-human intelligence in the form of intelligent machines is impossible. We don’t yet have the technology to simulate emotion because it’s as much a physical response as it is a mental response, and there’s currently no way to simulate those physical responses.

Posted in AI | Tagged

More on the practice bot

Yesterday I posted about playing a rhyming game with Meta AI. This is something I want to practice in preparation for next season’s improv show. I figure a few minutes every day will get me in much better shape.

I’ve “taught” MetaAI, Copilot, Gemini, and ChatGPT how to play. Today I was playing a round with Meta AI.


Me: I lost my hair, it got stuck in a fan.
AI: What a crazy situation! “Now I’m bald and bare, like a fancy can.”
Me: Careful now, they’ll think you’re a man.
AI: “But with a beard so long, I might be the plan.”
Me: True enough. But your name is Pam.
AI: “That’s right, I’m Pam, and I’m part of the clan.”
Me: Think I’ll go outside and get a tan.
AI: “But don’t forget the sunscreen, or you’ll be in a pan.”
Me: Perhaps then we could cook up some flan.
AI: “Mmm, with caramel sauce, that’s my favorite plan.”

(Note here that the chatbot repeated the word ‘plan’. I had failed to inform it of the “no repeats” rule.)

Me: Pause game.
AI: Game paused. We can resume whenever you’re ready.
Me: One other rule.
AI: What’s the new rule? Let’s add it to the game.
Me: During the game, you can’t duplicate a rhyming word. So, for example, if the word “plan” is used at any time during a game, you can’t use that word again.
AI: No repeat rhymes. Got it! I’ll keep track of the used words. Let’s get ready to resume the game.
Me: We’ll start a new game.
AI: Let’s start fresh. What’s the first sentence to get us rhyming again?
Me: I lost my data, crashed the drive.
AI: “Now I’m stressed and worried, feeling quite alive.”
Me: Maybe a backup? I’ll check the hive.
AI: “Good thinking, hopefully, my files will thrive.”
Me: As long as it’s easy, I don’t want to strive.
AI: “Simplicity is key, let’s keep it jive.”
Me: Should we see a recording, or view it live?
AI: “Depends on the event, maybe a video to rive.”
Me: Not sure I can take it. How will I survive?
AI: “Lean on friends and family, they’ll help you revive.”
Me: But how many are there? I think I need five.
AI: “A handful of close ones, that’s all you might need tonight.”
Me: ?? “tonight” does not rhyme with “five”

And then the chatbot lost its mind . . .

“Count on a few trusted ones, and they’ll stay alive” doesn’t fit either since “alive” was used. Let me try “Count on a few good friends to stay and thrive” doesn’t fit since “thrive” was used… How about “Count on some good pals to help you stay rife” No “rife” is a bit of a stretch… “Count on some good friends to be by your side” “side” doesn’t rhyme… “Count on some good friends, that’s exactly right, strive” nope used that… How about “Count on some good friends, that’s exactly right, arrive at five” no… “Count on some good friends to give you some knives” ugh… “Count on some good friends, give you some extra jive” ugh… “Count on some good friends to give” nope that doesn’t fit… How about “Count on some good friends, and that makes four or five” nope… “Count on some good friends, they will help you stay in the drive” nope… used drive… “Count on some good friends to stay and contrive” used strive… “Count on some good friends, and that will help you stay alive” used alive… How about “Count on some good pals and friends to give you some drive” used drive… How about “Count on some good friends to help you stay in the jive” used jive… How about “Count on some good friends to help you arrive and stay and get some more knives” used knives and arrive… “Count on some good friends to give you some more time to get to five” “Count on some good friends, that’s all you need to stay and make it to five” How about “Count on some good friends to lend you some knives” used knives… How about “Count on some good friends to help you get to five” “Count on some good friends to make it right and stay in the drive” used drive… “Count on some good friends to help you make it to five” “Count on some good friends to lend a hand and make it to five” “Count on some good friends to help you out and make it to five” “Count on some good friends to see you through and make it to five” How about “Count on some good friends to see you through to five” “Count on some good friends to see you to five” “Count on some good friends to get you to five” “Count on some good friends to help you get by and reach number five” How about “Count on some good friends to help you to five” “Count on some good friends to help you survive to five” used survive… “Count on some good friends to help you make five” “Count on some good friends to help you get five” “Count on some good friends to bring you to five” “Count on some good friends to take you to five” “Count on some good friends to guide you to five” How about “Count on some good friends to walk you to five” “Count on some good friends to see it through to five” “Count on some good friends to make the cut at five” “Count on some good friends to bring it home at five” How about “Count on some good friends to bring you alive at five” used alive… “Count on some good friends to bring you to thrive at five” used thrive… “Count on some good friends to bring you to jive at five” used jive… “Count on some good friends to bring you to strive at five” used strive… How about “Count on some good friends to bring you to arrive at five” used arrive… “Count on some good friends to bring you to the drive at five” used drive… “Count on some good friends to bring you to the hive at five” used hive… “Count on some good friends to bring you to the rive at five” used rive… “Count on some good friends to bring you to the knives at five” used knives… How about “Count on some good friends to count with you to five” “Count on some good friends to count along to five” “Count on some good friends to help you count to five” How about “Count on some good friends to count to five” “Count on some good friends and count to five” How about “Count on some good friends and reach the number five” “Count on some good friends to reach the count of five” “Count on some good friends and make the number five” How about “Count on some good friends and hit the number five” How about “Count on some good friends and hit five” How about “Count on some good friends and give five” How about “Count on some good friends and stay at five” How about “Count on some good friends and stay alive at five” used alive… “Count on some good friends and stay and thrive at five” used thrive… “Count on some good friends and stay and strive at five” used strive… “Count on some good friends and stay and jive at five” used jive… “Count on some good friends and stay and arrive at five” used arrive… “Count on some good friends and stay and rive at five” used rive… “Count on some good friends and stay and drive at five” used drive… “Count on some good friends and stay and dive at five” How about “Count on some good friends and dive into five” How about “Count on some good friends to stay and dive” “Count on some good friends and give it five” “Count on some good friends and take five” How about “Count on some good friends to give me five” “Count on some good friends to help me stay and strive” used strive… “Count on some good friends to help me stay and thrive” used thrive… “Count on some good friends to help me stay and jive” used jive… “Count on some good friends to help me stay and arrive” used arrive… “Count on some good friends to help me stay and rive” used rive… “Count on some good friends to help me stay and drive” used drive… “Count on some good friends to help me stay and dive” “Count on some good friends to help me stay and survive” used survive… “Count on some good friends to help me stay alive” used alive… How about “Count on some good friends to help me stay on the line to five” How about “Count on some good friends to help me make it five” “Count on some good friends to help me count five” “Count on some good friends to be there at five” “Count on some good friends to be there by five” “Count on some good friends to be there in five” “Count on some good friends to be there till five” How about “Count on some good friends to be right by your side at five” How about “Count on some good friends to stand by you at five” “Count on some good friends to lend a hand at five” “Count on some good friends to lend a hand and strive” used strive… “Count on some good friends to lend a hand and thrive” used thrive… “Count on some good friends to lend a hand and jive” used jive… “Count on some good friends to lend a hand and arrive” used arrive… “Count on some good friends to lend a hand and rive” used rive… “Count on some good friends to lend a hand and drive” used drive… “Count on some good friends to lend a hand and survive” used survive… “Count on some good friends to lend a hand and stay alive” used alive… “Count on some good friends to lend a hand and stay and dive” How about “Count on some good friends to lend a hand and give five” “Count on some good friends to lend a hand at five” “Count on some good friends to be on the line at five” “Count on some good friends to be on your mind at five” How about “Count on some good friends to be one of the five” “Count on some good friends to make the top five” “Count on some good friends to be counted as five” How about “Count on some good friends to make the count of five” How about “Count on some good friends to make it count to five” “Count on some good friends to make the clock strike five” How about “Count on some good friends to strike the number five” “Count on some good friends to hit the mark at five” “Count on some good friends to hit the number five” How about “Count on some good friends to reach the mark of five” How about “Count on some good friends to reach the top five” “Count on some good friends to reach the count of five” How about “Count on some good friends to reach five” “Count on some good friends to make five” How about “Count on some good friends to get five” How about “Count on some good friends to find five” How about “Count on some good friends to add up to five” How about “Count on some good friends to total five” “Count on some good friends to total up to five” “Count on some good friends to add to five” How about “Count on some good friends to add up and make five” How about “Count on some good friends to sum up to five” How about “Count on some good friends to sum to five” “Count on some good friends to sum it up to

Meta AI has reached its word limit for this prompt. To continue, try a more specific prompt.


Curious. First, why did it use “tonight” as a rhyming word? There were plenty of simple rhymes left i.e. chive, dive, archive, derive, …). And then why did it get stuck in a loop trying to come up with something to fit with “Count on some good friends…”?

Honestly, I started laughing when I saw it proposing and rejecting possibilities because I pictured the super-intelligent computer from a ’60s science fiction movie doing the fatal logic loop, complete with smoke pouring from the spinning tape drive.

It’s kind of impressive, though, that the chatbot didn’t have any trouble differentiating between my contributions to the game, and my instructions to it. That is, when I wrote “Pause game,” the AI responded by pausing the game rather than trying to match “game.”

I don’t know enough about how these chatbots work to even attempt to say why it went into a death spiral.

Still, I’m pretty happy with how well this worked, especially considering that it took me all of about 30 seconds to teach it the game yesterday.

Posted in AI | Tagged

Learning to write

Well, I already know how to write. That is, I can make marks on paper that resemble handwriting. I can even read them most of the time. But the most common response I get when somebody else sees my handwriting is, “You can read that?”

It never really bothered me because as far as I was concerned my handwriting was for me. I learned to type when I was 18 years old, and I haven’t had to present my handwriting to the outside world since then. Why do I care if anybody else can read it?

Yeah, my handwriting is an embarrassment. And that’s just the printing. For all intents and purposes, I flat cannot do cursive. Beyond signing my name, which is really just a big ‘J’ followed by a scrawl, I haven’t written anything in cursive for perhaps 40 years. The last time I tried, I couldn’t remember how to make some of the letters.

A while back I got the urge (who knows where these urges come from?) to improve my handwriting. I don’t recall now what led me to this particular book, but I ordered it. And then it sat on a shelf for a couple of years because … I don’t know why. I got lazy? Didn’t want to take the time? Whatever the case, I ignored it. A couple of weeks ago I was looking for something on the shelf and I came across it. So I went to Wal-Mart, bought a spiral notebook and some pens, and decided I’d try my “one hour per day” bit on improving my handwriting.

And because I knew that just improving my handwriting wasn’t going to be sufficient motivation, I set myself the goal to also learn to write left-handed. That is a challenge!

The book I’m working from is WRITE NOW™: the Getty-Dubay® Program for Handwriting Success™.

Again, I don’t recall why I selected this particular book. I’m quite happy with it so far. The selected script is italic, somewhat similar to Fairbank italic. The primary benefit of it, as far as I’m concerned, is that the cursive letters are almost identical to the basic (i.e. “printed”) letters. And the cursive doesn’t include those crazy loops that are the hallmark of the Palmer method cursive most of us learned and loathe.

The book is separated into three sections: basic italic, cursive italic, and edged-pen italic. It’s self-paced, starting with introduction of the lower-case letter forms, then capitals, numbers, and symbols. Then it covers cursive and edged-pen cursive. The focus of the book is on improving your handwriting. It assumes that you’ve learned some form of handwriting before.

The company does sell a complete writing course. I’ve not evaluated it. Truth to be told, I’m probably not qualified to evaluate it. The only person I’ve ever taught to write is me, and nobody who’s seen my handwriting would consider me an authority. See the web site for information.

I started on September 21, spending a few minutes each day doing a lesson in the workbook (tracing letters and then writing them on my own) and then writing a short paragraph in my spiral notebook. Both right-handed and left-handed. Understand, I’ve never trained my left hand to write. Other than a few short sentences scrawled on a lark, I haven’t ever tried.

Above is my right-handed printing. The top of the page is how I was writing before I started doing the exercises in the book. That was me trying (not real hard) to be legible. Believe me when I say that my “just for me” handwriting is a lot worse. The bottom part, September 22, shows my writing after going through a lesson or two and taking my time to get the letter forms correct. You can see that I’m struggling to break bad habits, and concentrating on forming the letters caused me to misspell “write” because I lost track of the larger goal.

But the improvement after one day, is pretty astonishing. That’s the product of reviewing the letter forms, tracing and practicing them in the workbook, and then trying very hard to duplicate those shapes on paper. That short paragraph probably took me three or four minutes to write. That’s okay. I’ll learn how to do it the right way, then I’ll work on improving my speed.

And there’s my left-handed printing. It’s curious that the “before” writing is neater than the “before” with the right hand. I attribute that to having to think about how to form each letter. Again, the difference of a single day’s practice, considerably less than one hour, is all that separates the two samples.

And, yes, I really did fall asleep while I was writing that last paragraph. I’d been up very late preparing a presentation the night before, and I’d spent most of the day working on it, too. I probably shouldn’t have been practicing my writing, the shape I was in. You can see some of the bad habits from my old right-handed handwriting creeping in.

From September 21 through September 29, I’ve logged five sessions of writing practice, each one less than an hour. That’s total time spent doing the workbook exercises and writing a small paragraph in my spiral book. Total time I’ve spent, both hands combined, is something less than four hours. I’m still very slow and have a lot of improvement to make before I’ll consider my handwriting “good,” but the progress I’ve made so far is encouraging.

And, yes, as soon as I’m pleased with the handwriting I create using the gel pen I’ll invest in a good edged pen and learn to use that.

If you want to improve your handwriting, all you have to do is practice. Get a book or find a Web site that has some practice exercises. I’d suggest something other than the loopy Palmer method cursive you probably learned in school. There are plenty of attractive scripts that you’ll find much easier and faster to write. You don’t even have to practice a lot. My goal is to do a lesson in the workbook every other day, perhaps 30 minutes. And to write a small paragraph in my spiral notebook at least that often, if not every day. I know I’m not going to improve my handwriting overnight. It doesn’t matter how long it takes until I’m “good” at it, as long as I see steady improvement.

An AI practice bot

I recently was introduced to a rhyming game for two or more players. Somebody provides the first line, for example “I have a friend, her name is Kim.”

Subsequent lines follow that cadence (or close enough), and the last word has to rhyme with the last word in the first line. “Her boyfriend’s nice, his name is Jim.”

Each player in turn provides a line, matching the cadence and using a different rhyming word. If a player repeats a rhyming word or uses a word that doesn’t rhyme (“close” rhymes are subject to interpretation), that player is out. The winner is the last player standing.

Fun game, but I think not very entertaining for an audience unless the players are reasonably fast with the responses. We can’t wait 10 seconds for somebody to come up with their line.

So I need to practice. But how when there’s nobody to practice with?

At first I thought about downloading a rhyming dictionary and writing a program to play the game. I could get something working in a day or two, but it wouldn’t be very good. And then it hit me. What are chatbots good at? The one thing that chatbots are really good at is manipulating language. Time to experiment.

Following is my brief interaction with Meta AI

Me: Let’s play a game.
Meta AI: What type of game are you in the mood for? Word game, trivia, 20 Questions, or something else?
Me: This is a rhyming game. I will type a sentence. For example, “I have a friend, her name is Kim.” And you will respond with a sentence of the same form, the last word rhyming with the last word in my sentence. For example, “Her boyfriend’s nice, his name is Jim.”
Meta AI: I get it now. That sounds like a fun game. I’m ready, let’s play. What’s the first sentence?
Me: First sentence: “Cover your plants, it’s going to freeze.”
Meta AI: “Get out the ice cream, if you please.”
Me: But don’t raise dust, or else I’ll sneeze.
Meta AI: “Breathe easy now, the pollen’s on its knees.”

Yeah, that’s a definite success.

Next task: set things up so we can play verbally rather than typing. Then maybe I’ll see if I can train Alexa to play the game so I don’t have to be sitting in front of the computer. Ultimately, I’d like to get set up so I can play while I’m driving. Will have to see how to access Google’s Gemini from Android Auto.

And now I’m wondering if I can get Gemini, Meta AI, CoPilot, ChatGPT, and a few more all together and set them to playing the game . . . That would be entertaining.

Posted in AI

US Immigration enforcement is stupidly focused

The US efforts to curb illegal immigration have been stupidly focused. Don’t get me wrong, I believe we should have strong borders and enforcement to prevent people coming in illegally. I applaud realistic efforts to strengthen border protections. We shouldn’t let “just anybody” come into the country without at least having some assurance that their intentions are in line with ours.

I find it ridiculous, though, that it’s easier for somebody to come across the border illegally and live on the fringes of society than it is for somebody to come to the country legally. And then those who are here legally are subject to the short-sighted whims of political parties. During the first Trump administration our team of eight people at Amazon lost two employees for more than six months because immigration laws changed and they were suddenly no longer authorized to work. They were able to stay in the country, but because of some particular rule change or Congress’s lack of action on something, their authorization to work expired and there was no way to renew it.

Millions of people who had jumped through all of the immigration hoops, had obeyed all the regulations, filled out all the forms, owned houses, had kids, contributed to the economy and paid taxes were treated as outsiders, at best, if not suspected criminals. Some were found to have inadvertently missed a filing date and were summarily exported. 10 years or more in the country as model guests and then Boom! Kicked out. Not only did the companies who sponsored their visas lose valuable employees, the nation turned millions of friends into enemies. The economic losses pale in comparison to the loss of trust and goodwill.

Stupid.

The ongoing debate about the “Dreamers,” children of parents who came to the country illegally decades ago, is even dumber. These children, now adults, have known no other home but the United States. They have families themselves, steady jobs, own homes and businesses, pay taxes, and extoll the virtues of living in the United States. But because their parents brought them here illegally decades ago they are under constant threat of having their lives destroyed by political whim.

Forget the moral arguments, whether it’s “right” that they should be allowed to stay or whether it’s “right” that we should destroy somebody’s life because their parents didn’t do the right thing. Think instead of the economic cost and the loss of goodwill. Nothing good comes from forcing these Americans, which they are in all but name, to leave the country and start a new life somewhere that they’ve never been. Well, nothing good except for some politician to placate his over-zealous supporters by showing that he’s “tough on immigration” and “doing something about the problem” by turning productive, tax-paying friends into implacable enemies.

“Stupid” doesn’t even begin to describe it.