Previous post:

Next post:

2012 Rearview Adjusted Net Yards per Attempt

by Chase Stuart on July 29, 2013

in Quarterbacks, Random Perspective On, SRS, Statgeekery, Statistics

Every year at Footballguys.com, I publish an article called Rearview QB, which adjusts quarterback (and defense) fantasy numbers for strength of schedule. I’ve also done the same thing using ANY/A instead of fantasy points, and today I revive that concept for the 2012 season.

Let’s start with the basics. Adjusted Net Yards per Attempt is defined as (Passing Yards + 20 * Passing Touchdowns – 45 * Interceptions – Sack Yards Lost) divided by (Pass Attempts plus Sacks). ANY/A is my favorite explanatory passing statistic — it is very good at telling you the amount of value provided (or not provided) by a passer in a given game, season, or career.

Let’s start with some basic information. The league average ANY/A in 2012 was 5.93. Peyton Manning averaged 7.89 ANY/A last year, the highest rate in the league among the 39 passers with at least 75 attempts. Since the Broncos star had 583 pass attempts and 21 sacks in 2012, that means he was producing 1.96 ANY/A over league average on 604 dropbacks. That means Manning is credited with 1,185 Adjusted Net Yards above average, a metric I simply call “VALUE” in the table below. Manning led the league in that category, with Tom Brady, Drew Brees, Aaron Rodgers, and Matt Ryan rounding out the top five. Remember, the ANY/A and VALUE results aren’t supposed to surprise you, so it makes sense that the best quarterbacks finish near the top in this category every year.

Rk
Name
Team
Cmp
Att
Yd
TD
INT
Sk
Skyd
ANY/A
VALUE
1Peyton ManningDEN40058346593711211377.891185
2Tom BradyNWE4016374827348271827.481028
3Drew BreesNOR42267051774319261907.17865
4Aaron RodgersGNB3715524295398512937.33846
5Matt RyanATL42261547193214282107.03706
6Robert Griffin IIIWAS2583933200205302177.47650
7Russell WilsonSEA25239331182610332037.01459
8Ben RoethlisbergerPIT2844493265268301826.77403
9Colin KaepernickSFO1362181814103161127.55379
10Cam NewtonCAR28048538691912362446.65376
11Eli ManningNYG32153639482615191366.59366
12Matt SchaubHOU35054440082212272166.47306
13Tony RomoDAL42564849032819362636.35289
14Joe FlaccoBAL31753138172210352276.33224
15Josh FreemanTAM30655840652717261616.3216
16Alex SmithSFO1532181737135241376.76200
17Carson PalmerOAK34556540182214261996.14125
18Matthew StaffordDET43572749672017292125.81-93
19Andy DaltonCIN32952836692716462295.68-144
20Sam BradfordSTL32855137022113352335.64-171
21Ryan FitzpatrickBUF30650534002416301615.61-173
22Andrew LuckIND33962743742318412465.66-183
23Kevin KolbARI109183116983271594.93-210
24Matt HasselbeckTEN138221136775141035.02-214
25Nick FolesPHI161265169965201315.13-227
26Michael VickPHI20435123621210281535.27-248
27Jay CutlerCHI25543430331914382505.37-266
28Philip RiversSDG33852736062615493115.45-275
29Jake LockerTEN17731421761011251515.1-280
30Chad HenneJAX16630820841111281694.88-352
31Ryan TannehillMIA28248432941213352345.23-362
32Blaine GabbertJAX162278166296221584.71-365
33Matt CasselKAN1612771796612191014.31-480
34Christian PonderMIN30048329351812321844.99-483
35Brandon WeedenCLE29751733851417281864.98-518
36Brady QuinnKAN112197114128211233.2-595
37John SkeltonARI10920111322915983.1-612
38Ryan LindleyARI891717520712911.89-739
39Mark SanchezNYJ24645328831318342094.36-764

At the bottom of the list is Mark Sanchez, although that’s partly a function of the fact that he kept his job most of the year: both quarterbacks in Arizona and Kansas City averaged fewer ANY/A, but since those quarterbacks shared reps, none of them individually produced as much negative value as Sanchez.

We can also do the same thing for team defenses. These stats differ slightly from official numbers, because I am only including pass attempts by opposing quarterbacks (and not all opposing players). Kansas City’s pass defense was the worst in the NFL in 2012, which helps to explain why they ended up with the number one pick.

Rk
Team
Cmp
Att
Yd
TD
INT
Sk
Skyd
ANY/A
VALUE
1Chicago Bears34959136851824402854.251062
2Seattle Seahawks32656334951418362474.54834
3San Francisco 49ers33556434331914382704.84657
4Denver Broncos32155835582516523644.88643
5Cincinnati Bengals34655937611614513615.07527
6Arizona Cardinals27049634412021382285498
7Green Bay Packers31356838012418473095.14485
8Pittsburgh Steelers29952131591910371965.18416
9St. Louis Rams36254739271617523255.27395
10New York Jets26549331831911301705.54203
11Atlanta Falcons33654940321420291825.59197
12Houston Texans30858138812915442695.63189
13Baltimore Ravens33555639001512372505.75106
14Cleveland Browns37860041562717382335.885
15San Diego Chargers34656738832814382445.918
16Carolina Panthers37155538522211392845.919
17Buffalo Bills30653636692512361966-41
18Miami Dolphins35360042161810412376.07-88
19Minnesota Vikings39061141672810442846.1-109
20Washington Redskins39263546473021312026.16-151
21Tennessee Titans37456442053119392416.18-153
22Detroit Lions34654438062611342376.22-167
23New England Patriots36959445552720372136.31-240
24New York Giants34153442992621332316.43-281
25Indianapolis Colts33453539772312321896.54-346
26Jacksonville Jaguars34153339602112201286.71-433
27Dallas Cowboys3205113895227342116.99-577
28Oakland Raiders34752539602811251856.98-579
29Tampa Bay Buccaneers40962649473018271936.96-672
30Philadelphia Eagles2924853668338301987.32-716
31New Orleans Saints37060248753115301947.32-878
32Kansas City Chiefs2794633694297271617.75-892

But you guys can get the information in the above tables anywhere (but should get it from PFR). The point of today’s post is to adjust those numbers for strength of schedule. It’s not really fair to compare Peyton Manning when he plays the Chiefs to Aaron Rodgers against the Bears. Sure, over 16 games the variance in the strengths of opposing defenses gets pretty small, but it does not even out. The solution is this post — a methodology I’ve labeled Rearview adjusted net yards per attempt, which adjusts those numbers for strength of schedule.

The system is essentially the same as the one used in the Simple Rating System. Let’s look at Tom Brady, who averaged 7.48 ANY/A last season, on 664 pass plays. If we want to find Brady’s SOS-adjusted rating, we need an equation that looks something like this:

Rating_Brady = 7.48 + (68/664) * (Rating_SF-D) + (59/664) * (Rating_SEA-D) + … (35/664) * (Rating_DEN-D)

Brady likes the idea of SOS adjustments

Brady likes the idea of SOS adjustments.

What’s that formula say? Brady’s true rating should equal his ANY/A plus the rating of each defense he played, multiplied by the number of pass plays he had against that team. Since Brady threw 65 passes and was sacked three times against the 49ers, had 59 pass plays against the Seahawks, and 35 against the Broncos, those numbers must be weighted accordingly. Each of the 32 defenses is assigned a rating based on how much tougher or easier they are on opposing QBs than the league average. The 49ers defense gets (initially) a +1.09 rating in 2012, because opposing QBs averaged 4.84 ANY/A, which is  1.09 fewer ANY/A than league average. So the Rating_SF-D variable would (initially) be +1.09 in the above formula.

If Brady played a schedule that was exactly average, the sum of all the numbers to the right of the first plus sign would be zero, and Brady’s rearview rating would be the same as his actual rating. If Brady played a hard schedule (which he did), all the numbers on the right would sum to a positive number, and Brady’s rearview rating would be better than his actual rating.

This is easier in theory than it is in practice.  We need to know the ratings of the 49ers, Seahawks, Broncos, and all of the other defenses Brady faced, but we can’t figure those ratings out until we’ve figured out the ratings of all the quarterbacks those teams faced; after all, a team like the Giants played Aaron Rodgers, Robert Griffin III (twice), Drew Brees, Alex Smith/Colin Kaepernick, Matt Ryan, Ben Roethlisberger, Cam Newton, Tony Romo (twice), Joe Flacco, Josh Freeman, Andy Dalton, Mike Vick (twice), and Brandon Weeden. New York’s defense shouldn’t be penalized for facing such a difficult schedule, so we have to adjust the Giants defensive rating for strength of schedule as well. But we can’t do that until we figure out the ratings for Rodgers, Griffin, Brees, etc. As you can see, each quarterback’s rating depends on each team’s defensive rating, and vice versa.

Fortunately, there is a relatively simple way to do this using Excel. I iterate this strength of schedule adjustment (adjusting each QB’s SOS for each D, adjusting each D’s rating for each D’s SOS, then adjusting each QB again, and then each D against) process over and over again until the ratings converge. That’s when we know we’ve finally reached the true strength of schedule adjusted ratings.

With that out of the way, the table below shows all QBs with 75 attempts last season. Here’s how to read the Brady line. He averaged 7.48 ANY/A last year against a strength of schedule that was 0.26 ANY/A tougher than average. That ranked as the 9th hardest SOS in the league (for SOS, 1 means the toughest and 39 the easiest). Brady’s Adjusted ANY/A is therefore 7.74 (7.48 + 0.26). Brady ranked 2nd in Adjusted ANY/A behind only Kaepernick (who had only 35% as many attempts). Finally, we can compute each quarterback’s Adjusted VALUE, based on his Adjusted ANY/A and number of pass plays. Brady’s Adjusted Value is 1,203 yards (it was 1,028 before adjusting for SOS), which ranked him #1 in the league.

Quarterback
Tm
ANY/A
SOS
SOS Rk
Adj ANY/A
Adj ANY/A Rk
Adj VALUE
Adj VAL Rk
Tom BradyNWE7.480.2697.74212031
Aaron RodgersGNB7.330.3177.64310312
Peyton ManningDEN7.89-0.37387.5349653
Drew BreesNOR7.17-0.05197.1278294
Russell WilsonSEA7.010.4557.4556505
Robert Griffin IIIWAS7.47-0.14227.3365926
Colin KaepernickSFO7.550.5438.0915067
Matt RyanATL7.03-0.32376.7195048
Tony RomoDAL6.350.07136.43133399
Ben RoethlisbergerPIT6.77-0.2296.571030610
Cam NewtonCAR6.65-0.14236.511130311
Eli ManningNYG6.59-0.16256.431227512
Alex SmithSFO6.760.387.06827313
Matthew StaffordDET5.810.4466.251424114
Matt SchaubHOU6.47-0.25336.221516415
Joe FlaccoBAL6.33-0.15246.171613816
Josh FreemanTAM6.3-0.19286.111710817
Sam BradfordSTL5.640.4746.111810618
Carson PalmerOAK6.14-0.2305.9419419
Ryan FitzpatrickBUF5.610.02155.6320-16220
Matt HasselbeckTEN5.020.15115.1728-17921
Kevin KolbARI4.93-0.12214.8132-23422
Michael VickPHI5.270.01165.2925-24323
Jay CutlerCHI5.370.04145.423-24924
Andy DaltonCIN5.68-0.22315.4622-26925
Andrew LuckIND5.66-0.17265.4921-29526
Nick FolesPHI5.13-0.31364.8231-31727
Blaine GabbertJAX4.710.13124.8429-32628
Philip RiversSDG5.45-0.11205.3424-33829
Christian PonderMIN4.990.26105.2526-34930
Ryan TannehillMIA5.230.01175.2427-35931
Jake LockerTEN5.1-0.27344.8330-37232
John SkeltonARI3.10.813.937-43833
Chad HenneJAX4.88-0.4394.4834-48834
Matt CasselKAN4.31-0.23324.0736-54935
Ryan LindleyARI1.890.7422.6339-60336
Brady QuinnKAN3.2-0.17273.0338-63337
Brandon WeedenCLE4.98-0.29354.6933-67738
Mark SanchezNYJ4.36-0.05184.3135-78639

Peyton Manning drops from 1st in VALUE to 3rd in Adjusted VALUE, by virtue of having faced the 2nd easiest schedule in the league. Some other items that stuck out to me from the above table:

  • The Arizona quarterbacks were terrible last year, but they also faced a brutal schedule. In fact, the five NFC West quarterbacks faced the five toughest schedules last year, playing each other, the NFC North, and the AFC East.
  • Adrian Peterson was a worthy MVP choice last year, but based on this analysis, Tom Brady would have been a legitimate candidate. His campaign had little juice last year, but the difference between his and Manning’s schedules was particularly significant in 2012. As a reminder, you can get in on the latest Football Perspective contest by projecting Brady’s 2013 numbers here.
  • Chad Henne certainly seemed better than Blaine Gabbert last year, but after adjusting for SOS, Gabbert actually ranked above him in both Adjusted ANY/A and Adjusted Value. Henne had one absurdly incredible performance — more on that tomorrow — but he also had five games where he “produced” more than 100+ Adjusted Net Yards below average (the worst being a 21/43, 185-yard, 0 TD, 2 INT, 3 sack game against the Jets).
  • Matt Ryan had a career season in 2012, but it was certainly inflated by an easy schedule (not to mention superstar teammates). Ryan had only four games against above-average defenses. One of them was the five-interception disaster against the toughest pass defense he faced (Arizona). He played well in the other three games (againts Denver and Carolina twice), but still finished with fewer than 7.0 ANY/A in those games.
  • Like the NFC West, the NFC North quarterbacks generally had it tough, especially those who had to play the Bears defense (Jay Cutler had to instead deal with the Chicago offensive line). In this light, Matt Stafford’s efficiency numbers go from slightly below average to slightly above, giving more ammunition to the pro-Stafford crowd.

Adjusted defenses for Strength of Schedule

In the process of adjusting quarterback numbers for strength of schedule, we have done all the work we ned to adjust each defense’s numbers for strength of quarterback. And as hinted to above, no defense faced a harder schedule than the Giants in 2012. But strength of schedule adjustments only serve to make the Bears defense look even better. The Bears allowed 4.25 ANY/A last year against an Aaron Rodgers and Matt Stafford-fueled schedule that was 0.10 ANY/A tougher than average (Chicago faced the 13th toughest schedule). That means the Bears allowed only 4.15 Adjusted ANY/A, easily the best rate in the league. Chicago’s 1,123 adjusted net yards of value was also the highest mark in the league.

Team
ANY/A
SOS
SOS Rk
Adj ANY/A
Adj ANY/A Rk
Adj VALUE
Adj Val Rk
Chicago Bears4.250.1134.15111231
Seattle Seahawks4.540.13104.4129102
San Francisco 49ers4.840.1394.7147343
Arizona Cardinals50.4124.5937174
Denver Broncos4.88-0.06184.9356085
St. Louis Rams5.270.09145.1864516
Cincinnati Bengals5.07-0.19265.2674097
Green Bay Packers5.14-0.16225.383878
Pittsburgh Steelers5.18-0.26295.4592699
Atlanta Falcons5.590.12115.471026810
Carolina Panthers5.910.3935.521124211
New York Jets5.54-0.15215.71212212
Houston Texans5.63-0.13205.761310913
San Diego Chargers5.9-0.03165.9314214
Baltimore Ravens5.75-0.19255.9415-515
New York Giants6.430.4415.9816-3016
Minnesota Vikings6.10.11125.9817-3517
Cleveland Browns5.8-0.227618-4418
Washington Redskins6.160.05156.119-11419
Miami Dolphins6.07-0.16236.2320-19220
Detroit Lions6.22-0.11196.3321-22921
Buffalo Bills6-0.41326.4122-27322
Tennessee Titans6.18-0.23286.4123-29223
New England Patriots6.31-0.31306.6224-43524
Dallas Cowboys6.990.2466.7525-44825
Jacksonville Jaguars6.71-0.05176.7627-46126
Tampa Bay Buccaneers6.960.276.7526-53927
Philadelphia Eagles7.320.3157.0130-55728
Indianapolis Colts6.54-0.39316.9328-56529
New Orleans Saints7.320.3446.9829-66430
Oakland Raiders6.98-0.17247.1531-67131
Kansas City Chiefs7.750.287.5532-79632
  • Many Jets fans have begun treating Darrelle Revis like a cheating ex-girlfriend, which comes with it the usual lies and misinformation. The most often-cited statistic is that even without Revis in 2012, the Jets pass defense was still the 2nd best in the league. But that’s hardly the case: New York ranked 2nd in passing yards allowed, sure, but that’s because the Jets were often losing (ranking 26th in Game Scripts and 6th in time spent trailing) and faced an easy schedule. The Jets ranked 10th in ANY/A allowed (from the earlier table) against the 21st toughest (or 12th easiest) schedule in the league. In terms of Adjusted ANY/A and Adjusted VALUE, the Jets defense was 12th, a much more accurate representation of the Jets pass defense without Revis than New York’s 2nd-place ranking in passing yards allowed.
  • Like the Jets, the rest of the AFC East defenses had easy schedules (and also got to play Mark Sanchez). The Bills had the easiest SOS in the league: outside of games against the Patriots, 49ers, and Seahawks, Buffalo faced game managers or worse every week. The three high-attempt games came against Brandon Weeden, Chad Henne, and Matt Cassel, while the team also got to enjoy against Arizona, Kansas City, and two against the Jets.
  • Remember that the five NFC West quarterbacks faced the five hardest schedules? All four NFC West defenses ranked in the top six in both Adjusted ANY/A and Adjusted Value.
  • The Colts defense was really bad last year. In addition to finishing 31st in yards per carry allowed, the Colts pass defense ranked 28th in Adjusted ANY/A allowed, too. Only an easy strength of schedule covered that fact, and the Colts rode the league’s easiest overall schedule (along with some luck and some Andrew Luck) to an 11-5 record and the playoffs.

Previous “Random Perspective On” Articles:
AFC East: Buffalo Bills, Miami Dolphins, New England Patriots, New York Jets
AFC North: Baltimore Ravens, Cincinnati Bengals, Cleveland Browns, Pittsburgh Steelers
AFC South: Houston Texans, Indianapolis Colts, Jacksonville Jaguars, Tennessee Titans
AFC West: Denver Broncos, Kansas City Chiefs, Oakland Raiders, San Diego Chargers
NFC East: Dallas Cowboys, New York Giants, Philadelphia Eagles, Washington Redskins
NFC North: Chicago Bears, Detroit Lions, Green Bay Packers, Minnesota Vikings
NFC South: Atlanta Falcons, Carolina Panthers, New Orleans Saints, Tampa Bay Buccaneers
NFC West: Arizona Cardinals, San Francisco 49ers, Seattle Seahawks, St. Louis Rams

{ 21 comments… read them below or add one }

James July 29, 2013 at 9:20 am

Awesome work! Any particular reason you used a replacement level of average instead of, say, 1 standard deviation below the mean?

Also, what’s the “relatively easy way” to enter all of that into excel? Can you automate the iterations somehow, or do you just type in all the equations for the QBs and defenses, and then copy/paste the results back and forth until they stop changing? If I still had R or Matlab I could automate it, but I don’t know how to do it in excel and that’s one of the things holding me back from trying my hand at iterative results.

Reply

Chase Stuart July 29, 2013 at 1:01 pm

Thanks James. Glad you enjoyed.

No particular reason — I often include a replacement-level value, too, which I’ve defined in the past as 75% of league average.

As for the “relatively easy” way…. well, it’s not that easy. I actually had an e-mail on the same question. It is a bit complicated, but I’m short for time. One day, I plan to do a write-up explaining how to do this in Excel.

Reply

Danish July 29, 2013 at 2:39 pm

In case you aren’t aware: I’m pretty sure R is freeware so that shouldn’t stop you from playing around with these numbers :).

Reply

James July 29, 2013 at 9:02 pm

You’re right, I found that out right before you posted. Now to get to studying R…

Reply

JeremyDe July 30, 2013 at 9:19 am
James July 30, 2013 at 1:21 pm

Thank you! I’ve now successfully recreated SRS for 2012 and 2011 and in the process learned a lot about excel!

Reply

JeremyDe July 31, 2013 at 11:53 am

Glad it helped. Now I just need to go back and actually watch this. I’ve had it bookmarked for quite a while with the thought…at some point, I need to look at this.

Reply

Bryan July 29, 2013 at 11:39 am

Another great piece.

I’d love to see you do an article on opening day players for other positions like you did with quarterbacks a few days ago

Reply

Chase Stuart July 29, 2013 at 1:02 pm

Thanks Bryan. Glad you are enjoying the site.

Reply

Paul July 29, 2013 at 1:17 pm

The awesomeness of this article can’t be overstated.

I have maintained for years now you can’t look at QB’s stats without measuring strength of opponent. Some have it incredibly easy year after year due to the division they play in, some have it incredibly hard. Playing a top 5 defense and playing a bottom 5 defense is night and day. When it happens over and over again over games and years, it has a huge impact on the numbers.

Reply

Mike July 29, 2013 at 1:58 pm

You read my mind! :)

Excellent explanation. I hope people realize how powerful of a technique this is. You are only limited by your creativity and available time when it comes to application of it.

As an aside, have you toyed with normalizing the ANY/A with the league average and standard deviation in Excel before you adjust for schedule? Would this make the output more accurate when predicting out of sample data?

Touchee on all of the above. If you’d like a video explanation, I may be able to record one and send it to you. Its like Christmas morning…I have a new toy that I must play with constantly!

Reply

Chase Stuart July 29, 2013 at 2:01 pm

“Normalizing ANY/A with league average” is precisely how I do it. You need to figure out how much ANY/A each player and each defense is above/below average. But that’s simple addition and subtraction — I have not used any standard deviation stuff.

There also is one other “trick” to this, which I’ll get into tomorrow.

Reply

Mike July 29, 2013 at 2:23 pm

Standardize([ANY/A], data average, data standard deviation) should give you normalized Z-scores (standard deviations above or below the mean of the sample). Retrodictively, I don’t think this would make too big a difference in rankings, but for prediction purposes it may. I’ll be doing some out of sample testing I. the days to come.

Reply

Red July 29, 2013 at 8:24 pm

Chase, would you consider publishing these tables for past years, and keeping them in a databse over at PFR? It would be an incredible resource to have SOS-adjusted QB Value going back throughout NFL history. I would happily write you a check for a couple hundred bucks if you did this!

Reply

Chase Stuart July 29, 2013 at 8:36 pm

It’s something we’ve talked about before, but as usual, time is our limiting resource. Thanks for the support!

Reply

James July 30, 2013 at 3:02 pm

Chase, I hate to say it but at least some of the numbers above are wrong. I was trying to help Red out and stretch out my excel skills when I noticed that “Yards” for the first chart on defense is actually “Passing Yards Allowed + Sack Yards”. I’ve checked and ANY/A is also wrong because the sack yards cancel themselves out in the numerator. I haven’t been able to check yet but that means the rest of the post may be off as well.

Reply

Chase Stuart July 30, 2013 at 3:48 pm

Can you be more specific? I’m not sure what the error you’re referring to is.

Reply

James July 30, 2013 at 4:22 pm

Sure. In the “basic information” chart for defense you have:

Denver Broncos
Yards: 3558
Sack Yards: 364
ANY/A: 4.88
Value: 643

However, Denver only allowed 3194 passing yards last year, not 3558. The difference between those two numbers is 364, the number of sack yards Denver had last year. So your “Yards” category is actually “Yards + Sack Yards”. Unfortunately this carries over into the ANY/A calculation where you have:

4.88 = (3558 – 364 + 20*25 – 45*16)/(559 + 52). Note that this is equal to (3194 +20*25 – 45*16 )/(559 + 52)

Whereas the equation should be:

4.27 = (3194 – 364 + 20*25 – 45*16)/(559 + 52)

As you said in your post some of the numbers are off slightly from the official stats because you discarded the non-QB pass attempts, but that doesn’t explain the discrepancy this large (and removing non-QB passes should make total passing yards lower, not hundreds of yards higher). I tested a number of different teams and this mistake seems to have been applied consistently.

Reply

Chase Stuart July 30, 2013 at 4:37 pm

James,

By convention, team passing yards (and therefore team passing yards allowed) deduct sack yards lost from passing yards. So if you look at the 2012 Saints, they passed for “only” 4,997 yards, despite Drew Brees passing for 5,177 yards: http://www.pro-football-reference.com/teams/nor/2012.htm

So this isn’t a mistake: when doing this post, I used “passing yards” for defenses the same way we do for individuals. So the Broncos allowed 3,558 gross passing yards (i.e., individual quarterbacks passed fro 3,558 yards) but after you take out the sack yards lost, they should be at 3,194.

Make sense?

Reply

James July 30, 2013 at 4:56 pm

Yup, you’re right, I forgot about the team passing yards convention. The pop-up boxes at PFR and ESPN even explain that it’s net passing.

On a related note, that’s really annoying!

Reply

Jeff August 2, 2013 at 4:08 pm

What about a fundraiser to hire some people to collect and input the data? This seems simple enough that it would not cost too much. I think there are enough people who would find this worthwhile that you could get a lot of the work done by volunteers.

Reply

Leave a Comment

You can use these HTML tags and attributes: <strong> <em> <pre> <code> <a href="" title="">

{ 10 trackbacks }