Rich Hickey on Testing 177

Posted by Dean Wampler Fri, 05 Jun 2009 17:40:00 GMT

It was an interesting week at JavaOne, with lots of talks and hallway discussions about new languages on the JVM. One of those languages is Clojure.

Rich Hickey, the creator of Clojure, gave a talk at the Bay Area Clojure User Group Wednesday evening. During the Q&A part, he said that he’s not big on writing tests, although he always runs the tests that other people have written before he commits changes.

Of course, there are many people, including us Object Mentors, who consider TDD to be an essential part of professional software development. Obviously not everyone agrees. James Coplien has been another critic of this view.

We should never accept any dogma. Why is TDD considered important? What does it purport to do? TDD provides two important benefits.

  • Driving the design.
  • Building a suite of automated regression tests.

So, if you can satisfy both requirements without TDD, then technically you don’t need it. In Rich’s case, he said he spends a lot of time thinking about what he’s going to do before he does it. In this way, he satisfies the first requirement, driving the design. I had a spirited discussion with some Thoughtworkers afterwards and Ola Bini said what a lot of us think, “I do that thinking by writing tests.” I’ll freely admit that when I am really experimenting with ideas, I might just write code, but once I know how to proceed, I return to the beginning and test drive the “production” code.

Rich also made an off-hand comment that if he screws something up, he’s got thousands of users who will let him know! That ex post facto testing, along with the Rich’s own devotion to doing high-quality work, does a good job of handling regressions.

But Rich mentioned something else that is also very important. In a functional language, where values are immutability and mutable state is handled in specific, principled ways, regressions don’t happen nearly as often. Clojure has one of the most deeply thought out approaches for handling state, which is the genius of Clojure.

I asked Rich how long he worked on Clojure before releasing it to the world. He spent about 2 1/2 years, much of that time working exclusively on Clojure (and eating through his savings). When he finally “announced” it, his “marketing” consisted of one email to some friends in the Common Lisp community. The rest was viral, a testament to the justified excitement Clojure has generated.

For me, I’ll probably always do my design thinking through tests, especially when I’m writing code in imperative languages, like Java and Ruby. I’ll continue to encourage my clients to use TDD, because I find that TDD is the most productive way to achieve high quality. I want the safety net of a good test suite. I’m also writing more and more of my code in a functional style, with minimal side effects and mutable data. You should, too.

Comments

Leave a response

  1. Avatar
    Sai Venkat about 1 hour later:

    Not sure if I get it right, I know immutability does help in less screw ups by removing side effects as we can’t change the state but how does it help in designing the software? Oh well… It all depends on how you design. I do using tests other may not do so :)

  2. Avatar
    Sai Venkat about 1 hour later:

    Not sure if I get it right, I know immutability does help in less screw ups by removing side effects as we can’t change the state but how does it help in designing the software? Oh well… It all depends on how you design. I do using tests other may not do so :)

  3. Avatar
    Phil about 1 hour later:

    The comments about “thinking it out ahead” kind of creeped me out too at first, but the next day I read the paper “Out of the Tarpit” that he recommended; it makes a very strong case for informal reasoning being a suitable substitute for test cases (not counting the regression scenario). It also helps that Clojure itself has much less statefulness than your average Clojure project.

    Referential transparency is a beautiful thing.

  4. Avatar
    Aaron about 2 hours later:

    It’s also worth mentioning that clojure-contrib has a nascent community contributed test suite that Rich has said that he does run regularly.

  5. Avatar
    Patrick Logan about 4 hours later:

    Another important benefit of a good collection of tests is communication.

    Clojure is a fine Lisp in many ways. I personally would hesitate to use it for anything in which I had a significant investment given the maintainer’s stand on testing. At least not without a good deal of evidence that Clojure will continue to be maintainable and understood (at the implementation level in particular) by more than one person.

    Maybe his approach will work over a long period of time, and for a user community that will rely on Clojure for many heavy-duty, valuable production uses. I cannot say that it won’t.

    I can only say that for me this would be a significant reason to hesitate before taking too significant of a plunge.

    And that’s saying something because I am a veteran of programming in various Lisps for 29 years, and Lisp generally is my favorite language. I love that Clojure has rejuvinated interest in Lisp.

  6. Avatar
    Michael Feathers about 21 hours later:

    I had a chance to talk to Rich at QCON earlier this year and he was saying that same thing, that he didn’t see the value of unit testing. When I heard that, it was a bit of a throwback to an earlier day when I knew many people who thought that way and they were really in a very similar situation to his: smallish, single (or few) person project, very intricate, with time and patience to memorize nearly the whole code base. Personally, I wouldn’t do anything like that without unit tests today, but some people did work very well that way as long as they were able to keep the code at a scale in which they could just rewrite the offending parts. Too many projects, however, are runaways. The complexity and size grow to the point where that style of working falls apart.

    The thing that annoys me is when someone takes their experience under a set of particular set of rarified conditions and tries to generalize it all the way across development. In this case, saying “Well, I’ve never had a problem on my projects where UTs would help so they are useless for everyone.” I don’t remember Rich ever saying that, but others have.

  7. Avatar
    CONTEXT about 23 hours later:

    Oh god someone applied common sense.. better call the internet!

    Enough! TDD is fine within a context, so is not using TDD. Wait what did I just say? Context?

    Yes context! If people knew about context no one would care about what joel spolsky has to say.

  8. Avatar
    Dimitry Gashinsky 1 day later:

    Just look at the code for Clojure and you can see how Rich develops it. There is plenty of scaffolding left in the comments. And it looks like development in any other dynamic language. With repl at your side, the application always running and code always being compiled. The whole cycle of write test, write code, becomes so much shorter that it just does not make sense to call it a formal test. The main point of TDD is to compile and execute your production code right away. This is exactly what repl gives you with shortest cycle possible. Another use of TDD is a way to experiment with API use, or kind of top down design, and this use of TDD is also captured by growing code organically in a repl. I personally try to capture those repl experiments into the tests and then just add them to the unit tests.

  9. Avatar
    Phil 1 day later:

    Patrick: as for readability/maintainability—I read through the entirety of core.clj (the most fundamental part of Clojure outside of the Java primitives) three or four months after I started with Clojure, and it was very straightforward.

    There were only three or four functions (out of ~4000 lines) that didn’t immediately make sense to me, which pleasantly surprised me. Like I said, referential transparency is a great thing. Does wonders for readability.

  10. Avatar
    Patrick Logan 1 day later:

    Phil – the concern I was trying to express goes well beyond readability. But I agree that the clojure code I have seen tends to be v.readable. And having a lisp that takes the applicative style much further than scheme helps and is about time.

    The concern I tried to express was for an application developer making a long term, monetary investment in clojure code. Currently it appears to invest in a clojure code base is to put all your eggs in one basket, and for that basket to be Rich Hickey in person.

    If I had to choose one person for this, Rich seems to be a good candidate. But I would be unlikely to choose a language so dependent on one person, so early in that languages lifetime.

    YMMV

  11. Avatar
    Dean Wampler 1 day later:

    @Patrick,

    I should have included tests as communication. Unfortunately, I find that few people are in the habit of using tests this way, either when writing tests or trying to learn a new code base. It’s one of the benefits of TDD that is least appreciated.

  12. Avatar
    Nirav Thaker 4 days later:

    JDT tests (http://dev.eclipse.org/viewcvs/index.cgi/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/?sortdir=down ) is an excellent example why tests are so much useful in understanding complex APIs such as JDT AST manipulation.

    I am not sure why people (including me) tag this up as a benefit of TDD when it really is tests (TDD or non-TDD) that helps improve communication.

  13. Avatar
    Richard Newman 8 days later:

    Re tests as communication: I personally find that a test suite is useful for learning a baroque object-oriented API (take, for a Java example, the Apache HTTP library, or POI… or most any Java library for that matter!).

    I find the documentation aspect of tests to be of much, much less use in a Lisp, increasingly so as the purity (in a functional sense) of the language increases. You simply don’t need to know which objects to build and when, and which get mutated: so long as you can read a one-line description of a function, you’re good to go. If you still can’t figure it out, you can poke at it in a REPL to find out what it does.

    I have not yet encountered a Clojure function or library that I couldn’t understand from a) the function signature, b) the docstring, or as a last resort c) the code itself, which is rarely more than a dozen lines. Most of the docs I need to find are for Java libraries I’m calling from Clojure!

    Similarly, the “web of objects” with mutable state are the primary cause of regressions, and thus a big motivation for test suites. I feel much less worried about Clojure’s lack of tests than I would if, say, a Java application server had none.

    I intend to contribute to Clojure’s test suite, because I’m a belt and braces kind of guy… but I’m not losing sleep over the lack of one now.

  14. Avatar
    Richard Newman 8 days later:

    Re tests as communication: I personally find that a test suite is useful for learning a baroque object-oriented API (take, for a Java example, the Apache HTTP library, or POI… or most any Java library for that matter!).

    I find the documentation aspect of tests to be of much, much less use in a Lisp, increasingly so as the purity (in a functional sense) of the language increases. You simply don’t need to know which objects to build and when, and which get mutated: so long as you can read a one-line description of a function, you’re good to go. If you still can’t figure it out, you can poke at it in a REPL to find out what it does.

    I have not yet encountered a Clojure function or library that I couldn’t understand from a) the function signature, b) the docstring, or as a last resort c) the code itself, which is rarely more than a dozen lines. Most of the docs I need to find are for Java libraries I’m calling from Clojure!

    Similarly, the “web of objects” with mutable state are the primary cause of regressions, and thus a big motivation for test suites. I feel much less worried about Clojure’s lack of tests than I would if, say, a Java application server had none.

    I intend to contribute to Clojure’s test suite, because I’m a belt and braces kind of guy… but I’m not losing sleep over the lack of one now.

  15. Avatar
    Richard Newman 8 days later:

    Hmm, this comment system sure makes dupes easy! Sorry about that; please delete one.

  16. Avatar
    Andrew 12 days later:

    I’ve switched to coding in Scheme (another Lisp dialect like Clojure) from Java and Ruby some time ago. And the plain fact is that you don’t need as much testing.

    The only reason for TDD is because Java is such a poor language that is ill-suited to concurrent applications with shared state and many pitfalls to trap the unwary. Ruby is possible worse because you lose the protection of static typing although it is largely single threaded so you lose the concurrency problems.

    As Rich says by the time you have thought through the code you want to write in Lisp/Scheme – and you really have to do this unlike Java where you can just throw some likely looking code on the screen, and trialled a few things in REPL (interactive evaluation) you’re pretty confident that you code will work for all cases. As this happens at a function level and functions are pure the process is very manageable and repeatable. Compare that with constantly mutating complex object models in Java – hence the need for comprehensive test coverage.

    It’s not more testing we need but a better approach i.e. functional programming rather than imperative. There is a reason that studies have shown that Lisp/Scheme is about 8 times more productive than Java and produces faster, more concise and more maintainable code.

    That’s not to say that we don’t need thorough integration testing though.

  17. Avatar
    Thesis 28 days later:

    As this happens at a function level and functions are pure the process is very manageable and repeatable.

  18. Avatar
    Luis Sergio Oliveira about 1 month later:

    I come from a C++, Python and Java background and started with Common Lisp more than 2 years ago. For complex logic TDD always helps, even if the functions / objects and methods are purely functional. The benefit of having a set of test cases that signal a regression – even one introduced in the context of the implementation of a new piece of logic or refactoring – persists.

    For non-complex functions I agree that the REPL and working and experimenting against a live application are enough in the majority of the cases.

    Alas, in big teams a simple function in the midst of several hundred others isn’t such a clear cut and regressions do occur more often than expected. This is something that I think could be covered at the level of integration and acceptance automated tests. I regret that currently in my company we haven’t such a thing… Top of it all, the in most common case the users of your software aren’t motivated and understanding developers who might even send a patch with a test case that exposes the bug, but, paying customers that get very angry when things go wrong.

  19. Avatar
    Matt 9 months 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.

  20. Avatar
    research paper 10 months later:

    Thanks for informative and interesting information! I’m interested in computers and programming and like to keep up with staff like this! I really enjoyed the article! Besides, the information is very useful for my research paper I’ve bookmarked this blog and wit for next posts!

  21. Avatar
    han 10 months later:

    I use them and find them helpful, but I feel that they are a bit of a cop-out as a language construct. If an exception could talk, it would say “get me the hell out of here.” And, you have to admit, that’s a bit rude.

  22. Avatar
    parça TL kontör 10 months later:

    Very nice art, thank you for this site!

  23. Avatar
    logo designs 12 months later:

    The concern was trying to express for an application developer to make a lasting investment in the currency code Clojure. Currently, he seeks to invest in a code base Clojure is putting all your eggs in one basket, and the curve of Rich Hickey personally. There are no more tests we need, but a better approach is to say. functional programming rather than imperative. There is a reason that studies have shown that Lisp / Scheme is about eight times more productive than Java and produces faster, more accurate and easier to maintain code.

  24. Avatar
    jewellery about 1 year later:

    Very nice art, thank you for this site!

  25. Avatar
    forex about 1 year later:

    I have heard great things about the Bay Area Clojure User Group. I participate in a similar group in Spokane, keep it up!!

  26. Avatar
    Football jersey about 1 year later:

    It was an interesting week at JavaOne, with lots of talks and hallway discussions about new languages on the JVM. One of those languages is Clojure.

  27. Avatar
    mlb jerseys sale about 1 year later:

    Of course, there are many people, including us Object Mentors, who consider TDD to be an essential part of professional software development. Obviously not everyone agrees. James Coplien has been another critic of this view.

  28. Avatar
    christian audigier shirts about 1 year later:

    We should never accept any dogma. Why is TDD considered important? What does it purport to do? TDD provides two important benefits.

  29. Avatar
    Pratish about 1 year later:

    I agree with you that TDD is the most productive way to achieve high quality. Thanks Dean Wampler for this creative post.

  30. Avatar
    online website design about 1 year later:

    The concern was trying to express for an application developer to make a lasting investment in the currency code Clojure. Currently, he seeks to invest in a code base Clojure is putting all your eggs in one basket, and the curve of Rich Hickey personally.

  31. Avatar
    yalova emlak about 1 year later:

    Thank you very much for this blog.I like its.As to me it’s good job.I come to this site then read this article and i will read your next articles.

  32. Avatar
    cheap vps about 1 year later:

    I asked Rich how long he worked on Clojure before releasing it to the world. He spent about 2 1/2 years, much of that time working exclusively on Clojure (and eating through his savings). When he finally “announced” it, his “marketing” consisted of one email to some friends in the Common Lisp community. The rest was viral, a testament to the justified excitement Clojure has generated.

    For me, I’ll probably always do my design thinking through tests, especially when I’m writing code in imperative languages, like Java and Ruby. I’ll continue to encourage my clients to use TDD, because I find that TDD is the most productive way to achieve high quality. I want the safety net of a good test suite. I’m also writing more and more of my code in a functional style, with minimal side effects and mutable data. You should, too.cheap VPS

  33. Avatar
    Homes for sale in new bern nc about 1 year later:

    Ive never heard of Clojure…hmmm

  34. Avatar
    DM800 about 1 year later:

    Training

  35. Avatar
    <a href="http://marksspencermoney.com">marks and spencer money</a> | <a href="http://loanstesco.com">loans tesco</a> | <a href="http://loanshalifax.com">loans halifax</a> | <a href="http://loansnatwest.com">loans natwest</a> | <a href="http://loanll about 1 year later:

    This is a very informative post. Thank you

  36. Avatar
    [url=http://marksspencermoney.com]marks and spencer money[/url] | [url=http://loanstesco.com]loans tesco[/url] | [url=http://loanshalifax.com]loans halifax[/url] | [url=http://loansnatwest.com]loans natwest[/url] | [url=http://loanlloyds.com]loans lloyds[ about 1 year later:

    Great article

  37. Avatar
    [link=http://marksspencermoney.com]marks and spencer money[/link] [link=http://loanstesco.com]loans tesco[/link] [link=http://loanshalifax.com]loans halifax[/link] [link=http://loansnatwest.com]loans natwest[/link] [link=http://loanlloyds.com]loans lloyds about 1 year later:

    Awesome

  38. Avatar
    facebook, silica suppliers | Hydrated silica suppliers | silica about 1 year later:

    very informative good post.I love read this blog.

  39. Avatar
    facebook, caustic soda suppliers | caustic soda solid suppliers "> soda about 1 year later:

    very informative good post.I love read this blog.

  40. Avatar
    London Loans about 1 year later:

    The concern was trying to express for an application developer to make a lasting investment in the currency code Clojure.

    Manchester Loans

    Birmingham Loans

  41. Avatar
    Grand Rapids Homes For Sale about 1 year later:

    I believe it is always necessary to think about how you want things to work for a few days or even weeks if you have to in order to have everything perfect before you begin a project.

  42. Avatar
    jet parça tl kontör bayili?i about 1 year later:

    thank you for sharing with us

  43. Avatar
    parça tl kontör fiyatlar? about 1 year later:

    Good post,I think so! Dear Admin, I thank you for this informative article.

  44. Avatar
    Selling Gold about 1 year later:

    Rich brings up some good points. Like how in a functional language, where values are immutability and mutable state is handled in specific, principled ways, regressions don’t happen nearly as often. I’ve said this many times to fellow coworkers and they just don’t seem to get it.

  45. Avatar
    Rangemaster 110 about 1 year later:

    can’t stop reading your blog

  46. Avatar
    Accommodation Bucharest about 1 year later:

    For me, Clojure is the most exciting technology out there today. Exciting in itself, but I also can’t wait to see what people do with it (are able to do with it). It’s certainly the first viable alternative for moving ‘hard’ problems off of common lisp and the rich libraries of Java are definitely attractive. Would have liked some information on performance of multi-dimensional arrays (an Achilles heel for Java).

  47. Avatar
    gps watches about 1 year later:

    I just say what a relief to find someone who actually knows what they are talking about on the internet. You definitely know how to bring an issue to light and make it important. gps watches

  48. Avatar
    http://www.myminimizerbra.com about 1 year later:

    I just say what a relief to find someone who actually knows what they are talking about on the internet. You definitely know how to bring an issue to light and make it important.

  49. Avatar
    objectmm about 1 year later:

    To confirm and activate your account please check your inbox and click on the link found in the email we just sent you.

  50. Avatar
    Jordan about 1 year later:

    Clojure is really a very interesting technology out there and is worth of being researched much more than it is now. It is a technology that may help users and the fact of using Java libraries is something really good for those like me. Thanks for the good post and keep us informed about this.

  51. Avatar
    oxpdffr about 1 year later:

    PowerPoint en PDF Convertisseur possède encore plusieurs fonctions, par exemple : fusionner des documents en un seul, ajouter des filigranes, adjuster la résolution ou la taille du fichier, protéger les documents PDF par mot de passe, etc et sa fonction de sécurité ne vous inquiète pas.En un mot, avec PowerPoint en PDF Convertisseur votre travail sera plus facile ! Télécharger gratuitement PowerPoint en PDF Convertisseur et expérimenter ce logiciel.

  52. Avatar
    Designer Bags about 1 year later:

    cool article!Thanks for nice sharing!!

  53. Avatar
    iPod to iTunes Transfer about 1 year later:

    iPod to iTunes Transfer, transfer iPod to iTunes library, is an all-function transfer for iPod users that supports all versions of iPod and other iPhone devices. It can perform like a transfer, a converter, a ringmaker.

    You can free download it and have a try !

  54. Avatar
    iPad video converter for Mac about 1 year later:

    convert any video to iPad format on Mac

  55. Avatar
    Panasonic Viera about 1 year later:

    i love objectmentor!!

  56. Avatar
    Protein Rich Foods List about 1 year later:

    Thanks for the good post and keep us informed about this.

  57. 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 it is very very important for you to backup iPhone SMS and contacts to computer regularly.

  58. Avatar
    iPhone contacts backup about 1 year later:

    If you want to backup your iPhone, because you dare to lose all your information and make your iPhone into a useless element normally if things go off beam, the worst that will happen is that you have to restore your iPhone to its initial pristine state. That means that you’d lose your settings and data on the iPhone. So before you loose your iPhone, make sure you save off your data by doing simple steps.

  59. Avatar
    iPhone contacts backup about 1 year later:

    iPhone to Mac Transfer is a leading iPhone rip, iPhone backup software for Mac users to fast back up photos, songs, videos and so on between iPhone and Mac easily and conveniently.

  60. Avatar
    Pandora about 1 year later:

    with their own execution of SuiteSetUp and SuiteTearDown.

  61. Avatar
    logo design about 1 year later:

    Amazing work

  62. Avatar
    Toxine botulique about 1 year later:

    I also use TDD… Very good tool.

  63. Avatar
    ???? ???? about 1 year later:

    Thanks for sharing such a useful stuff!

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

    Want to make some change to your iphone 4? white iphone 4 Conversion Kit will be your best choice! Come and try on!

  65. Avatar
    highlights vs goals about 1 year later:

    really i like this.

  66. Avatar
    travail a domicile about 1 year later:

    I enjoy what you guys are up too. This sort of clever work and coverage! Keep up the terrific works guys I’ve added you guys to my own blogroll.

  67. Avatar
    The Holy Gail Body Transformation about 1 year later:

    Thank you very much for this blog.I like its.As to me it’s good job.I come to this site then read this article and i will read your next articles.

  68. Avatar
    Criminal Check about 1 year later:

    Thanks for discussing this great topic.

  69. Avatar
    Houston Plumbing about 1 year later:

    I’ve recently been working on a Clojure application that I hope to open source soon. It’s been my first experience of using Clojure, and is almost certainly one of the most thought provking things I’ve done in a long while. One of the things that is still causing me issues is how to go about TDDing Clojure applications – or rather functional programs in general. Do you have any suggestions?

  70. Avatar
    US Criminal Record about 1 year later:

    The complexity and size grow to the point where that style of working falls apart.

  71. Avatar
    iPhone Contacts Backup For Mac about 1 year later:

    Thanks for share! I agree with you. The artical improve me so much! I will come here frequently. iPhone Contacts Backup For Mac can help you backup iphone contact to mac.

  72. Avatar
    LP140WH2-TLA1 about 1 year later:

    Hi webmaster, commencers and UGGs Outlet everybody else !!! The blog was absolutely fantastic!

  73. Avatar
    Server management about 1 year later:

    An awesome berth. Really informative and fastidious. I apprise the author for presenting specified a caller install. This types of posts are ever bookmarkable. I’ll inactivity for specified posts here all the indication. Server management

  74. Avatar
    vendita computer about 1 year later:

    Good post,I think so! Dear Admin, I thank you for this informative article.

    Visit

    vendita computer

    lago di caldonazzo

  75. Avatar
    facebook dating app about 1 year later:

    Well, then. Here it is. Very sweet. So nice to see you in action and happy. Very glad we’ve had the opportunity – nay, I say, God-cidence – to cross our journeys along social work. facebook dating app

  76. Avatar
    Criminal Records about 1 year later:

    For me, I’ll probably always do my design thinking through tests, especially when I’m writing code in imperative languages, like Java and Ruby.

  77. Avatar
    iPhone SMS to Mac Backup about 1 year later:

    Would you like to banckup iphone SMS to mac, macBook, macbookPro as .txt files? Now a software iphone SMS to Mac Backup can help you to realize it.

  78. Avatar
    Criminal Search about 1 year later:

    Most of the docs I need to find are for Java libraries I’m calling from Clojure!

  79. Avatar
    Apartments for rent Bucharest about 1 year later:

    I’m not a fan of that. I’m even less sure about how it could be useful in the DESIGN of a ‘innovative’ programming language.

  80. Avatar
    Tenant Screening about 1 year later:

    The main point of TDD is to compile and execute your production code right away. This is exactly what repl gives you with shortest cycle possible.

  81. Avatar
    Matteo about 1 year later:

    1

  82. Avatar
    mosic about 1 year later:

    2

  83. Avatar
    Jones about 1 year later:

    3

  84. Avatar
    San Diego Podiatrist about 1 year later:

    I agree. However, using the term ‘technical debt’ for messy code might give you more diplomatic leverage towards management and fellow coders who created the mess. But then again you are just fooling everyone …

  85. Avatar
    Backup iPhone SMS about 1 year later:

    Keep your Contacts and SMS safe! Actually, the contacts and SMS have more values than a cell phone’s own value. You can pay money to buy a new iPhone, but cannot buy your lost contacts and SMS back. So it’s important for you to backup your contacts and SMS in iPhone. And we recommend you backup contacts and SMS regularly. Our backup software can help you take a snapshot for your contacts and SMS. Your important personal information will be never lost.

  86. Avatar
    iPhone contacts backup for Mac about 1 year later:

    Thank you for writing it so seriously.

  87. Avatar
    ???????? ????? about 1 year later:

    Thanks, it is directly what I was looking for =)

  88. Avatar
    Sunglass about 1 year later:

    Buy $10 Replica Designer Sunglasses with 3-day FREE SHIPPING

  89. Avatar
    dory about 1 year later:

    This was a really fantastic post that I really do appreciate. This is something that is really amazing and interesting to me to say the least. Social Network

  90. Avatar
    tahmid_nsu_bba@yahoo.com about 1 year later:

    it is just awesome blog Florist Glasgow

  91. Avatar
    sac ekim about 1 year later:

    Thanks for the good post and keep us informed about this. tr

  92. Avatar
    Seobaglyak about 1 year later:

    Very useful stuff in here…

  93. Avatar
    okey oyunu oyna about 1 year later:

    great

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

  94. Avatar
    solo hd about 1 year later:

    This solo hd of headset timbre and its appearance style are very alike—again, very thin. beats solo hd voice very open seem a bit too thin, Fabulous Monster Limited Edition GOLD low frequency partial hard, descend not beautiful but speed feeling good. discount solo hd hf performance is good, accurate and not mellow, intermediate frequency performance is regular. Overall Classic Monster Powered Isolatio black voice more features, more suitable for listening to electronic music or part of the pop.

  95. Avatar
    cheap brand watches about 1 year later:

    Good writing, this article bring me a lot. Your blog is great, thanks for sharing.

  96. Avatar
    ford leveling kit about 1 year later:

    I really like your website and your awesome article. Thank you :-)

  97. Avatar
    leveling kit ford about 1 year later:

    I really like your website and your awesome article. Thank you :-)

  98. Avatar
    leveling kit f250 about 1 year later:

    I always read your article and I really like it. Thank you :-)

  99. Avatar
    f350 leveling kit about 1 year later:

    Great job, your article is so nice Thank you :-)

  100. Avatar
    anonymous about 1 year later:

    I admire the way you express yourself through writing. Your post is such a refreshing one to read. This is such an interesting and informative article to share with others. Keep up the good work and more power. Thanks!

    loans till payday | android app developers

  101. Avatar
    seo services provider about 1 year later:

    Impressive blog and i really enjoyed reading your information and mostly peoples are like your blog. Thanks for your wonderful sharing.

  102. Avatar
    high heels about 1 year later:

    I always read your article and I really like it. Thank you :-)

  103. Avatar
    Jewellery about 1 year later:

    Online UK costume and fashion jewellery shop with,

  104. Avatar
    reguli de poker over 2 years later:

    The concern was trying to express for an application developer to make a lasting investment in the currency code Clojure. Currently, he seeks to invest in a code base Clojure is putting all your eggs in one basket, and the curve of Rich Hickey personally. There are no more tests we need, but a better approach is to say. functional programming rather than imperative. There is a reason that studies have shown that Lisp / Scheme is about eight times more productive than Java and produces faster, more accurate and easier to maintain code.

  105. Avatar
    Supra For Sale over 2 years later:

    Get ready to go airborne. With over 30 explosive jumping moves, you won’t be spending much time on the ground during this highly intense cardio routine. Plyometrics, also known as jump training, has been proven to dramatically improve athletic performance. If your sport involves a ring, rink, field, court, or track, then this training will give you the edge. Just be prepared to “Bring It” for a full hour when you leap into this workout, because there is no letting up.

  106. Avatar
    Hancy over 2 years later:

    Hello Friend,Whichever style of Fashion Shoes you’re looking for, classical, fashionable, lovely or the latest design, you can find your favorite designer shoes in www.dunkpage.com ,several days ago I bought one pair of shoes from there,It’s beautiful and very comfortable!

  107. Avatar
    beats by dr dre headphones over 2 years later:

    For people that adore music, i suggest the monster powerbeats sport headphones to you, Just Beats Studio Purple has three color, red, whit and black. It is significant efficacy on this monster diddybeats in-ear headphones.

  108. Avatar
    Christian louboutin shoes on sale over 2 years later:

    What a wonderful article! And are doing well on the whole, but their work also has shortcomings.

  109. Avatar
    event management company over 2 years later:

    Nice blog keep it up!!!

  110. Avatar
    stin Remodeling Companies over 2 years later:

    Just look at the code for Clojure and you can see how Rich develops it. There is plenty of scaffolding left in the comments. And it looks like development in any other dynamic language. With repl at your side, the application always running and code always being compiled. The whole cycle of write test, write code, becomes so much shorter that it just does not make sense to call it a formal test. The main point of TDD is to compile and execute your production code right away. This is exactly what repl gives you with shortest cycle possible. Another use of TDD is a way to experiment with API use, or kind of top down design, and this use of TDD is also captured by growing code organically in a repl. I personally try to capture those repl experiments into the tests and then just add them to the unit tests.

  111. Avatar
    hcg diet atlanta over 2 years later:

    Good job! The blog contains as much news on the topic as one could expect. It’s quite impressive. You seem to spend plenty of time behind this. This is first time here. I would make regular visits. hcg diet atlanta

  112. Avatar
    stump removal Houston over 2 years later:

    I am totally impressed. The articles have pure clarity. You have great command over this issue. A blog can’t be better than this. Thanks a great deal. stump removal Houston

  113. Avatar
    Online sports store over 2 years later:

    Your post is really informative. I like it!!! I am a cricket lover and fan of cricketers; I always want to find a good online sports store in Australia, that offers sports accessories especially cricket gear

  114. Avatar
    Austin Roofing Company over 2 years later:

    I agree. However, using the term ‘technical debt’ for messy code might give you more diplomatic leverage towards management and fellow coders who created the mess. But then again you are just fooling everyone …

  115. Avatar
    http://www.carrefive.com over 2 years later:

    Are you kidding me???? I guess it’s one more job created. I think we’re a day late and a few trillion dollars short! The aliens are already running the U.S. and the United Nations!

  116. Avatar
    immobilien berlin over 2 years later:

    I found the perfect place for my needs. Contains wonderful and useful messages. I have read most of them and has a lot of them. Door Lintels To me, he’s doing the great work.

  117. Avatar
    Park Hotel Brno over 2 years later:

    I hate that a relatively simple looking issues are taking ages with me. That is why I appreciate this little fixes I find on the internet like the one you provide, thanks to all.

  118. Avatar
    CCNA Salary over 2 years later:

    I really loved reading your blog.

  119. Avatar
    wound dressings over 2 years later:

    Hi there, I was just passing by to this website and got the stuff here very helpful. Really enjoyed reading all about. Thank you for sharing.

  120. Avatar
    DVD On iPad/iPad 2 over 2 years later:

    Rip DVD to iPad free with DVD on iPad Converter which can easily rip/convert DVD movies for iPad supported formats like MPEG-4, H.264/MPEG-4 AVC, MOV, and M4V, also supports extract most audio formats, such as AAC, MP3, WAV, AIFF, M4A, from DVD file.

  121. Avatar
    Crystal Jewellery over 2 years later:

    Great post! Nice and informative, I really enjoyed reading it and will certainly share this post with my friends . Read everything you ever wanted to know about how to buy gold jewelry

  122. Avatar
    Essay Help over 2 years later:

    Good to see this information. I found it by searching on google. Thanks to admin very much!

  123. Avatar
    buy maleextra over 2 years later:

    This is a nice blog.

  124. Avatar
    beats by dre store over 2 years later:

    Really enjoyed reading all about. Thank you for sharing.high quality headphones new design headphones

  125. Avatar
    Coach Bags over 2 years later:

    Coach Bags Cheers for this content, guys, continue to keep up the good work.

  126. Avatar
    Iphone 5 case over 2 years later:

    I really like your blog and appreciate your work.

  127. Avatar
    Gifts For Women over 2 years later:

    good post, however only some of the points were actually treated actually good, I believe digging deep for the issue to construct it more informative will actually help, will be looking ahead for more informative billet than this. Will suggest some items which are to the best of my knowledge. This might help you bringing more info for wholly of us

  128. Avatar
    Treatment for Sciatica over 2 years later:

    Regression automated testing? That point is bit confusing. Usually multiple iterations are make for testing purpose.

  129. Avatar
    Sam over 2 years later:

    Thanks for this post. It sounds like you had a very eventful week.

    My site: iRenew Bracelet Reviews

  130. Avatar
    Tom over 2 years later:

    Thanks for the great post. I will be coming back to your site for updates in the future.

    My Site:CCNA Salary

  131. Avatar
    restaurants in chicago over 2 years later:

    This is really a awesome article and I really do appreciate everything and I really love this site. This site has been so very helpful and a real assest.

  132. Avatar
    Uganda Safaris over 2 years later:

    First time i heard the language”Clojure”,Its great work by Rich.To understand it we will go to deep in this language.i liked this typical article and expect please add more information here.

  133. Avatar
    Top Affiliate Programs over 2 years later:

    I liked how the thoughts and the insights of this article is well put together and well-written. Hope to see more of this soon.

  134. Avatar
    Authentic Jerseys over 2 years later:

    However, most sports enthusiasts prefer jerseys that are comfortable to allow them to move freely during every game. Also, they opt for jerseys with a larger range of colors. Before the start of the season, it is recommended to buy the jersey you are going to wear so as you won?t be left empty-handed.

  135. Avatar
    Blogger Nusantara over 2 years later:

    Wonderful post. I am searching awesome news and idea. What I have found from your site, it is actually highly content. You have spent long time for this post. It’s a very useful and interesting site. Thanks! Blogger Nusantara Blogpreneur Indonesia | Blogger Nusantara Blogpreneur Indonesia

  136. Avatar
    <a href="http://www.rcp-vsp.com/seo/blogger-nusantara-blogpreneur-indonesia.html">Blogger Nusantara Blogpreneur Indonesia </a> over 2 years later:

    wonderful clarity in your writing

  137. Avatar
    karin over 2 years later:

    I saw this one and fell in love! I must admit i was dubious about ordering a dress from a overseas company, but i can’t praise Lightinthebox enough for there professionalism, quality, communications, and swift delivery. I ordered a custom size and the dress was delivered in just over 2 weeks to the UK. One word sums up the quality of this dress… Wow!!! The material is really good quality and the craftsmanship is second to none

  138. Avatar
    canada goose coat over 2 years later:

    When it comes to feather dress, what appears in your mind? Which kind brand of down jacket do you like prefer? Though there are many down jackets for you to choose from, on the word, which one you really enjoy? I want to say that canada goose coats is really your best choice. I believe you can’t agree with me any more. When you take the quality into consideration, you will find that it is superior to any other kind of coat. Besides, discount canada goose jackets is a world well-known brand, which has gained high reputation in the world, which has accepted by our customers and some organization. Because of its high quality, some of our loyal customers have promoted it to the people around them. In their opinion, it is good to informing others to know it. Recently, Canada Goose Trillium Parka is on hot sale. What I have to inform you is that all the products there are made by hand, so they are elaborative and elegant enough. It is really beautiful once you dress in. So, if you are a lovely girl or woman, go to the store to buy one for you. You will appreciate it that you have such a coat.In addition, they also have any other products like canada goose Gloves and canada goose jacket supplier.Hope your will like its!

  139. Avatar
    cheap ink over 2 years later:

    I’ve been browsing on-line greater than 3 hours lately, but I by no means discovered any fascinating article like yours. It is beautiful value enough for me. In my opinion, if all website owners and bloggers made good content as you probably did, the net will be a lot more helpful than ever before.

  140. Avatar
    Ashley Bowling over 2 years later:

    All you need is love All’s fair in love and war All’s for the best in the best of all possible worlds

  141. Avatar
    online poker guide news over 2 years later:

    This is very much online poker guide news happy for using the great technology in this website that to GOLDEN CASINO RESORTS using the great services in this blog. Thanks a lot for providing the great info is visible in this blog that to sharing the great info in this blog.

  142. Avatar
    GIRL FRIEND RIVAGE CASINO over 2 years later:

    This is really GIRL FRIEND RIVAGE CASINO enjoyed for visiting the nice info in this blog and great technology in this blog CASINO GOLDEN PALACE and I had really like it very much for providing the great technology in casino rules 555 this blog. This website is really grand casino only admired for this info in this blog. I am very much satisfied by the info in this blog. Thank you very much for providing the great technology in this blog. I was really like it.

  143. Avatar
    worlds online poker info over 2 years later:

    This is very worlds online poker info much happy for using the great technology in this website CASINO ONNET NOW that to using the great services in this blog. Thanks a lot for providing the great live casino info guide info is visible in this blog gamble reviews that to sharing the great info in this blog.

  144. Avatar
    christian louboutin over 2 years later:

    Good artical,I learn something!

  145. Avatar
    oilchangecouponsx.com over 2 years later:

    I work for a software company and testing is something that we do on a daily basis. I really liked a lot of the ideas that you stated in this post.

  146. Avatar
    coban over 2 years later:

    I am totally enjoyed with the nice feedback here. Some of the outstanding and speechless stuff you have posted here. I must say thanks. Awesome work!

  147. 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

  148. Avatar
    tv show over 2 years later:

    great stuff! this is surely a great site.

  149. Avatar
    first aid kits over 2 years later:

    This was a very interesting and fun website. I have really learned so much from this awesome website. This is really great. Thanks

  150. Avatar
    canada goose women over 2 years later:

    canada goose women www.canadagoose-coat.com When choosing a manufacturer new Canada Goose Jackets, initial concerning all, we ought to ensure that you are capable to choose on diverse style relating as a means to our size.

  151. Avatar
    canada goose men over 2 years later:

    canada goose men www.canadagoose-coat.com If weight females opt for the real jacket with only 1 specific thread or break, this can highlight their tips, ponder their whole system line, which tends to create them seem slim and fragile.

  152. Avatar
    power scooters over 2 years later:

    I feel delighted to read such a good post. The author has done a great job in sharing this great piece of news with us through this blog. Thanks. Keep up the good work

  153. Avatar
    Ravens Jerseys over 3 years later:

    good post. The author has done a great job in sharing this great piece of news with us through this blog. Thanks. Keep up the good work

  154. Avatar
    Microsoft Office 2010 over 3 years later:

    This article is GREAT it can be EXCELLENT JOB and what a great tool!

  155. Avatar
    USB Keylogger over 3 years later:

    This is just great. I have really enjoyed reading the stuff here. Thank you for sharing.

  156. Avatar
    iPad to Mac Transfer over 3 years later:

    Very useful tutorial for me and for all of the programmer and who like code on computer or Mac I think. Try to download this useful application to computer and use to. do Practice everytime you can. This application can manage all files on iPad without iTunes and more easily for you to backup all stuff. There is no other way to do a better design other than keep trying. So. why not try this method to improve the skill.

  157. Avatar
    Abercrombie &amp; Fitch over 3 years later:

    Thanks for giving me Knowledge about,In this article you have told about Brute Force SEO

  158. Avatar
    DRM removal software over 3 years later:

    Well. software testing is very important for everyone who want to get better program.

  159. Avatar
    davidsmith12139@yahoo.in over 3 years later:

    I is valuable share,we got good information regarding software develop management thanks for good article. 3D Rendering Services

  160. Avatar
    hardware keyloggers over 3 years later:

    It’s hard to find knowledgeable people on this topic, but you sound like you know what you’re talking about!

  161. Avatar
    lipozene over 3 years later:

    This is what I have been searching in many websites and I finally found it here. Amazing article.

  162. Avatar
    Massagem Tailandesa over 3 years later:

    Yea ! is putting all your eggs in one basket, and the curve of Rich Hickey personally. Thanks !

  163. Avatar
    Drain cleaning over 3 years later:

    Thank you for another great article. Where else could anyone get that kind of information in such a perfect way of writing? I have a presentation next week, and I am on a look out for such information

  164. Avatar
    http://www.lunettedesoleilrayban.net/ over 3 years later:

    Thank you for the article, I saw after the enlightened, my idea like you, just not good at expression

  165. Avatar
    Gafas Carrera over 3 years later:

    This is a very nice blog,I have seen this variety of post after a elongated moment. I value your endeavor for compiling such post.

  166. Avatar
    iphone 4 cases over 3 years later:

    I have seen this variety of post after a elongated moment. I value your endeavor for compiling such post.

  167. Avatar
    bladeless fans over 3 years later:

    Rich Hickey on Testing 166 good post103

  168. Avatar
    Joshua Warren over 3 years later:

    Such fantastic presentation allows readers to learn each and every fabulous information included to this blog.Impressed with this type of informative post.Joshua Warren

  169. Avatar
    louboutin sales over 3 years later:

    Rich Hickey on Testing 168 hoo,good article!!I like the post!139

  170. Avatar
    Comprar Gafas Ray Ban over 3 years later:

    I think this blog is really great. I’m glad that i found a place to get such good information. Keep up the good work!.

  171. Avatar
    www.justbeenpaidscam.net program over 3 years later:

    I was present in this q&a with rich hickey, it was very well handled and impressing. I love closure it is great thank you for it Happy holiday

  172. Avatar
    Injection mold over 3 years later:

    Intertech Machinery Inc. provides the most precise Plastic Injection Mold and Rubber Molds from Taiwan. With applying excellent unscrewing device in molds,

    Intertech is also very professional for making flip top Cap Molds in the world. Mold making is the core business of Intertech (Taiwan). With world level technology, Intertech enjoys a very good reputation for making Injection Mold and Plastic Molds for their worldwide customers.

  173. Avatar
    http://www.germanimportservices.com/ over 3 years later:

    Nice informative and educative article.It is most precious topic,I really impressed at your work.Thanks for valuable sharing.

  174. Avatar
    Austin Kitchen Remodeling over 3 years later:

    This is very informative information. Thanks!

  175. Avatar
    hermes birkin lizard skin over 3 years later:

    Moms also need to look their best whenever and wherever?

  176. Avatar
    Plastic Injection Mold over 3 years later:

    With more than 20 years of experience, Intertech provides an extensive integrated operational ability from design to production of molds 100% made in Taiwan. Additional to our own mold making factory, we also cooperate with our team vendors to form a very strong working force in Taiwan.

    For the overseas market, we work very closely with local representatives in order to take care of the technical communication and after-sales service to our customers. We also participate in the EUROMOLD & FAKUMA exhibitions and meet our customers every year in Europe. By concentrating on mold “niche markets”, we play a very useful mold maker role from the Far East whenever customers want to develop their new projects. We provide services from A to Z to our customers on a very economic cost and effect basis.

  177. Avatar
    Michael Kors Canada over 3 years later:

    a great number of sufferers possess a number of of it, and also how do you acquire the imformation in the most popular device of these? Have you got a bit of approach at heart,

Comments