Andy Rowlinson
numberstorm.bsky.social
Andy Rowlinson
@numberstorm.bsky.social
Data insights and creator of mplsoccer, a Python library for football viz.
Getting close!
November 7, 2025 at 5:29 PM
Making some nice progress on the NFL pitches. 🏈
November 2, 2025 at 5:39 PM
I have a library for doing this quite nicely in Python, it's a sport library but I may split it off one day.

mplsoccer.readthedocs.io/en/latest/ga...
September 30, 2025 at 3:14 AM
Do you have different models you are trying compare? If you can get more than one metric, I would use a radar. I found this one for RAG from
www.deepset.ai/blog/generat...
September 30, 2025 at 3:12 AM
And quite a few games are decided by these ridiculous penalties.
September 17, 2025 at 6:25 PM
The chance of scoring from these wide areas of the penalty area from any action is ridiculous low
September 17, 2025 at 6:25 PM
I herby restart my campaign for my modest proposal to reduce the size of the penalty area to 30m wide. It might be more palatable to fans than Ted's arc from this pod.
September 17, 2025 at 6:25 PM
🚀 mplsoccer 1.5.1 released

@dmitry.mclachbot.com adds the capability to use custom slice labels in the pizza charts
July 10, 2025 at 4:54 PM
The release also has two minor formation changes
June 13, 2025 at 6:21 PM
🚀 @unravelsports.com added some new formations to mplsoccer for his formation detection work. Hopefully will see some results some day.
June 13, 2025 at 6:21 PM
I've turned off AI from Spotify. I didn't like it that when you'd listen to a specific artist that it wander off to other music after like 10+ songs.
June 3, 2025 at 3:01 AM
July 2021 and I remember trying to write this about 6-12 months earlier 🤣
May 29, 2025 at 11:44 AM
Almost looks like a court now
May 11, 2025 at 2:24 PM
Yamal is so good he pretty much broke my axes when I looked at young attacking outliers. Streets ahead.
May 1, 2025 at 2:59 PM
Baby steps 👣
April 26, 2025 at 4:45 PM
It's early days, but seeing if I can adapt mplsoccer to other sports
April 24, 2025 at 8:22 PM
I have successfully switched mplsoccer docs to install via uv rather than conda. It took a while to fix some install problems with lxml. I think Conda still wins is installing the complex C dependencies in some data science projects (e.g. PyMc), but worked around it here with apt install.
April 22, 2025 at 11:31 AM
✅ +2 points: win at all costs against the relegation fodder (17th-20th place). At most only allow one draw in these games.

Arsenal have lost at home to the currently 17th placed West Ham.
April 17, 2025 at 3:08 PM
❇️ +3 points: do not lose at home to the European Contenders (6-10th place). Incredibly the eventual champions have only lost 2 of these home games in the last fifteen years. The eventual champions tend to turn these games into wins.

Arsenal have 2 home draws against Villa (7th) and Brighton (10th).
April 17, 2025 at 3:08 PM
So how do Arsenal get over the line next season and pick up those extra points?

🟢 +2 points: pick up at least seven points against your two nearest title contenders.

So far Arsenal have gained just 1 of the 6 points available against Newcastle and Liverpool.
April 17, 2025 at 3:08 PM
The margins between winning the Premier League and being runner up are incredibly tight, just seven points separates the teams on average.
April 17, 2025 at 3:08 PM
Musing about the dark patterns you could build into a stadium design to cement home advantage

1/ screens showing the opposition making mistakes or missing penalties around their dressing room
March 18, 2025 at 12:47 PM
Looks like you need some Indian and Arfican representation.... mplsoccer use over the last 12 months.
February 3, 2025 at 3:32 PM
Found this paper today:
How training on multiple time slices improves performance in churn prediction.

They used some fancy cross validation, but I think the main principle was concatenating multiple time slices to improve how well the model generalised.
January 9, 2025 at 4:54 AM
While you often take the next shot if you lump it out into touch, it's negated by the risk of higher quality counter attacks so it ends up being a neutral strategy.
January 6, 2025 at 9:32 PM