2024-2025 Membership Software System for the Hartford Bridge Club

Web-based membership/transaction database. Continue reading

Still in progress.


Since I had not really described in much derail any of the software projects that I designed and implemented over my long career as a cowboy coder, it seemed appropriate to provide quite a few details about my approach to this one, the first that I had attempted after the pandemic. My apologies if the entry became a little wonky at times.


The Hartford Bridge Club (HBC) has been recognized as the oldest such group in the American Contract Bridge League (ACBL), the governing agency for competitive bridge in North America. The club boasted more than five hundred members before the pandemic. Unlike most bridge clubs, it was owned by its members, who paid dues every year for the privilege of playing there. The club had a manager, but her contract specified no salary.1 The decision makers consisted of the usual four officers—president, vice-president, secretary, and treasurer—and six “trustees” who usually served three-year terms. Nominees for both officers and trustees were selected by a committee and elected at the club’s annual meeting in the fall. Additional nominations were possible, but usually the entire slate was elected.

In practice, of course, a lot of the responsibility was handed off by the Board of Trustees to the club manager.

In the fall of 2021 I was asked to serve on the HBC’s board. My three years on that board have been chronicled here. One of the most frustrating experiences for me and for many others else was the fact that the club seemed to have no definite notion of which people were actually members. The count done by the treasurer, Trevor Reeves, was significantly less than the “official” number reported by the club’s manager, Donna Feir. Both were well short of the pre-pandemic standard of over five hundred. No one seemed able to reconcile the two in a systematic manner.

Donna kept track of membership using the ACBLscore program provided by IBM. Its primary purposes were to set up different types of games and tabulate results, but it also kept track of who had played at the club. The software was written decades earlier in dBase or something similar that ran in DOS or windows. It did not employ a relational database. The files were in a proprietary format. The screens were antiquated. It performed many functions admirably, but there were limitations.

The discrepancies between membership lists persisted throughout the next two years. Near the end of 2023 I decided to try to address this situation. I interviewed most of the major players. I did not interview Donna because my experience was that she seemed very nervous about anything that might upset the club’s day-to-day activities. I learned that the club had several lists of members. No automated method connected them:

  • The ACBLscore list that Donna maintained could be used to print phone lists and masterpoint lists if those fields were kept up to date. Other reports were also feasible. Files with comma-separated values3 (csv) could be created for exporting to software. Many programs, including spreadsheets, could read these files
  • The club’s gmail account had a contact file associated with it.
  • The club used its MailChimp account for mailings to all members. Names and email addresses of members were stored in an “audience” from which files could be imported and exported.
  • The financial people on or associated with the board had at least one list.
  • Other ad hoc lists sometimes were created.
The member table.
Transaction layout.

I determined that a relatively risk-free system composed of a membership file and a transaction file stored on relational database that everyone who needed it could access would probably address many of these issues without requiring a great deal of work. In addition to the main files, I envisioned three background tables:

  • A very small table to discriminate between memberships, contributions, and any other basic type of transaction. There were not many of the latter, but better to plan than neglect.
  • The table for transaction types contained the a description, fiscal year2, and a code designating the main type.The last two were required fields.
  • A user table for security.

I envisioned only one very flexible output program that could simply count of the number of items selected, produce a list on the screen, or create a csv file to be downloaded. If that proved insufficient, I felt confident of being able to add more options later without a great deal of difficulty..

I also saw an opportunity to integrate data from the players table that I downloaded monthly from the ACBL roster. So, users could easily compare what was on the new system’s members table with what the ACBL had: address, phone numbers, email address, masterpoints, etc.

In my heyday I could have designed and coded this sort of project on an AS/400 in less than a week4. However, I had done almost no programming at all since the beginning of the pandemic and precious little in the previous four or five years. Furthermore, I would be working in a less forgiving environment than what I had been accustomed to at the turn of the century. I would not have the AS/400’s tools and IBM’s support. This project required an Internet-based system for others to use that ran on php scripts, a MySQL database, and an Apache server on a computer on which I rented space. I had only designed one web-based project, and it did not use the php programming environment. It also did not help that I was in my mid-seventies and becoming more senile every day.


In early 2022 I had undertaken a project to provide Ben Bishop, the president of the HBC, with breakdowns of the number of active club members in various masterpoint ranges. I had asked for a csv file that contained one record for each active5 member of the club. Someone extracted the data from the ACBLscore program that the club used, and I received it in early February. I then used MySQL to populate the “HBC?” field on the players table in the database that I had created for District 25. This information allowed me to provide the club with accurate and timely data.

After I had decided on the fields in the files and tables6 for the membership database project and used MySQL to create empty versions of each table, I wrote sets of php scripts for recording, updating, and deleting main types and transaction types. Since I modeled these scripts on ones that I had written previously, I was able to produce them relatively quickly. It was at this time that I decided to save all of the scripts in the same folder as the other php work that I had already done. This allowed me to have easy access to dozens of scripts that I had used repeatedly.

I wrote and tested the scripts on Asus, my local desktop system. I planned to copy it to my wavada.org account on the iPower system when enough had been completed that I could demonstrate its functionality to others at the HBC.

I then entered two main types and several transaction types for the 2022 and 2023 fiscal years.

The csv file from ACBLscore had columns for first name, last name, ACBL number, and email address. I loaded it into a spreadsheet. Nine records had no ACBL number. I assigned numbers 1-9 to them. This was safe because the lowest number used by the ACBL was 9999999. I also changed the first character for the Life Masters to the numerical equivalent. I imported the file to my local MySQL database and created one record in the members file and one transaction record for membership in 2022 and another one for 2023..

Next came the script for maintaining the member table. There was nothing remarkable about this program except for the fact that it showed a history of all of the transactions for the selected member and extracted and displayed pertinent information from the players table in the database that I created for District 25.

All of the fields from the original ACBLscore file—first name, last name, email address—as well as five fields that I added in anticipation of future needs—phone number, photo link, emergency contact name and phone, and concatenated name and town—could be changed.

I deliberately made no provision for deleting a member. I could not foresee any reason for deletion, and if someone did it accidentally, it could cause significant problems.


Coding the main program that users would use for data entry was the next target. Entering a transaction would probably be perceived as an extra step. Therefore, its design must emphasize speed and simplicity so that it did not seem onerous. Here is a screenshot:

Transaction types were ordered in the selection window so that those for the latest fiscal year were on top and obsolete ones were excluded. Members were selected from an alphabetical (by last name) list. The current date appeared as the default for both the Transaction Date and the Deposit Date. The Deposit Reference # and the Note were optional. It should be possible to record any transaction in under a minute.


When the transaction entry program was finished, I was familiar enough with the way that the system flowed that I could design the security. This was new for me. IBM provided security on the midrange programs that I had worked, and I had been the only user for my previous work for the district on wavada.org. I created a table of authorized users that had only two fields, user ID and password. I created a few records using MySQL. I then wrote scripts for a routine to check whether the user has provided the user ID and password or not. If not, it forced them to select the former from a list and enter the latter. The script was inserted at the beginning of every program on the menu.

I did not provide a way for anyone the HBC to maintain the user table. I figured that I might need to do that at some point, but I felt that I should control creation of user IDs at least during the installation and testing phase.


Before I coded the scripts for producing the output I designed and executed a very simple menu. It contained three sets of buttons.

The buttons on the left were for maintenance of the three tables. The middle group originally contained only the program to record transactions. The one on the right was for output.

I used the <BUTTON> HTML tag for the buttons. I had never used it before, but I had little difficulty in adapting to its syntax.

I decided that I needed two more sets of scripts for transactions. I had decided not to let users delete or edit them, but they certainly required a method of correcting mistakes. I decided to let them reverse the erroneous transactions and enter new ones. They also might need a way to edit fields that did not affect auditing such as the notes. If so, I will provide a way to do that.

The other item in the second column of the menu, “Change Member Numbers”, was designed to handle the situation in which a person who was not an ACBL member joined the club and was assigned a low number. If that person later became an ACBL member, it was important that everything associated with the low number be changed to reflect the new number. After that the old number could be reused.


When TSI was writing programs for its customers we would usually provide the output in the same format that the users were accustomed to or what they wished that they could have. Then we would design the selection screen so that they could get that output rapidly.

The HBC directors occasionally got reports or exports from ACBLscore. They first selected the format of the output. The next steps involved a very flexible method of selecting. It began with the window at the right that allowed them to specify which fields that they wanted to use for selections. This was a fairly sophisticated approach7, but most of the users were terrified by it.

The space bar key was used for selection. Depending on which field was selected, a new set of windows allowed them to specify the details of the “restriction”. A user who designated two or three restrictions might need to navigate six to ten additional windows to get to the next step. If “Cancel” was selected anywhere in the process, control reverted to the format selection window that preceded the one displayed here. When all restrictions had been specified, a new window to list the columns on the report appeared.

Once again the space bar key was used to indicate the fields. In this case the indicated fields would appear as columns on the report or the file exported.

There was no way to designate a set of fields that was commonly used. The user either needed to start with a blank slate and select the needed columns or select all first and then designate the columns that were not needed.

There was a lot to like in this approach. Virtually anything could be extracted from the master files. However, the process was quite involved and was subject to time-consuming mistakes and corrections.

When I had to use the field screen for a project to upload tournament results to the District 25 database that I designed, I had to memorize the selection routine, which was something like “Press the space bar key eleven times, press the down arrow six times, one space bar, five down arrows, one space bar, four down arrows, one space bar, OK.”

I had the advantage of not needing to provide a method as comprehensive as what the users struggled with. For example, close to 100 percent of the people in the club’s database resided in District 25. In any case the unit or district in which they resided was seldom useful to the directors or anyone else in the club’s administration. Many of the other fields were of no use at all to directors or anyone else at the club.

I decided to try to provide sufficient selection and reporting flexibility on only one screen. Here is what I eventually came up with8:

The screen had four sections. The upper left section was used for determining which transactions would be selected. Starting and ending values could be specified for the first five fields. The Masterpoints and YTD Masterpoints fields were the values at the time that the program was run, not the time of the transactions.

Only valid Type Codes and Main Types were allowed. The Fiscal Year was a two-digit number. Only transactions with a type code for which that year had been specified were selected.

If the User ID, which referred to the person who recorded the transactions, was specified, it was validated against the user table.

Reversed transaction and transactions for deceased members were ordinarily excluded. A user who wanted to include either of them could check the appropriate box.

If all of the defaults in the fields for the selection criteria were accepted, all living individuals who were members for the specified fiscal year would be selected.

The upper right section was for determining which columns should appear on the report. The member’s name and town always appeared. The two columns for masterpoints came from the roster file and reflected the most recent ACBL roster, not the one at the time of the transaction. The phone number came from the member record.

Up to three sort fields could be selected by clicking on the appropriate radio button. The same field could not be selected twice.

There were three possible kinds of output—the number of records selected, the number selected plus a list of the transactions, or a csv file downloaded to the user’s computer. This iappeared when the transaction type was set to M14, and otherwise the defaults were selected:

It is hard to see, but a slide bar was on the right so that the rest of the list could easily be viewed.

When I showed the system to Ben Bishop for the first time during the late summer of 2024 the screen listed all three types of reports, but the one to produce and download the csv file did not work.

I researched on the web how to execute the download of the csv file in php. I found several articles with useful samples. I had expected that I could do it by defining a function that was invoked when the user specified the radio button for “Download a csv file” and then clicked on the Submit button. I was wrong. It worked when the URL for the script with SQL statement embedded in the code was executed directly in the browser, but it did not work when the SQL statement was passed to the same script through an argument for a function arguments. It just displayed the contents of the csv file on the screen.

I beat my head against this wall for an embarrassingly long time. I eventually realized that the problem was that nothing could be displayed on the screen when the csv script began. Everything must be initialized as it was when the URL was executed directly in the browser. I considered creating a file in the database that was only used to hold the SQL statement, but if two people were downloading at the same time, confusion might result. I finally figured out that I needed a JavaScript routine that passed the variables. The key statement was f.action = \”$Bin\” + \”HBC_CSV.php?sq=$sq\”.

  • The backslashes before the quotation marks indicated that the quotation marks were to be preserved. They did not indicate the beginning or end of a string constant.
  • The $Bin php variable delineated whether the script was running on the local server or iPower. HBC_CSV.php was the name of the script that executed the SQL statement, put it in csv format, and downloaded it.
  • The question mark after php indicated that a list of variables and values followed.
  • The $sq variable contained the MySQL statement.

I was quite excited when I finally got this to work.

The members table that I showed to Ben did not have a way of flagging records for deceased members. I added a field for that and a checkbox to the output selection screen to allow inclusion or exclusion.

At the first presentation the output screen did not have the list of columns to be included. Providing this flexibility proved to be much more time-consuming than I expected. It was difficult enough to put conditions in front of every statement that referenced any of the fields. It was very easy to get the syntax slightly wrong or to leave out a brace, bracket, parenthesis, or semicolon. When that happened, the syntax error that was thrown returned a message that something was “unexpected” in line 123 (or whatever the line number was). The cause of the error was usually something missing either before or after that line. My seventy-six year old eyes—never that good since the third grade—tired of looking for likely suspects quite easily.

The worst was the use of a dollar sign as the first character in every variable name. I had spent three decades placing dollar signs as the last character in names of string variables. I discovered that I had not broken myself of that habit. The very last syntax errors that I corrected were two occasions when I overcorrected for my BASIC programming habits and placed two dollar signs at the beginning of a variable name in the csv script.


On January 18 I went into the club an hour before the Saturday afternoon game. I seated myself at the “old” directors’ computer in the back room. A search program that I had never seen was in the middle of the screen. I closed it down and deleted the “run-time” messages. I then was able to see the icon on the desktop for ACBLscore. It was a little different from what I was used to, but I was able to find the program to create a csv file.

I had brought a flash drive with me. I tried to insert it into one of the USB ports on the box on the floor next to me. I had difficulty fitting it in. I had to turn it around so that it was going in with the logo facing to the right.

I ran the exporting program. When I went to select a group I was surprised to find over a hundred choices. I first looked at the ones that started with D. None of them looked like they might stand for deceased.

In the H’s I discovered what I was looking for. H00 had only one record for Marsha Futterman. It must have been a test. H01 through H26 had hundreds of records. There were also mysterious groups for H, H2, and H35.

I selected H01 and specified six fields: first and last names, ACBL numbers, the two phone numbers, and the email addresses. I saved the file onto my flash drive as H01.csv. I then repeated the process for H02 and so on.

At about the time that I was working on H05 a group of novices from the beginner class took seats in the back room and peppered Bob Hughes with questions. I tried to ignore them, and I wished that I had brought my earplugs, but I forgot them. The only thing that required much concentration was choosing a name for the file that matched the group selected. I made a few mistakes that I noticed almost immediately, but I feared that I may have saved the same group under two different names at least once or twice. I finished with H25 at about 12:45, fifteen minutes before game time.

After the game, in which I played pretty well, I drove home and immediately downloaded the twenty-six files onto Asus. I loaded them one-by-one so that I could count the records. I found the following anomalies: H02 had a small number of records that included players (Sue and I) who were definitely not members in 2002. H09 was missing entirely. H11 had only 306 records with no Wavadas. H15, H16, and H17 all had 508 records. H22 and H23 both had 430 record.

Since I was also playing on Sunday, I resolved to come in a little early and redo those files. In that session I was careful to upload H09, H10, H11, H15, H16, H17, H22, and H23 into the correct files. After those files were processed, the only file that seemed really erroneous to me was H02.

On Tuesday I saved H02 again. When I restored it, I was satisfied with the look of the data. I noticed that two new players were entered twice in H23, and one of them had been entered twice again in H24.


I started the upload process by creating database files named h01 through h25. Each contained the same fields as the associated Hxx file in the same order.

The biggest difficulty I that encountered in writing the script that used the Hxx files to add records for new members and transactions for everyone involved the players who did not have ACBL numbers. The program that I had written a few years earlier to update the “HBC?” field on the player table skipped players without ACBL numbers. I started with that program, but I was stumped by the step of automatically assigning low numbers to the ACBL number field because there was no completely reliable way to tell if the member had already been added to the database with a low number. In retrospect I think that I should have been able to figure it out, but I decided to assign numbers to the Hxx file and save it as HxxA.

At first I started with 1 and incremented by 1 or, if I could not remember the last one I used, I skipped to a number that I was certain that I had not used and incremented from there. After the first few years, I decided to start each file with xx times 100. So, the first number used in processing H24 was 2400. I saved the result as HxxA.

To make sure that I was not assigning two different numbers to the same player I wrote a SQL statement to list on the screen all the existing members with low numbers in the same order as the HxxA file. When I came to a member with a blank ACBL number or NM in the field, I would scroll down to the appropriate part of the SQL list and, if I found the matching name, I entered the previously assigned number. If not, I entered the next available number as explained above. A few of the records had other entries that I had to fix by hand. At least one started with a # sign.

When I reached the bottom of the HxxA file, I scanned for blank records that I missed and searched for NMs that I had skipped.

I kept track of my progress on an 8½x11 sheet of paper. There were four steps. The first step, “N” on the sheet, stood for the process of inserting fake ACBL numbers into the spreadsheet. “I” stood for the process of importing the HxxA.cvs file into the MySQL file, hxx. The only trick to this was to remember to use the TRUNCATE command to empty the file if this was not the first time.

“C” stood for running the script that I wrote to create the transaction records and, for new members, the member records. This crashed about half the time, but I seldom had difficulty ascertaining what the source of the problem was. It was usually that one of the values in the ACBL number field was not valid. I had to fix the spreadsheet and go back to the “N” step.

“T” stood for comparing the the number of records reportedly written on the file with the number of records on HxxA.csv. After the first few files these always matched.

The last step, “L”, required that I run the list program on the menu with the default parameters to make sure that it produced the same number of records as the file contained. I was shocked to find a discrepancy when I ran it on the second or third file. After a little research I discovered that the “JOIN” clauses were coded incorrectly. I needed to “LEFT JOIN” members to the trans file and the players file independently. I was happy that I discovered this before anyone tried to use it.

At the end of the migration process I discovered that I had assigned two separate bogus ACBL numbers to a handful of members. If I had added a step to check for this, I would have saved myself some grief. I could have easily fixed the erroneous records using SQL statements, but I remembered that the ACBLscore program had an option to combine two players’ records into one. I decided to add a new option to the transaction section of the menu to do the same thing.


The program to combine the records for two members was added as the fourth option on the center section of the member. The user had to designate two members—the erroneous one and the one to be used henceforward.


1. An annual “honorarium” was voted annually to the manager and other officials.

2. The club’s fiscal year began on November 1. Thus fiscal 2025 ran from 11/01/24 to 10/31/25.

3. A file with the extension “.csv” contains rows that are formatted identically. Fields (columns) are separated by a comma or another delimiter. Spreadsheet programs such as Excel can read these files.

4. I could code extremely rapidly in the native environment on the AS/400, but the resulting data entry screens, although equally functional, would have been much less attractive. When the company closed in 2014 there was no way to export a csv file on a user’s computer. That would take several steps using third-party software. The AS/400 could serve as a file server for php programs, but if that method were used for a project like this, development would be much more tedious and time-consuming.

5. Some club members were not required to pay the prescribed annual dues in order to participate as members. I assumed that every person on the file had paid the dues, but there 6ere doubtless some who were not required to.

6. There is no fundamental difference between a table and a file. I have always used the word “table” to delineate files that are established at the beginning have a relatively small number of records, and are primarily used to maintain consistency. The other two files in this system can be maintained at will and are much larger.

7. Why “unit” and “gender” were capitalized on this window remainder a mystery throughout my investigation.

2023 May 12-December 31

My activities for the first part of 2023 are chronicled here. On May 13 Neil Montague finally succeeded at using MailChimp to send out an email for the New England Bridge Conference! My travails in trying to turn over my … Continue reading

My activities for the first part of 2023 are chronicled here.

On May 13 Neil Montague finally succeeded at using MailChimp to send out an email for the New England Bridge Conference! My travails in trying to turn over my responsibilities in these and other matters involving communications are detailed here. This was a great relief for me. Some of the emails that I had sent in the previous few months promoted online events that paid gold masterpoints. Each one made me cringe.

On the same day Dan Jablonski finally sent me an email casting the deciding vote in the Weiss-Bertoni award. You can read the details and discover who won the award in this blog entry.

On the 17th I mowed the lawn for the second time. The high pollen content of some areas of the yard made it somewhat difficult, as it has in every May for the last decade or two, but I completed the task without resting.

June

On June 1 I tried to beat the heat by departing for my 5-mile walk at 8:30AM. I nevertheless found it as much as I could bear,1 and there was precious little shade. I noticed that the SmartFuel gas station on the north side of Hazard Ave. near the South Road intersection had closed after only a few months of operation. It replaced the Shell station that had occupied the location for decades. Signs said that it would become a Big Y Express station.

Raveis Realty, located in a house a little bit to the east of of the station, has also apparently one year. A few years earlier a spectacular display of tulips appeared near the west side of the Raveis building.

Zillow’s photo of 2 Park St.

The corner house on Park St. (the street address is 2) is somewhat mysterious. It had appeared empty with no “For Sale” sign for months. I saw two girls there the previous week. It seemed empty again on this occasion.

In the last quarter-mile I was passed by a female walker. I was pretty sure that that had never happened to me before. I did not like it, but I was too exhausted and hot to try to hold her off. My speed and endurance both decreased noticeably as I got older.

It was still very hot on the 2nd, but then it turned much cooler with a misty rain. I attended both days of the sectional in Johnston, RI, and played with Abhi Dutta. Details have been recorded here.

On June 7 forest fires in Canada were causing in the local area thick haze from the smoke. It was quite eerie and absolutely unprecedented, at least in my lifetime. Two days later the air quality still poor.

I learned that day I should have closed my dad’s IRA account at Country Club Bank in Kansas City earlier. There was not much money in it, but it took weeks to get them to send me a check. .Deidra Tossato finally sent me the form fifteen days after I requested it.

The Hartford Bridge Club (HBC) scheduled an individual game for June 20, the first day of of the regional tournament in Nashua, NH. I played at the HBC, but I did not enjoy myself, and I did not score well. My adventures in Nashua are recorded here.

On June 28 I played with two new partners—Jim Macomber at the HBC in the morning and Barb Gallagher at the Simsbury Bridge Club (SBC) in the evening.

On June 29 and 30 my nose ran all day. Despite this I had no trouble sleeping. I had no fever or any other symptoms of Covid-19.

July

I woke up on July 1 after ten consecutive hours of sleep, close to my all-time record. I experienced a little dizziness when I arose from bed, but it disappeared shortly thereafter. I tested negative for Covid-19 using the rapid antigen test that the federal government supplied for free.

Sue’s cousin from Michigan (on the Locke side) was in town. Sue visited with her, but I did not go. We visited her, her parents, and her sisters on our trip to Michigan in 2008, as described here.

Up to nine inches of rain fell in sections of western Connecticut on July 10, but Enfield received hardly any. The weather definitely seemed more extreme in the twenties, but it is still rather mild in southern New England.

The next morning the temperature dropped to 66° at 4:30. It was the first time that it had been below 70° in weeks. It rose to 90° that day and much hotter on the next. There was no bridge game at the SBC on either the 5th or the 12th.

On July 13 at 5:44AM the bookshelf in my bedroom came crashing down. It missed my head by about two inches. If it had hit me, I would have been seriously injured. The shelf disappeared into the black hole of Sue’s “sewing room”.

On July 14 thunderstorms began at 2:30AM. Flooding wreaked havoc in the northwest part of the state. The Connecticut River was 6′ above the flood level. Damage, however, was minimal.

John Willoughby, the president of the HBC, died on July 14. Both Sue and I had been his occasional bridge partner. I worked with him on the Planning Committee when he was the vice-president.

On the following day I heard Steve Jarmoc, a local farmer and ex-politician, on the radio complaining that the flooding in Enfield had caused him crop damage. The land around our house, which was perhaps two miles from his farm, was absolutely dry. Furthermore, Jarmoc mostly grew tobacco—an addictive drug that caused cancer and other ailments. In the previous few years he had converted much of his land to fields filled with solar panels. I seriously doubt that he suffered much damage, and what if he did? Every business suffered occasional setbacks.

I had a horrible bridge day on July 23. Donna Feir reported that the HBC now had 415 members2. It was 89° and sunny when I left after the conclusion of the Board of Trustees meeting. Up to 91° on I-91. By the time that I reached home it had fallen to 68°, and it was raining buckets. I was very relieved to find that there was no flooding in our basement.

August

On August 3 I discovered a document with my notes about the San Diego vacation that Sue and I took with Sue in March of 2006. In the evening I also found a paper bag with flyers and souvenirs from the same trip. I deleted the 1,000+ words that I had previously written about this adventure and started the entry, which you can read here, anew. It was rather thrilling to relive that week.

On the next day I walked five miles in the Enfield Square Mall. A strange new store, Da Money Pit, had opened. They seemed to sell sneakers, ball caps, and sweatshirts.3 The sneakers on display were wrapped in plastic, for no obvious reason that I could see. My “ghost walks” in the mall have been detailed here.

On the 5th the HBC held a memorial to honor John Willoughby. One dog and lots of people, including a surprising number of children, who were relatives or friends of John’s attended.

The next day I learned that Maria Van Der Ree, who was over ninety, had Covid-19. She recovered within a reasonable period of time.

At the HBC John Calderbank and I had a 54 percent game on August 8. That was by far our best performance up to that time. On the next day I scored 58% at the HBC with Barb Gallagher. There was no game in Simsbury because we only five pairs registered to play.

On August 9 the big news was about the devastating fire on Maui. The most destruction was in my favorite town, Lahaina, where 217 buildings destroyed or damaged. The gigantic tree that was the symbol of the town was badly damaged, but there was hope that it would recover.

Mark Oettinger.

On the same day I learned that Mark Oettinger had “resigned” as vice-president of the New England Bridge Conference. I later learned that Peter Marcus and his friends had pretty much forced him out at a meeting of the Tournament Scheduling Committee that I was unable to attend. This news saddened me greatly. I liked and respected Mark.

On August 12-13 I played in the Western Mass sectional in Great Barrington. That adventure has been described here.

On my birthday I played with the woman whom I had been mentoring. Fran Gurtman (introduced here). We did not do well. Sue bought me three shirts and some shorts from Kohl’s. Sue and I ate supper at Francesco’s in Suffield. I ordered Linguini d’Alessandro, which was chicken, sausage, peppers, mushrooms in wine sauce. I really enjoyed it.

On August 23 Sue brought cake to Eno to celebrate my birthday, but she did not arrive until just after 6:15. We had 4 tables.

On August 24 Fran and I had a 52 percent game, which was an improvement of 18 percentage points in our previous game. I made a costly mistake on the last hand.

On August 26 fifteen pairs came to the HBC for the Saturday afternoon game. We played a Swiss with 7.5 tables. It was the biggest turnout on Saturday by far since the pandemic. Peter Katz and I had a 76.1 percent game, by far my best score ever. More details can be found here.

The Ocean State Regional tournament was held August 29-September 1 in Warwick, RI. My adventures there have been cataloged here.

September

September must have been a boring month. The only notes that I recorded concerned the loss of my Costco Visa card from Citi. The details of this remarkable event have been recorded here.

The University of Michigan football team, one of the favorites for the national championship, started the year with five easy victories. They defeated East Carolina 30-3, the University of Nevada at Las Vegas 35-7, Bowling Green 31-6, Rutgers 31-7, and Nebraska 45-7.

Coach Jim Harbaugh did not participate in the first three games because he had purchased lunch4 for a prospective player. Four interim head coaches were assigned. Jesse Minter coached the first game and Sherrone Moore the second. Jay Harbaugh (Jim’s son) and Mike Hart each coached for one half in the third game. A random co-ed could have coached for all three games, and Michigan would still have won them all easily.

October

On October 3 and 4 I moved all of my programs and data files from my Lenovo desktop that was running Windows 10 to the Asus computer running Windows 11. I documented the experience here.

On October 10 I discovered that Windows did not want me to use Shuffling, the Dutch program that I had downloaded to creates pbn files. I did anyway. However, I also received an error in Dealmaster Pro. I had to reconnect the Lenovo box and run it there. This problem was fixed, but I did not record how.

I decided not to play with Alan Godes at the regional tournament in Marlborough. It turned out that he could not play on the only day that I needed a partner. I asked Ros Abel to play in the sectional in Orange, but she was not available. .

As usual, I started my preparation for lunch by boiling water for ShopRite’s store brand of chicken noodle soup. I was shocked to discover that the package contained no noodles at all. I have opened hundreds of these packages over the years, but this had never happened before.

This box in question bore the ShopRite brand, but at some point in the year the store stopped selling the product. A short time later a new brand called Bowl & Basket appeared. The price of a box containing two envelopes of soup was $.99 before the pandemic. As of October of 2024 the price had not changed, and the quality and quantity of the contents remained the same, at least apparently. I could not name another food item of any description that maintained its pre-pandemic price.

I woke Sue up at 6:30AM on October 11: She was scheduled for jury duty in Hartford. She left the house at 8:08. When she arrived she learned that her service was not needed. That evening Kathie Ferguson returned to the SBC on that same evening after a lengthy illness..

Throughout the last few months my car had repeatedly flashed the message that one of my tires was low on air. In the past this had happened once or twice a year. On those occasions I had just brought my car into Lia (without an appointment), and told them about the message. They checked all four tires, filled whichever one was low, and I drove away. The process took perhaps fifteen minutes.

On October 23 I brought it in to Lia Honda again. Because it had happened several times in the recent past, I asked the mechanic to tell me which tire was low. He reported that one of the tires needed patching and told me to sit in the waiting area. After 2.5 hours the work was completed, but the attendant told me that there was a problem with the brakes. I made an appointment for three days later to address this problem, which necessitated spending another few hours in the waiting area.

On October 27-29 the Connecticut Bridge Association held its fall sectional in Orange, CT. The details are posted here.

After only one day of rest I attended the regional tournament in Marlborough, MA. It ran from October 31-November 4. My thoughts about this event have been recorded here.

The Wolverine juggernaut continued with three more easy victories. They defeated Minnesota 52-10, Indiana 52-7, and Michigan State 49-0.

November

On November 16 I sent a recap of the attendance at the sectional in Orange. I have posted it here. The only person who responded to it was Cindy Lyall, who agreed with my assessment.

From left: Jan, the drummer, Peggy, the bass player, and Patty.

On the next evening my wife Sue talked me into attending a concert by the Patti Tuite band at the public library in Ellington. Although I was not crazy about the music, which was mostly blues, I definitely appreciated the skill of the two main musicians—Jan on the synthesizer, flute, and key-tar and Peggy on the alto sax, violin, and harmonica.The band also had a guy on bass guitar and a female drummer. The one number that I really liked was an instrumental with a complex melody that was unlike anything else that they did. Sue liked the entire performance. Patti announced the name of it, but my notes did not record it.

On November 18 I emailed to members of the Executive Committee my attendance analysis for the tournament in Marlborough. It has been posted here. Both of these reports required quite a bit of work because I no longer had access to the ACBL’s files that provided attendance information in a comprehensive fashion.

On the next day Sue and I decided not to drive up to Burlington, VT, to visit with the Corcorans on Thanksgiving. They had invited us much earlier. However, their house would be full of relatives, and we would probably be “fifth wheels.” We felt our of place the last time that we joined them.

On November 22 my Honda warned me that the battery on the fob was low. Over the next two days Sue located a suitable batter. I managed to replace the old one without much difficulty.

November 23 was Thanksgiving. Sue cooked a turkey. We ate our meals on TV trays and tried to think of something that we should be thankful for. I did not record that anything occurred to us.

A very strange thing happened in the last round of the game at the HBC on November 29: Eric Vogel and I were playing against Tom Gerchman and Lea Selig. After the bidding Tom announced that his integrity was intact because his partner Lea Selig bid 6, not he. He then disclosed that he had previously overheard Mike Carmiggelt talking about the hand.

I put my cards in the carrier, said “I quit”, got in my car, and drove home. Tom later sent me an email in apology. I replied, “No harm, no foul.”

That same night Ken made many strange bids at the SBC game. He invited to game knowing that we had a maximum of 24 points and only 8 trumps. I recorded that I did not see how the SBC would be able to hold any games in December. I was right. All of the games for the month were canceled.

Michigan finished its Big 10 season with four more victories to finish the regular season undefeated and ranked #3. They defeated Purdue 41-13, Penn State 24-15, Maryland 31-24, and Ohio State 30-24. Sherrone Moore was the head coach on the sidelines for the last three games because Harbaugh was suspended because of a ludicrous sign-stealing incident engineered by a rogue staff member named Connor Stalions.

December

The new month was welcomed by the first flower on the larger Christmas cactus that had been in Denise Bessette’s office. The other one displayed its first flower on the 18th.

On December 2 Michigan shut out Iowa 26-0 in the Big 10 Championship game. It was U-M’s third consecutive win in that game, and the tenth consecutive win for the team representing the East Division. Michigan, now seeded #1, was scheduled to play Alabama in the College Football Playoff semifinals in the Rose Bowl on January 1. There was some controversy because Alabama was chosen to play over undefeated Florida State despite the fact that the Tide had lost to Texas in September.

The temperature on December 15 and 16 reached the fifties. I walked five miles outside on both afternoons.

I learned on December 17 that Eric Vogel had contracted Covid. I wore a mask at bridge all week.

On December 20 the electrical connection for my cellphone’s charger stopped working. I had to plug the cable into a USB port on Asus. This was only a minor inconvenience; Asus has many ports, four of which are in front. I was astounded to learn that Sue had no recollection of my previous phone dying while I was on the 2022 cruise that has been described in detail here. We went to the Verizon store together, and the salesman showed me that the Pixel 2 I had been using was swollen in the middle. He said that it was probably dead. A little later Sue bought me a refurbished Sony Galaxy. I found this lapse of memory quite concerning.

On December 29 I received an mail from someone named Frank Wilson5 asking about downloading a zip or pdf file of Stupid Pope Tricks. I tried to reply to his reply address, fdmw@gmail.com, but it was blocked because the address was not valid. I had no idea what that was about.

On the next day I (and many others) received a shocking email from Peter Marcus that indicated that he was resigning from all his posts in the New England Bridge Conference. This reportedly had something to do with scheduling conflicts with another district”s tournament.


1. At least once in the nineties I ran more than five miles when it was over 100°. When I was in my twenties I considered no temperature to be too hot for any athletic endeavor. Boy, has that changed!

2. It was incredible to me that the HBC did not actually know how many people were officially members. Eventually, I wrote a set of programs that would allow the club to keep track of the membership—dues, contact information, and other things. The story of that system is documented here. The number of members exceeded 500 in 2019, the last pre-pandemic year.

3. The store is still open in October of 2024, but in all my trips to the mall I had seen fewer than a handful of customers.

4. This infraction was widely ridiculed by Michigan fans and called Hamburgergate. It was common knowledge that many large programs arranged for players to be paid under the table. By 2023 the NCAA had ceded the rights to the names, images, and likenesses (called NIL) of the players to the players themselves. By the next year some of them were earning upwards of $1 million to play their favorite sport for a few months out of the year.

5. Of course, I immediately thought that this might be J. Frank Wilson, who, with support from the Cavaliers, in 1964 recorded the remake of Wayne Cochran’s “Last Kiss”. It made it to #2 on Billboard.