The college basketball bracket … in ANSI

Title screen for “Bracket Browse,” an informational BBS door that lets you explore the NCAA tournament bracket.

Eleven years ago, when I worked as a designer of news and sports pages at a daily newspaper, I created a system to automate the production of our college basketball brackets in print. One year prior, data journalist Aaron Bycoffe pointed out on Twitter that NCAA.com was using a nice, clean JSON feed to power its basketball bracket.

I resolved to write a script that could parse the feed, and output the content we needed for our bracket as InDesign tagged text. It took a lot of work to set up, but I succeeded. I remember that first Selection Sunday, breathing a sigh of relief that my code worked.

The college basketball bracket, as published in the St. Louis Post-Dispatch, in March 2017.

And for the next six or seven years, that’s how we made the bracket each year. Instead of teams of people typing in team names and records by hand, then double-checking it against the website, my script did all the work. But the nights were still stressful. Each year, I worried that the NCAA would change its JSON format, and I wouldn’t know for sure until they began updating the bracket. Thankfully, they really didn’t make any significant changes until 2022.

Each year, when March Madness would come up, I would think to myself: “I should find a way to make a college basketball bracket in ANSI for my BBS.” (As one does, right?)

But by the time I had that thought, it was already too late … the tourney was underway, and I didn’t have enough time to work on it. March was always a very busy time for me at the newspaper: I’d be producing our voters guide, preparing for live election night coverage, and finishing a bunch of other features that usually run in the spring.

But I finally broke the cycle in 2022. I remembered early enough to make a coding sprint, and “Bracket Browse” was born. It’s a BBS door that comes in two parts.

The first part is a Python script that fetches the latest tournament results from the NCAA on a regular schedule (every 15 minutes, to avoid hammering their site), simplifies the data, and saves it as a JSON file on my BBS server.

The second part is the door itself, written in Javascript, which runs on my BBS. It displays the bracket, puts the team names, seeds, and scores where they’re supposed to go, then scrolls the bracket in response to user input.

This screenshot show the East region portion of the 2024 NCAA Tournament bracket. Only 11 games within the bracket will fit on the screen.

Since I already knew how to parse the data, the main challenge was designing the ANSI bracket itself, figuring out the smallest I could make it, as well as working out the positioning on the screen for all the elements. This was tough because of the limited real estate of a standard terminal (80 characters across, and 24 lines down).

I ultimately landed on a solution similar to that used by the NCAA’s web designers: let the bracket overflow the screen, and require the user to scroll to see the overflowing parts.

Anyway, projects like this are always fun for me. I love finding ways to take modern data streams and make them work within the limitations of old terminals: few colors, low resolution, no mouse. It’s very satisfying when you can make it work.

If you’d like to see “Bracket Browse” in action, you can telnet to my BBS at guardian.synchro.net. Once you’re at the main menu, the following sequence will launch Bracket Browse:

  • Press [X] for “External Programs”
  • Press [2] for the “Information” category
  • Press [1] to launch “NCAA Bracket”

If you’d like to see the code, or install it on your own BBS, check out Bracket Browse repo.


Posted

in

by

Comments

One response to “The college basketball bracket … in ANSI”

  1. Dee Avatar
    Dee

    This is awesome! That is all.

Share your thoughts!