All posts tagged with baseball

Lessons in mortality

Ah man, Willie Davis was found dead, aged 69. He took over centerfield for the LA Dodgers following the retirement of Duke Snider. The various death notices are especially sad as they paint a picture of a lonely man: he was found dead alone in his Burbank apartment by a “neighbor who sometimes bought him breakfast”; there is no available information concerning any survivors.

In 1996, Davis was arrested at his parents’ home for threatening to kill them and burn down the house unless they gave him $5,000. All of this while armed with samurai swords and throwing knives.

Sad.

In other news of the slow decline, Nomar Garciaparra retired the other day, signing a one-day contract to make his grand finale in a Boston uniform. He trotted onto their Spring Training field in Fort Meyers to a loud ovation to say good-bye to the fans who at times called for him to be traded, killed, or worse. The love-fest struck me me as a little awkward: there was so much (seeming) vitriol between he and the team in 2003 and 2004 that you might think they’d never speak again. Of course, it’s the fickle Boston media, who seem to relish a relationship with their stars at one extreme end of the emotional spectrum or the other (and throughout a career generally both) who we’re talking about, so how much of the drama was a cooked-up story we can’t be sure, but anyone who watched that team has well-seared into their memory the sulking Nomar in the dugout prior to the trade, and the sense of a weight lifted afterwards.

But the departure of Nomar is really and truly a bit melancholy for me because his emergence was followed by own reentry into being a fan of the game. I fell out of watching baseball in the early ’90s as it became at odds with my blossoming angsty teenage persona, missing the strike entirely (which was probably a good thing) and then, for whatever reason (perhaps the emergence of the web), started really watching right as our man was embarking on his 1997 Rookie of the Year campaign. He was incredible to watch: everything he did on the field felt effortless, and the change he seemed to represent at the shortstop position was genuinely an exciting development, though in hindsight perhaps a bit of a fad. Always a bit of a free-swinger (54% percentage of pitches swung at compared to the MLB average of 45%; 45% of first-pitch swings compared to the average of 26%), he was no textbook player, no lesson to the blossoming players of the world, but man was he fun to watch. From the rituals prior to pretty much every single pitch to the home run blasts, he was among the best shortstops in the league from 1999 through 2000, suffering then a wrist injury that seems to have really diminished his skills. He rose once more, briefly, to bang 20 deep flies in 2004 for the Dodgers, earning himself one final All Star appearance.

All time he ranks honorably, his Wins Above Replacement number at 42.6, 30th all-time among shortstops, right behind Omar Vizquel (43.2) and right ahead of Phil Ruzzuto (41.8). Though that latter player is in the Hall of Fame, and the former most certainly will be, I don’t think Nomar’s name really belongs in the discussion, even as a long-shot. He burned brilliantly, but for too short a time. It is sad to see him go- and puzzling to see him join forces with the antagonistic media- but I am quite happy to have seen him play.

As I write this, Pedro Martinez, another towering figurehead from the Nomar-era Sox, is still without a job. Should he fail to catch on it will be sad to see two of the most exciting players I’ve ever watched go into retirement. It certainly makes a fella feel old.

But, hey, that’s life. It’s springtime again, it’s full of new faces, new beginnings, and a new story.

Pascarelli removed from Baseball Today

ESPN shall apparently brook no criticisms of Bud Selig. The host of their Baseball Today podcast, Peter Pascarelli, was summarily wiped from history after offering a nauseating and forced apology for saying of the recently erected Bud Selig statue outside Milwaukee’s Miller Park that it could be improved by the efforts of Wisconsin’s pigeons.

If you catch his meaning.

Anyway, it’s all reminiscent of the time ESPN also forced “news” anchor Scott Van Pelt to apologize to Mr. Selig for questioning the value in his $18m salary. The network’s not really fond of any kind of criticism that might jeopardize their relationship with MLB.

The network even went so far as to remove the comments from the podcast. The show resumed with no sign of Pascarelli, nor any mention of his fate from the hosts.

VANQUISHED!

Inaugural MILTON BRADLEY WATCH post

Seriously, I thought I might have to wait until at least the regular season to kick this little series off, but the baseball gods give and the baseball gods giveth again. Ever since my favorite club decided to trade for Milton Bradley (not a bad trade, really, as it allowed them to flush the contract and BMI of Carlos Silva), I figured I would keep watch and follow his routine blow-ups throughout the season. I expect the Ms to do well and to be competitive in their West, but even if they fall on their collective face, well, there will always be the Milton Bradley Watch.

Bradley was interviewed by the New York Times – who were no doubt simply angling to antagonize the misunderstood outfielder and cajole him into a money quote or two – and asked about his troubles during his Cubs stint. Did Milton try to simply move on and allow the water under the bridge by letting bygones to be just that? Why no, he did not:

Two years ago, I played, and I was good. I go to Chicago, not good. I’ve been good my whole career. So, obviously, it was something with Chicago, not me.

Yes! The man’s been good his whole career. For the one year where he was not good, it was “something” with the city. “Something” with the fans, Wrigley, Lou Pinella, the traffic- whatever. Bradley claims the Cubs expected him to be a 30 HR guy despite never hitting more than 20 before his 2008 stint with Texas. Chicago manager Lou Pinella disagreed with the assessment.

Ah, Milton. It’s only March 4. The Ms have yet to play their second game of Spring Training. Already, the quotes are rolling in. It’s certainly some kind of divine intervention that the Mariners play the Cubs this year in interleague play; if only the game were at Wrigley.

2009 MLB park factors

Here they are in CSV with MLBAM’s venue ID added. Here’s a schema you can use should you want to run them into a database:

DROP TABLE IF EXISTS `park_factors`;
CREATE TABLE park_factors (
    venue_id INT DEFAULT NULL,
    year INT DEFAULT NULL,
    name VARCHAR(100) DEFAULT NULL,
    R FLOAT DEFAULT NULL,
    H FLOAT DEFAULT NULL,
    HR FLOAT DEFAULT NULL,
    H2B FLOAT DEFAULT NULL,
    H3B FLOAT DEFAULT NULL,
    BB FLOAT DEFAULT NULL,
    PRIMARY KEY (venue_id, year)
);

Gameday, get yr Gameday

MLB.com provides, among other things, all of the pitch information for each MLB and AAA game in XML format. It’s the data that drives their wonderful little service Gameday. If you want to take a spin through what the data looks like, start here and poke around. What’s key, most folks agree, is the Pitch/FX information, but there’s also pitch-by-pitch logs for every game.

I’ve put together a little package which includes (1) a schema for a MySQL database to retain the information, and (2) a python script which will handle fetching and parsing the XML data found on MLB.com servers. If you’re interested in such a thing, you can download it from the github project page.

There is detailed installation and execution information found on the wiki at github as well but just to provide them here:

./gameday.py

With the following arguments:

  • --year=XXXX four digit year
  • --day=X,Y days in a comma separated list
  • --month=X,Y months in a comma separated list
  • --type=[mlb, aaa] optional: which league to process. Default is ‘mlb’. Any of the categories found here (AA, etc) should work- I’ve just worked with MLB and AAA.
  • --verbose Shows every HTTP request
  • --delta Uses delta mode.

When delta mode is run, the script will store the last date it processed in the database. Upon next execution, it will start from where it left off. This is useful for running the thing nightly to grab the latest stuff.