Red Sox 2016 preview

Ever since my parents have been living within spitting distance of Fort Myers, I’ve sent them a quick list of Red Sox storylines going into Spring Training. Seeing as pitchers and catchers report today, I figured today would be a good day to do it. 2016 is going to be an important year for the Red Sox.

  • There's a good chance that manager John Farrell is on a relatively short leash. His World Series victory in 2013 has given him a little benefit of the doubt, but the last two seasons have seen last-place finishes and declining attendance. General Manager Ben Cherington was replaced with his assistant Mike Hazen, so it's clear that ownership is willing to make changes. I'd bet if we finish in last place again, Farrell would be gone.
  • We've got lots and lots of young talent, mostly promoted up through the farm system. Mookie Betts (RF) is probably the most prominent, but Jackie Bradley Jr (CF), Xander Bogaerts (SS), Rusney Castillo (LF), and Blake Swihart (C) are all promising kids, too.
  • We signed the premiere pitching free agent in December: David Price. He's making $30 million this year, and then also for the 6 years following that. He won the Cy Young in 2012 and was 2nd in voting and led the AL in ERA last year. He won 18+ games three of his last five seasons and we haven't had an 18-game winner since Lester in 2010.
  • We also picked up a big name closer: Craig Kimbrel. Led the league in saves for 4 years (4th place last year). Both he and Price are solidly in their prime, too: 28 and 30, respectively.
  • As for last year's big signings that didn't perform as expected, well, we'll see how they go. There were rumors of trade attempts for Pablo Sandoval ($17M/y) and Hanley Ramirez ($22M/y), but nothing panned out. Ramirez was moved from his usual shortstop (where we're overloaded) to left field last year (where he looked lost at Fenway, especially compared to the young guys) and this year will be at First Base, where he's never played.
  • The rest of our starting rotation is pretty stable from last year, which is to say: mediocre. Buchholz will look amazing through June like usual, but then will go to 15-day DL and stretch that out to missing a dozen starts. (We exercised his option for this year, and we've got another one for next year, but I wonder if we let him go if he can't stay healthy. Again.) Porcello will hopefully live up to his 4-year $20M+/y extension. E-Rod, Kelly, and Wright will probably get through the year with 4ish ERAs and we'll have to hope that's good enough to keep us in games.
  • And last, but definitely not least: this will be Big Papi's last season. By most advanced metrics (WAR, OPS+, RE24), he was among the top hitters on our team yet again last year and hopefully he'll go out on top too.

Most statistical projections have us favored to win the division or be in the running for a wildcard, both of which depend on some luck and few injuries. Hopefully it’ll be an exciting year.

Go Sox!


I cancelled my MLB.TV

For the past two years, I’ve subscribed to MLB.TV. It allowed me to stream baseball games to my computer and my TV, and was a way better value proposition than getting the expensive cable package that would have provided me with NESN (the Red Sox’s local network). But I will not be subscribing for the 2013 season. It’s not because I’m no longer a Red Sox fan. It’s not because I’m not interested in watching their games. It’s because I’m sick of jumping through hoops to avoid their stupid blackout restrictions. If I was a Phillies fan, I could watch all of their games (except when they were playing the Red Sox). If I was a Red Sox fan from California, I’d be fine, too (unless the Sox were visiting the Giants or some such).

But because I live in the Red Sox’s “home television territory”, I’m unable to watch any of their games, both at home and away, without resorting to using proxies. Paying nearly a hundred dollars a year for the right to not get to watch any of the games I care about is very stupid. These are based on ancient cable contracts, I’m certain, but MLB has the upper hand in these negotiations. Are the networks really going to say “nevermind, we won’t show your games” if MLB insists on allowing paying customers to watch even local games online?

Until Major League Baseball joins us in the 21st century with their blackout restrictions, I’m not going to be paying for MLB.TV anymore. I’ll just have to enjoy the game at a bar, where Major League Baseball will get none of my dollars.


Expected no-hitters

When Matt Cain threw a Perfect Game for the San Francisco Giants on Thursday, he became the fifth pitcher in the last four years to do so (no, Galarraga’s game doesn’t count). Perfect Games are also No-Hitters, and there have been a startling 22 no-hitters in the past six seasons (here I am including Halladay’s post-season no-hitter two years ago).

Since the end of the Steroid Era in baseball, pitching has been under a resurgence. Last year was called The Year Of The Strikeout by some, and this year is, so far, exceeding last year’s number. In addition, runs per game and hits per inning have been in decline for the past decade, too. But this isn’t just because batters aren’t hitting as hard or fielding has improved. Walks per inning, too, are at their lowest point in 20 years.

Improved pitching means a better chance of No-Hitters and Perfect Games. Does that explain it completely? Is the recent surge in pitching gems a coincidence – in which case we can expect the frequency to revert to the mean – or a result of improving pitching? I started collecting data to answer this question myself (which you can see after the break), but during the course of my research I found an article by Rebecca Sichel, Uri Carl and Bruce Bukiet titled Modeling Perfect Games and No-Hitters in Baseball.

Expected No-Hitters on Google Docs

Cans of beer at Citizen's Bank Park

Earlier this year, Citizen’s Bank Park (the home of the Philadelphia Phillies) began selling several different brands of beer in 24-ounce tallboy cans. Canned beer (like boxed wine) has been on a resurgence in recent years, thanks to improvements in technology and some open-minded brewers. Harpoon Brewery started canning some summer beers a couple of years ago, but now they are spending more than a million dollars to add canning machinery to their main brewery in Boston.

Canned beer at a ballpark, however, is a good idea in almost every single sense I can think of:

  • Since the beers don't have to be poured, there's no spillage and no foam to pour off, which means essentially zero waste.
  • They get cold faster than bottles.
  • The non-beer weight of these cans is far less than that of kegs and carbonation systems, which means less wasted delivery cost.
  • Lines will be shorter since all the person behind the counter has to do is pull a can out of the fridge and open it (and they did tests -- opened cans don't fly as far as opened plastic bottles). They'll also be shorter since the cans are bigger than cups -- people won't head back for more as often.
  • Aluminum is just about the most efficient thing to recycle: only about 5% of the energy required for non-recycled aluminum
  • You don't have to potentially toss any extra (like you have to do with kegs). This means that the park could carry a wider variety of beers and not have to worry about what to do with the unsold cans of the less popular brands.

And there’s just something about drinking a cold beer out of a can that says “summer” more than a bottle or a cup.

Here’s a list of what beer is available where in the park. Most everywhere has cans of Stella Artois and Yuengling, two very good lagers. I’m not sure if the Oskar Blues and Sierra Nevada brands are in the tallboys or if they’re only available in normal 12-ounce cans. I will investigate when I’m at the game against the Red Sox this coming Saturday, and report back.

Update, 21 May: The 24-ounce cans are pretty much only available in Yuengling Lager, and we only found them on the lower level. Most of the other types of beer are in more-typical 16-ounce cans (500mL in the case of Stella Artois). Still: great selection, decent price, all the above points about convenience still stand.


Watching every MLB team play a game

Last April, to no one in particular, I asked the following question:

"What's the shortest possible trip (in miles) to see every MLB team play at least one game this season?"

It became clear, after a brief discussion with some friends, that the shortest possible trip is somewhere on the order of a hundred miles. Citi Field in the Bronx and Yankee Stadium in Queens are only 6 miles apart. Since the Mets and the Yankees are in different leagues and each team plays one series at home against every other team in its own league, you could just spend the whole season going back and forth between the two stadiums. (In fact, I’d be surprised if at least one New Yorker baseball fan with time and money to burn hadn’t done exactly this.)

In order to avoid this “trivial” solution, a modification to the puzzle would have to be introduced. After throwing around a bunch of attempts, I hit upon the perfect goal: 15 games, 15 stadiums, 30 teams. You’d see no team play more than once, you’d be in no stadium more than once.

Now that I had a problem worth solving, how to solve it? The sheer number of games makes it pretty clear that this is a task that can’t be solved by brute force. There are 2430 games in a regular season of baseball. The possible number of any selection of 15 of those games is 4.45 × 1038. Even if I could check a trillion schedules a second (which I can’t), it would still take 14 billion billion years (at which point, even the Red Sox would probably have a new stadium). If you visualized the problem as a graph, each game would be a node and each travel day would be an edge. The problem was that every game had an edge that led to every game that came after it. What I needed to do first was prune this tree.

So I made some assumptions for the sake of making a reasonable road trip. I wouldn’t want more than 2 days off between games, and I wouldn’t want to travel more than 500 miles on any given day. This change trimmed the 3-million-plus edges into a mere 86,000. But an exhaustive search would still take a prohibitively long time: at that same impossible speed, I’d have my answer in merely 11 billion years. I made the problem more than a billion times smaller, but realistically I wasn’t any closer to the solution.

It was about this time that I decided I was never going to get the perfect answer. I would have to resign myself to a Good Enough plan that could be calculated before the heat death of the universe (or better yet, before Opening Day). I brushed up on my Traveling Salesman Problem and pathfinding algorithms like A*, Dijkstra’s, and Floyd-Warshall. But my problem had a couple of quirks that made those approaches unsuitable:

  • With both A* and Dijkstra's, you have defined starting and destination nodes. I did not want to specify either. I wanted the schedule (and the map) to dictate the best time of the season to take the trip.
  • Pretty much every algorithm I read about optimizes for total distance, and nothing else. A perfect road trip might start at Wrigley and end at US Cellular a month later, but it most definitely would not be the shortest distance between those two points.
  • Most importantly, I was very particular about exactly which nodes could be on the same schedule. Two games might not have an overlap, but once I decided to go to both of them, the options for the third game get narrowed down. Likewise for every step along the way.

After three or four false starts (and one moment where a bug in my data structure made an exhaustive search running a couple quadrillion times faster than it should), I happened upon a promising technique. A commenter on Stack Overflow recommended (in response to a purposely vague question) doing a sort of prioritized breadth-first search. What I ended up doing was starting with a list of all of the one-game plans (2430 plan, one for each game). And then I did this:

  1. Remove the plan with the shortest average leg length from the list (ties are unimportant -- pick arbitrarily)
  2. Look at every game that you could add to the end of that plan that meets the restrictions: 2 or fewer off days, no more than 500 miles of travel per day.
  3. For every one of those games, check if it's legal to add to this plan (check for team duplications against every game already on the plan)
  4. If there are no duplicates, add it to the list of plans. Since each game has a couple dozen possible "next" games, this will likely result in the number of plans in the list growing.
  5. If there are more than some number of plans in the list, discard the longest ones. (After some experimentation, I went with about half a million. Much more on this another time.)

And I repeated until the “shortest plan” was 15 games long. On the first try, it took about 3 and a half hours on my laptop (Core i5 with 4GB of RAM) and had to inspect more than 12.5 million potential plans before finding one that was a full 15 games long. The solution was almost 5,500 miles long, and included back to back 800-mile legs from Los Angeles to Denver and then to St. Louis. That did not strike me as optimal. I considered what could be preventing the discovery of a good plan: the problem is that the shortest eight-game plan might not yield any short nine-game plans, and if the list is full and discards the longer eight-game plans before they can even be checked, then it will never pursue the most promising leads. In truth, I run four lists in parallel, and they fit 219-1 elements each (a little over 500k). But the lists are full after only three minutes of inspecting plans (less than half a million). These lists take up more than 2GB of memory right now.

I chose to try the script on an Extra Large Amazon Elastic Compute Cloud instance. This includes not quite as much CPU power as my laptop, but four times the memory. I also changed the way the algorithm treated “the shortest average leg length”, by giving plans with more legs a bonus. It found this schedule in less than ten minutes, and failed to find a better one even after searching through 20+ million more. (This is a thousand miles shorter than the one I found earlier, and the only really long leg is from Boston to Minneapolis.)

2012-07-18: Blue Jays @ New York Yankees

  • Travel 6.5 mi 2012-07-20: Dodgers @ New York Mets
  • Travel 91.2 mi 2012-07-21: Giants @ Philadelphia Phillies
  • Travel 121.6 mi 2012-07-22: Braves @ Washington (DC) Nationals
  • Travel 306.6 mi 2012-07-24: Tigers @ Cleveland Indians
  • Travel 309.9 mi 2012-07-27: Cardinals @ Chicago Cubs
  • Travel 76.4 mi 2012-07-30: Astros @ Milwaukee Brewers
  • Travel 326.4 mi 2012-07-31: Padres @ Cincinnati Reds
  • Travel 250.6 mi 2012-08-03: Angels @ Chicago White Sox
  • Travel 408.8 mi 2012-08-06: Diamondbacks @ Pittsburgh Pirates
  • Travel 196.9 mi 2012-08-07: Mariners @ Baltimore Orioles
  • Travel 358.4 mi 2012-08-08: Rangers @ Boston Red Sox
  • Travel 1128 mi 2012-08-11: Rays @ (Minneapolis) Minnesota Twins
  • Travel 414.8 mi 2012-08-14: Athletics @ Kansas City (Missouri) Royals
  • Travel 564.5 mi 2012-08-16: Marlins @ (Denver) Colorado Rockies Total distance: 4560.5 mi

Remember, this isn’t the best you could do, but it’s probably close, and it was computable in a very reasonable amount of time. Interestingly, the shortest 13-game road trip is about half as long (about 2400 miles, with no leg longer than 350). Picking up those last couple of games is quite expensive. It’s been suggested that seeing a team more than once for the sake of saving several hundred miles might be acceptable – but establishing an algorithmic rule might take some time. Stay tuned for further tweaks!

Now: time to rent a car and block off a month of vacation.

Here is the final version of the code that I used for this post.


Expected ERA

Imagine two hypothetical pitchers. Their ERAs are very close together and both pretty average: 3.40 and 3.41. They’ve both pitched just over 200 innings in 30 starts with just a couple weeks of the season remaining. But one pitcher has had some pretty advantageous matchups: he’s played the Padres four times, the Reds and Rockies twice each, the Pirates, the Mets, the Royals – all teams with records under .500. The other pitcher, on the other hand, has had a harder schedule: four games each against the Yankees and the Red Sox, two against the Rangers, and one in Detroit. Are these equivalent pitchers?

I set out to determine if pitchers we accept as “elite” are truly that great, or if some might have an unfair advantage due to schedules. I downloaded all of MLB’s gamelogs for the 2011 regular season up through yesterday, and then I parsed them, tracking a few key pieces of information. First, the number of innings each pitcher pitched against each team. Second, the average number of earned runs each team scores per inning. Then, for each pitcher, I calculated what their ERA would be if they allowed exactly their opponent’s average for each appearance. Here are the results (for pitchers who have enough innings pitched to qualify for the ERA title):

Expected ERA - after 2011-09-12

One interesting takeaway is that there aren’t any huge surprises. Of the pitchers with the ten best actual ERAs, only one of them (Cole Hamels) isn’t in the top ten for the best differential. Another interesting fact is how much a pitcher’s expected ERA is affected by simple rotation timing, and not just the team’s schedule. The Phillies have played against a lot of sub-.500 teams this year, and Cole Hamels has one of the lowest expected ERAs. But his teammate Cliff Lee hasn’t been so lucky – his expected ERA is higher than most.

But there are some people who get a nudge from good to great with this analysis. Oh, and those two hypothetical pitchers I mentioned? They aren’t hypothetical. They’re Daniel Hudson of the Diamondbacks and David Price of the Rays, respectively. This puts a little context on the fact that Price’s record is 12-12 and Hudson’s is 16-9.


Why We Watch, and NERD

While looking for a little preview on tonight’s Red Sox - Angels game (which I’ll be heading to), I happened upon these blog posts about Why We Watch baseball and a neat statistic to help find the great matchups. I read them in reverse, but here they are in chronological order:

Tonight’s pitchers are Clay Buchholz (with bad year so far and a NERD of 0) and Jared Weaver (7), both of whom were scheduled to start Sunday but were pushed back a day for (unrelated?) illnesses. Both teams have a NERD of 4, which gives the game a NERD of 4. I’m hoping that Clay pitches like he did last year, and it could turn out to be more exciting game than the stat predicts.


My Fantasy Baseball Team

I just finished my Fantasy Baseball league draft. Every time it was my turn to pick, I picked the highest remaining guy from my scientific list. (Except I didn’t pick anyone for my bench until I had a full roster.) Here’s my resulting team:

Name Position WOA
Joe Mauer C 14.69
Pablo Sandoval 1B,3B 3.47
Aaron Hill 2B 2.38
Mark Reynolds 3B 6.02
Jason Bartlett SS 1.63
Jayson Werth OF 11.03
Bobby Abreu OF 7.14
Torii Hunter OF 6.55
Rajai Davis OF 5.26
Denard Span OF 5.21
Roy Halladay SP 21.03
Felix Hernandez SP 20.46
Chris Carpenter SP 11.96
Matt Cain SP 9.95
Mat Latos SP 8.6
Ted Lilly SP 6.39
Rafael Soriano RP 5.41
Brian Fuentes RP 0.06
Adam Jones Bench (OF) 3.59
Johnny Damon Bench (OF) 2.54
Raul Ibanez Bench (OF) 2.43
Miguel Olivo Bench (C) 2.34
Marlon Byrd Bench (OF) 2.32

My co-workers think I’ll be crawling to them for offense in a few weeks, but I think they’ll be crawling to me for pitching.


Fantasy Baseball Nerd Overload

This year will be the fourth season that I’ve played Fantasy Baseball. I’m a baseball fan, and I have a pretty good knowledge of the most prominent players of the game. But it’s far from encyclopedic. I have at least a couple of co-workers who can walk into draft night with no real preparation at all, and end up schooling me. What I do have, though, is an analytic mind and a desire for rigor (albeit half-assed rigor). The last couple of years, I’ve been pulling down players stats from the season before, doing a little magic, and coming up with some sort of an order. But I’ve finished in sixth place and then in seventh (out of 12).

There are some complexities in fantasy baseball that make an accurate analysis difficult. As a manager, you need to draft at least one player at each position, a couple general “hitters”, a couple starting pitchers, and a couple relief pitchers (the exact numbers vary from league to league). But there are some positions (catcher and second base in particular) that have very concentrated hitting skills. There are probably three catchers who could be considered “great” hitters. Does the scarcity increase the value of those catchers? How much?

Not all of the stats that are tracked by fantasy leagues can be considered equal. Compare, for instance, RBI and stolen bases. Just about any player that gets drafted will have a minimum of 40 RBIs, but only about half a dozen players will finish with that many stolen bases and at least half will probably have less than 10. So any specific stolen base is more likely to make the difference, since teams' numbers in that stat are more likely to be low. Is a base-stealing average-hitter worth more than a slow heavy-hitter? How much?

And every time it’s your turn to draft a player, you can choose any available player at any position. If you take one of the great catchers early, you might not get a premiere starting pitcher. How can you be sure the tradeoff you made was wise? Hitters and pitchers are scored on completely different criteria, making comparing them even harder.

So how can we possibly take this kind of system and predict how much a player is worth? At the end of the day, what you want in a head-to-head league is “wins”, so the most useful end statistic would be one that you can use to determine “If I drafted Player A instead of Player B, I’d end up with (on average) this many more wins”. After spending some abortive attempts trying to come up with an algorithm, I realized it didn’t have to be that hard. I could throw computing power at it and run a Monte Carlo simulation.

So that’s what I did. I started with someone else’s player-by-player predictions for 2011 stats (the Marcel the Monkey Forecasting System, specifically). Then I wrote a script that would simulate a ten-team league over and over. I had to simplify the rules a little bit – figuring out what to do about benching players and trades and pitcher off-days was just too much. After each simulated season, I determined how many wins over exactly average each team was, and I credited every player on that team with that many wins. Over time, good players would more likely to be on good teams than bad ones, and their averages would be high. Less-good players' averages would be low.

After two million one million (see update below) seasons, I had some pretty firm numbers, and some surprising results.

See the full results

Keep in mind the caveats: This was a ten-team five-by-five head-to-head league. The WOA column (“Wins Over Average”) is the most useful number, and it’s what the spreadsheet is sorted by. It’s scaled for a nine-week season (each team played each other team once), which obviously is not standard, but it’s directly proportional to a real 24-week season.

Multiply by 2.66, and you see that drafting Albert Pujols is worth almost 26 wins over the average player and 2.44 wins over the second-most-valuable player, Hanley Ramirez. After those first two infielders, there’s a lot of pitchers, which goes counter to a lot of the common advice out there. Which I like. Joe Mauer is the first catcher, at 27th (third round in a ten-team league).

Here’s the code and source files that I used, if you’re interested in giving it some tweaks of your own. I used the standard 5x5 stats, but you can change those pretty easily. It took about 90 minutes to run a million seasons on my not-state-of-the-art computer.

Update 11 Feb: This morning, I realized that these numbers were off, in particular those of pitchers. I had been miscalculating team ERA: just averaging all of the players together. The problem is that the true team ERA value is IP-weighted: Total team ER divided by total team IP. So it was over-valuing players with good ERA and few IP, like relief pitchers. The same was similarly true about WHIP and BA, so everyone who didn't play much was being given too much credit. I've updated the code and re-run a million seasons. There are a lot of starting pitchers rated highly now, 8 of the top 10 and thirteen of the top twenty. But actually, the top hundred players are exactly 50/50 batters and pitchers.

Update 14 Feb: I changed the spreadsheet so it includes Marcel's predicted stats for each player. This should make it easier to see why each player might be ranked where he is, plus make it easier to use on Draft Day. I updated the code linked to above, as well.

Update 22 Mar: A couple of last minute tweaks before my draft tonight. I couple weeks ago I added code to remove the "chaff" players (really, only the top couple hundred players will be drafted in a fantasy league, so I shouldn't be comparing Pujols against the 1000th-best batter). And a co-worker noticed David Ortiz missing from the list, which revealed a bug in the way I was dealing with players who play no positions. Also, I've removed hands-down first-round pitcher Adam Wainwright from the stats list.


The Red Sox haven't been bad

Since April 19, the Yankees are 71-47, Rays are 72-47, and the Red Sox are 70-48. It’s not that the Sox have been bad. In fact, in 2009 between games 13 and 131 they were 70-48, and in 2008 they were 69-49. They have been just as good as in previous years. The problem is that the team fell to a quick deficit and has been trying to catch two other extremely good teams. There’s a good chance the AL East will finish the year with two teams with 100+ wins, and Boston with 90+ wins. I’m almost certain this hasn’t happened as long as there have been divisions (1969). The closest I can find is 1977, when the top three teams in the AL East finished with 100, 97, and 97 wins respectively. But remember, that was a six-team division, not four.

To look at this season and draw the conclusion that we’ve had a bad year is to ignore the actual facts. We just haven’t had as good of a year as we needed to have in order to make up our losses in the first couple of weeks.


The earliest news events I remember

The first five news events I actually remember (and my corresponding ages) were:

  1. 1986-01-28: Challenger explosion (6 years, 1 month)
  2. 1986-02-09: Halley's Comet passes Earth (6 years, 2 months)
  3. 1986-10-27: Mets win the World Series (6 years, 10 months)
  4. 1987-10-19: Stock market crash on Black Monday (7 years, 10 months)
  5. 1988-11-08: Bush defeats Dukakis (8 years, 10 months)

One of the most interesting things I learned while looking up these events is how close together the Challenger disaster and the Halley’s Comet perihelion were. In fact, the Shuttle mission (STS-51-L) and the following scheduled mission (STS-61-E) had apparently been scheduled to observe the comet up close. In my mind, those two events were far apart. Along the same lines, the Mets won the World Series just a couple of months after my family moved to Connecticut, but somehow I suddenly became a Mets fan.


Sports Uberchampion trivia question

Here’s a trivia question (to which I currently do not know the answer) inspired by the Red Sox’s recent World Series win and what I can only hope is soon to be the unbeaten 9-0 Patriots. If you take the 4 major American team professional sports championships (Stanley Cup, World Series, Superbowl, NBA Finals[1]), what’s the longest streak of consecutive championships in one metropolitan area?[2]

[1] - Is it just me, or does basketball not have a very recognizable term for its championship? [2] - I’m willing to be relatively flexible with the definition of “metropolitan area”.

Update: Answers below the fold!

There are a number of issues that make this question less than straightforward to answer. Firstly, before 1915, the Stanley cup was only contested on a challenge basis (similar to the way that chess and boxing are done today). Since the challenges weren’t annual, and there were a lot of times that the challenger was crushed outright, I’m going to ignore those years. Second, the question of how far back to look comes up. There’s never been a streak of more than two consecutive championships in the same area as long as all four contests have existed in their current form (the Superbowl, started in 1968, is the youngest).

Not counting pre-1915 hockey, there have been three times that there have been streaks of three. In 1906-1908, the Chicago White Sox won the World Series once and the Cubs won twice, and none of the others existed. In 1927, the New York Yankees won the World Series, and then in 1928 the Rangers won the Stanley Cup and the Yankees won again. In 1932-33, New York repeated the feat with the Yankees, Rangers, and the (baseball) Giants.

There has almost been one streak of three since 1968, but it requires that we make the cognitive leap to assuming that San Francisco and Los Angeles are a single metropolitan area. And I think that in terms of sports affinity, it’s a hard case to make. But in 1988, the Lakers won the NBA Finals, the Dodgers won the World Series, and then in early 1989 the 49ers took home the Lombardi Trophy.


NYTimes archives free

As of midnight last night, the New York Times has made anything in their archives newer than 1987 available for free. Even more interestingly, everything in the public domain (1851-1922) is also available for free, although it looks like they’re mostly just in PDF format. How can they do this? They expect to make more in increased advertising revenue than they did with the paid subscriptions.

You can find the NYTimes coverage of the most important events of the 19th century pretty easily:

Go, search!

Update, 20 Sep: Jason Kottke has posted some more of his own finds.