Sport, data, ideas

Category: Data (Page 1 of 3)

Parsing the Forbes sports rich list

I always enjoy the Forbes Sports Rich list. It formed the basis for a chapter in my book, and tells you a lot about sport once you dig into the figures.

For instance, looking at this year’s list, here are a few observations.

  • Roger Federer is a sponsorship machine. $65m in endorsements puts him $13m higher than LeBron James in second place.
  • American football players don’t get marketing dollars. The highest-sponsored is Drew Brees, and he’s on $13m in endorsements, which is less than his salary.
  • Boxer Floyd Mayweather still rakes it in – his $275m in pay is three times more than any one else. It pays to punch, with Conor McGregor fourth in the overall list.
  • Basketball pays overall – 40 of the top 100 represent that sport.
  • There are zero women on the list. That’s not good. In previous years, at least a few female tennis players made it. We seem to be regressing, either in who we value in terms of marketing or how we pay sports stars.

The most interesting way of ordering the list, in my view, is by the ratio of endorsements to pay.

This naturally shows up individual sports where some players have had poor seasons but are trading on reputation – Tiger Woods, Novak Djokovic. There are sports people where the sport pays (relatively) poorly, but profile is high – Usain Bolt, Virat Kohli.

But it also shows how some stars are not making the most of their winning seasons. For instance, golfer Justin Thomas won $21m in prize money, but netted just $5m in sponsorship. Surely he’s going up? And if Lewis Hamilton can get $9m in sponsorship, how is Sebastian Vettel getting only $300k? They get the same pay, according to Forbes.

Here’s my Endorsements / Salary list – for those where Endorsements are higher than Salary.

Overall Rank Name Pay $m Salary/Winnings $m Endorsements $m Sport E/S
16 Tiger Woods 43.3 1.3 42 Golf 32.3
45 Usain Bolt 31 1 30 Track 30.0
35 Kei Nishikori 34.6 1.6 33 Tennis 20.6
86 Novak Djokovic 23.5 1.5 22 Tennis 14.7
26 Rory McIlroy 37.7 3.7 34 Golf 9.2
22 Phil Mickelson 41.3 4.3 37 Golf 8.6
7 Roger Federer 77.2 12.2 65 Tennis 5.3
83 Virat Kohli 24 4 20 Cricket 5.0
23 Jordan Spieth 41.2 11.2 30 Golf 2.7
20 Rafael Nadal 41.4 14.4 27 Tennis 1.9
6 LeBron James 85.5 33.5 52 Basketball 1.6
11 Kevin Durant 57.3 25.3 32 Basketball 1.3
8 Stephen Curry 76.9 34.9 42 Basketball 1.2

And here’s the sports list.

Basketball 40
American Football 18
Baseball 14
Soccer 9
Golf 5
Boxing 4
Tennis 4
Auto Racing 3
Cricket 1
Mixed Martial Arts 1
Track 1

Lastly, here’s the forbes rich sports list as an Excel file.

Britain’s voting system is delivering what the public want

Hello hung parliament: Britain is back into deals and power arrangements, after just two years of Conservative majority. Another election in 2017 is a possibility if things fall apart.

The question I want to explore is this: is the first-past-the-post system (FPTP) delivering what voters want?

FPTP is one of the main criticisms of the UK political system. Each MP just needs to win the most votes in a seat, which can mean that they need to win far fewer than half the votes to be elected. That means smaller parties can pick up lots of votes, and get no seats, and results are skewed towards the winning party.

The most egregious example of this is the UK Independence Party – UKIP – in the 2015 election. With 12 per cent of the overall count – 3.8 million votes – they won just a single seat. FPTP clearly screwed UKIP in 2015.

This is nothing new. The Liberal Democrats have always suffered in this way, and their manifesto invariably contains a section on voting reform, moving to systems such as single transferable vote.

Whatever the merits of other systems, the question for the British people is not just about smaller parties. Does FPTP skew the result towards one or both of the two main parties, Conservative and Labour?

To assess whether FPTP is delivering an unfair outcome, the best measure is to look at the percentage of seats won compared to the percentage of votes won. This takes into consideration the different number of seats available in each election, and (importantly) voter turnout.

A perfect system would deliver a score for each party of 1. That would mean votes translate into seats at exactly the same rate. A score above 1 means the party gets more seats for their votes; a score less than one is the opposite, the party gets fewer seats per vote.

The Lib Dems have clearly suffered, with their scores in the last 10 elections running like this: 0.25, 0.16, 0.38, 0.44, 0.43, 0.42, 0.17, 0.15, 0.14, 0.13.

UKIP’s 2015 result was 0.01 – far worse than anything the Lib Dems have endured. (The Green party’s score in 2015 and 2017 was 0.04 and 0.10 – also a terrible ratio).

Some smaller parties lose out – that’s clear. Others do better – the Scottish National Party have in the last two elections got around 1.8 – in other words, close to twice the seats that their vote share suggests. Sinn Fein, the DUP and Plaid Cymru have also all scored above 1. The lesson is that smaller parties do well if their vote is concentrated in a region, rather than spread out over England.

But I think the bigger issue is whether the main parties are getting seats far out of proportion. That’s a more alarming question, as it has far greater impact on whether a party can force through legislation that half the country doesn’t want.

The latest election has in fact delivered the fairest set of results in the last 40 years (looking at the last 10 general elections). The Conservatives got 1.15 seat share per vote share; Labour got 1.01. This is the only time in the data that I’m looking at that the winning party was below 1.2. FPTP is not the problem here in terms of delivering voter intention. In fact, a hung parliament is exactly reflective of the votes cast. Continue reading

The 10 best sports graphics and data visualisations of 2016

It’s year-end journalism time! My non-scientific round up for 2016 of the best sports graphics… drum roll please.

THE WINNERS (I couldn’t decide between them)

The Sumo Matchup Centuries In The Making
By Benjamin Morris
Publisher: FiveThirtyEight
A beautiful history of Sumo wrestling. Stunning photos, great charts – this is a model of modern data journalism coupled with great writing and presentation.

The NFL Draft
By Tim Meko, Denise Lu, Bonnie Berkowitz and Lazaro Gamio
Publisher: Washington Post
The NFL draft is a whole sport in itself: some teams play it far better than others. The WashPo nails a mix of interactivity, user input (pick your team), long-scrolling with story-telling to amazing effect. It’s not a “beautiful” graphic, but instead a whole application delivered brilliantly. Quite amazing.

AND EIGHT GREAT OTHERS

Premier League 2015-16 – the story of the season
By Neil Richards
Publisher / Platform: Tableau
Not mobile-friendly, but a great way to replay the 2014-15 season. Interactivity that’s integral rather than gimmicky. And it even has managerial sackings!
Notable mention: see also the FT’s rise of Leicester.

Perfect, Freaky Olympic Bodies
By Joshua Robinson, Paolo Uggetti, Siemond Chan and Mike Sudal
Publisher: Wall Street Journal
One of a great crop of Olympic graphics this year, this had no interactivity at all – just a very arresting set of images delivered with great style, looking at some extreme types of Olympic physique.

How Nafissatou Thiam beat the odds to claim the heptathlon gold in Rio
By Niko Kommenda, Apple Chan Fardel and Monica Ulmanu
Publisher: The Guardian
A lovely interactive graphic, coupled with photos and a great story to show how the heptathlon was won. Thiam needed the performance of a lifetime to steal the crown from the favourite. A good example of clean graphics enhance what would otherwise have been a great story in any case.

A visual history of women’s tennis
By John Burn-Murdoch
Publisher: Financial Times
This is how to do sports history. Brilliant. (Disclaimer: I’m a colleague and friend. But this is really good).
Notable mention: The LA Times on Serena Williams – a visual tour of her greatness.

Every shot Kobe Bryant ever took. All 30,699 of them
By Joe Fox, Ryan Menezes and Armand Emamdjomeh
Publisher: LA Times
Weirdly compelling, slightly unnecessary but fantastic all the same. Title says it all.
See also: Stephen Curry’s 3-Point Record in Context by the NYTimes

The current All Blacks are the most dominant rugby side ever. Why?
By James Tozer
Publisher: The Economist
Not visually arresting like others in this list, but a great statistical take on the All Blacks’ rugby dominance, and it has one chart that says it all.

A Visual History of Which Countries Have Dominated the Summer Olympics
By Gregor Aisch and Larry Buchanan
Publisher: New York Times
No list would be complete without something from the NYT, and this is a great visual history. Charts that you will just love. Brilliant. See also: the interactive medal chart. Accept no others.

There were some other great NYT graphics on Phelps and sprinting, for instance. But sticking with my rule of one per publisher, the last-but-not-least spot goes to…

Most Unlikely Comebacks: Using Historical Data To Rank Statistically Improbable Wins (in the NBA)
Publisher: Polygraph
This is just so well done, I love it. I just think you should see it.

So there it is folks. The best of 2016, completely subjective, as compiled by me. You may have your own favourites that I’ve missed, so please add in the comments. But there’s nothing at stake here, just great data journalism to enjoy.

Winners will (probably) get a copy of my book – I know, I know. But it is worth a read.

In defence of Moores and data

465665520

It was probably the worst thing he could say. “We’ve got to look at the data” is not a great line for a cricket coach to say to the press after going out of a World Cup.

It’s especially bad when that team has been previously criticised for being over-reliant on data, and sucking the spontaneity out of players.

But let’s be fair to Peter Moores: whatever he had said would not be good enough. The question whenever a country flounders in a big event is: “what went wrong?”. The answer is usually complicated and not necessarily immediately evident. And so the reply is often of the form: “we will try and work it out and learn from it.”

So how do teams work it out? Using anecdotes? Talking to fans? Plucking a theory out of thin air? No, they look at the (whisper it quietly) data.

Of course they do. If looking at data is now taboo, English cricket will suffer. What England need to do is look at the right data, put it in context, and work out what to do next.

But several media commentators have latched on to data as the culprit. We have our new bogeyman, and he is armed with a spreadsheet.

“English cricket kills itself”. That’s the headline in the Spectator. From the piece by Alex Massie:

“We’ve got to look at the data.” If ever there was an appropriate epitaph or this era of English cricket this is it. England have, under Moores, known the price of everything but the value of nothing. The data has given them heaps of information; they’ve had no idea what to do with it.

But why would they? Cricket is a complex game but not a mysterious one. It has changed much less than most people think….

England, however, think there’s some magic sauce that can unlock the mysteries of cricket. So they crunch numbers and discover that x percent of games are won by a score of y or that when z then b and if c then a+b = d. Is it any wonder then they play like humans impersonating robots?

And so on, until this conclusion: “The problem is the bloody data.”

Really? What’s the alternative?

And so the bandwagon starts to roll:

Yet… When articles are written about England’s loss to Bangladesh, they will cite numbers such as:

Between the 21st and 31st overs, only 40 runs were scored for the loss of 3 wickets.

(I just came up with that. I looked at the data.)

Or commentators will look at some other stat which will be seen as where the match was won or lost. That Bangladesh were allowed to plunder 78 off the last 10 overs. That England had them at 32 for 2 after 10 overs, but let a good start get away from them. You can take your pick.

England will have more sophisticated numbers at their disposal, such as what kinds of deliveries produced more dot-balls, or about field placings. Should they ignore them? Simply say it was a “bad day at the office”, or some other sporting cliche?

As the Guardian’s Andy Bull put it recently:

The laptop is just another tool in the box, useless unless the players understand the value of the information it provides, and no more valuable than their own ability to adapt and improvise during a match.

Interestingly, the word that Massie and Bull both use is “value”. If we consign data to a marginal or even zero role, then we will miss valuable insights.

The statistics are there. They lend themselves to being crunched. That’s not a bad thing, per se. Nor is it a good thing. But to say that the numbers are the problem is madness.

4 things Google Trends tells us about the Super Bowl and the NFL

American Football’s imminent death has been greatly exaggerated – for now, at least. Super Bowl XLIX was the most-watched event in US TV history; and if Google Trends are anything to go by, it was a wildly popular event online too.

Here are a few things that leap out of the data:

1) Controversy sells

Deflategate – the inevitable name for the scandal over the low-pressure balls used in the Patriots’ play-off game – clearly wasn’t a turn off. Domestic abuse scandals from earlier in the season might have been, but for whatever reason, that hasn’t hampered viewing figures.

2) This is a step change in interest

Look at the Google trends data from 2004 to 2014 for the search term “Super Bowl”, worldwide, pre 2015:

google_trends_super_bowl_ww_pre2015

As you would expect, interest – as measured by Google’s collection of Super Bowl related searches – spikes around the time of the big game each year, but going from peak to peak, interest was relatively flat. Searches from 2014 (scoring 100) were a bit higher than 2013 (86), which were down from 2012 and 2011 (92).

Now look at the worldwide chart including the Super Bowl just gone:

google_trends_super_bowl_ww

That’s quite some spike. Unless the data is going to be revised in the next few days, it looks like this year’s Super Bowl was a huge online event.

3) If the NFL is going to set up an overseas team, London shouldn’t be a shoo-in

London got three NFL games this year, and talk of a London NFL franchise has been kicking around for a while. But the NFL does have other options: Canada, Mexico and Germany have all been mentioned at one time or other.

So let’s compare the interest (as measured by Super Bowl searches) in those four locations over the past five years, which is roughly when serious talk of overseas teams started. We can’t drill down just to London, so the UK will have to do as a comparison. (Aside: when you isolate the data to England, the town that comes out top is Altrincham, followed by London. I have no idea why.)

google_trends_super_bowl_4_countries

There’s a big recent spike, but for the recent Super Bowl, the countries score like this: Canada, 100; Mexico, 74; Germany, 38; UK, 19. Where would you go?

4) Brits don’t know if it’s one word or two

Superbowl or Super Bowl? Re-run the chart above with the incorrect one-word spelling, and the UK (with 26) leapfrogs over Germany and Mexico (both on 20). Canada is still top, but overall, Canadians do know it’s two words by a score of 100 to 70. Germans do even better, scoring 100 to 35.

The Brits, however, get it wrong more than they get it right: Google Trends shows “Superbowl” scores 100 in the UK compared to “Super Bowl” with 90. Clearly there’s still a lot of marketing work to do in the UK.

UPDATE: I have amended the Google Trends numbers for the 4 country comparison with the latest data.

Nadal, Berdych and the upper limit of winning streaks

462326540Tomas Berdych must be a relieved man. Having lost 17 times in a row to Rafael Nadal, he has finally snapped the streak at the Australian Open.

Had he lost, it would have been a new record. Tennis rivalries do often produce one-sided periods, but 17 wins for one player in a row is the upper limit. It’s the number of consecutive wins that Bjorn Borg had over Vitas Gerulaitis; that Ivan Lendl had over Tim Mayotte; and Lendl had over, surprisingly, Jimmy Connors.

Weirdly, the upper teens seems to be the limit in other sports streaks too: the Australian cricket team went on a 16-test winning streak in 1999 to 2001. Both New Zealand (twice) and South Africa hold the record of 17 straight test wins in rugby. And Spain’s football team had a 15-game winning run.

Is there a mathematical reason for 15 to 18 being the upper limit of streaks? If it were a coin toss, then probably yes. But sport isn’t a coin toss. The win streaks get harder as teams put pressure on themselves to perform, and opponents look to topple the team of the moment. Of course, it’s easy to give a bad performance, and teams get injuries, or retirements.

The tennis streaks mentioned above have ended at 17 as one of the players retired. The interesting thing about Berdych’s victory is that it is the first reversal. Nadal may have been under par, but the pressure would have been on Berdych to win, rather than in team sports where the pressure piles onto the streak holder.

So which is the next longest active head-to-head winning (or losing) streak? I can’t find a definitive list, but I wouldn’t be surprised if it’s Richard Gasquet against, you guessed it, Nadal. The scoreline is 0-13 in Nadal’s favour.

That quote

As Gerulaitis said after he beat Connors in 1980: “nobody beats Vitas Gerulaitis 17 times”. Except the ATP record shows that his losing streak against Connors was 12, and was 16 against Borg. (There is a walkover for Gerulaitis in 1978, which you might think counts as a win, but the ATP seems to not count them in the head to heads.) I have no idea where the missing 17th match is.

When it comes to FA Cup upsets, size is subjective

462140538

Bradford: biggest shock EVER?

What’s the biggest FA Cup shock defeat ever? For Robbie Fowler, it’s the Chelsea 4-2 loss to Bradford from yesterday (Jan 24). And in terms of drama, it’s clearly a great story. After all, Chelsea were 2-0 up and at home.

But for league placings, it’s not even close. With Chelsea top of the premiership, and Bradford 7th in League 1 (the third tier, despite its name), there are 39 teams between them.

Compare that to the 84 teams between Blackburn and Oxford in 1964, which according to Steve Porter, author of The Giant Killers website is the greatest FA Cup upset ever. Blackburn were 2nd at the time in the top division; Oxford were 18th in league 4.

Porter, who writes under the name Captain Beecher, ranks the upsets in terms of league placings, combined with a player quality metric using internationals and previous cup winners. Porter doesn’t spell out his methodology, but it’s clearly better than just using collective memory and non-scientific lists published in newspapers.

Porter sums up the problem perfectly:

On BBC’s Match of the Day programme, when asking the public if Bradford’s victory over Chelsea was the greatest cupset ever, they showed twelve of what they considered the greatest giant killings of all time. Every game had one thing in common. The BBC TV cameras were there. Not one game which was not covered by the BBC was considered. And so shapes our opinion. If you’re told something was a huge giant killing enough times {7th placed top flight Wimbledon beating Champions, Liverpool 1-0 in 1988. Surprise? yes but giant killing? Really? 7th vs 1st in the Premier League?} You start to accept that it’s true. ITV are a little more impartial, perhaps because they don’t have as much cup footage to be able to make lists exclusively thiers. The problem when compiling such lists is that every time a particular tie is overlooked, it’s chances of being placed in the next TV countdown, or magazine article diminishes.

And where does Porter’s system put Chelsea-Bradford? It’s 15th on his all-time list. Not bad, but it is interesting that it is lower down than non-league Luton’s 1-0 victory over the Premiership’s Norwich only 2 seasons ago, which is in 7th place. That didn’t even make the BBC’s list in the studio analysis. Memories are short, eh?

Being subjective, turning round a 2-goal deficit to 4-2 at Stamford Bridge is an extraordinary result. But perhaps the BBC could, with all its resources, dig up a few proper stats like Porter’s.

See also:
Interactive football league tables

Should Roger Federer keep going?

461996002Roger Federer’s third round loss at the Australian Open will raise the usual questions about this late stage of his career. Should he call it quits now? Has his time passed?

It seems odd to be urging the world’s second best player (by ranking) to retire. The heart says keep on going. The head?

There have been only 11 men in the open era of tennis to win a major in their 30s. Only four (Laver, Rosewall, Connors and Agassi) have done it more than once. For Federer to join that band, he will have to defy not just age, but statistics.

As players enter the later stages of their career, the big wins dry up. So far, the biggest gap in terms of days from penultimate major to last is Arthur Ashe, who took nearly 2,000 days between his 1970 Australian Open and 1975 Wimbledon victory.

Ashe’s gap is something of an oddity. If we look past, Federer is next with nearly 900 days between his 2010 Australian Open and 2012 Wimbledon win. That’s ahead of Sampras (791 days) from Wimbledon 2000 to the US Open 2002. Even Agassi took over 700 days between his final two slam wins in Australia.

For Federer to win another, the gap would be at least 1,000 days by the time we get to the French or Wimbledon in the summer of 2015. Not impossible, but unlikely.

In terms of slams, Federer’s last gap of 10 events is already higher than the gaps Agassi (8) and Sampras (9) posted between penultimate and last wins. If Federer were to win a slam in 2015, it would be 11, 12 or 13 slam events since his last victory – a gap that looks less and less likely to be bridged.

In other words, recent history shows that it just won’t happen. Last hurrahs don’t happen twice – and Federer has already had his.

Gap in days between penultimate and last major titles
(men over 30 in open era)

Ashe 1985
Federer* 889
Sampras 791
Agassi 728
Newcombe 479
Connors 364
Rosewall 354
Laver 65

* For Federer to win another slam, at least 1,064 days will have elapsed.

Gary Neville and the lost art of statistics

What is Gary Neville talking about? He seems to think that defending is a lost art, one that is “never coming back”. End of an era stuff.

To be fair, his column on how defensive training in football is dying is very interesting and is full of insights. However the way he uses statistics to back up his argument is very wide of the mark.

Here’s the key paragraph in full:

If you look at the Premier League goalscoring chart, it bursts into the thousands from 2010 on. There were 942 goals in 2009 and 1052 last season. That’s a huge shift. Once you have a five-year trend of more goals being conceded and more scored it starts to look irreversible. It points to a permanent change in the sport.

Sadly, the Telegraph don’t provide the aforementioned chart. If they did, you would see this *:

To say that it “bursts into the thousands” is very misleading. The 1,000-goals-per-season mark (or 380 game equivalent) has been reached several times in the Premiership before, in 2008, 2004, 2003, 2002, 2000, 1998 and 1993. ** Neville has extrapolated a whole argument from a one season shift from 2009 to 2010.

Back in Neville’s heyday, the 1999-2000 season, there were 1,060 goals scored. And in his first season as a professional, 1992, which coincidentally was the first Premiership season, there were 1,222 goals, which equates to 1,005 goals in a 20-team league.

Never mind getting his own era wrong, Neville looks back further:

perhaps the very bold formations and big scorelines of the 1940s and 50s are what we are heading back to. Maybe attacking football was in hibernation during the 70s, 80s and 90s, when organisation and structure prevailed. Maybe now we are seeing football as it was intended.

So let’s look at the goals per game for the English top flight from 1940 to now ***.

It’s clear from the chart that we have a long way to go before we are at the 3.5-plus goals per game average of the 1950s. It’s just wrong to suggest that is where “we are heading back to” from the data available. Since 1970, there is a very clear goals-per-game level of 2.5 to 2.8. Perhaps we will get up to 3 goals per game – that would be significant. But we are not there yet.

Also, the chart bears no relation to Neville’s assertion that the 1970s, 80s and 90s were a period of attacking hibernation. If so, we are still in hibernation compared to the 1950s.

What we can say with confidence is that the goals-per-season is trending up, slightly. The change from 2009 to 2010 was quite big. But that’s about it.

But why let the real statistics get in the way of a good story? Defending is clearly in the eye of the beholder. Gary Neville was a fine proponent of the art, but his use of numbers is flaky at best.

Statistical notes:

* I have included the goals per game or 380 game equivalent for the current season.

** There were 1,195 goals in 1994 and 1995. The Premiership was initially a 22-team league, changed to 20 teams in 1994-95.

*** Data is from Worldfootball.net

Van Gaal’s first five games: where’s the significance?

There’s a lovely moment in the film Moneyball, when Billy Beane (played by Brad Pitt) and his new nerdy assistant are in a meeting with the owner of the Oakland As. Data-cruncher Peter Brand (played by Jonah Hill) tries to point out that the run of poor results isn’t a “big enough sample to be significant” but is quietly shut down by Beane, as he doesn’t want stats talk in front of the owner.

But they were right. The question though, is always a good one. In fact, it’s the key one. Just as important as what data we are using is whether or not the sample is big enough.

In football, the key sample size is usually 38 – that’s a season of 20 teams playing home and away. It’s enough to determine the winner of the Premier League. What isn’t enough is five games.

Take a look at this graphic from the BBC. Ignore the fact that it’s in a column written by the normally insightful Robbie Savage – I’m sure he didn’t approve the graphic, let alone create it. He knows his stuff. His insight into the defence and selection policy of Van Gaal reads well. And Savage likes his stats, but he’s no statistician. This graphic, and the argument that after five games, Van Gaal has a poorer record than Moyes is pretty shabby.

Clearly, the chart suggests that Louis van Gaal is an inferior manager to the dumped David Moyes. Look at all the money! Where are the results? Oh, where to begin?

Firstly, league position after five games is totally meaningless. Teams fly up and down the table with a few results at this stage of the season.

Next, money spent – how is that relevant? Man U have sold players too, but that hasn’t been put into this figure. Same goes for signings. In fact, you could argue that the higher signings should take longer to bed in.

But most importantly, five games is NOT A SIGNIFICANT SAMPLE. There happens to be a run of five games under Moyes where ManU got fewer points than this, at a very similar stage of the season. If you picked premiership games 2 to 6 under Moyes, you get this run of results:

game 2 Drew (Chelsea) 0-0
game 3 Lost (Liverpool) 0-1
game 4 Won (C Palace) 2-0
game 5 Lost (Man City) 1-4
game 6 Lost (WBA) 1-2

That’s a run of five games with just four points! It just happens to be games 2-6 not 1-5.

In fact, there were two other five-game runs of two losses, two draws and a win – ie 5 points – under Moyes during last season.

What happens for the next 20 to 30 games will tell us about van Gaal’s signings and tactics. Five games tells you nothing about Man U, and everything about the journalism.

« Older posts

© 2024 Rob Minto

Theme by Anders NorenUp ↑