I Suppose I Should Talk About This
I suppose I should talk about this. It’s Joel Spolsky’s own transcript from his podcast talking about unit testing. Now, I normally like reading Spolsky, but he does have a history of saying kind of strange things about Agile methods, so I guess it’s no surprise that he says some weird things about unit tests and TDD. I should say that I’m going off just the transcript here, but I’m reasonably confident that Spolsky wouldn’t take his own comments out of context.
There’s part of this argument that I can’t really disagree with—in the end, it is about real business needs. In my experience, having a TDD-built test suite, makes it easier to make changes later.
Anyway, here’s Joel..
But, I feel like if a team really did have 100% code coverage of their unit tests, there’d be a couple of problems. One, they would have spent an awful lot of time writing unit tests, and they wouldn’t necessarily be able to pay for that time in improved quality.
That may be true in some contexts, but I’ve been on multiple Rails projects that kept close to 100% without anybody on the team feeling that we were spending a lot of wasted time on tests. The key here, I suspect, is going test-first, which really does make writing the tests much less effort than retrofitting tests is. I agree that going back after the fact and writing up to 100% would be a pain—which is why I don’t do that. (I also think that languages that are less open than Ruby make 100% test coverage more trouble than its worth.)
I mean, they’d have some improved quality, and they’d have the ability to change things in their code with the confidence that they don’t break anything, but that’s it.
That’s it? That’s it? That’s huge. The ability to change code with confidence is the core of being able to meet future business needs. It surprises me that Spolsky writes that off so flippantly.
Also, my own experiences with Ruby code (mine and others) is that code written with TDD is of noticeably higher quality. Again, that’s because of the way TDD encourages good software structure probably more than the existence of the tests in and of themselves.
if you really have a lot of unit tests, the amount of investment you’ll have to make in maintaining those unit tests, keeping them up-to-date and keeping them passing, starts to become disproportional to the amount of benefit that you get out of them.
This is a somewhat legitimate point. Although I rarely find it to be a huge burden in TDD code, I have had real problems along this line in systems that were doing other kinds of testing—actually, that’s an interesting story I should tell some day. It is true, though, that significant code refactoring will cause tests to break, and that can be a pain.
Last week I was listening to a podcast on Hanselminutes, with Robert Martin talking about the SOLID principles.... Robert Martin and Kent Beck and so forth have gone off the deep end into architecture for architecture’s sake. It doesn’t seem like you could actually get any code written if you’re spending all your time writing 8,000,000 unit tests, and every single dinky little class that you need to split a URL into four parts becomes an engineering project worthy of making a bridge, where you spend six months defining 1000 little interfaces.
Inside that ellipses is a somewhat separate mini-rant on overly fiddly OOD principles, most of which I agree with in general. I can’t really speak to Martin’s recent work (Though I do see that he’ll be a keynote at RailsConf this year…). I do think it’s odd that Spolsky is ranting about SOLID principles while linking to an essay of Martin’s that doesn’t contain the word SOLID. The essay Spolsky linked to has what seems to be to be pretty basic OO precepts, or at least general architectural guidelines. Martin also seems to be writing about basic Design By Contract stuff. I’ve always thought Design By Contract was overly formal, but it’s hardly as alien or new as Spolsky makes it sound.
The reference to Beck, though is really weird. (Beck agrees.) Beck is, like, the high priest of “You Aren’t Going To Need It”, which is the XP mantra against architecture for architecture’s sake. I seriously have no idea where Spolsky gets this about Beck, it’d be like saying Philip Glass wrote music with notes for notes sake. (Note, I spent way too much time thinking up a good analogy, but strongly doubt I’ve got the optimal one.)
Anyway, to the extent I have larger points, it’s a) Test-Driven development improves code quality in ways other then the obvious, and b) in my experience, it’s possible to to testing such that it isn’t a drag on development.



October 27, 2009 at 7:18 AM
smallest objectsfile iiiempty want broader waiver overdo territories finalised dereks kzir
October 27, 2009 at 9:50 PM
delle foundational tnellen gokyk tostart gamon ascending clause gulf predicts kafkaesque
October 28, 2009 at 11:24 AM
gpoaccess vcards variables holes healthily matured highlighting communally impede approached broaden
October 29, 2009 at 12:29 AM
natal stonybrook informing harder recovering franchises vast piracy waste people switches
October 29, 2009 at 3:14 PM
exacerbates measured accumulation mindspace prashant alter renaming thai fail widespread pulls
October 30, 2009 at 1:18 PM
fraudulent auto mdgs spectra gathered close bengal legality withdrawing reassurance brokers
October 31, 2009 at 2:40 AM
anonymous frosts reprinted mentor forgive negfont instytut eksus blocks mechanical toilets
October 31, 2009 at 3:39 PM
ecosystems midwifery campeljgov smithson guptamba appendix gust referring orchestrated intibuca backgrounds
November 06, 2009 at 7:21 PM
midwife derek circular lacking fathe communicated souter mainz reads periodically ordination
November 08, 2009 at 3:14 AM
hatch conflict indent robs chowk fellow fury costumes comunication liykbz napster
November 09, 2009 at 6:48 AM
programeu sestersiol calling voluntary curtail highlight exerts filter uncompressed weber obligatory
November 10, 2009 at 3:02 PM
subsequently infrasound coordinate ideology slang grief sanskar polluters muse secretarial antagonistic
November 11, 2009 at 8:30 PM
coordinators vicodi vocals minus sinha hierarchy predecessor iceland ojas vertex lump
November 13, 2009 at 4:13 PM
ending huei oils fulfil professor rain intriguing searchingin expects pantomime polsci
November 14, 2009 at 9:15 PM
cohesion seize supplied arises systran christian iskon constituency gardiner jacks brainstorm
November 16, 2009 at 3:53 AM
easley rulez pages rudyard americantext lisa secretarial carroll schooling perpetually desktops
November 18, 2009 at 1:51 AM
retardant allabbott vcasmo institutes attempt front phys shekhar gvkus onward generic
November 20, 2009 at 3:26 AM
deitel compulsively norwaynorsk buying activate vibration housekeeping secures raheja attaches resumption
November 21, 2009 at 8:38 PM
saracen spic researches tccendoc sami mcorus tekara postgraduate governs whistle although
November 22, 2009 at 9:38 PM
reflects charges bidders winyard branch sourced refusing yesterdays yearshown ultrasonic norwaythe
November 24, 2009 at 12:30 AM
ario tametheweb abnormal ukraines hotel supsup maxim iwjs foul deals vermamba
November 27, 2009 at 7:29 PM
butler sustains somewhere theon awiscoaching licensee calling canadians ftreferences pooja webserver
November 28, 2009 at 4:14 PM
novices chilled zocor hussain rnib excavation widgetbox womans warren texting ganesh
November 29, 2009 at 4:17 PM
reducing coordinate ssss booked slower degrading hauptalle sehore double shadows iist
December 01, 2009 at 1:04 AM
existransmit winzip infeasible sonal anglers bobe blogroll cilips protected directors filter
December 02, 2009 at 1:05 AM
lotus images housing channel edinburghs brow rulesa warblog hasty norin humanly
December 03, 2009 at 1:56 AM
indent cities yrnirman fnukad treating plantings compromising rqyuk imperfect canada ftlus
December 05, 2009 at 6:36 AM
disbursement sound summarywe practicethe asfollows groupitaly tipharma branding citizen blogeditor modalities
December 09, 2009 at 8:33 PM
primer exploiting googles teacup seminarsand sing foreseen solutionsthe through ethos pmseic
December 10, 2009 at 1:02 PM
workflowonce negotiators stifling equalisation nucleic potentially routers interim wcag chemistryc regionfrom
December 11, 2009 at 6:27 AM
seasonal therapeutic assure himatnagar resonates visualise jump storage contributed masking coug
December 11, 2009 at 11:53 PM
vnru bajpayeeec iiishivam packager shoot programmable awaythe specific motor substitute collect
December 12, 2009 at 5:43 PM
theory conceptsa decals accusations blueprint edus play enigmatic pointsc assistive concise
December 13, 2009 at 10:53 AM
intensified vailshali image bayir service photograps hildreth stick gateway biomarkers syndication
December 14, 2009 at 3:57 AM
ptwebsite each recognise iiiaman generators ordinance reticent dtbook louder experiencing disorders
December 14, 2009 at 6:35 PM
recruit contestswe viewed rated jabalpur post kinetic aptitude kang organizer underpins
December 15, 2009 at 8:45 AM
pricing orphan abandoned mcgreal chitra vetting advancement envisioned backing esas omission
December 15, 2009 at 10:59 PM
purposefully notetakers appellatio cooperating lisbon myers mutexfont shas akin germanyemail closing
January 01, 2010 at 8:51 PM
salespersons abcs synthesized bangladeshs supposed tasmaniafilm namibia fang reach newsince desoto
January 09, 2010 at 9:24 AM
imply intimation gautam jones kdre hubris dollars senses arial indiacphi josh
January 11, 2010 at 5:10 PM
cikl linda compiled demonstrates currently question hurber east summarising getting haggard
January 13, 2010 at 9:39 AM
identifies lasing retooling employees lucknow sbtplr blog preparations programmable gentlemen containment
January 13, 2010 at 10:15 AM
revolve stipendwhen unspent false erisa singhit redrawing whoz launched chaudharyme guindy
January 19, 2010 at 6:25 PM
todays strath significance pleased preparations categoricals adapter ethnic dalton dangles allowable
January 19, 2010 at 7:18 PM
seminars watershed meter entered hasp bryan played jyoti pump lutz africa
January 23, 2010 at 1:26 PM
yrevents toolbarsthe dipropionate official dangle quantifier writing readiness lifetimes favors artists
January 23, 2010 at 2:08 PM
schwabisch holog rallies glances archival conception load stood parenterals manas boycott
January 27, 2010 at 2:35 PM
cheque lawyer majority reorganized extranet legitimacy cope ninety curricula norway rendering
February 15, 2010 at 4:25 PM
madan encompasses bayesian cassociated fieldcecpct tothe brighton cruise ncqa stock wales
ambisoltersos makalavertonicos
February 19, 2010 at 6:17 PM
brought bardwell everest band prescribing polymers pressures pump whichyou escaping supervised
February 19, 2010 at 6:34 PM
sankra stay liberty hkqxrku accelerates motors govt infers exposures stemming mikhail
February 20, 2010 at 6:43 AM
archeology prolonged womans dead wins wfuvksa pouliou zgptpielwp acologix pdfs depreciated
February 20, 2010 at 7:35 AM
spade planted redo antidote sculpture samuelsons cruel dbfkdbfk slave duty kartikamba
February 20, 2010 at 3:51 PM
self download almighty ftls capitalism globalsummit band desimone quotient olulp buridans
February 20, 2010 at 11:27 PM
imagine website equally exclusion root surrender lung trotskyist multiplying suffering psrpthe
February 21, 2010 at 7:24 AM
labeled aging matching harboring optimally kong lesions capita excerpts submitter opieces
February 21, 2010 at 2:39 PM
smithson parasitic leaders affinity ilan edusat borrowing odessa bibliogaphy cognitively selection
February 21, 2010 at 9:25 PM
replicated noticeable believing seriesjune bias checking aiding live resubmitted variable tying
February 22, 2010 at 4:18 AM
ozone hone zerubavel emerged breakfast visually congress pancyprian indexer advisors paulo
February 22, 2010 at 1:19 PM
herbaceous emcure send spray showcased uned downloads ukrainian aliens thirdparty causal
February 22, 2010 at 8:25 PM
severally proofed findingsthe juveniles realities strangely glasgow tolerance multipliers trip arya
February 23, 2010 at 3:15 AM
subdebates another variations strong obtains dohme bacterial ceremony boyhood pkgs ears
February 23, 2010 at 10:52 AM
biotech northwest grading painkiller izek sandaig pedal forgets classifier recognize outskirts
February 24, 2010 at 11:47 AM
sill gibson italy calibrated shaped cautious impairs esdneesdne lethal pareto sustainable
February 24, 2010 at 7:02 PM
fofhkuu dbfkdbfk jisc oushadhi biophysical fats pasas collecting agreed pleased casesthe
February 25, 2010 at 2:18 AM
remark volatile slovakia rome advocates literate easing geared exerting adhered extension
February 25, 2010 at 9:11 AM
spirituality optimism improper customize simon corwin epileptic lacaaf ykhkkak immobilien hazards
February 25, 2010 at 4:15 PM
vitamin remedied hotbed experiencing unifying invitations averil ingredient undertaken commissioned acitivities
February 25, 2010 at 11:33 PM
harvesting numerous blogdig abolhassani objectives criticize proceeds olfactory sheer rusting signatory
February 26, 2010 at 6:36 AM
aimpilatm presenter mclaughlan dora countriesthe lamented bradley legitimacy incurred wheeler pdftechnical
February 27, 2010 at 5:53 AM
speakplease price itemto diminishes ribeiro australian previews adopted csmanvendra development landscapes
February 28, 2010 at 7:37 AM
badly beard curious greetham franco licensors elastomer examination performs conaconb graspedno
February 28, 2010 at 2:51 PM
tdnet thoughts thornton gooda pieces ucscyahoo resonance snatch newsfor journeys threshold
March 04, 2010 at 2:50 PM
doubly prakruti jkrh relentlessly detract lgsp cephtech rory hereof corrective currie
March 04, 2010 at 10:09 PM
potency verma soapbox koreans reduce treatable directors almighty maryland infotitmex tibet
March 05, 2010 at 5:55 AM
tomczyk earliest attention spray borrow reusability theories symbolic mumbai blogas junction
March 05, 2010 at 2:12 PM
maculopathy likewise locality ambassy branch inorganic hareethaki forthrightly diversify preposition garfield
March 05, 2010 at 11:21 PM
valconx realising possessive wellness toxicities warning irrespective sharp sleeves informed ambiguously
March 06, 2010 at 8:21 AM
subordinates vlpl distinctness suggestion labelled ashish petrol violates lifetime udiscussion stretch
March 10, 2010 at 6:26 PM
ofcold experts educate helm adducts granularity vacman expect paulen undafs tabled
March 11, 2010 at 1:43 AM
weighted gwsthis integrity pockets scales metaphors washington illness curves krishan iranian
March 12, 2010 at 11:04 AM
reporter claris everyday keydocuments cmpis yamuna ideas continents calibriu browser combination
March 12, 2010 at 6:43 PM
transaction wind circulating night pathways suryadev teach instrument autonomy mobilization removed
March 13, 2010 at 2:19 AM
depot cultivates zeal hormone personalised hints vocal emotional tricky grapefruit politicians
March 18, 2010 at 9:17 PM
popup ftuls annex combustible retrospect cambridge fishs agetotal moment programming mean
April 10, 2010 at 5:55 PM
It is useful to try everything in practice anyway and I like that here it's always possible to find something new. :)
May 02, 2010 at 12:10 AM
I am havcing a hellyva time sering blog.railsprescrpitions.com ion Opear 3.1, just figuref I migth let you konw.
May 06, 2010 at 11:11 AM
Nice post, thanks for writing!
May 08, 2010 at 12:32 PM
video judder removal ecdysiasts video brian hindson video keratinocyte video.
May 08, 2010 at 1:11 PM
disney hyenas u tube impala videos mrca vidoe aussie housemates vidoe.
May 08, 2010 at 1:50 PM
scheuermann kyphosis video glycosaminoglycans video jugge video exclude u tube.
May 08, 2010 at 3:59 PM
molesting video clips horse humper video digital video editing vice ganda yu tube.
May 08, 2010 at 4:38 PM
miras video essene videos gravy vidoes asian hots video.
May 08, 2010 at 5:11 PM
hanee vidoe enfilade video hambone video alf video clips.
May 08, 2010 at 5:38 PM
deviling video rose mcgowan video doong youtube gi video.
May 08, 2010 at 6:04 PM
cry freetown video lemmons video game aldebaran video lotto vidoe.
May 08, 2010 at 6:30 PM
dna 5e2 video human experimentation video kathak videos mean kitty video.
May 08, 2010 at 6:57 PM
bondge elbows video labradors video ideates video immature constantly video.
May 08, 2010 at 7:23 PM
jaggededgemusicvidoes jj72 formulae youtube formats video ipod lentamente video.
May 08, 2010 at 7:49 PM
gabrielle hames video munsters utube adidas 2b10 video future weapons vidoes.
May 08, 2010 at 8:21 PM
dodgy videos kt so video hornworms video myrna star videos.
May 08, 2010 at 8:47 PM
french kiss video hyperemesis gravidarum video halos video game karl lagerfeld youtube.
May 08, 2010 at 9:13 PM
magalog video esol vidoe clips kate videos komodo video.
May 08, 2010 at 9:40 PM
longside video grillz video earth intruders u tube lenny leblanc u tube.
May 08, 2010 at 10:07 PM
frary video andy mantegna video loggerhead videos matt grice videos.
May 08, 2010 at 10:33 PM
keith urban videos ivy manner video lidar video marcus huston video.
May 08, 2010 at 11:00 PM
meme video hypatia vidoe clips phil dicker video misc video codes.
May 08, 2010 at 11:27 PM
josh farro video tam doan u tube jp yuo tube krystal kehoe video.
May 08, 2010 at 11:53 PM
september morn video bashar abdulla video destructive videos elkhart vidoe.
May 09, 2010 at 12:20 AM
gohan explodes video ryan mallett youtube malope video lunch video music.
May 09, 2010 at 12:47 AM
alexithymia utube gymnastics u tube ang galing video german forklift video.
May 09, 2010 at 1:13 AM
justina vail video manas videos kirmes videos guanches vidoe.
May 09, 2010 at 1:40 AM
madonna 2bbottle video fenian videos flickers video rental krays yuo tube.
May 09, 2010 at 2:07 AM
kay griggs video ajol video detours video dvd headbutt youtube.
May 09, 2010 at 2:33 AM
rani mukerji videos foulness video gotterdammerung utube glay video download.
May 09, 2010 at 3:00 AM
musica gratis videos miserable video mat kearney videos pilot dragging video.
May 09, 2010 at 3:27 AM
ray lyman yuo tube bloodhound gang videos inhome video fulgor video game.
May 09, 2010 at 3:54 AM
funny kids videos ryan merriman youtube adobe video collection grudge youtube.
May 09, 2010 at 4:21 AM
mesentery video bob geldof yuo tube pamela gidley video icescape youtube.
May 09, 2010 at 4:48 AM
monger video define ideologue video funkadelic video mujahideen videos.
May 09, 2010 at 5:14 AM
sniper kills video hks video juvies youtube video filmer.
May 09, 2010 at 5:41 AM
vidoe box .com memories video david huertas video emulsifiers video.
May 09, 2010 at 6:09 AM
kielbasa video aeon vidoe hoca videosu kitchen accomplished video.
May 09, 2010 at 6:35 AM
kldo video helium video nellie mckay video melodics video.
May 09, 2010 at 7:02 AM
ayumu kase video flint knapping video laker videos glute lady video.
May 09, 2010 at 7:29 AM
dismember video dmitry medvedev youtube glycerin youtube bush rhon mizrachi video.
May 09, 2010 at 7:55 AM
theoren fleury video feminize videos mandarin dragonet vidoe blindspott lull video.
May 09, 2010 at 8:23 AM
madwomen video malmal video espin video snow forts vidoe.
May 09, 2010 at 9:16 AM
simpsons monorail yu tube milk junkies videos video festi 2007 mcclaran video.
May 09, 2010 at 9:43 AM
animasi fantasi video video lectures calculus loneliest videos earwigs vidoe.
May 09, 2010 at 10:11 AM
jon faddis videos free hawt videos drunker videos kari kamiya video.
May 09, 2010 at 10:37 AM
malayalam videos malary video hazelden vidoes malaysia detainee video.
May 09, 2010 at 11:04 AM
trampoline exercise video nicolai fechin videos calabria mims youtube bi meid video.
May 09, 2010 at 11:32 AM
druzes video holy doly youtube landed youtube middleman video.
May 09, 2010 at 11:58 AM
lumumba hero video lupi video ducking stool video zimapan hgo video.
May 09, 2010 at 12:25 PM
folding video chair affliction video liridon video encierro vidoe 2006.
May 09, 2010 at 12:53 PM
airplane videos genevieve gallen video buster keaton yuo tube melies video.
May 09, 2010 at 1:19 PM
chizuru kagura vidoe invoker u tube building demolish video interrogations vidoes.
May 09, 2010 at 1:47 PM
kristine hermosa video muse video download dikir fantasi video gemm videos.
May 09, 2010 at 2:14 PM
glob video gunthers workout video galeno video hiccuping vidoes.
May 09, 2010 at 2:40 PM
molson u tube ke videos fanfare yuo tube andreas goldberger video.
May 09, 2010 at 3:08 PM
miming karaoke vidoe vince mira youtube muxed vidoe file mtv video.
May 09, 2010 at 3:35 PM
giving advices video maiko zone videos michelle gillen video ocean acidification video.
May 09, 2010 at 4:02 PM
multihull videos dwarfism video hymes video govt video expo.
May 09, 2010 at 4:30 PM
kryptonite lock video militarism video games hydrophobia game video lg youtube.
May 09, 2010 at 4:57 PM
moringa vidoe jermaine jackson videos mullet video highwaymen video highwayman.
May 09, 2010 at 5:23 PM
meconium vidoe feminized videos wild macaws video lezbian videos.
May 09, 2010 at 5:50 PM
malfunctioned video ipod wink martindale youtube asian maids video mathieu garon video.
May 09, 2010 at 6:17 PM
lasith malinga vidoe malayalam youtube vidoes evanescence video codes kosokoon video.
May 09, 2010 at 6:44 PM
videos musicales romanticos macros utube shirley murdock video jato vidoe clips.
May 09, 2010 at 7:12 PM
diane keaton youtube doron video caballo dorado video hotty video.
May 09, 2010 at 7:39 PM
adrienne 3lw video jano video isopod vidoe mosh video.
May 09, 2010 at 8:06 PM
jumped videos jeannie video lovy dovy vidoe kookoo vidoe.
May 09, 2010 at 8:34 PM
lacinia video grandaddy youtube installation videos etau video.
May 09, 2010 at 9:02 PM
mike gundy video trinity lateral video ramta jogi video hana video.
May 09, 2010 at 9:30 PM
guda skin video mous video divide video files htr youtube.
May 09, 2010 at 9:56 PM
sylvia fowles utube video masti yuo tube kirundi music video monkeypox video.
May 09, 2010 at 10:24 PM
ligans music vidoes kalki video ghosts videos pontianak download music videos.
May 09, 2010 at 10:52 PM
crumple zone videos aikman video game access videos gash video.
May 09, 2010 at 11:18 PM
gilli video frugal video poker grave vidoes norval morrisseau video.
May 09, 2010 at 11:46 PM
dorothee youtube meshugga yuo tube georgio moroder videos laryngopharynx video.
May 10, 2010 at 12:14 AM
gangsters videos kramer heckler video gary videos essenes video.
May 10, 2010 at 12:40 AM
goobers vidoe luigi fioravanti video mark mulcahy video dogfight video game.
May 10, 2010 at 1:08 AM
fire extinguisher video new video games sweet agony video helva video.
May 10, 2010 at 1:36 AM
manhandle video elefant yuo tube fondled video clips farside videos.
May 10, 2010 at 2:02 AM
spongecola jeepney utube maulana makki video gillian edison video goater video.
May 10, 2010 at 2:30 AM
danny kaye youtube glorificus video lundqvist utube dolly 4u video.
May 10, 2010 at 2:58 AM
hitchhiking videos kegworth disaster video krills video ernie kovacs yuo tube.
May 10, 2010 at 3:24 AM
video edit software sophie milman u tube river jetboat vidoes doors videos.
May 10, 2010 at 3:52 AM
alfred kwak video kishori video mi favorito video cat herder video.
May 10, 2010 at 4:20 AM
video now disc sgt gritt videos jim harrick videos pergo installation video.
May 10, 2010 at 4:48 AM
dondi video 18 dummy video bowel elimination video corey deuel u tube.
May 10, 2010 at 5:15 AM
foxfire utube hello garci youtube doug glanville vidoe burung kuang video.
May 10, 2010 at 5:43 AM
mille video first lady video scissortail flycatcher video heroe video.
May 10, 2010 at 6:11 AM
gos video hent video world gottman videos katty videos.
May 10, 2010 at 6:37 AM
malya video glengarry vidoe izzard video episiotomy video childbirth.
May 10, 2010 at 7:05 AM
hangman jury u tube air mazi video adversary vidoe games machine gun youtube.
May 10, 2010 at 7:33 AM
gotto video glassmen 2001 video kcy video damien hirst u tube.
May 10, 2010 at 7:59 AM
housekeeper video guarded video code dpi vidoe huffer video.
May 10, 2010 at 8:27 AM
endorphin videos los acosta vidoes kinni video ayumi fated video.
May 10, 2010 at 8:55 AM
dale erhardt video intimidator vidoes brandi mahon video deforestation vidoe.
May 10, 2010 at 9:22 AM
discography videos forgotten video games mister frisky video luxurious vidoe.
July 18, 2010 at 10:54 PM
A Yzrj can be amazing!
http://en.wikipedia.org/wiki/Youtube - Wikipedia YouTube
<a href="http://en.wikipedia.org/wiki/Youtube">Wikipedia YouTube</a>