Well, we can chalk up my month-long hiatus from posting to that blackest of software arts, time estimation. In the understatement of the century, Wikipedia notes:
The ability to accurately estimate the time/cost taken for a project to come in to its successful conclusion is a serious problem for software engineers.
In order to deal with this problem, I've tried everything from function point analysis to tasseography...

...and although this won't be a popular statement, let me tell you what I think: none of it really works.
Not really.
No matter how careful we are, and regardless of what statistical methods we apply, we'll find that software suffers from a sort of Heisenberg Uncertainty principle. It's almost impossible to observe a piece of software or to accurately predict how long it will take it to travel a certain distance on the development timeline. The best we can do is get a ballpark figure, and rely on the fact that our programmers will make a valiant effort to manhandle the project workload into the project schedule.
The problem here is one of loose wiring, a term I first came across reading Caro's Book of Poker Tells.
You see, your poker opponents are volatile beings. They can be impressionable, irritable, playful, capricious, and more. You don't know when they're going to short out, cross-circuit, or doing the silliest or the most brilliant things. This goes for all poker players, from the weakest beginners to the most seasoned pros. The deal is that even when opponents are playing a disciplined game of poker, so many of their decisions are borderlined that what they're going to do is anybody's guess
The idea is that given the exact same player, the exact same opponents, the exact same set of cards, the same amount of money, player actions will vary wildly just based on the current price of garbage in Moscow, or an increase in the butterfly population of Madrid. There's no telling what people will actually do, even if you present them with identical situations. Instead we have to contend with built-in unpredictability, a sort of inherent randomness to the world.
This is true not only in poker, but in life, and especially in programming.
The same programmer, given the same exact workload, given the same circumstances, will take anywhere between 50% to 150% as long to finish his work, based on nothing at all. Mood. Whim. Luck. The bad Chicken Marsala he ate last night. There's no way to predict this, no way to quantify it. The best you can do is resort to statistical methods to try to tame the beast. And even those don't work as well as we'd like, because the numbers we build are like houses of cards, prone to tumbling as soon as the assumptions that allowed us to generate those numbers are proven to be hopelessly naive, or on the other end of the spectrum, ridiculously conservative.
So for all these reasons and more, I've been hammered for the past three weeks playing catch-up on a side project, and unable to post. Cue the violins.
That project is finally concluded and for those of you who've asked whether the botting series will continue, the answer is absolutely. I hope you'll stay tuned as we continue discussing the mechanical aspects of poker botting, and as we start looking at the poker strategy and A.I. side of things more closely. We'll also touch on some other topics that I think you'll find quite interesting, if not shocking.
Expect the next post within 24 hours, give or take.
(But as I say that it occurs to me that estimating future publication dates is a bit of a black art, too, and even more difficult, in its own way, than estimating software completion times.)
Luckily this content is already written.
(But as I say that it occurs to me that content, like software, is never really complete. It can always be improved, honed, refactored.)
In the words of a poet:
What a tangled web of unrealistic schedules and intractable time-based dependencies we create, when first we start to estimate...
So, expect the next post within 12 to 36 hours, by the 50/150 rule stated above, and in the meantime: have you ever come across a software time-estimation method that actually works?
How good (or bad) are your software estimation skills?
Are they as bad as mine? As in need of constant oversight and refactoring? Or are you that rarest of creatures, the Bigfoot of Software Engineering...

A time estimation virtuoso?
63 comment(s)
I for one definitely fall into the non-virtuoso category. Moving to Agile has helped some, but somehow I always seem to find myself staring at a long list of hour estimates and realizing that none of them really mean anything, the numbers are fudged beyond recognition, and that the only way software schedules are ever met is by somehow cramming the work to be done in however many hours they give me.
Anonymous on Monday, August 18, 2008Thanks James, looking forward to the next botting post. So far as estimation goes, I'm a virtuoso. So much of a virtuoso that I once took 6 months to complete a project I initially scope out at 3 wks.
JeremyX on Monday, August 18, 2008Bigfoot... lol. Actually I followed that Bigfoot link and then did a Google search and those guys are actually claiming to have a frozen Bigfoot carcass.. too funny. There was even something on CNN (online) about it.
Anonymous on Monday, August 18, 2008it's true there DO seem to be people who are uncannily good at estimating maybe it's because they're just accurate maybe it's because they over-estimate but i think the main thing is that programmers can turn on the afterburners when they need to. maybe the real question is not 'how good at estimating?' but 'how good at developing software quickly?'.
i might be a terrible estimator but if i can code like a bat out of hell (i cant, but if i could) it doesn't matter, i'll just code what i need to meet whatever unrealistic deadline...
Andy on Monday, August 18, 2008I'm horrible at Estimating time as well, don't feel like you have to explain anything to us - we understand! I am ecstatic that you're back though!
Adam on Monday, August 18, 2008I'm not a time estimation virtuoso, but my time estimates have become much more accurate than they used to be. The first step toward making better time estimates is to observe your personal sources of variance, and try to whittle away at them. Here's some of the sources of the variances I've found and how I've worked on them.
Design. A lot of variance crept in when the design in my head overlooked several key components of the project. Abstracting out components is important to make a comprehensible design, but it's easy to abstract out so much complexity that estimates of the implementation complexity are junk. I try to flesh out my designs as much as possible on paper now. I find this makes for fewer errors and oversights in the design, saving me a lot of time in the long run and dramatically decreasing my variance.
Debugging. Sometimes I would get stuck while debugging, possibly wasting several days to figure out a single bug. In these long debugging sessions, I would conjecture a hypothesis as to what might be causing the symptoms of the bug, stare at the related code and see something that looks wrong and fix, and discover that the bug is still there. Sometimes I was actually fixing some other bug. Other times I was staring at the code a little too hard and introducing a new bug. Eventually I might actually fix the bug that I was trying to fix. More recently, when I find myself applying this whack-a-mole approach to debugging, I step back and look for a systematic way to do a binary search for the cause of the bug. Typically, I write some kind of verifier() function that will check whether something has gone wrong. If if the verifier() function is moderately complex and requires its own data structures, writing it is still faster than banging my head against the wall repeatedly. Then I insert the function into the code into a couple places to narrow down the cause of the error. Rinse, wash, repeat, until I have the exact line of the problem.
Feasibility. This one I'm still working on. Sometimes I try to tackle a project that I believe is feasible, but actually isn't (or isn't feasible with the overall architecture I've selected). This can be a huge timesink as I try to force the architecture to solve the problem it was designed for, when really it's just never going to work well. I think that I need to start integrating a "feasibility analysis" step where I throw together a simplified version of the project and see whether it obliterates the problem or not. If it doesn't obliterate the problem, it's probably not worth following through with a complete version.
Daniel Stutzbach on Monday, August 18, 2008I was once told that the proper way to estimate software time values is to take your best shot, then double it and move it up to the next time level.
So - 2 hours becomes 4 days, 1 hour becomes 2 days etc.
This works as well as anything.
Terry Smith on Monday, August 18, 2008i worked in a code shop where when we started on a new R&D project, the estimating model was to take hours given by programmer and multiple by four.
as the project slipped, due to all the reasons like function creep, bugs, etc, we moved to multiplying by eight.
they never really got to multiply again, b/c after 3+ years, they folded up this R&D site and moved on with the pieces that were salvageable!
Barry Greenstein's piece on chaos theory in Ace On The River is pretty spot on for coders too.
glad to see you're back!
bcd on Monday, August 18, 2008It depends on the project... big, small ? And also it depends what the project is all about. If you made 10 projects like this before, the estimation will be easier to make. The best estimations I've made are when I detailed all functions about a project and then estimate each functions separately. I try to make each functions at least 1 day long, even if I think that it will take 1 hour. Aslo, depending on the business model / contract that you have, "buffing" an estimation might be good or bad... maybe that's another thing to consider in all the factors ?
Mike Hill on Monday, August 18, 2008Oh, question - who the heck did that painting, and where can I get a wallpaper version of it, please?
Terry Smith on Monday, August 18, 2008I'm perfect at time estimation, because I do all original development. When the time allotted has run out, I call the module complete and let the maintenance engineers worry about the rest. :-D
The Barefoot Bum on Monday, August 18, 2008Thanks for what you've given so far, and for the motivation. The first seven steps really do seem like enough, but I admit I am anxious to see the eighth.
Jordan on Monday, August 18, 2008Oh I forgot to mention, I am very glad to see you back!
Terry Smith on Tuesday, August 19, 2008I like the Scotti from Star Trek approach. Always multiply your estimate by 4x and gain a reputation as a miracle worker.
Jordan on Tuesday, August 19, 2008The reason why developers always underestimate is that they just think about the coding bit of a project. There's an awful lot more to completing a project than just coding it. You've got to design it, code it, test it, debug it and finally tell people how to use it (documentation? why do they need that?!).
The net result is that you've thought about the coding effort, which if all things are equal is 1/5 of the total. Of course, all things are never equal - if you skimp on one stage, you have to expand a later one: inadequate design results in code being reworked, retested, and quality problems, which consumes more time than you saved initially.
Add to this the fact that developers (me included!) like to use new technologies which they don't yet fully understand (otherwise they wouldn't be new), so if they aren't careful they have to spend time learning the technology first. How can you accurately estimate the time it will take you to learn something you don't know?
David Groves on Tuesday, August 19, 2008This is no simple project. I've struggled with design and redesign, and it being my first major project ever, I've run into a lot of pitfalls that David Grooves mentioned.
But documentation, I think you can also over-document too. Sometimes I have a problem, so I try to work it out documenting with UML, and I haven't solved the problem at all, I've just restated it.
I think models that capture the bigger picture are the most helpful. The one in part #3 is invaluable.
I'm going to point out the white elephant in the room. "How I Built a Working..." Does it win?
Jordan on Tuesday, August 19, 2008So far I have been highly accurate by telling people it will be longer than they think, and way longer than they want.
Dan on Tuesday, August 19, 2008I'm reminded of the good accountant joke:
Customer: What's 2 + 2?
Accountant 1: 5. (He's bad at math) Accountant 2: 4. (No good either) Accountant 3: What do you want it to be? (Someone good at math and has imagination, YES!)
Dan on Tuesday, August 19, 2008HAHAHA! Yes, I love this project so far... even though it's been difficult and possibly currently beyond my feasibility range. It tickles the math/imagination side so much.
I can't help but feel like one of the Joker's minions from the Dark Night, hehe. This whole series has a delightful anarchists bouquet to it.
People will hate us for it, but AI is the future. AI programmers will be stealing people's jobs in the public's eye. What they don't realize is that they now will finally have time to write that all American novel, or go back to school and learn a new field, or ... but this coming tech revolution is going to be very difficult.
Jordan on Tuesday, August 19, 2008or watch Spongebob, lol
Jordan on Tuesday, August 19, 2008J.D. for President!!!
popo on Tuesday, August 19, 2008I read this blog, then i went to the poker bot erector set comments and saw this:
">Whens the new part coming?
Apologies for the delay guys. The post should be out later today. It's a handful of new posts, not just one. We'll be at part 8 or 9 in the series within 24 hours.. knock on wood.
James Devlin on 7/16/2008 7:31:02 AM (34 days ago)"
Blog time estimation obviously suffers from the same problems as software time estimation, and more :P.
ehsanul on Wednesday, August 20, 2008thanks for continuing work on this. i have been checking this every day for updates, like many others.
keep it up!
Anonymous on Wednesday, August 20, 2008Great article again James. Good to have you back after this month long hiatus. And even better that you are going to carry on the Poker bot series. I didn't really have much of an interest in programming but your constant incorporation with poker keeps me stuck to this site.
Keep up the good work!
Poker Forums on Wednesday, August 20, 2008Seriously, no need to apologize! :-)
Jordan on Wednesday, August 20, 2008Here is Bigfoot. Lets get on with Botting!
http://upload.wikimedia.org/wikipedia/commons/4/4a/ShravanbelgolaGomateshvarafeet2.jpg
James on Thursday, August 21, 2008@Daniel Stutzback: We have a lot in common then, especially wrt to debugging ;)
@Terry Smith: I've updated the pic with a link to the creator. And I like doubling the time and going up a level. Will have to try that.
@Mike Hill: We used 1-day minimums on a recent project, with success. So I'm a fan of this approach too.
@bcd: I've worked with x4 but never x8. Funny though how tasks have a way of stretching to fit the allocated time.
@Jordan: Yes and let's face it, technology has been putting people out of work for years. But they shift to new areas, and we always need people to build and maintain the technology, and we're still miles away from computers that can field support calls, haggle with customers, or write good content. Overall the effect should be a positive one. Well. Assuming the economy doesn't tank in the meantime.
@David Groves: Exactly right, and I've often wondered if software companies shouldn't be applying statistical methods to productivity, not so much to keep tabs on employees, but to better understand their time estimates. I guess some shops do this already but by and large... not many.
@ehansul: I had to laugh when I saw your comment. ;)
James Devlin on Saturday, August 23, 2008Jeff Atwoods post is also worth reading:
http://www.codinghorror.com/blog/archives/001161.html
Anonymous on Saturday, August 23, 2008In my experience all formulaic time estimates are likely to be wrong. I agree with the posters who said you have to analyze the work effort very carefully. I find that most of my time estimates are off because I've eyeballed the task rather than performing due diligence on it. I find that when I really design things out in a detailed way, my estimates improve noticeably.
I think laziness has a lot to do with it.
Anonymous on Saturday, August 23, 2008My rss says you have a new post but I can't seem to read it. What's happened man!
Poker Forums on Friday, September 26, 2008Time estimation tends to converge as the end of the project comes.
Ricardo on Monday, November 17, 2008I like art!
Poker Bot on Tuesday, June 02, 2009ask bir hayal izle
ask bir hayal izle on Sunday, October 04, 2009Very interesting and informative entry indeed. I am working in the software development company so I am very interested in all information related with this sphere. Very good said I think that "The ability to accurately estimate the time/cost taken for a project to come in to its successful conclusion is a serious problem for software engineers." It really a true I think. Well reading this post I have noticed and many other original and interesting thoughts. Thanks a lot for sharing this interesting information and I will be waiting for other great articles from you in the nearest future. Regards, Matt Thompson from <a href="http://www.azoft.com/">software development services</a>
MattT on Thursday, January 28, 2010Very interesting and informative entry indeed. I am working in the software development company so I am very interested in all information related with this sphere. Very good said I think that "The ability to accurately estimate the time/cost taken for a project to come in to its successful conclusion is a serious problem for software engineers." It really a true I think. Well reading this post I have noticed and many other original and interesting thoughts. Thanks a lot for sharing this interesting information and I will be waiting for other great articles from you in the nearest future. Regards, Matt Thompson from [url=http://www.azoft.com/]software development services[/url]
MattT on Thursday, January 28, 2010Online sale for mens Nike Air Max Limited shoes, Cheap Nike Air Max Limited shoes, Top quality and low price. Buy Nike Air Max Shoes Now!
Nike Air Max Limited on Thursday, July 08, 2010nice article. keep post like this...
Ebel replica watches on Tuesday, July 20, 2010PerformingGraham for sale that will create a one-wayswiss watches backlink to your website whichMaurice Lacroix watches is a good point to have. It is Patek Philippe watchesa time-consuming Tag Heuer for saleprocess even though it produces good outcomes U-boat for saleand works. You can also swiss watchespost comments on blogs alongMaurice Lacroix watches together with your link, but make sureGraham watches these blogs are do-follow, which dolce & gabbana handbagsindicates the link that youreplica coach handbags simply post will probably be replica handbagscounted by the search engines jimmy choo replicaas a backlink.There are many thingsversace replica handbags that contribute to online businessjuicy couture replica failure, and the lack of good action thomas wyldeis surely one of the deadliest business-killersdolce gabbana handbags on the net. Take action like by no means chloe handbags replicaprior to, and don’t get struck by analysis paralysisburberry replica. Your achievement lies in your rapid actionchanel replica and how well you apply numerous strategies.
replica watches on Saturday, July 24, 2010nike air jordan 2010 nike air jordan 5 nike air jordan 3 nike air jordan 11 cheap nike air jordan 2 nike air jordan 1 nike air jordan shoes discount nike air jordan shoes nike air jordan 6 wholesale nike air jordan 1 discount nike air jordan 6 nike air jordan 7 nike air jordan 8 top quality nike air jordan shoes 23 nike air jordan 21 nike air jordan 22 nike air jordan 6 rings cheap nike air jordan 22 nike air lebron james shoes nike air lebron james shoes nike air jordan 2010 nike air joredan lebron james nike air jordan 2009 discount nike air jordan 2009 nike lebron james wholesale nike air jordan 2010 cheap nike air jordan 2009 discount nike air jordan 19 cheap nike air jordan 3 discount nike air jordan 18 brand nike air jordan 12 wholesale nike air jordan 2 nike air jordan 13 nike air jordan 14 nike air jordan 6 rings discount jordan shoes7 discount jordan shoes1 jordan shoes2010 jordan shoes 6 rings cheap jordan shoes2 discountjordan shoes3 discount jordan shoes4 jordan shoes uk23 jordan shoes classic bw22 cheap jordan shoes 21 ltd discount jordan shoes20 discountjordan shoes19 jordan shoes 18 uk nike air jordan shoes 17 cheap nike air jordan shoes 16 discount air jordan shoes 15 discount air jordan shoes 14 nike air jordan shoes 3 uk nike air jordan shoes 13 cheap nike air jordan shoes 11 discount air jordan shoes 6 discount jordan shoes 10 nike air jordan shoes 8 nike air jordan shoes 7 cheap louis vuitton bags cheap kobe bryant shoes cheap lebron james shoes .
cheapjordan on Saturday, July 24, 2010I will keep visiting this blog very often. Blu ray to iPad /
ipad converter on Sunday, July 25, 2010ed hardy, cheap ed hardy, ed hardy clothing, ed hardy outlet, ed hardy jeans, ed hardy bags, ed hardy swimwear, ed hardy shirts, ed hardy tee, ed hardy caps, ed hardy purse, ed hardy board shorts, ed hardy shoes, ed hardy for men, ed hardy for women, ed hardy jeans for women.
cheap ed hardy on Tuesday, July 27, 2010ed hardy, cheap ed hardy, ed hardy clothing, ed hardy outlet, ed hardy jeans, ed hardy bags, ed hardy swimwear, ed hardy shirts, ed hardy tee, ed hardy caps, ed hardy purse, ed hardy board shorts, ed hardy shoes, ed hardy for men, ed hardy for women, ed hardy jeans for women.
cheap ed hardy on Tuesday, July 27, 2010charming Christian Louboutin Shoes best-loved Pandora Jewelry, show themselves, combined with a Zumba Fitness DVD and P90X and Insanity Workout DVD video tutorial,three Fitness Make yourself.Christian Louboutin Knockoffs,Christian Louboutin Wedding Shoes, Christian Louboutin Boots,Christian Louboutin Sandals,Christian Louboutin Wedges,Christian Louboutin Platform,P90X DVD,DVD Sales,Vibram Five Fingers,Herve Leger,Cheap Christian Louboutin,Alexander Wang Dress,Alexander Wang Shoes,Alexander Mcqueen Shoes,Giuseppe Zanotti Shoes,ED Hardy Shoes,Jimmy Choo Shoes,Chanel Shoes,YSL Shoes,Manolo Blahnik Shoes,Vivienne Westwood Shoes,Tory Burch Shoes,Louis Vuitton Shoes,Miu Miu Shoes,Salvatore Ferragamo Shoes,Marc Jacobs Shoes,Christian Dior Shoes,Herve Leger,Sergio Rossi Shoes,Lanvin Shoes,Coach Shoes,Prada Shoes,Gucci Shoes,Moncler Jackets,MBT Shoes
christian louboutin on Tuesday, July 27, 2010Porsche did not specify a production start-up date or a price tag, although widespread media reports in Europe have suggested the sticker could exceed $600,000.
ブランド腕時計;ロレックス時計;オメガ時計;IWC腕時計 ロレックスデイトナ;ロレックスエクスプローラー;ロレックスGMTマスターII オメガスピードマスター;オメガシーマスター;オメガアクアテラ;オメガデ・ヴィル IWCアクアタイマー;IWCインヂュニア;IWCスピットファイアー;IWCポルトギーゼ ロレックスサブマリーナ;ロレックスヨットマスター;ロレックスターノグラフ ロレックスミルガウス;ロレックスエアキング;ロレックスパーペチュアルデイト ロレックスチェリーニ チェリニウム;ロレックスデイデイト;ロレックスプリンス オメガコンステレーション;IWCクラシックパイロット;IWCポートフィノ;ロレックスデイトジャスト
Michael Macht, Porsche AG president and chairman of the board of management, said: "Production of the 918 Spyder in a limited series proves that we are taking the right approach with Porsche Intelligent Performance,
バッグ コピー、財布 コピー グッチ;グッチ バッグ;グッチ コインケース・キーケース・ポーチ・小物;グッチ 財布;シャネル;シャネル バッグ;シャネル 財布;ベルト;グッチ ベルト;ルイ・ヴィトン ベルト;エルメス ベルト;シャネル ベルト;フェンディ ベルト;バーバリー ベルト;ディオール ベルト;ブルガリ ベルト;ミュウミュウ;ミュウミュウ バッグ;ミュウミュウ 財布;プラダ;プラダ バッグ;プラダ 財布;バーバリー;バーバリー バッグ;バーバリー 財布;バレンシアガ;バレンシアガ バッグ;バレンシアガ 財布;ディオール;ディオール バッグ ;ディオール 財布;クロエ;クロエ バッグ;クロエ 財布;フェンディ;フェンディ バッグ;フェンディ 財布
featuring the combination of supreme performance and efficient drivetrain concepts."
グッチコピー|グッチバッグ|グッチ財布 グッチ ハンドバッグ;グッチ ショルダーバッグ;グッチ ボストンバッグ;グッチ トートバッグ; グッチ 二ツ折り財布;グッチ 長財布;グッチ wホック財布
ブランド腕時計 on Thursday, July 29, 2010Chanel Handbags, Louis vuitton Handbags, lv handbag, Guess Handbag for sale, real MIU MIU bags.,
Top questions and answers about Best-lv bags. Find 70 questions and answers about Best-Louis-Vuitton-Replica at Ask sale4louisvuitton.com Read more.
Louis vuitton Wallets Louis vuitton online shop, cheap & discount lv at sale4louisvuitton.com.
sale4louisvuitton.com supplies the best replica Louis vuitton handbag. ... Friend link : replica watches replica handbags Louis vuitton Handbags replica bags Hermes
louisvuitton4 on Thursday, July 29, 2010Wholesale NFL Jerseys
Cheap NFL Jerseys
NFL Jerseys
NFL Football Jerseys
Women NFL Jerseys
Kid NFL Jerseys
Super Bowl Jerseys
Super Bowl NFL Jerseys
Throwback Jerseys
Throwback NFL Jerseys
Cheap Throwback Jerseys
Wholesale Throwback Jerseys
Cheap Super Bowl Jerseys
Wholesale Super Bowl Jerseys
youth nfl jerseys wholesale
youth nfl jerseys cheap
nfl youth jerseys
Baltimore Ravens Jerseys
Chicago Bears Jerseys
Cincinnati Bengals Jerseys
Denver Broncos Jerseys
Dallas Cowboys Jerseys
Green Bay Packers Jerseys
Indianapolis Colts Jerseys
Minnesota Vikings Jerseys
New England Patriots Jerseys
New Orleans Saints Jerseys
New York Jets Jerseys
Arizona Cardinals Jerseys
Buffalo Bills Jerseys
Atlanta Falcons Jerseys
Carolina Panthers Jerseys
Cleveland Browns Jerseys
Houston Texans Jerseys
Detroit Lions Jerseys
Jacksonville Jaguars Jerseys
Kansas City Chiefs Jerseys
Miami Dolphins Jerseys
New York Giants Jerseys
Philadelphia Eagles Jerseys
San Francisco 49ers Jerseys
Oakland Raiders Jerseys
Seattle Seahawks Jerseys
Pittsburgh Steelers Jerseys
St Louis Rams Jerseys
San Diego Chargers Jerseys
Tampa Bay Buccaneers Jerseys
Tennessee Titans Jerseys
Washington Redskins Jerseys
Ray Lewis Jerseys
Ed Reed Jerseys
Joe Flacco Jerseys
Terrell Suggs Jerseys
Dick Butkus Jerseys
Greg Olsen Jerseys
Matt Forte Jerseys
Devin Hester Jerseys
Walter Payton Jerseys
Brian Urlacher Jerseys
Lance Briggs Jerseys
Jay Cutler Jerseys
Carson Palmer Jerseys
Rey Maualuga Jerseys
Chad Johnson Jerseys
Demarcus Ware Jerseys
Jason Witten Jerseys
Terrell Owens Jerseys
Felix Jones Jerseys
Marion Barber Navy Jerseys
Marion Barber Jerseys
Emmitt Smith Jerseys
Miles Austin Jerseys
Roger Staubach Jerseys
Troy Aikman Jerseys
Tony Romo Jerseys
Eddie Royal Jerseys
Brandon Marshall Jerseys
Aaron Rodgers Jerseys
A.J. Hawk Jerseys
Donald Driver Jerseys
Greg Jennings Jerseys
Peyton Manning Jerseys
Dallas Clark Jerseys
Robert Mathis Jerseys
Marvin Harrison Jerseys
Drew Brees Jerseys
Marques Colston Jerseys
Pierre Thomas Jerseys
Reggie Bush Jerseys
Jeremy Shockey Jerseys
Tarvaris Jackson Jerseys
Adrian Peterson Jerseys
Jared Allen Jerseys
Mark Sanchez Jerseys
Thomas Jones Jerseys
Leon Washington Jerseys
Brett Favre Jerseys
buynflshop on Thursday, July 29, 2010Wholesale NFL Jerseys
Cheap NFL Jerseys
NFL Jerseys
NFL Football Jerseys
Women NFL Jerseys
Kid NFL Jerseys
Super Bowl Jerseys
Super Bowl NFL Jerseys
Throwback Jerseys
Throwback NFL Jerseys
Cheap Throwback Jerseys
Wholesale Throwback Jerseys
Cheap Super Bowl Jerseys
Wholesale Super Bowl Jerseys
youth nfl jerseys wholesale
youth nfl jerseys cheap
nfl youth jerseys
Baltimore Ravens Jerseys
Chicago Bears Jerseys
Cincinnati Bengals Jerseys
Denver Broncos Jerseys
Dallas Cowboys Jerseys
Green Bay Packers Jerseys
Indianapolis Colts Jerseys
Minnesota Vikings Jerseys
New England Patriots Jerseys
New Orleans Saints Jerseys
New York Jets Jerseys
Arizona Cardinals Jerseys
Buffalo Bills Jerseys
Atlanta Falcons Jerseys
Carolina Panthers Jerseys
Cleveland Browns Jerseys
Houston Texans Jerseys
Detroit Lions Jerseys
Jacksonville Jaguars Jerseys
Kansas City Chiefs Jerseys
Miami Dolphins Jerseys
New York Giants Jerseys
Philadelphia Eagles Jerseys
San Francisco 49ers Jerseys
Oakland Raiders Jerseys
Seattle Seahawks Jerseys
Pittsburgh Steelers Jerseys
St Louis Rams Jerseys
San Diego Chargers Jerseys
Tampa Bay Buccaneers Jerseys
Tennessee Titans Jerseys
Washington Redskins Jerseys
Ray Lewis Jerseys
Ed Reed Jerseys
Joe Flacco Jerseys
Terrell Suggs Jerseys
Dick Butkus Jerseys
Greg Olsen Jerseys
Matt Forte Jerseys
Devin Hester Jerseys
Walter Payton Jerseys
Brian Urlacher Jerseys
Lance Briggs Jerseys
Jay Cutler Jerseys
Carson Palmer Jerseys
Rey Maualuga Jerseys
Chad Johnson Jerseys
Demarcus Ware Jerseys
Jason Witten Jerseys
Terrell Owens Jerseys
Felix Jones Jerseys
Marion Barber Navy Jerseys
Marion Barber Jerseys
Emmitt Smith Jerseys
Miles Austin Jerseys
Roger Staubach Jerseys
Troy Aikman Jerseys
Tony Romo Jerseys
Eddie Royal Jerseys
Brandon Marshall Jerseys
Aaron Rodgers Jerseys
A.J. Hawk Jerseys
Donald Driver Jerseys
Greg Jennings Jerseys
Peyton Manning Jerseys
Dallas Clark Jerseys
Robert Mathis Jerseys
Marvin Harrison Jerseys
Drew Brees Jerseys
Marques Colston Jerseys
Pierre Thomas Jerseys
Reggie Bush Jerseys
Jeremy Shockey Jerseys
Tarvaris Jackson Jerseys
Adrian Peterson Jerseys
Jared Allen Jerseys
Mark Sanchez Jerseys
Thomas Jones Jerseys
Leon Washington Jerseys
Brett Favre Jerseys
buynflshop on Thursday, July 29, 2010Welcome to the best designer replica handbags store .All our Louis vuitton handbags hobo handbags and designer replica
handbags etc products are made
Louis-vuitton-handbags Best Seller. 1 2 3 · Louis vuitton Shoulder Bag - Black. Item Number: 51108. Price:$199. Louis vuitton
A Grade Damier Azur
However, despite all their nooks and crannies, Lv are still slim and compact .... The World's Best Cities For Men In 2010 ...
Going Dutch: Best clogs from Stuart Weitzman Louis vuitton handbags, Michael Kors, Chanel, and more. Tap into clogs.
By Stephanie Soong. Clogs by Stuart Weitzman,
louis vuitton on Thursday, July 29, 2010Pool Temperature Madera Jobs Madera Pest Control Madera Dentist Merced Dentist Visalia Dentist Modesto Dentist Fresno Limousine Fresno Granite briefcases leather leather briefcases prospect solution | prospect solutions | prospectsolution | prospectsolutions | prospectsolution.com prospect solution | prospect solutions | prospectsolution | prospectsolutions | prospectsolution.com prospect solution | prospect solutions | prospectsolution | prospectsolutions | prospectsolution.com
carmi on Friday, July 30, 2010Share your knowledge to continue a timeless tradition;
DVD Ripper on Friday, July 30, 2010essay essay writing essay writing service essay writing service uk
jane on Friday, July 30, 2010Life will change what you are but not who you are;
Blu-ray Ripper on Friday, July 30, 2010Marry a person who likes talking; because when you get old, you’ll find that chatting to be a great advantage
blu-ray ripper on Friday, July 30, 2010Live a noble and honest life. Reviving past times in your old age will help you to enjoy your life again;
DVD Ripper on Friday, July 30, 2010I like your article. Will always support you!He is quite a good reading. i'd appreciate it. time to realize his.
DVD Ripper on Friday, July 30, 2010Your article is very appealing to me.I like this article, this article that i learned a lot of knowledge.
Video Converter on Friday, July 30, 2010In your article I found very different things. Very characteristic. I've never seen before.Thank you very much the share. you are very creative.
DVD to iPod on Friday, July 30, 2010You have a unique perspective.Thank you for sharing. it is wonderful super classic. I admire you.
DVD Cloner on Friday, July 30, 2010Go and catch your louis vuitton handbags from here, we will do our best to serve for you; If you're looking for Air Jordan shoes, you may have realized it is a difficult task to find them. We strive to provide you with information on online shoe stores that carry authentic Nike Air jordan shoes; nike shoes unlike a lot of regular running shoes, its flexibility provides a world of comfort on the run or while walking around, buying it from our mall and you will benefit a lot; When it comes to retro, cool designs Adidas does a great job with every sneaker release. At Sole Heaven, we have a really impressive arsenal of adidas shoes to do just the job; It is time for the Gucci fans to make some changes, please treat yourself with a different classic gucci handbags here, that will be a great surprise; Where can you find ugg boots for sale? Learn how smart buyers look for uggs for sale. Find the best online offers for directions.
nike shoes on Friday, July 30, 2010jordans vibram five fingers vibram boots shoes air jordan five fingers vibram ugg boots jordan air five fingers vibram vibram five fingers discount uggs jordan shoes vibram five five fingers ugg australia boots vibram five fingers discount uggs sheepskin footwear ugg boats vibram buy cheap ugg boots ugg australia online celtic sheepskin company five fingers knitted ugg boots australia classic tall sheepskin footwear vibram five ugg boats australia women's classic cardy ugg australia online vibram five fingers classic cheap ugg boats genuine uggboots australia classic tall five fingers vibram buy ugg site ugg 5815 women's classic cardy vibram shoes buy discount ugg boots ugg 5825 genuine uggboots vibram shoe Ladies UGG Boots ugg 5803 ugg 5815 vibram five fingers flow UGG boots sale ugg 5819 ugg 5825 vibram fivefinger ugg boats ugg 5833 ugg 5803 vibram kso UGG Classic Tall 5815 Boots ugg 5879 ugg 5819 fivefingers kso ugg 5879 ugg 5854 ugg 5833 Vibram Five Fingers Sprint ugg 5803 ugg 5359 ugg 5879 vibram five fingers bilika ugg 5819 ugg 5325 ugg 5854 Vibram FiveFingers MOC ugg 5833 ugg 5225 ugg 5359 vibram five fingers performa ugg 5854 celtic sheepskin company ugg 5325 vibram five fingers performa jane ugg 5825 sheepskin footwear ugg 5225 celtic sheepskin company ugg 5815 ugg australia online ugg boats sheepskin footwear ugg 5359 australia classic tall celtic sheepskin company ugg australia online ugg 5325 women's classic cardy sheepskin footwear australia classic tall ugg 5225 genuine uggboots ugg australia online women's classic cardy 2010 Hot Selling Boots ugg 5815 australia classic tall genuine uggboots celtic sheepskin company ugg 5825 women's classic cardy ugg 5815 sheepskin footwear ugg 5803 genuine uggboots ugg 5825 ugg australia online ugg 5819 ugg 5815 ugg 5803 australia classic tall ugg 5833 ugg 5825 ugg 5819 women's classic cardy ugg 5879 ugg 5803 ugg 5833 genuine uggboots ugg 5854 ugg 5819 ugg 5879 ugg 5815 ugg 5359 ugg 5833 ugg 5854 ugg 5825 ugg 5325 ugg 5879 ugg 5359 ugg 5803 ugg 5225 ugg 5854 ugg 5325 ugg 5819 celtic sheepskin company ugg 5359 ugg 5225 ugg 5833 sheepskin footwear ugg 5325 ugg boats ugg 5879 ugg australia online ugg 5225 celtic sheepskin company ugg 5854 australia classic tall celtic sheepskin company sheepskin footwear ugg 5359 women's classic cardy sheepskin footwear ugg australia online ugg 5325 genuine uggboots ugg australia online australia classic tall ugg 5225 ugg 5815 australia classic tall women's classic cardy sheep skin boots ugg 5825 women's classic cardy genuine uggboots ugg boats ugg 5803 genuine uggboots ugg 5815 celtic sheepskin company ugg 5819 ugg 5815 ugg 5825 sheepskin footwear ugg 5833 ugg 5825 ugg 5803 ugg australia online ugg 5879 ugg 5803 ugg 5819 australia classic tall ugg 5854 ugg 5819 ugg 5833 women's classic cardy ugg 5359 ugg 5833 ugg 5879 genuine uggboots ugg 5325 ugg 5879 ugg 5854 ugg 5815 ugg 5225 ugg 5854 ugg 5359 ugg 5825 ugg 5854 ugg 5359 ugg 5325 ugg 5803 ugg 5359 ugg 5325 ugg 5225 ugg 5819 ugg 5325 ugg 5225 ugg 5833 ugg 5225 ugg 5879
Vibram fivefingers on Friday, July 30, 2010www.thesuitshoes.com can provide you the best MBT shoes to choice.
mbt shoes on Friday, July 30, 2010good news
hermes birkin on Friday, July 30, 2010thanks for your kindly sharing
abercrombie and fitch on Friday, July 30, 2010