FrontPage
Edit Page:
!c !3 !note --BUTUNCLEBOB.COM -- |!1 MOVED|!1 MOVED|!1 MOVED|!1 MOVED|!1 MOVED|!1 MOVED| !3 The new site can be viewed [[here][http://blog.cleancoder.com]]. !c !1 ''The OLD Object Mentor blog site.'' !c !3 !note Powered by [[!-FitNesse-!][http://fitnesse.org]] !- <table border="1" cellspacing="0" style="margin-right: auto; margin-left: auto;"> <tr><td colspan="8"><div class="centered"><span class="meta"><h2>Bloggers</h2></span></div></td> </tr> <tr> <td align="center"><a href="ArticleS.UncleBob"><img src="/files/images/bloggers/mini_unclebob.jpg" width="80" height="80"></a> <br><a href="ArticleS.UncleBob">Uncle Bob</a></td> <td align="center"><a href="ArticleS.JamesGrenning"><img src="/files/images/bloggers/mini_grenning.jpg" width="80" height="80"></a> <br><a href="ArticleS.JamesGrenning">James Grenning</a></td> <td align="center"><a href="ArticleS.BobKoss"><img src="/files/images/bloggers/mini_koss.jpg" width="80" height="80"></a> <br><a href="ArticleS.BobKoss">Bob Koss</a></td> <td align="center"><a href="ArticleS.MichaelFeathers"><img src="/files/images/bloggers/mini_feathers.jpg" width="80" height="80"></a> <br><a href="ArticleS.MichaelFeathers">Michael Feathers</a></td> </tr> <tr> <td align="center"><a href="ArticleS.DavidChelimsky"><img src="/files/images/bloggers/mini_chelimsky2.jpg" width="80" height="80"></a> <br><a href="ArticleS.DavidChelimsky">David Chelimsky</a></td> <td align="center"><a href="ArticleS.TimOttinger"><img src="/files/images/bloggers/mini_ottinger2.jpg" width="80" height="80"></a> <br><a href="ArticleS.TimOttinger">Tim Ottinger</a></td> <td align="center"><a href="ArticleS.DeanWampler"><img src="/files/images/bloggers/mini_dean.jpg" width="80" height="80"></a> <br><a href="ArticleS.DeanWampler">Dean Wampler</a></td> </tr> </table> -! !meta !2 Latest Articles................................. |!meta !3 ''Date''|!meta !3 ''Author''|!meta !3 ''Title''|!meta !3 ''Comment''| |20 Dec 2006|${unclebob}|[[New Blog Site][.ArticleS.UncleBob.NewBlogSite]]|''We have a new blog site. http://blog.objectmentor.com''| |20 Dec 2006|${unclebob}|[[Java Dates][.ArticleS.UncleBob.JavaDates]]|''The horrible state of Dates in the Java standard library.''| |5 Dec 2006|${unclebob}|[[Sketch Fighter][.ArticleS.UncleBob.SketchFighter]]|''If you own a Mac, you need to get this game.''| |26 Oct 2006|${unclebob}|[[Abstract Factory by Daniel T][.ArticleS.UncleBob.AbstractFactoryDanielT]]|''Another "story" about Abstract Factory.''| |20 Oct 2006|${unclebob}|[[The Hungarian Abhorrence Principle][.ArticleS.UncleBob.TheHungarianAbhorrencePrinciple]]|''Denoting data type in variable names implies a design flaw.''| |18 Oct 2006|${unclebob}|[[Rubarian Notation][.ArticleS.UncleBob.RubarianNotation]]|''Egad! I am tempted to denote type in my ruby variable names!''| |18 Oct 2006|${unclebob}|[[Craftsman 49][.ArticleS.UncleBob.CraftsMan49]]|''Abstract Factory''| |15 Oct 2006|${unclebob}|[[!-P2M2: Pair Programming Maturity Model-!][.ArticleS.UncleBob.P2M2]]|''Pairing is useful, but...''| |09 Oct 2006|${feathers}|[[The Morality of Error Checking][.ArticleS.MichaelFeathers.TheMoralityOfErrorChecking]]|''Can there be a one-size-fits all policy for error recovery?''| |07 Oct 2006|${ottinger}|[[Estimating Patterns][.ArticleS.TimOttinger.EstimationPatterns]]|''Tom D's wisdom for estimators is recommended''| |29 Sep 2006|${unclebob}|[[Craftsman Column][.ArticleS.UncleBob.CraftsmanColumn]]|''All the "Crafstman" columns, including some that never made it to print.''| |28 Sep 2006|${wampler}|[[Which Takes More Discipline, XP or Waterfall?][.ArticleS.DeanWampler.WhichTakesMoreDiscipline]]|''Is XP an excuse for undiscplined hacking or is does it require more discipline than waterfall methods?''| |27 Sep 2006|${ottinger}|[[Collateral Effort][.ArticleS.TimOttinger.CollateralEffort]]|''Dealing with the sense of waste''| |27 Sep 2006|${ottinger}|[[Don't refactor everything][.ArticleS.TimOttinger.DontRefactorEverything]]|''Refactor all your code? Not so!''| |26 Sep 2006|${ottinger}|[[Sooner, not Faster][.ArticleS.TimOttinger.SoonerNotFaster]]|''Is agile development about going faster? I don't think so.''| |25 Sep 2006|${grenning}|[[Over a Half Million Embedded Developers Behind On Their Learning][.ArticleS.JamesGrenning.EmbeddedDevelopersBehindOnTheirLearning]]|''Well not all of them''| |22 Sep 2006|${ottinger}|[[Optimizing Away Estimates][.ArticleS.TimOttinger.OptimizingEstimates]]|''Goals, Estimates, Commitments''| |21 Sep 2006|${wampler}|[[!-Contract4J5 v0.6.0 Released-!][.ArticleS.DeanWampler.Contract4j5060Released]]|''A new release of my open-source Design by Contract tool for Java that is implemented using !-AspectJ-!''| |15 Sep 2006|${chelimsky}|[[Quality Ensurance][.ArticleS.DavidChelimsky.QualityEnsurance ]]|''Thought for the day''| |13 Sep 2006|${ottinger}|[[More work or Less Work][.ArticleS.TimOttinger.MoreWorkOrLess]]|''Doing less early means doing more later''| |09 Sep 2006|${ottinger}|[[Agile is More Work][.ArticleS.TimOttinger.MoreWork]]|''Is agile development more work for the programmer?''| |7 Sep 2006|${wampler}|[[Should You Ever Override Concrete Methods?][.ArticleS.DeanWampler.ShouldYouEverOverrideConcreteMethods]]|''There are several anti-patterns associated with overriding concrete methods, so don't do it!''| |6 Sep 2006|${unclebob}|[[Safe Computations][.ArticleS.UncleBob.SafeComputations]]|''Math in a computer is not the same as math on paper.''| |6 Sep 2006|${feathers}|[[Designing Away Preconditions][.ArticleS.MichaelFeathers.DesigningAwayPreconditions]]|''Preconditions aren't a given, sometimes they can be eliminated.''| |6 Sep 2006|${ottinger}|[[Frameworks][.ArticleS.TimOttinger.FrameworkImpatience]]|''Frameworks are for the impatient''| |5 Sep 2006|${unclebob}|[[Convex Hull Timing][.ArticleS.UncleBob.ConvexHullTiming]]|''More on the preformance of computational geometry."''| |4 Sep 2006|${unclebob}|[[Joel on Ruby][.ArticleS.UncleBob.JoelOnRuby]]|''Joel says: "No! Don't do it!"''| |2 Sep 2006|${unclebob}|[[The Yes and No Game][.ArticleS.UncleBob.YesAndNoGame]]|''A fun game to play with preschoolers, with a twist.''| |1 Sep 2006|${unclebob}|[[Untested Code is the Dark Matter of Software][.ArticleS.UncleBob.UntestedCodeDarkMatter]]|''Another response to Cedric''| |1 Sep 2006|${unclebob}|[[The Danger of Mock Objects][.ArticleS.UncleBob.TheDangerOfMockObjects]]|''A response to Cedric''| |31 Aug 2006|${unclebob}|[[Making Messes in Ruby][.ArticleS.UncleBob.MakingMessesInRuby]]|''It's easy!''| |30 Aug 2006|${unclebob}|[[Refactoring Paralysis][.ArticleS.UncleBob.RefactoringParalysis]]|''I wish I had a refactoring tool in Ruby!''| |29 Aug 2006|${ottinger}|[[How Many Feathers?][.ArticleS.TimOttinger.HowManyFeathers]]|''How many feathers can you carry?''| |28 Aug 2006|${unclebob}|[[Comparing the Speed of Java, C++, and Ruby][.ArticleS.UncleBob.SpeedOfJavaCppRuby]]|''A simple benchmark with some surprises''| |26 Aug 2006|${unclebob}|[[Stardust][.ArticleS.UncleBob.StarDust]]|''An astronomy lecture, and a best man's toast.''| |25 Aug 2006|${unclebob}|[[The Perverse Nature of Performance Tuning][.ArticleS.UncleBob.PerformanceTuning]]|''It never works exactly the way you think.''| |25 Aug 2006|${ottinger}|[[Addicted to Expensive Tools?][.ArticleS.TimOttinger.ExpensiveTools]]|''Do we drown in cool tools?''| |25 Aug 2006|${ottinger}|[[Vertical Space Revisited][.ArticleS.TimOttinger.VerticalSpace2]]|''Increase your density for clarity's sake''| |22 Aug 2006|${feathers}|[[Liskov Substitution in Dynamic Languages][.ArticleS.MichaelFeathers.LiskovSubstitutionInDynamicLanguages]]|''What is the analog of LSP in Ruby, Python, and Smalltalk?''| |18 Aug 2006|${unclebob}|[[SRP in Ruby][.ArticleS.UncleBob.SrpInRuby]]|''The Single Responsibility Principle in Ruby''| |18 Aug 2006|${ottinger}|[[What is it with vertical space][.ArticleS.TimOttinger.VerticalSpace]]|''Save a mouse, delete a blank line''| |17 Aug 2006|${unclebob}|[[Ruby Combinations][.ArticleS.UncleBob.RubyCombinations]]|''An issue with making Ruby code clean.''| |16 Aug 2006|${ottinger}|[[Refactor It Ugly][.ArticleS.TimOttinger.RefactorItUgly]]|''Choose to be ugly for a little while''| |15 Aug 2006|${ottinger}|[[Start Tight][.ArticleS.TimOttinger.TightenThenLoosen]]|''Avoid regrets with a harsh start''| |14 Aug 2006|${unclebob}|[[Common Decency][.ArticleS.UncleBob.CommonDecency]]|''Washroom Etiquette''| |14 Aug 2006|${wampler}|[[More on Rails and Ruby ''vs.'' Java and .NET][.ArticleS.DeanWampler.RailsRubyVsJavaDotNet]]|''More Thoughts on Why Rails is Important''| |13 Aug 2006|${unclebob}|[[Rails][.ArticleS.UncleBob.RailS]]|''I've just started reading the (beta) Agile Web Development in Railsß''| |04 Aug 2006|${wampler}|[[Extracting Usage Documentation From Tests][.ArticleS.DeanWampler.ExtractingUsageDocumentationFromTests]]|''Our tests document how to use our code. Why don't our documentation tools extract this information?''| |04 Aug 2006|${ottinger}|[[You are so not alone][.ArticleS.TimOttinger.SoNotAlone]]|''Really not so different after all''| |2 Aug 2006|${unclebob}|[[Green Wrist Band][.ArticleS.UncleBob.GreenWristBand]]|''Get your own!''| |31 Jul 2006|${chelimsky}|[[Development Time Dependency][.ArticleS.DavidChelimsky.DevelopmentTimeDependency]]|''What do you call that other kind of dependency?''| |20 Jul 2006|${chelimsky}|[[Spec Organization][.ArticleS.DavidChelimsky.SpecOrganization]]|''The effects of thinking of specs as, well... specs''| |20 Jul 2006|${wampler}|[[Model-Driven Development: One Curmudgeon's View][.ArticleS.DeanWampler.MddOneCurmudgeonsView]]|''In which our intrepid mentor bloviates on the role, if any, of MDD''| |14 Jul 2006|${ottinger}|[[Arguing with myself][.ArticleS.TimOttinger.ArguingWithMyself]]|''What goes around comes around''| |14 Jul 2006|${chelimsky}|[[The Occasional Reminder][.ArticleS.DavidChelimsky.TheOccasionalReminder]]|''Do you remember why you started practicing TDD and refactoring?''| |09 Jul 2006|${chelimsky}|[[It Takes Two][.ArticleS.DavidChelimsky.ItTakesTwo]]|''Exposing data is one offense, but the real violation is grabbing it''| |29 Jun 2006|${ottinger}|[[Class Is Not A BASIC Program][.ArticleS.TimOttinger.ClassNotBasicProgram]]|''What's wrong with these classes?''| |29 Jun 2006|${ottinger}|[[Classes Don't Encapsulate][.ArticleS.TimOttinger.ClassesDontEncapsulate]]|''Classes don't encapsulate like they used to''| |27 Jun 2006|${ottinger}|[[Tests are a language][.ArticleS.TimOttinger.TestsAreLanguage]]|''Could we build a trellis for growing our language?''| |27 Jun 2006|${ottinger}|[[Apologizing for Code][.ArticleS.TimOttinger.ApologizeIncode]]|''A comment is really an apology''| |24 Jun 2006|${ottinger}|[[The Quiet Bullpen][.ArticleS.TimOttinger.TheQuietBullpen]]|''Listen for the sound of software''| |14 Jun 2006|${feathers}|[[Vise][.ArticleS.MichaelFeathers.ViseForJava]]|''A tool which aids refactoring in Java''| |12 Jun 2006|${unclebob}|[[Agile People Still Don't Get It][.ArticleS.UncleBob.AgilePeopleStillDontGetIt]]|''Response to Cedric's rant.''| |10 Jun 2006|${unclebob}|[[Taking Care][.ArticleS.UncleBob.TakingCare]]|''An attitude of development.''| |10 Jun 2006|${feathers}|[[The Reluctant Global Variable][.ArticleS.MichaelFeathers.TheReluctantGlobalVariable]]|''An example of "Just Create One" with an interface.''| |8 Jun 2006|${unclebob}|[[Mac Book Pro Comic][.ArticleS.UncleBob.MacBookProComic]]|''More on a sweet machine.''| |4 June 2006|${chelimsky}|[[Single Responsibility Principle Applied to Methods][ArticleS.DavidChelimsky.MattersOfPrinciple.SrpAppliedToMethods]]|| |3 June 2006|${chelimsky}|[[Single Responsibility Principle is about Implementation][ArticleS.DavidChelimsky.MattersOfPrinciple.SrpIsAboutImplementation]]|| |30 May 2006|${feathers}|[[Refactoring Needs More Than Tests][.ArticleS.MichaelFeathers.RefactoringNeedsMoreThanTests]]|''The other precondition for refactoring''| |27 May 2006|${feathers}|[[The Golden Rule of API Design][.ArticleS.MichaelFeathers.TheGoldenRuleOfApiDesign]]|''Do unto others as..''| |24 May 2006|${pagel}|[[Over Mocking][.ArticleS.PaulPagel.OverMocking]]|''mock me once shame on you, mock me twice...''| |20 May 2006|${unclebob}|[[Mac Book Pro][.ArticleS.UncleBob.MacBookPro]]|''A sweet machine.''| |20 May 2006|${feathers}|[[Concepts That Don't Like To Be Named][.ArticleS.MichaelFeathers.ConceptsThatDontLikeToBeNamed]]|''How clear does a concept need to be to warrant a function?''| |18 May, 2006|${chelimsky}|[[Singular Responsibility][.ArticleS.DavidChelimsky.SingularResponsibility]]|| |16 May 2006|${feathers}|[[It's Time To Deprecate Final][.ArticleS.MichaelFeathers.ItsTimeToDeprecateFinal]]|''It's the bane of testing.''| |11 May 2006|${feathers}|[[Changing Notions of Design][.ArticleS.MichaelFeathers.ChangingNotionsOfDesign]]|''Toward a new norm.''| |7 May 2006|${feathers}|[[Dealing with the Lame Duck Code Base][.ArticleS.MichaelFeathers.LameDuck]]|''What makes code worth your care?''| |3 May 2006|${micah}|[[Smalltalk Bowling][.ArticleS.MicahMartin.SmalltalkBowling]]|''My first Smalltalk program... the Bowling game.''| |17 Apr 2006|${micah}|[[Paper Bullet][.ArticleS.MicahMartin.PaperBullet]]|''Some development teams have more fun than others''| |11 Apr 2006|${ottinger}|[[The Cheesiest Thing That Might Work][.ArticleS.TimOttinger.TheCheesiestThing]]|''Elegance can wait for the green bar.''| |11 Apr 2006|${ottinger}|[[Where do Your Tests Come From][.ArticleS.TimOttinger.WhereTestsComeFrom]]|''What are you going to do next, and why?''| |10 Apr 2006|${ottinger}|[[Removing Redundancy Badly][.ArticleS.TimOttinger.RemovingRedundancyBadly]]|''How not to refactor your code (TDD pathology #3)''| |8 Apr 2006|${unclebob}|[[Wading through Code][.ArticleS.UncleBob.WadingThroughCode]]|''Get your hip-boots on.''| |27 Mar 2006|${feathers}|[[Technologists Drive][.ArticleS.MichaelFeathers.TechnologistsDrive]]|''Who drives technology change?''| |26 Mar 2006|${chelimsky}|[[Using multiple fixtures][.ArticleS.DavidChelimsky.UsingMultipleFixtures]]|''Using test fixtures as they were inititially intended''| |24 Mar 2006|${chelimsky}|[[Bowling without prefactoring][.ArticleS.DavidChelimsky.BowlingWithoutPrefactoring]]|''Avoiding the temptation of up front design when you're not really up front''| |23 Mar 2006|${unclebob}|[[New Java Enums are Cool][.ArticleS.UncleBob.JavaEnums]]|''I have found the new Java Enums to be more than just curiosities.''| |20 Mar 2006|${unclebob}|[[Architecture is a secondary effect.][.ArticleS.UncleBob.ArchitectureIsaSecondaryEffect]]|''Architecture is important to keeping a system flexible, changeable, malleable. But it's a secondary effect.''| |17 Mar 2006|${pagel}|[[Prefactoring][.ArticleS.PaulPagel.PreFactoring]]|''...going off the rails on the pattern train''| |16 Mar 2006|${ottinger}|[[Testing Hypothetically][.ArticleS.TimOttinger.TestingHypothetically]]|''Testing as if it were possible''| |3 Mar 2006|${chelimsky}|[[Bowling with rSpec][.ArticleS.DavidChelimsky.BowlingWithRspec]]|''The classic bowling game exercise with a twist''| |25 Feb 2006|${ottinger}|[[Harder than it sounds][.ArticleS.TimOttinger.HarderThanItSounds]]|''It all sounds so simple''| |22 Feb 2006|${ottinger}|[[Maintain an Even Strain][.ArticleS.TimOttinger.AnEvenStrain]]|''Spreading the pain like it was peanut butter''| |15 Feb 2006|${unclebob}|[[Clean Code: Args.][.ArticleS.UncleBob.CleanCodeArgs]]|''An article about professionalism, craftsmanship, and refactoring.''| |15 Feb 2006|${micah}|[[Beware The Freebie][.ArticleS.MicahMartin.BewareTheFreebie]]|''Watch out for stories that developers give you for free''| |14 Feb, 2006|${chelimsky}|[[We've Got Stories Bigger Than Your Iteration][.ArticleS.DavidChelimsky.WeveGotStoriesBiggerThanYourIteration]]|''How do you measure points across teams?''| |10 Feb 2006|${ottinger}|[[Everything In Its Place][.ArticleS.TimOttinger.EverythingInItsPlace]]|''Test Contaminated?''| |10 Feb, 2006|${chelimsky}|[[Keeping Infection in Check][.ArticleS.DavidChelimsky.KeepingInfectionInCheck]]|''In every other context besides software, infection is bad. Why is test-infection any different?''| |5 Feb, 2006|${chelimsky}|[[Testing Abstract Classes][.ArticleS.DavidChelimsky.TestingAbstractClasses]]|''Comparing strategies to test common behavior''| |2 Feb, 2006|${chelimsky}|[[Discovering Reuse][.ArticleS.DavidChelimsky.DiscoveringReuse]]|''Reuse is best discovered, not planned''| |1 Feb, 2006|${chelimsky}|[[Fostering Credibility in Customer Tests][.ArticleS.DavidChelimsky.FosteringCredibilityInCustomerTests]]|''Make sure your customer tests tell the truth''| |31 Jan 2006|${ottinger}|[[Reckless Refactoring][.ArticleS.TimOttinger.RecklessRefactoring]]|Recklessly refactoring considered harmful| |30 Jan, 2006|${chelimsky}|[[Mock Observations][.ArticleS.DavidChelimsky.MockObservations]]|''Observations re: Hand Mocks vs Tool-Generated Mocks''| |25 Jan 2006|${feathers}|[[Component-based Fixtures for FIT][.ArticleS.MichaelFeathers.ComponentBasedFixturesForFit]]|''Attempting a new fixture structuring mechanism''| |24 Jan 2006|${feathers}|[[Programming On Your Own][.ArticleS.MichaelFeathers.ProgrammingOnYourOwn]]|''Is collective code ownership bad for beginners?''| |20 Jan 2006|${pagel}|[[Sentential Testing][.ArticleS.PaulPagel.SententialTesting]]|''where do we bind our language?''| |19 Jan 2006|${ottinger}|[[TDD Bumper Shots][.ArticleS.TimOttinger.TddBumperShots]]|''Testing the hard way - TDD Pathology 2''| |14 Jan 2006|${feathers}|[[Library Code versus Application Code][.ArticleS.MichaelFeathers.LibraryCodeVersusApplicationCode]]|''Do we treat these types of code differently? Should we?''| |13 Jan 2006|${ottinger}|[[Software Super Powers][.ArticleS.TimOttinger.SoftwareSuperPowers]]|''Would you like a cape with that?''| |11 Jan 2006|${koss}|[[Deja Vu - Inheritance Bytes][.ArticleS.BobKoss.DejaVu]]|''The Adapter Pattern saves the day again''| |9 Jan 2006|${ottinger}|[[Mother May I?][.ArticleS.TimOttinger.MotherMayI]]|''If we are playing this game, we are doing this backward - TDD Pathology 1''| |7 Jan 2006|${unclebob}|[[Agile means you never have so meet your deadlines.][.ArticleS.UncleBob.AgileMeansYouNeverHaveToMeetYourDeadlines]]|''A common myth''| |6 Jan 2006|${ottinger}|[[Naive Tests Don't Help][.ArticleS.TimOttinger.NaiveTestsDontHelp]]|''You've got to know the territory''| |5 Jan 2006|${pagel}|[[Fresh Testing][.ArticleS.PaulPagel.FreshTesting]]|''Keeping tests honest''| |5 Jan 2006|${ottinger}|[[Closing In on Test-Driven][.ArticleS.TimOttinger.ClosingInOnTestDriven]]|''Getting Closer to TDD''| |4 Jan 2006|${ottinger}|[[Stable API][.ArticleS.TimOttinger.StableApi]]|''Is the API stable like the native type list?''| |02 Jan 2006|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[An Object Is A Choice][.ArticleS.MichaelFeathers.AnObjectIsaChoice]]|''..and a chance to choose wisely.''| |30 Dec 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[My Recent Reads][.ArticleS.MichaelFeathers.MyRecentReads]]|''The limit as reading list approaches infinity...''| |30 Dec 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[On Documentation][.ArticleS.UncleBob.OnDocumentation]]|''Documenation is not evil, and is not anathema to Agile.''| |29 Dec 2005|${ottinger}|[[Reasons to Stay Wrong][.ArticleS.TimOttinger.ReasonsToStayWrong]]|''Do tests create stability you don't want?''| |28 Dec 2005|${ottinger}|[[Debuggers? Yes][.ArticleS.TimOttinger.YesForDebuggers]]|A debugger is a handy tool after all| |28 Dec 2005|${ottinger}|[[Learn Dynamically][.ArticleS.TimOttinger.LearnDynamically]]|''Dynamic languages are more learnable than static languages.''| |28 Dec, 2005|${chelimsky}|[[Dependency Injection Is Only Mostly Good][.ArticleS.DavidChelimsky.DependencyInjectionIsOnlyMostlyGood]]|''Injecting dependency on factories is just Service Locator in disguise''| |December 27, 2005|${ottinger}|[[Not Yet Test-Driven][.ArticleS.TimOttinger.NotYetTestDriven]]|''Maybe I don't get it.''| |11 Dec, 2005|${chelimsky}|[[Boundaries of Coding for Testability][ArticleS.DavidChelimsky.BoundariesOfCodingForTestability]]|''Are tests and code under test the same? Do the same principles apply?''| |4 Dec, 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Moving Toward Another Design Principle][.ArticleS.MichaelFeathers.AnotherDesignPrinciple]]|''Layers layers layers.''| |2 Dec, 2005|${chelimsky}|[[Why Limit Fit][ArticleS.DavidChelimsky.WhyLimitFit]]|''FIT is for customers and xUnit for programmers, right? Well, why limit ourselves?''| |1 Dec 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[John Vlissides][.ArticleS.UncleBob.JohnVlissides]]|''Obituary''| |17 Nov 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[MSTDD][.ArticleS.UncleBob.MsTdd]]|''Microsoft's notion of TDD.''| |10 Nov 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Is Programming Too Easy?][http://blogs.objectmentor.com/ArticleS.MichaelFeathers.IsProgrammingTooEasy]]|''Heresy? You decide.''| |8 Nov 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Bounded Wildcards][.ArticleS.UncleBob.BoundedWildcards]]|''More on the wonderfully twisted subtype relationships of generics.''| |5 Nov 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Is a list of circles a list of shapes?][.ArticleS.UncleBob.IsListCircleListShape]]|''Of the wonderfully twisted subtype relationships of lists.''| |31 Oct 2005|[[Micah Martin][ArticleS.MicahMartin]]|[[!-PreludeToTheMockOff-!][.ArticleS.MicahMartin.PreludeToTheMockOff]]|''Pre-Mockoff ramble''| |30 Oct, 2005|${chelimsky}|[[Stop Mocking Me][ArticleS.DavidChelimsky.StopMockingMe]]|''an experiment in hand coding mocks vs mock tools like NMock and Rhino''| |26 Oct 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Does Visual Studio Rot the Mind?][.ArticleS.UncleBob.PezoldVisualStudio]]|''A truly wonderful article (talk) by Charles Petzold''| |25 Oct 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Extract Class][.ArticleS.UncleBob.ExtractClass]]|''A pleasant combination of refactorings using IntelliJ (and Eclipse?)''| |23 Oct 2005|[[Bob Koss][ArticleS.BobKoss]]|[[Refrigerator Code][.ArticleS.BobKoss.RefrigeratorCode]]|''Be proud of your code''| |19 Oct 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Analysis vs. Design][.ArticleS.UncleBob.AnalysisVsDesign]]|''The difference between "what" and "how".''| |17 Oct 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Things Happening At OOPSLA][.ArticleS.MichaelFeathers.ThingsHappeningAtOopsla]]|''Day 1 of the three ring circus''| |10 Oct 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Frackin' Variable Naming Contest][.ArticleS.UncleBob.FrakinVariableName]]|''Please help me figure out what the name of this variable should be.''| |7 Oct 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[The Bastard Child][.ArticleS.UncleBob.BastardChild]]|''Are unit tests the bastard child? How well do we treat them?''| |6 Oct 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[The Three Rules of TDD][.ArticleS.UncleBob.TheThreeRulesOfTdd]]|''Test Driven Development is driven by three simple rules.''| |5 Oct 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Honest Code][.ArticleS.MichaelFeathers.HonestCode]]|''Think code can't lie? Think again.''| |5 Oct 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[The Sensitivity Problem][.ArticleS.UncleBob.TheSensitivityProblem]]|''Software is very sensitive to error. Others have solved this problem.''| |28 Sept, 2005|${chelimsky}|[[Improvised Software - Version II - Iteration II][ArticleS.DavidChelimsky.ImprovisedSoftwareVersionTwoIterationTwo]]|''stories are to the coder as the song is to the improvisor''| |20 Sept, 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Reviving Beauty][ArticleS.MichaelFeathers.RevivingBeauty]]|''It's okay to love good code.''| |16 Sept, 2005|${chelimsky}|[[Manage dependencies, not aesthetics][ArticleS.DavidChelimsky.ManageDependenciesNotAesthetics]]|''Our sense of smell is an important tool, but it sometimes can lead us down the wrong path''| |7 Sept, 2005|${chelimsky}|[[Improvised Software - Version II - Iteration I][ArticleS.DavidChelimsky.ImprovisedSoftwareVersionTwoIterationOne]]|''Agile development is still like improvised music''| |5 Sep 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Palm Life Drive Premature?][.ArticleS.UncleBob.PalmLifeDrivePremature]]|''Elegant, cute, not ready for prime time.''| |31 Aug 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Working Clean][.ArticleS.MichaelFeathers.WorkingClean]]|''Every craft has it's obsessions. Let's borrow some.''| |30 Aug 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Pronouncing Binary][.ArticleS.UncleBob.PronouncingBinary]]|''How to pronounce binary numbers.''| |29 Aug 2005|[[Micah Martin][ArticleS.MicahMartin]]|[[ICarumba][.ArticleS.MicahMartin.AyeCarumba]]|''On the .NET interface naming convention.''| |27 Aug 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Joel on XP (Again)][.ArticleS.UncleBob.JoelOnXp]]|''Oh, Joel!''| |26 August 2005|[[Bob Koss][ArticleS.BobKoss]]|[[Using the Adapter Pattern to Decouple Legacy VB Code][.ArticleS.BobKoss.AdapterPatternInLegacyCode]]|''Adding tests to existing VB code''| |23 August 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Do You Have Iteration Slop?][.ArticleS.MichaelFeathers.IterationSlop]]|''So, how long is your iteration, really?''| |25 July 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[The Agile Test][.ArticleS.UncleBob.TheAgileTest]]|''A set of questions I asked during my Agile 2005 Keynote.''| |29 Jun 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Refactoring Against the Red Bar][.ArticleS.MichaelFeathers.RefactoringAgainstTheRedBar]]|''Red bar bad? Not so fast.''| |24 Jun 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[The Prime Factors Kata][.ArticleS.UncleBob.ThePrimeFactorsKata]]|''Another Kata exploring a simple algorithm with rich implications.''| |23 Jun 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[The Bowling Game Kata][.ArticleS.UncleBob.TheBowlingGameKata]]|''A complete Kata worked out in tiny little steps.''| |20 Jun 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[The Coding Dojo][.ArticleS.UncleBob.TheProgrammingDojo]]|''A programming metaphor from the domain of martial arts.''| |15 June 2005|[[Micah Martin][ArticleS.MicahMartin]]|[[Software Apprenticeship][.ArticleS.MicahMartin.SoftwareApprenticeship]]|''A few comments on the topic''| |15 June 2005|[[Micah Martin][ArticleS.MicahMartin]]|[[Jack and Jill][.ArticleS.MicahMartin.JackAndJill]]|''A silly fictional story relating to software craftsmanship''| |15 Jun 2005|[[James Grenning][ArticleS.JamesGrenning]]|[[My 2 cents on C++ Coding Standards][.ArticleS.JamesGrenning.My2CentsOnCppCodingStandards]]|''A simple C++ coding standard''| |11 May 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Principles of OOD][.ArticleS.UncleBob.PrinciplesOfOod]]|''Eleven principles of object oriented design.''| |10 May 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Empirical vs. Analytical Analysis][.ArticleS.UncleBob.EmpiricalVsAnalyticalAnalysis]]|''A simple example showing the interplay between empirical and analytical analysis''| |30 Apr 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Visitor vs. instanceof][.ArticleS.UncleBob.VisitorVersusInstanceOf]]|''When should you use Visitor, Acyclic Visitor, and instanceof''| |27 Apr 2005|[[James Grenning][ArticleS.JamesGrenning]]|[[!-CppTestTools-! Memory Leak Detector][.ArticleS.JamesGrenning.CppTestToolsMemoryLeakDetector]]|''Example of the memory leak detector built into !-CppTestTools-!''| |24 Apr 2005|[[James Grenning][ArticleS.JamesGrenning]]|[[Success is an Option Too][.ArticleS.JamesGrenning.SuccessIsAnOptionToo]]|''Software development problems are not new. Agile addresses critical success factors identified by Standish Group Chaos Report''| |18 Apr 2005|[[James Grenning][ArticleS.JamesGrenning]]|[[The Problem of Managing Variations In C][.ArticleS.JamesGrenning.ManageVariationInC]]|''How a mess is created in C''| |11 April, 2005|${chelimsky}|[[Improvised Software - Iteration One][ArticleS.DavidChelimsky.ImprovisedSoftwareIterationOne]]|''Agile development is like improvised music''| |8 April, 2005|${chelimsky}|[[Fair Housing for Business Rules][ArticleS.DavidChelimsky.FairHousingForBusinessRules]]|''Business rules are implemented in the code, but they are expressed in the tests.''| |06 Apr, 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Inside the Design Mind][.ArticleS.MichaelFeathers.InsideTheDesignMind]]|''Learning about how the industry views design''| |31 Mar, 2005|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Before Clarity][ArticleS.MichaelFeathers.BeforeClarity]]|''Good code is clear and understandable, so we should always attempt to keep code as clear as possible. Or should we?''| |29 Mar, 2005|${chelimsky}|[[Object Views][ArticleS.DavidChelimsky.ObjectViews]]|''Interfaces are to implementation classes like database views are to database tables''| |26 Mar 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Conformance To Plan][ArticleS.UncleBob.ConformanceToPlan]]|''Why is conformance to plan such a big deal? Especially since we almost never do.''| |18 Mar 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Joel and Eckel On XP][ArticleS.UncleBob.JoelAndEckelOnXp]]|''How can two such credible people come away with two such different views?''| |14 Mar 2005|[[James Grenning][ArticleS.JamesGrenning]]|[[The Advantage of Not Having Hardware Yet][.ArticleS.JamesGrenning.TheAdvantageOfNotHavingHardwareYet]]|''Anticipated hardware is replaced by abstractions, creating a design that can stand the test of time''| |25 Feb 2005|[[James Grenning][ArticleS.JamesGrenning]]|[[TDD and Memory Leaks][.ArticleS.JamesGrenning.TddAndMemoryLeaks]]|''Prevent leaks with TDD''| |24 Feb 2005|[[James Grenning][ArticleS.JamesGrenning]]|[[They Are All Priority 1][.ArticleS.JamesGrenning.TheyAreAllPriority1]]|''How can a product manager deliver Ten Priority 1 Features''| |14 Mar, 2005|[[Micah Martin][ArticleS.MicahMartin]]|[[Building a City][ArticleS.MicahMartin.BuildingaCity]]|''Building software is like ...''| |11 Mar, 2005|${chelimsky}|[[Duplication in tests][ArticleS.DavidChelimsky.DuplicationBetweenCustomerAndProgrammerTests]]|''Why it's OK to test the same code in customer tests and unit tests.''| |13 Mar 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Brain Surgery Guides][ArticleS.UncleBob.BrainSurgeryGuides]]|''A Metaphor for Acceptance Tests.''| |3 Mar 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Just 10 Minutes without a Test][ArticleS.UncleBob.JustTenMinutesWithoutAtest]]|''I lapsed for ten minutes. I paid the price.''| |24 Feb 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Vehement Mediocrity][ArticleS.UncleBob.VehementMediocrity]]|''Why do junior developers always argue that quality takes time?''| |22 Feb 2005|[[James Grenning][ArticleS.JamesGrenning]]|[[Transforming Idea][.ArticleS.JamesGrenning.TransformingIdea]]|''Ah! Ha! Experience of how objects can save embedded developers from reinventing the wheel''| |21 Feb 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[The Next Big Thing][ArticleS.UncleBob.TheNextBigThing]]|''The next big thing that will capture the industry's attention''| |7 Feb 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Incremental Architecture][ArticleS.UncleBob.IncrementalArchitecture]]|''Making long term sweeping changes to architecture incrementally.''| |8 Jan 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Stable Dependencies Fixture][ArticleS.UncleBob.StableDependenciesFixture]]|''Yet another fixture to complement the JDepend suite of FitNesse fixtures.''| |5 Jan 2005|[[Micah Martin][ArticleS.MicahMartin]]|[[Buffer To The Rescue][.ArticleS.MicahMartin.BufferToTheRescue]]|''An adventure enabling large file uploads in FitNesse''| |5 Jan 2005|[[Uncle Bob][ArticleS.UncleBob]]|[[Module Metrics Fixture][ArticleS.UncleBob.ModuleMetricsFixture]]|''A new fixture to complement the Module Dependencies Fixture in my previous blog''| |31 Dec, 2004|${chelimsky}|[[!-FitNesse-! And Hibernate][ArticleS.DavidChelimsky.FitNesseAndHibernate]]|''How to test a Hibernate driven app using !-FitNesse-!''| |23 Dec 2004|[[Uncle Bob][ArticleS.UncleBob]]|[[JDepend Fixture][ArticleS.UncleBob.JdependFixture]]|''A free Christmas gift for Java programmers.''| |16 Dec 2004|[[Young Bob][ArticleS.BobKoss]]|[[Continuous Integration][.ArticleS.BobKoss.ContinuousIntegration]]|''The more often you do it, the easier it gets.''| |7 Dec 2004|[[Uncle Bob][ArticleS.UncleBob]]|[[Outlook. Ugh.][.ArticleS.UncleBob.OutlookUgh]]|''Who ARE these people?''| |3 Dec 2004|[[Micah Martin][ArticleS.MicahMartin]]|[[Wiki Vandalism][.ArticleS.MicahMartin.WikiVandalism]]|''butunclebob.com gets vandalized''| |29 Nov 2004|[[Micah Martin][ArticleS.MicahMartin]]|[[Delegates vs Command Pattern][.ArticleS.MicahMartin.DelegatesVsCommandPattern]]|''An exploration of .NET's delegates''| |26 Nov 2004|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Mulling Null][.ArticleS.MichaelFeathers.MullingNull]]|''Sally and Ramon compare notes before meeting Aiden for the first time as Development Manager''| |24 Nov 2004|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Sally's Exploration][.ArticleS.MichaelFeathers.SallysExploration]]|''Sally looks at some cases for 'Pass Null' ''| |23 Nov 2004|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[Ramon Walks home][.ArticleS.MichaelFeathers.RamonWalksHome]]|''Ramon thinks about his day and politics at work''| |22 Nov 2004|[[Michael Feathers][ArticleS.MichaelFeathers]]|[[The New Guy][.ArticleS.MichaelFeathers.TheNewGuy]]|''Sally and Ramon test some code and discover something new about the new guy''| |22 Nov 2004|[[Uncle Bob][ArticleS.UncleBob]]|[[Home Computer of the Future][.ArticleS.UncleBob.HomeComputerFromTheFuture]]|''Is this a fraud?''| |17 Nov 2004|[[Micah Martin][ArticleS.MicahMartin]]|[[Apples and Tigers][.ArticleS.MicahMartin.ApplesAndTigers]]|''Comments on Apple's Tiger Tech Talk''| |9 Nov 2004|[[Uncle Bob][.ArticleS.UncleBob]]|[[Singleton vs. Just Create One][.ArticleS.UncleBob.SingletonVsJustCreateOne]]|''The case against rampant use of the Singleton pattern''| |23 Sep 2004|[[Uncle Bob][.ArticleS.UncleBob]]|[[The Web: Welcome to the 70's][ArticleS.UncleBob.TheWebWelcomeToThe70s]]|''Feeling sorry for myself.''| |31 Aug 2004|[[Uncle Bob][.ArticleS.UncleBob]]|[[A Wonderful Race Condition][ArticleS.UncleBob.AwonderFulRaceCondition]]|''A cool discussion about an obscure technical detail.''| |31 Aug 2004|[[Uncle Bob][.ArticleS.UncleBob]]|[[Speed Kills][ArticleS.UncleBob.SpeedKills]]|''Another Tortoise and Hare rant.''| |21 Aug 2004|[[Uncle Bob][.ArticleS.UncleBob]]|[[Skepticism Leads to Understanding][ArticleS.UncleBob.SkepticismLeadsToUnderstanding]]|''A rant about something or other.''| |5 Aug 2004 |[[Uncle Bob][.ArticleS.UncleBob]]|[[I use Visitor all the time][ArticleS.UncleBob.IuseVisitor]]|''A defense of the poor Visitor pattern.''|
Hints:
Use alt+s (Windows) or control+s (Mac OS X) to save your changes. Or, tab from the text area to the "Save" button!
Grab the lower-right corner of the text area to increase its size (works with some browsers).