BBO Discussion Forums: A debrief on problems with our last club tournament - BBO Discussion Forums

Jump to content

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

A debrief on problems with our last club tournament Getting tags wrong is not a good idea

#1 User is offline   paulg 

  • PipPipPipPipPipPipPipPip
  • Group: Advanced Members
  • Posts: 5,057
  • Joined: 2003-April-26
  • Gender:Male
  • Location:Scottish Borders

Posted 2024-March-08, 05:11

This is a detailed explanation about what probably happened on Tuesday and my recovery procedure. The aim is to give you more confidence in dealing with this when I'm not online.

The tournaments are set up with 20 boards in two-board rounds, pairs tournaments with either IMP or MP scoring.

We use four tags in the tournament description to help with the movement and running of the tournament. These are:
  • +allavail+
    This tag stops the tournament starting unless all registered players are online. If a tournament fails to start within 2 minutes, it is normally because someone has fallen offline: you can edit the tournament to remove this tag or you can 'Delete offline teams' from the tournament menu. The latter is easier.
  • +howell+
    This tag tells BBO to run a Howell movement rather than a Mitchell. This is used to prevent rematches and ensure one winner.
  • +rounds10+
    This tag tells BBO to stop the movement after 10 rounds, otherwise it will try and run a full Howell movement with all play all.
  • +hd+
    This tag is for 'human declares'. So if a player is replaced by a robot, their partner will declare even when it should be the robot.


BBO only interprets tags it recognises: misspelt tags, tags with additional spaces between the + signs, will not be recognised.

The +howell+ tag will change the initial tournament settings in terms of boards, and boards per round, to generate a full movement. However this is tempered by the +rounds10+ tag.

What I think happened on Tuesday is that +round10+ was used. This is not a valid tag as it should have been +rounds10+ (notice that an ess is missing). So BBO ignored this tag.

The +howell+ tag now took over. It has 24 pairs, so it needed 23 rounds for the all play all movement. Twenty boards had been specified, so one-board rounds were necessary to run the movement and get close to the original settings: this is why the tournament was seen as 23 one-board rounds.

At the time, as I thought the +rounds10+ tag was valid, I thought the tournament would end after 10 one-board rounds, but this makes no sense as I could see 23 rounds were scheduled. So I could have left the tournament running and we would have played 23 boards: obviously this would have been slower than normal, as it takes longer to play two one-board rounds than one two-board rounds.

So, at this point, I decided to cancel the tournament. Before I did this, I explained via chat to the tournament what we were going to do: cancel the tournament; create a new tournament to start in 10 minutes that everyone would need to register for.

I then edited the tournament and used 'Copy tournament' to create a new tournament that I could edit, reset the boards, and set the new start time, and I reduced the price to BB$0.50.

At this point I cancelled the original tournament.

My plan would have worked fine if I had spotted that +round10+ was invalid and changed it to +rounds10+ in the second tournament.

However, I didn't, so I started a tournament with the identical problem!

A quick tournament chat, second tournament cancellation and creating a new tournament to start in 10 minutes.

Creating the tournament from scratch seemed like a recipe for more mistakes since I was under time pressure, so I copied next week's tournament to create a new one. This involved changing the start time appropriately, changing the name of the tournament from Wilf White to McDonald Cup, and changing the scoring from matchpoints to cross imps. Rather than copying I could have just changed this specific tournament and created a new one for next week at a later date, but copying preserved next week's.

Just to note that copying another tournament only works for like-for-like events. You cannot copy a Swiss Teams and make it a pairs event.

This all worked and we eventually finished 20 minutes later than planned. Everyone re-registered twice without a problem and were very supportive of my efforts.

BBO refunded the tournament fees of the cancelled tournaments automatically, so they all got a cheap evening's bridge in the end.

Update: Short video about using the Copy tournament feature: https://www.youtube....h?v=pCnvQWO-VDI

This post has been edited by paulg: 2024-March-09, 04:08

The Beer Card

I don't work for BBO and any advice is based on my BBO experience over the decades
0

#2 User is online   pescetom 

  • PipPipPipPipPipPipPipPip
  • Group: Advanced Members
  • Posts: 7,328
  • Joined: 2014-February-18
  • Gender:Male
  • Location:Italy

Posted 2024-March-08, 13:31

Thanks for the detailed reminder about these issues.

It would seem both trivial and important for BBO to add a warning that it was ignoring a certain invalid tag.

In another (unrelated) incident, yesterday the Director of a tournament I was playing in had to cancel and recreate because (for the second time in a month) it had 39 rounds of 1 board. Don't ask me what he got wrong, but he deserved some help from the system.
0

#3 User is offline   paulg 

  • PipPipPipPipPipPipPipPip
  • Group: Advanced Members
  • Posts: 5,057
  • Joined: 2003-April-26
  • Gender:Male
  • Location:Scottish Borders

Posted 2024-March-09, 04:09

View Postpescetom, on 2024-March-08, 13:31, said:

It would seem both trivial and important for BBO to add a warning that it was ignoring a certain invalid tag.

I doubt it is trivial but it would be very helpful.
The Beer Card

I don't work for BBO and any advice is based on my BBO experience over the decades
0

#4 User is offline   barmar 

  • PipPipPipPipPipPipPipPipPipPipPipPip
  • Group: Admin
  • Posts: 21,415
  • Joined: 2004-August-21
  • Gender:Male

Posted 2024-March-18, 10:21

The problem is that the way the code works is that when it's making a making a decision it just looks for the specific tag it cares about. E.g. when determining the movement, it simply asks "Does +howell+ appear anywhere in the description?"

There's no part of the code that enumerates all the tags in the description, and there's no consolidated list of all the valid tags.

So we'd have to scan all the code for all the places where it searches for a tag so we can collect them into a list. And write something to extract all the tags. And it needs to be flexible, allowing both +howell+allavail+ and +howell++allavail+.

When this was originally designed, I don't think anyone expected it to be used as heavily as it is, it was intended for special exceptions. So it wasn't implemented elegantly. Now we have a total mess of disorganized checks.

#5 User is online   pescetom 

  • PipPipPipPipPipPipPipPip
  • Group: Advanced Members
  • Posts: 7,328
  • Joined: 2014-February-18
  • Gender:Male
  • Location:Italy

Posted 2024-March-18, 13:33

View Postbarmar, on 2024-March-18, 10:21, said:

The problem is that the way the code works is that when it's making a making a decision it just looks for the specific tag it cares about. E.g. when determining the movement, it simply asks "Does +howell+ appear anywhere in the description?"

There's no part of the code that enumerates all the tags in the description, and there's no consolidated list of all the valid tags.

So we'd have to scan all the code for all the places where it searches for a tag so we can collect them into a list. And write something to extract all the tags. And it needs to be flexible, allowing both +howell+allavail+ and +howell++allavail+.

When this was originally designed, I don't think anyone expected it to be used as heavily as it is, it was intended for special exceptions. So it wasn't implemented elegantly. Now we have a total mess of disorganized checks.


So reimplement it elegantly? It would only require a list of tags and a few lines of code to parse the string and fill out an array of tags (the equivalent of args on the command line in Unix) with warnings for unrecognised tags or parsing errors.
You wouldn't even need to go through the code and change all the searches for a tag to a boolean procedure call (tag,associated_value), desirable though that would be.
0

Page 1 of 1
  • You cannot start a new topic
  • You cannot reply to this topic

1 User(s) are reading this topic
0 members, 1 guests, 0 anonymous users