Articles

This Week in Tech Tinkering: March 21-27

For as long as I can remember, I’ve had ideas floating around in my head. I wonder if this exists, or that exists. How do I do that? How do I put this thing together with that thing and make a new thing and has anyone ever done it before?

This Week in Tech Tinkering: March 21-27

It seriously feels like every day I’m coming up with something new and exciting to work on building out. This week, I tackled put the finishing touches on a fun tool for a recent pick ‘em style bracket challenge and solved an actual problem I have on a now-regular basis. 


Spotter Boards


When I was in college, I was the play-by-play voice of our sports programs at a time when live audio streaming was still fledgling technology. 


At that time, we would have game notes, rosters, stat packs and a plethora of information to pull from when we would call a game on HavenSports Radio. As an sports information director, I can remember building those for our local media in Virginia, but always wondering if they ever actually used them. 


Since I moved back to Pennsylvania, I have called three college sporting events for a live video stream. That is a bit different than radio, but still is essentially the same. You need a lot of information to fill in the gaps for viewers at home so they can actually follow the game. 


Websites now contain all of the information we used to have printed and prepared for us. SIDEARM, Presto and the like how mastered the college athletics websites to a point that you just have to dig through the site and you can find all of the information you need. 


For a game this past week, that’s what I did. I printed rosters, stats, and wrote up my own notes but still felt like I was a bit off the mark at times. That feeling got me thinking there had to be a better way. 


Then I remembered watching the pros call games and they had these little sheets filled up with stats, roster information and everything else you could think of in a specific tool called a Spotter Board. 


I went to Canva and laid out what I thought I wanted but it was a painstaking process to update that information for the first time, let alone doing that before every game. I thought maybe Scribus or Apple Pages would provide me with a way, but then remembered I was able to build a very clean PDF processor using python for another project about a year ago. 


So, off I went to Claude and gave it my parameters for what I was trying to build and how I thought we might need to get there. Four iterations later, I had a python script and a terminal command to run that scraped the roster and stats PDF into a CSV file with a row per student-athlete. Bingo, I had the data part solved. 


Now, I need to turn the CSV into something human readable and functional. After five iterations, I had another python script that produced a solid visual similar to the other spotter boards I had seen online. 


But that really wasn’t enough. I know about Electron and the ability for apps to be written for cross-platform. So I had Claude write me an Electron app that I could turn into a DMG for my Mac and an EXE for my PC so I could run this locally without needing the command prompt. 


It built me two separate programs. One to create the CSV and another to create the PDF spotter board. In less than a day, I resolved a real world problem that I will put into action prior to the next game when I call play-by-play. 


March Matness Pick ‘Em


Two weeks ago, I mentioned my college wrestling pick ‘em style bracket challenge that I was building. Well, I used Gemini to convert pictures of the brackets into CSVs per weight during the bracket reveal show. That took a process that would otherwise taken an hour and turned it into a two minute process. 


From there, I needed to connect the site to Stripe to accept payment and build out a scaler that would visually show the size of the prize pot as people signed up. 


I was pretty nervous though, so I just shared it with family and my brother and I went head to head. The system worked pretty flawlessly, in fact it was so flawless that updating results was easy enough that he thought I had a connection to the NCAA to update the results due to it happening so quickly and the leaderboard updating at the conclusion of each match. 


There were 330 matches contested during the weekend and it quite literally came down to the final bout of the 330, I picked Jax Forrest to win the national title and my brother did not. Needless to say, I won with that pick. 


He did a contest at work that was all manual brackets and they had 117 people pick brackets. My hope is that I can run that for them next year and this technology can really make things easier to manage and more fun for participants. 


TennisStats


I have been working on my Tennis stats solution for a few months now on and off. 


A month ago, I thought I had it finished but my XML file syntax wasn’t right so I set off to fix that then got sidetracked. 


I mentioned GitHub previously and it’s been a godsend for versioning and token reduction in Claude. It’s been amazing to run a few commands and have a project backup in Github that can be re-synced quickly in Claude so it always has the most up-to-date codebase to work off of for reach project. 


This time when I got sidetracked, Claude remembered where I stopped and we just picked the project back up at the XML syntax step and corrected that within minutes. 


To test things end-to-end, I went to my alma mater’s website and pulled an old match. I added their rosters to a CSV, uploaded them to the system for each team and then built the match. 


After the match was built, it was time to enter final match scores. That was simple to do, but I had to consider tiebreakers and doubles scoring as one point. After that was accommodated for, the moment of truth was in the new XML build. It took about 15 minutes to fully correct, but once it was corrected the file syntax was perfect. 



I then started another match that had forfeits. Another thing I didn’t account for in the build out. That would take some backend work, but about an hour later we had the backend resolved and the ability to have forfeited matches and withdraws. 


The next step was statting a match with those situations and it worked flawlessly. 


I think the tool is ready for live use, I just need to get someone to try it out. 


What’s Coming Up Next?


Website Re-Build


Three years ago, one of my childhood best friends lost his step-father suddenly. The family rallied around the situation and elected to turn their grief into something positive and started a trust that would award a scholarship and other funds to folks in need locally in my hometown. 


Their big event is a golf tournament each year that has always had an incredible turnout. For the first four years, they have handled donations via checks and accepted payment the day of the event. Foursomes have sent an email to sign up and it has caused a log jam for them to handle as the tournament gets closer. 


Recently, I explored the option of building them a way to manage the tournament, accept donations, get foursome sign-ups and also separate payment for each participant and get other key information for prizes and event swag giveaways. 


That will be getting a re-build in the coming weeks so they are prepared for next year’s tournament.

Wordpress Plugins


My own personal site also needs some work. I have been building so many things from scratch, but still love the ease of Wordpress. However, I need some custom plugins for a variety of unique purposes for the things I’m building.

Track and Field Results Scraper


As I work with my alma mater more and more, I’m hearing of things that are pain points for them and other SIDs. The biggest headaches I’ve heard is that results from track meets are no longer provided in the same clean way they used to be provided. 


I built the staff directory scraper for work and the spotter board scraper and it got me thinking that scraping these results sites can’t be that much different. 


This week, I’m going to get to work on that solution so these schools can finally get the results they need in a clean manner that ensures they don’t miss a key result for a track and field athlete.