We must ship now and deal with consequences 113

Posted by Uncle Bob Thu, 15 Oct 2009 11:17:00 GMT

Martin Fowler has written a good blog about technical debt. He suggests that there are two axes of debt: deliberate and prudent. This creates four quadrants: deliberate-prudent, deliberate-imprudent, inadvertent-prudent, and inadvertent-imprudent. I agree with just about everything in his blog except for one particular caption…

Inadvertent-Imprudent Debt.

There is more of this debt than any other kind. It is all too common that software developers create a mess and don’t know they are doing it. They have not developed a nose that identifies code smells. They don’t know design principles, or design patterns. They think that the reek of rotten code is normal, and don’t even identify it as smelling bad. They think that their slow pace through the thick morass of tangled code is the norm, and have no idea they could move faster. These people destroy projects and bring whole companies to their knees. Their name is Doom.

Deliberate-Imprudent Debt.

There is a meme in our industry (call it the DI meme) that tells young software developers that rushing to the finish line at all costs is the right thing to do. This is far worse than the ignorance of the first group because these folks willfully create debt without counting the cost. Worse, this meme is contagious. People who are infected with it tend to infect others, causing an epidemic of deliberately imprudent debtors (sound familiar?) The end result, as we are now all know, is economic catastrophe, inflation (of estimates) and crushing interest (maintenance) payments. They have become death, the destroyer of worlds.

Inadvertent-Prudent Debt.

This is something of an oxymoron. Ironically, it is also the best of all possible states. The fact is that no matter how careful we are, there is always a better solution that we will stumble upon later. How many times have you finished a system only to realize that if you wrote it again, you’d do it very differently, and much better?

The result is that we are always creating a debt, because our hindsight will always show us a better option after it is too late. So even the best outcome still leaves us owing. (Mother Earth will eventually collect that debt!)

Deliberate-Prudent Debt.

This is the quadrant that I have the biggest problem with. And it is this quadrant in which Martin uses the caption I don’t like. The Caption is: “We must ship now and deal with consequences.”

Does this happen? Yes. Should it happen? Rarely, yes. But it damned well better not happen very often, and it damned well better not happen out of some misplaced urge to get done without counting the cost.

The problem I have with this quadrant (DP) is that people who are really in quadrant DI think they are in DP, and use words such as those that appear in the caption as an excuse to rack up a huge imprudent debt.

The real issue is the definition of the word: Imprudent.

So let me ask you a question. How prudent is debt? There is a very simple formula for determining whether debt is prudent or imprudent. You can use this formula in real life, in business, and in programming. The formula is: Does the debt increase your net worth, and can you make the payments?

People often focus on the first criterion, without properly considering the second. Buying a house is almost certain to increase your net worth despite the debt (though lately…). On the other hand, if you cannot make the payments, you won’t keep that house for long. The reason for our current economic woes has a lot to do with people trying to increase their net worth despite the fact that they couldn’t afford the payments. (indeed, they were encouraged by a meme very similar to the DI meme!)

Bad code is always imprudent.

Writing bad code never increases your net worth; and the interest rate is really high. People who write bad code are like those twenty-somethings who max out all their credit cards. Every transaction decreases net worth, and has horrendous consequences for cash flow. In the end, the vast bulk of your effort goes to paying the interest (the inevitable slow down of the team as they push the messes around). Paying down the principle becomes infeasible. (Just the way credit card companies like it.)

Some Suboptimal Design Decision are Prudent Debt.

But most are not. Every once in awhile there is a suboptimal design decision that will increase the net worth of the project by getting that project into customer’s hand’s early.

This is not the same as delivering software that is under-featured. It is often prudent to increase the net worth of a project by giving customers early access to a system without a full and rich feature set. This is not debt. This is more like a savings account that earns interest.

Indeed, this is one reason that most technical debt is imprudent. If you are truly concerned about getting to market early, it is almost always better to do it with fewer features, than with suboptimal design. Missing features are a promise that can be kept. Paying back suboptimal designs creates interest payments that often submerge any attempts at payback and can slow the team to the breaking point.

But there are some cases where a sub-optimal design can increase your net worth by allowing you to deliver early. However, the interest rate needs to be very low, and the principle payments need to be affordable, and big enough to pay back the debt in short order.

What does a low interest rate mean? It means that the sub-optimal design does not infiltrate every part of your system. It means that you can put the sub-optimal design off in a corner where it doesn’t impact your daily development life.

For example, I recently implemented a feature in FitNesse using HTML Frames. This is sub-optimal. On the other hand, the feature is constrained to one small part of the system, and it simply doesn’t impact any other part of the system. It does not impede my progress. There is no mess for me to move around. The interest rate is almost zero! (nice deal if you can get it!)

Implementing that feature with ajax is a much larger project. I would have had to invest a great deal of time and effort, and would have had to restructure massive amounts of the internal code. So the choice was a good one.

Better yet, the customer experience has pretty much been a big yawn. I thought people would really like the feature and would drive me to expand upon it. Instead, the customer base has virtually ignored it.

So my solution will be to pay back this debt by eliminating the feature. It was a cheap experiment, that resulted in my not having to spend a lot of time and effort on a new architecture! Net worth indeed!

But it might have gone the other way. My customers may have said: “Wow, Great! We want more!” At that point it would have been terrible to expand on the HTML Frames! That decision would have been in the DI quadrant. Deliberate imprudence! Rather, my strategy would have been to replace the suboptimal Frames design of the feature with an isolated ajax implementation, and then to gradually migrate the ajax solution throughout the project. That would have been annoying, but loan payments always are.

Summary

So, don’t let the caption in the DP quadrant be an excuse. Don’t fall for the DI meme that says “We just gotta bite the bullet”. Tread very carefully when you enter the DP quadrant. Look around at all your options, because it’s easy to think you are in the DP quadrant when you are really in the DI quadrant.

Remember: Murphy shall send you strong delusion, that you should believe you are in DP; so that you will be damned in DI.

Comments

Leave a response

  1. Avatar
    Aaron about 1 hour later:

    Question: Suppose a DP decision has been made, such as your FitNesse HTML frames, at what point do you pay the interest? Is it preferred to address the design issue immediately after the release so the next release does not suffer from the issue, or is it better to wait until the next story to address fixing the issue?

    It seems in your example that being proactive would have been a loss, especially since there has not been demand to fix the issue. Leaving poorly designed code in the system rubs the wrong way, but seems like better way. Additionally by waiting the correct design may appear from another area of development which would be reusable to correct the design issue.

  2. Avatar
    Stefano Ricciardi about 1 hour later:

    Great articles (both yours and Martin’s). A lot of food for thought.

  3. Avatar
    Uncle Bob about 2 hours later:

    Aaron about 1 hour later:

    Question: Suppose a DP decision has been made, such as your FitNesse HTML frames, at what point do you pay the interest?

    The good thing about the Frames solution was that there is almost no interest to pay. The code for this feature is way off to the side, and would be trivial to remove. So the interest cost is virtually zero.

    When interest is higher (i.e. you can feel the impediment of the suboptimal design every day that you write code) then it is really important to reduce either the interest or the principle as rapidly as you can. You reduce the interest by decoupling from the suboptimal design. You pay down the interest by improving the suboptimal design.

  4. Avatar
    Daniel about 4 hours later:

    Good points…

    So whats the next level of technical debt…Technical Foreclosure? Is there such and animal? How would you define that?

    Thanks for all the great posts.

  5. Avatar
    msuarz about 6 hours later:

    if the ignored feature was the Tree on the left i do not like it … maybe making it collapsible would allow me to use it if i need it … but having it there all the time is a waste of space from my perspective

    cheers mike

  6. Avatar
    R Hayes about 9 hours later:

    Deliberate Prudent debt is not nearly so rare as you think. If you are chasing a large opportunity with a short half-life, it is imprudent not to accept this debt. If you’re not ready to make hay when the sun is shining, you’re not going to make hay at all.

    An excellent example of deliberate technical debt in the real world is Formula One racing. Those cars are a combination of the world’s best technology … and duct tape. If the car has a problem that causes a part to wear out every third race, who cares? The engine gets overhauled more often than that. The car has to finish the race 95% of the time. More than that is probably costing you races.

    An example in the programming world is statistical arbitrage algorithms. The framework they sit in may be perfectly engineered, but the implementations of the algorithms rarely are. That additional time is money lost. Worse yet, most of the opportunities they chase evaporate as soon as other people start imitating the strategy.

  7. Avatar
    Keith Nicholas about 10 hours later:

    “Writing bad code never increases your net worth;”

    this is wrong.

    I’ve seen people launch businesses based on their bad code! through the will to get something working they make their code do what they want.

    I think the relationship between code quality and net worth is pretty complex.

    for instance, anyone who has worked with a mathematician or scientist who have crafted a piece of code to solve a hard problem, often its a mess, but it solves the problem. Money in the bank. It doesn’t mean you can’t improve it, and that there aren’t consequences to having messy / bad code.

    You can certainly make the statement for a number of common cases that many people are involved with, but “never” is too strong.

  8. Avatar
    Jaap Beetstra about 10 hours later:

    Daniel: I would say Technical Foreclosure is when you lose to the competition due to inability to deliver quality features on-time.

    R Hayes: I don’t think F1 racing is an example of technical debt. Part of the specification is: A part must last 1 race or more. If a part wears out every third race, that is acceptable. If the part fails in 33% of the races, it is completely unacceptable. Failure must be predictable in F1.

  9. Avatar
    abby, the hacker chick blog about 11 hours later:

    I’m downright teary eyed.

    sniff

  10. Avatar
    skyivben about 13 hours later:

    Agile Principles, Patterns, and Practices in C# Chapter 6: A Programming Episode

    Game.cs refactoring:

    // Game.cs —-—-—-—-—-—-—-—-—-—-—-——

    public class Game { Scorer scorer = new Scorer(); }

    public int Score { get { return ScoreForFrame(10); } }
    public void Add(int pins)
    {
      scorer.AddThrow(pins);
    }
    public int ScoreForFrame(int theFrame)
    {
      return scorer.ScoreForFrame(theFrame);
    }
  11. Avatar
    MikeT about 14 hours later:

    Also, the left hand tree at fitnesse.org doesn’t show up in Google Chrome.

  12. Avatar
    Jon B about 14 hours later:

    You can certainly make the statement for a number of common cases that many people are involved with, but “never” is too strong.

    To me there are two reasons why its worth saying never even if never is too strong.

    The problem with not saying never is that it’s virtually impossible to distinguish between bad code thats benign and bad code thats eating away your net worth until the problem has gotten out of control.

    The other reason is that when something inevitably does go wrong there’s a greater space where there could be a problem. If i have lingering doubts about part of my code i’m going to have to spend some time sifting through the chaff to make a decision on whether its the bad code going malignant or if it’s something external. The bad code acts as a fog, making the problem harder to find simply by its presence.

    There was a statement I got from an agile diary that was posted on Ron Jeffries’ XP Mag. “To me NO quality means that I cannot guarantee a working application”. If you start accepting bad code you’re not moving down a couple of steps on the quality ladder, you’re saying “I no longer have control” and letting go of the wheel.

    So while you may believe ‘Never’ is too strong, it’s more valuable to cultivate an instinct of never than attempting to identify which cases are the exceptions. The smallest benefit of which is that the more experienced at clean code you get the easier it becomes.

  13. Avatar
    Uncle Bob about 18 hours later:

    R Hayes about 9 hours later:

    Deliberate Prudent debt is not nearly so rare as you think.

    I know it’s not rare. I wish it was rarer.

    If you are chasing a large opportunity with a short half-life, it is imprudent not to accept this debt.

    That’s a false dichotomy. It suggests that debt is the only way to go fast. Generally, technical debt is a good recipe for going slow, even in the short term. There are exceptions; but you have to be very careful about them.

    If you’re not ready to make hay when the sun is shining, you’re not going to make hay at all.

    By all means make hay while the Sun shines. But cut that hay to nice even lengths, bale it up nice and tight and square, and stack those bales evenly. Otherwise it’ll all fall apart before you get it to market. You can’t make hay by making a mess.

  14. Avatar
    Uncle Bob about 19 hours later:

    Keith Nicholas about 10 hours later:

    “Writing bad code never increases your net worth;”

    this is wrong.

    I’ve seen people launch businesses based on their bad code! through the will to get something working they make their code do what they want.

    I’ve seen that too. I’ve also seen some of those businesses stagger, crash, and burn because they could not manage the founder’s code.

    Again, it is a false dichotomy to suggest that it is faster to write messy code. In fact it’s faster to write clean code.

    for instance, anyone who has worked with a mathematician or scientist who have crafted a piece of code to solve a hard problem, often its a mess, but it solves the problem. Money in the bank. It doesn’t mean you can’t improve it, and that there aren’t consequences to having messy / bad code.

    There is a difference between code written carefully by an inexperienced programmer (e.g. your scientists), and code written carelessly by someone in a rush. The first may have some deficits in terms of coding style; but it is not likely to become the seed of a disaster. The second, if pervasive enough, will cause unpredictable crashes, and inadvertent breakage, that will slow the development asymptotically to zero.

    You can certainly make the statement for a number of common cases that many people are involved with, but “never” is too strong.

    I disagree. Bad code, code written carelessly, never increases you net worth.

  15. Avatar
    Torbjörn Kalin about 20 hours later:

    Uncle Bob: I wouldn’t call your Frames solution technical debt. It’s just a different way to solve the problem. After all, ten years ago frames was as cool as you could get. Just because a cooler technology has now entered the scene doesn’t make the old technology become a debt.

    Technical debt for me doesn’t have to do with what technology you use. It has to do with how you use it.

    Also, I would say the difference between reckless and prudent deliberate debt is that, if you have a plan to deal with the debt it’s prudent, otherwise it’s reckless. That is, it’s (sort of) ok to create a mess before the Friday deadline if you clean it up on Monday morning.

    Apart from that, a very good post!

  16. Avatar
    Jon B about 20 hours later:

    After thinking about the original Martin Fowler article, I get the feeling that Martin would completely agree with you Uncle Bob.

    Specifically “A mess is a reckless debt”, no prevarication or wiggle room there. If there’s a code smell then it’s a reckless debt. The only thing left to talk about is was it unintentional (in which case, it’s a learning experience) or deliberate (i’ll leave the consequences as an exercise to the reader).

    To me the prudent debt axis talks more about sub-optimal design decisions.

    To borrow an example from “Agile Software Development” (p103-108), We’ve got good clean code to draw shapes regardless of type. While waiting near the water cooler for the build server to give the code the all clear, coder 1 turns to his pair and says “You know we’d probably be better off with a data-driven table based approach. We know we’ve got that ‘draw all circles before squares’ story later in the pipeline. why don’t we just implement that now.” to which coder 2 says “YAGNI. We’ll do that when we come to it”.

    Is this a debt? I’d certainly argue that it is, even if it’s probably not valuable to present to the customer in that way. We’re borrowing against future work to maintain the simplicity of the system (or alternatively to defer a decision until the last responsible moment). This is what i’d categorise as a deliberate/prudent debt. Deliberately accepting a less than optimal but still viable(i.e. no code smells) system design.

    The interesting question to me is then “Is it better to maintain this kind of debt or spend the time to eradicate it immediately”?

  17. Avatar
    Luca Minudel 5 days later:

    > Bad code is always imprudent.

    When we as developers write bad code, is not because it is faster ann we are late. This is just a lie we tell to ourself. In reality it is because we are not able to wrirte better code!

    Writing good code do not require more time, it just require more skills.

    That’s the point. Plain simple.

  18. Avatar
    Marko 5 days later:

    Fully agree with Luca.

  19. Avatar
    Ronie Uliana 11 days later:

    Luca +1.

    And 10 years is barely enough to get the right skills (emphasis on “right”, it’s easy to focus on the wrong ones)

  20. Avatar
    dfo gold about 1 month later:

    yea

  21. Avatar
    veteran home 3 months later:

    Object-oriented design is the process of planning a system of interacting objects

  22. Avatar
    veteran home 3 months later:

    Object-oriented design is the process of planning a system of interacting objects

  23. Avatar
    home loan for good credit 4 months later:

    Practice may refer to: Practice (learning method), a method of learning by repetition. Spiritual practice Standards & Practices

  24. Avatar
    Love Click 5 months later:

    And here you can find love in 1 click.

  25. Avatar
    horse racing strategy 5 months later:

    Consequentialism refers to those moral theories which hold that the consequences of a particular action form the basis for any valid moral

  26. Avatar
    horse racing systems 5 months later:

    Deal may refer to: Deal (song), a song from Jerry Garcia’s 1972 album, Garcia Deal (automobile), an automobile built in Jonesville

  27. Avatar
    betting system 5 months later:

    Friendly fire is inadvertent firing towards one’s own or otherwise friendly forces while attempting to engage enemy forces, particularly

  28. Avatar
    WanFactory 5 months later:

    Totally agree with Luca.

    Writing code you know is bad with the belief that “it speeds you up” sounds more like the doctors who refused the idea of washing their hands after doing autopsies / before delivering babies. I suppose in theory it could be like borrowing money to buy a house that appreciates in value. I think we fool ourselves too much already though.

    Do the best you can with the requirements you know you currently have. To do less than that is unprofessional. In Uncle Bob’s case the HTML frames did satisfy his current requirements so he did the best he could with the requirements he had.

  29. Avatar
    UGG Classic Metallicaz` 6 months later:

    welcome to http://www.uggboots4buy.com/ l,will have a unexpection.

  30. Avatar
    Kooba Handbags 6 months later:

    Living without an aim is like sailing without a compass. with a new http://www.handbags4buy.com/ idea is a crank until the idea succeeds.

  31. Avatar
    highkoo ugg boots 6 months later:

    all products are high quality but low price,welcome to http://www.uggjordanghd.com/.

    >
  32. Avatar
    moncler clearance 6 months later:

    Very quietly I take my leave.To seek a dream in http://www.edhardy-buy.com/ starlight.

  33. Avatar
    FLV extractor 6 months later:

    ah ha so what

  34. Avatar
    Hand Painted Wine Glasses 8 months later:

    Great article, look forward to reading more.

  35. Avatar
    Wall Mounted Candle Holders 8 months later:

    Thanks for the article. Need to write a little more. I mailed this one to some friends.

  36. Avatar
    jewellery 8 months later:

    It’s realy a funny cartoon, but I don’t found a sad story.. Sorry

  37. Avatar
    new era hats 9 months later:

    Great article, look forward to reading more.

  38. Avatar
    jewellery 9 months later:

    Very quietly I take my leave.To seek a dream in

  39. Avatar
    tiffany ring 9 months later:

    thank you for sharing with us

  40. Avatar
    Haute couture 9 months later:

    sss femalecostume several popular this year, for your dress reference!

  41. Avatar
    Haute couture 9 months later:

    In this summer, the romantic and small, is confronted dragon-boat festival holiday for a picnic superexcellent period. Romantic, melting snow spins dress is today season vogue girls wear build up the important sheet is tasted, using qualitative produce elegant light spins the romantic sense, plus the broken this year popular element , presents different female glamour.

  42. Avatar
    cheap chi flat irons 10 months later:

    best deals on original chea chi flat irons with some new arrived.

  43. Avatar
    supplynflshop 11 months later:

    so good post i like it china nfl jerseys

  44. Avatar
    Tenant Screening about 1 year later:

    This is such a good information. Thanks for sharing this to us.

  45. Avatar
    Hosting about 1 year later:

    Wide range of web hosting services are accessible, such as cheap vps , email hosting, Unix hosting, forex vps , Windows hosting, Linux web hosting windows vps etc. We hope you will find a cheap hosting company.

  46. Avatar
    architecture service about 1 year later:

    Just for fun. I don’t take this seriously. But it’s always fun when you pointed your mouse to the card you want.

  47. Avatar
    Hermes belts about 1 year later:

    Hermes belts, Elegant Hermes belt, Fashion Hermes belts for men, Hermes mens belt.
    It is sometimes said that Vionnet invented bias cutting, but historical evidence suggests that close fitting gowns and veils of the medieval period were made with cross cut fabrics.

  48. Avatar
    lv belt about 1 year later:

    LV belt, LV belts, LV belts for men, LV Mens belts.
    So long, old world who can, with its non-self, and it could be longevity. Is a sage, putting himself in and outside the body and the body exist. Non their selfless not? Which gives it private.

  49. Avatar
    men's belt about 1 year later:

    Men’s belts, LV men’s belts, Fashionable Gucci men’s belts, Attractive style Hermes men’s belts.
    Quickly looking at things from the Python users perspective, one of the most important things is going to be providing an easy way for the user to restart just their application processes so that code changes can be picked up.

  50. Avatar
    replica gucci belt about 1 year later:

    replica gucci belts, Elegant replica gucci belt, Fashion replica gucci belts for men, replica belts, replica gucci mens belt.
    Stylish Girl is your ultimate style planner and shopping assistant – revolving around the clothes in your closet and the clothes you love to have.

  51. Avatar
    wallets about 1 year later:

    gucci belt, gucci belts, gucci Mens belts, gucci belts for men.wallets, louis vuitton wallet, hermes wallet, gucci wallet, prada wallet.rolex watches for sale, rolex watch for sale.
    As classical music evolved, distinctive characteristics developed. Changes in form were seen along with changes in phrase structure.

  52. Avatar
    womens belts about 1 year later:

    womens belt, gucci womens belts, louis vuitton womens belts, hermes womens belts.
    Although basing a restart on changes to the script file may seem better, it also has its own problems because of the multi process nature of Apache and because the initial Apache process receiving the request would generally be running as a different user to the application. This process therefore may not have the privileges necessary to send a signal to a application process to get it to shutdown and restart before a request is sent to it.

  53. Avatar
    Backup iPhone SMS about 1 year later:

    In fact, you know. the contacts and SMS have more values than an iphone’s own value. You can spend money to buy a new iPhone, However, if you get your SMS and contacts lost, it is hard to retrieve them. So, you need backup them.

  54. Avatar
    http://www.caps-store.com/yums-hats about 1 year later:

    Recently established in 2006, http://www.caps-store.com is the website of a company that has been in business in the Chinese market for about 3 years.We are hats manufacture in china,Our company specialize in supplying new era hats,monster energy hats,dc shoes hats, red bull hats,famous hats,jordan hats,etc.We pay attention to our products quality and service

  55. Avatar
    polo shirts about 1 year later:

    associating sophistication and tradition, attract the eye of tasteful women… Also, to satisfy the tastes of each woman, we carry a very wide range of replica handbags

  56. Avatar
    http://www.hatmvp.com about 1 year later:

    Authorized Online Shopping Store: New Era, One Industries, Monster Energy, Rockstar Energy, http://www.hatmvp.com ">dc shoes hats, Tapout, Coogi, Ed Hardy, Christian Audigier, Gucci, Jordan, MLB, NBA, NFL hats and caps. All fashion brands and new styles. Discount price. Top Quality. Fast Shipping. It’s easy and trustful to order here. Wholesale and Dropship. Shop Now.

  57. Avatar
    Rent A Car Constanta about 1 year later:

    The problem with not saying never is that it’s virtually impossible to distinguish between bad code thats benign and bad code thats eating away your net worth until the problem has gotten out of control.

  58. Avatar
    http://www.caps-hat.com about 1 year later:

    Best new era caps ,new era hats, delicate monster energy hats, magical nfl hats, one industries hats, rockstar energy hats, Red Bull Caps, The Hundreds Hats, Supreme Hats, DC Comics new era caps are in stock now. Our site provide first-class service and reliable quanlity garantee, do not hesitate to shake hands with us and go with the tide as soon as possible!

  59. Avatar
    http://www.whiteiphone4transformer.com about 1 year later:

    Great news! White iphone 4 Conversion Kit is now avaible! With hottest White color outlook can certainly catch your eyes and heart!

  60. Avatar
    Criminal Check about 1 year later:

    That decision would have been in the DI quadrant.

  61. Avatar
    Discount NBA Jerseys about 1 year later:

    Great articles (both yours and Martin’s). A lot of food for thought.

  62. Avatar
    Criminal Records about 1 year later:

    Look around at all your options, because it’s easy to think you are in the DP quadrant when you are really in the DI quadrant.

  63. Avatar
    Criminal Records about 1 year later:

    Look around at all your options, because it’s easy to think you are in the DP quadrant when you are really in the DI quadrant.

  64. Avatar
    Sony Headphones about 1 year later:

    Earphones not only serve for essential tools to listen to music, but also to show your unique taste. That is why so many young people would like to seek Sony and buy them with quite a high price. Now in headphoneshop.uk.com, we haveSony Headphonesat factory prices, so you just need to invest a little money to take Sony Earphoneshome. when you choosingActive Style HeadphonesYou know what is most important factor in choosing ? Of course, the quality of sounds should be quite essential. active style headphones with perfect technology and workmanship will display the music to the most original level and thus bring you a live feeling?Stereo HeadphonesStereo EarphonesStudio Monitor?These quality active style headphones will reduce the damage to the ear to the least, so love you start from choosing our earphones.

  65. Avatar
    Tenant Screening about 1 year later:

    Ct Credit Bureau is a nationwide, full service and accurate information for tenant screening, employment screening and mortgage credit reporting company.

  66. Avatar
    Macripper about 1 year later:

    So, don’t let the caption in the DP quadrant be an excuse. Don’t fall for the DI meme that says “We just gotta bite the bullet”. Tread very carefully when you enter the DP quadrant. Look around at all your options, because it’s easy to think you are in the DP quadrant when you are really in the DI quadrant.

  67. Avatar
    http://www.tiffanyandcooutlet.net/ about 1 year later:

    Almost any situation--good or bad --is affected by the attitude we bring to. Adversity reveals genius; fortune conceals it. As fruit needs not only sunshine but cold nights and chilling showers to ripen it, so character needs not only joy but trial and difficulty to mellow it. Although the world is full of suffering, it is full also of the overcoming of it. tiffany and co outlet

  68. Avatar
    vintage louis vuitton bags about 1 year later:

    Thank you for sharing,it is very helpful and I really like it!

  69. Avatar
    okey oyunu oyna about 1 year later:

    I really like it.

    internette görüntülü olarak okey oyunu oyna, gerçek kisilerle tanis, turnuva heyecanini yasa.

  70. Avatar
    okey oyunu indir about 1 year later:

    Hello admin. I like this article. You’ve got the knowledge down, and knowledge is never a bad thing, but you can have that certification or no. I’am added to friendly post list.

    Okey günümüzde gerçek ki?ilerle internette bildi?imiz klasik okeyden çok daha büyük bir kitle taraf?ndan oynan?l?yor. Okey oyunu indir sizlere ücretsiz oyun deste?i sunmakta. Farkl? hizmet anlay??? ile di?er oyun sitelerinden çok daha e?lenceli okey oyunlar?n? bu sitede oynayabilirsiniz. Oyunu oynamak için hemen okey yükle ve bilgisayar?na kur. Ücretsiz program art?k seninde bilgisayar?nda s?n?rs?z heyecana hemen ortak ol.

  71. Avatar
    Hermes belt about 1 year later:

    Highest quality and cheap belts shop at Hermes belt store.

  72. Avatar
    Paycheck Calculator about 1 year later:

    lots of great information and inspiration, both of which we all need, thanks for all the enthusiasm to offer such helpful information here.

  73. Avatar
    HeidelBerg Parts about 1 year later:

    Very good I will recommended to more friends.Good luck! http://www.gzqiyue88.com/">HeidelBerg Parts http://www.gzqiyue88.com/">Printing Spare Parts

  74. Avatar
    cheap ray ban sunglasses about 1 year later:

    Weekend ago, I purchased this ray ban online here. Today, I come here to select another cheap ray ban sunglasses for my son. I am fond of good sunglasses for the charm I bought here.

  75. Avatar
    cnfiberoptics about 1 year later:

    Visit us & buy the bestFiber optic patch cord We will give you the best products and services. www.cnfiberoptics.com

  76. Avatar
    beats by dre store about 1 year later:

    I am fond of good sunglasses for the charm I bought here.high quality headphones new design headphones

  77. Avatar
    Betty Wilkinson about 1 year later:

    Good article more useful to me, I will continue to pay attention, and I love discount evening wedding dress,I hope you lot just my site! discount aline wedding dresses http://www.tofuchina.com

  78. Avatar
    new ralph lauren polo chemises about 1 year later:

    Although and father’s business empire, DaiLan equate to have is a enviable enterprise. Her Femme Ralph Lauren Polo Chemises network business grows day by day, her shop often hold all kinds of business activities or candy theme party. Her Manhattan flagship store just won alcohol long sleeve femmes ralph lauren polo chemises 3 sales, she was ready to license will decorate afresh for the guest, upstairs to provide the candy theme cocktail, pizza, cake and Homme Ralph Lauren Polo Chemises ice cream. She development of children’s books and to TV program is also very interested.

    Perhaps in a home, lauren entrepreneurial spirit is one of the growing experience. This is more of a birthright, than a necessity. DaiLan said: “I always want to do something.” Her brother Homme RL Manches Longues Chemise David, 39, “Swing” (established Swing) magazine and the audience is 20 years old, business for four years. Now that he is in Polo company Hommes Ralph Lauren Sweats responsible for advertising and public relations business. His brother Andrew, 41 years old, operate their own a small film studios. Lauren a often in New York city, new ralph lauren polo chemises long island, Bedford or be toelke Angle have a family gathering, here often become input sessions. DaiLan recalled: “we together around the table, discuss how will each thing in hand to do better, between each other is given the strong support, but also without leave person—but are actively help.”

    DaiLan graduated from duke university art major, after leaving school have experienced a procession of the heart that day. She studied acting class, once the audition for MTV show wholesale big pony ralph lauren bags discount anchor, also are eligible for the aerobic fitness coach card, she has run a public relations activities. Then she sink their minds, participate in childhood is never change interest to the color and candy: love. Her father said: Ralph Lauren casquettes “when memories as a child I would like to his office, the sample is put in sugar jar, red and green, and it is very beautiful.” She had assumed that open a candy theme of the gallery or coffee shops, and the club, also want to open a candy museum, then decided to open a candy store.

  79. Avatar
    Femme Ralph Lauren Polo Chemises about 1 year later:

    “The United States style in his hands, from the old values: imagine Femme Ralph Lauren Polo Chemises become real.” This sentence victims Ralph lauren design style and achievement. At the beginning of this century for 40 years of American and British upper social life, the western wilderness, of the old movies, 30 s Femme RL Manches Longues Chemise baseball player and old Volvo is he designed the source of inspiration. In plain style will shekels references to fashion design Homme Ralph Lauren Polo Chemises field, it should be said that his army. Often a lot of people know only POLO (POLO), and do not know its designer Hommes Ralph Lauren Sweats Ralph lauren, actually POLO is just the first of a series of his design for the men’s clothing. At the beginning with “the POLO” as new ralph lauren polo chemises the theme of clothing, because Ralph lauren, believe that the sports let people immediately associate to aristocrat’s leisure. Ralph lauren’s shrewd lies in the world are completely convinced: let the Ralph lauren can buy brand clothing dream, and is worth being. He showed the way a unique style, the Femme Ralph Lauren Hoodies goods of performance is a family atmosphere, this method is very successful, opened in Madison avenue store first years of sales is more than $thirty million. Has been concentrating on shape, wild west, the mind fusion Indian culture, former Hollywood “American style” feelings of Ralph lauren, and finally HOMME RL Manches Longues Chemise even by the magazine media represented the classic “sealed” stylist. “My goal is to finish the design of imagination can be the true and, it must be part of the life form, and become personal. Light circulation at any time” lal

  80. Avatar
    beats studio by dr dre about 1 year later:

    nice

  81. Avatar
    puma espera shoes about 1 year later:

    As cheap puma ferrari shoes success grows, we will also be communicating more of our corporate accountability efforts. In particular, we hope to work with more partners that can help us more effectively and efficiently address social and environmental issues. We believe that this would help us sustain our pilot projects and develop new programs as the need arises, ensuring that the Momentum built prior to 2008 will continue. Building Momentum is a deliberate and purposeful act, and we hope that with this report we have exhibited our good faith and corporate accountability.

  82. Avatar
    http://www.supplycheapjersey.com/ about 1 year later:

    wholesale jerseys,cheap jerseys,discount jerseys,nfl jerseys,mlb jerseys,nhl jerseys,nba jerseys,soccer jerseys.NFL,MLB,NBA,NHL,SOCCER Sunglasses.

  83. Avatar
    Louboutins about 1 year later:

    asda sdf+998as+d85 0s99s

  84. Avatar
    moncler about 1 year later:

    asdfas+d9 f7sd98s555

  85. Avatar
    Christian about 1 year later:

    as asdf8a+++a+aaa

  86. Avatar
    Bags Manufacturer over 2 years later:

    thanks for sharing post

  87. Avatar
    thomas sabo australia online shop over 2 years later:

    That was a great piece of information

  88. Avatar
    christian louboutin over 2 years later:

    Good artical,I learn something!

  89. Avatar
    Gorbi over 2 years later:

    You have damn right….

  90. Avatar
    beats by dr dre over 2 years later:

    A university studentbeats by dr dre caught by the enemy, the enemy tied him at the poles,just beats solo headphones purple and then asked him: say, where are you? You do not say it electrocuted! Scheap dr.dre beats studio headphones balck/yellowtudents back to the enemy a word, the result was electrocuted, he said: I am TVU.Hot sale beats by dr dre pro headphones

  91. Avatar
    Spyder Jackets over 2 years later:

    http://www.spyderjackets-outlet.net

  92. Avatar
    Arcteryx Jackets over 2 years later:

    http://www.arcteryxjackets-sale.com

  93. Avatar
    backup iphone sms over 2 years later:

    It makes me wonder that maybe the “good way” (for lack of a better term) to built software is a force of nature – the nature of software; the languages, the problems and the tools. So the “good way” is not something that we invent or engineer or refine, but rather something that is (have been gradually) discovered.

    Such an immutable nature, and the “good way” it implies, do sound like a solid foundation to build a craft upon. :)

    Will we look back on these blog posts in fifteen years and be struck by how they sketch up the basics of the practices and processes used by then?

  94. Avatar
    friv over 2 years later:

    Thanks for sharing this great article! That is very interesting Smile I love reading and I am always searching for informative information like this.

  95. Avatar
    iphone contacts backup over 2 years later:

    For years, we come and go. It is a good choice to find the lost file back.

  96. Avatar
    price of gold over 2 years later:

    Thank you very much for taking your time to create this very informative site.I have learned a lot from your site.

  97. Avatar
    mbtshoe over 2 years later:

    Australia Beats By Dre Studio dr dre beats headphones beats studio beats pro beats solo hd pro headphones music Official store Monster Beats By Dre Pro

  98. Avatar
    cheap snapback hats over 2 years later:

    What absolutely are some of the advantages of accepting acceptance in the ERB Assurance requirements for the array alone harder. if apprenticed in to an adjustment 600 pixels sizes travelling to be the accustomed

  99. Avatar
    cheap snapback over 2 years later:

    All of us aswell accommodate the cowboys are accepting the absolute plugs that appearance is not just a cowboy and cowgirl These types of aswell access in a amount of styles and designs to baddest from.

  100. Avatar
    cheap snapback over 2 years later:

    All of us aswell accommodate the cowboys are accepting the absolute plugs that appearance is not just a cowboy and cowgirl These types of aswell access in a amount of styles and designs to baddest from.

  101. Avatar
    Microsoft Support over 2 years later:

    Another set of HFT strategies is classical arbitrage strategy might involve several securities such as covered interest rate parity in the foreign exchange market which gives a relation between the prices of a domestic bond, a bond denominated in a foreign currency, the spot price of the currency, and the price of a forward contract on the currency… Microsoft Support

  102. Avatar
    24 Hour Plumbing Service over 2 years later:

    i really enjoy reading this blog coz everything is very open and very clear explanation of issues. It contains truly information. Your website is very useful. Thanks for sharing. Looking forward to more

  103. Avatar
    kineski horoskop over 2 years later:

    Brilliant information. Keep it up!

  104. Avatar
    treerichworldclub over 2 years later:

    such an immutable nature, and the “good way” it implies, do sound like a solid foundation to build a craft upon. :)

  105. Avatar
    wholesale new era fitted hats over 2 years later:

    Human nature is the most poor: we all dream to have a wonderful rose garden, and not to appreciate our window open today in the rose.

  106. Avatar
    bladeless fans over 3 years later:

    We must ship now and deal with consequences 105 good post51

  107. Avatar
    louboutin sales over 3 years later:

    We must ship now and deal with consequences 106 hoo,good article!!I like the post!179

  108. Avatar
    insurance inn over 3 years later:

    I thought it was going to be some boring old post, but it really compensated for my time. I will post a link to this page on my blog. I am sure my visitors will locate that extremely useful

  109. Avatar
    movers in Dubai over 3 years later:

    OMB, OMG!

  110. Avatar
    Tom Ford Sunglasses over 3 years later:

    Chopard  sunglasses had all  glamorous elements with  metal chain arm,Tom Ford Eyeglasses  heart strass and diamente.Loewe don  signature  anagrams  arranged along the temple or fixed on the hinges for  aviator and wide-eyed sunglasses.Tom Ford elegant oversized and gladiators came  in various shades colours, contra tone thick frame or dual-toned temples.Tom For Sunglasses

  111. Avatar
    jean swift over 3 years later:

    Handbags are those fashion accessories that enhance your looks?

  112. Avatar
    best cosplay over 3 years later:

    http://www.outfitscosplay.com/cosplay-catalog/the-king-of-fighters-cosplay Deluxe The King of Fighters Cosplay Costumes for Sale.Find your favorite characters and cosplay outfits from all the popular anime and games.

  113. Avatar
    fitflop over 3 years later:

    Indicating thank you for not simply plenty of, in your publishing the truly amazing insight.

Comments