<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-35609063.comments</id><updated>2010-12-22T11:34:47.258Z</updated><category term='bcs'/><category term='lean'/><category term='disruptive'/><category term='geotagging'/><category term='geocoding'/><category term='web2.0'/><category term='photos'/><category term='gps'/><title type='text'>what i still don't know</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.iancartwright.com/feeds/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/comments/default'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/comments/default?start-index=26&amp;max-results=25'/><author><name>Ian Cartwright</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>60</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-35609063.post-1866429320964827694</id><published>2010-12-22T11:34:47.258Z</published><updated>2010-12-22T11:34:47.258Z</updated><title type='text'>Hey Ian,

I really like the idea of Signal to Nois...</title><content type='html'>Hey Ian,&lt;br /&gt;&lt;br /&gt;I really like the idea of Signal to Noise ratio. I work on the Go team and have worked on Twist before that. In the past 4 years, I have not worked on a non-flaky functional test build. &lt;br /&gt;&lt;br /&gt;Its not a horrendously bad pragmatic decision to follow this idea and live with the noise, as long as we are diligent about not calling bugs &amp;quot;noise&amp;quot; - which we inadvertently do sometimes as people stop checking functional test results on every checkin.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/2122441057441382845/comments/default/1866429320964827694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/2122441057441382845/comments/default/1866429320964827694'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2010/12/signal-to-noise-ratio-in-software.html?showComment=1293017687258#c1866429320964827694' title=''/><author><name>Pavan</name><uri>http://www.blogger.com/profile/18414319458789551235</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2010/12/signal-to-noise-ratio-in-software.html' ref='tag:blogger.com,1999:blog-35609063.post-2122441057441382845' source='http://www.blogger.com/feeds/35609063/posts/default/2122441057441382845' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-126185336'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='11:34 AM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-2955472551654394573</id><published>2010-12-15T16:19:48.275Z</published><updated>2010-12-15T16:19:48.275Z</updated><title type='text'>Apologies for not finishing sooner, been a very bu...</title><content type='html'>Apologies for not finishing sooner, been a very busy year!&lt;br /&gt;&lt;br /&gt;I am in the process of open sourcing an example windows forms app I&amp;#39;ve used in a couple of talks on Retlang, so look out for a post on that soon.&lt;br /&gt;&lt;br /&gt;I&amp;#39;ll also try and follow up on the final two themes soon!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/8477129913498842960/comments/default/2955472551654394573'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/8477129913498842960/comments/default/2955472551654394573'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2010/01/using-retlang-for-multi-threaded_5958.html?showComment=1292429988275#c2955472551654394573' title=''/><author><name>Ian Cartwright</name><uri>http://www.blogger.com/profile/06352508287916298516</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2010/01/using-retlang-for-multi-threaded_5958.html' ref='tag:blogger.com,1999:blog-35609063.post-8477129913498842960' source='http://www.blogger.com/feeds/35609063/posts/default/8477129913498842960' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-707064934'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='4:19 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-3829589503755318532</id><published>2010-11-17T21:59:05.562Z</published><updated>2010-11-17T21:59:05.562Z</updated><title type='text'>Very nice post. Are you still planning to finish t...</title><content type='html'>Very nice post. Are you still planning to finish the series up? I am working on implementing Retlang in a winforms application now.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/8477129913498842960/comments/default/3829589503755318532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/8477129913498842960/comments/default/3829589503755318532'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2010/01/using-retlang-for-multi-threaded_5958.html?showComment=1290031145562#c3829589503755318532' title=''/><author><name>Dustin</name><uri>http://www.blogger.com/profile/05991555944913246010</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2010/01/using-retlang-for-multi-threaded_5958.html' ref='tag:blogger.com,1999:blog-35609063.post-8477129913498842960' source='http://www.blogger.com/feeds/35609063/posts/default/8477129913498842960' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1830114951'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='9:59 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-1421754696263833517</id><published>2010-03-22T17:12:36.855Z</published><updated>2010-03-22T17:12:36.855Z</updated><title type='text'>It&amp;#39;s actually AutomationProperties.AutomationI...</title><content type='html'>It&amp;#39;s actually AutomationProperties.AutomationId&lt;br /&gt;&lt;br /&gt;not Name</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/6459247927404721087/comments/default/1421754696263833517'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/6459247927404721087/comments/default/1421754696263833517'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/02/acceptance-testing-silverlight-with.html?showComment=1269277956855#c1421754696263833517' title=''/><author><name>GarethD</name><uri>http://www.blogger.com/profile/13672068024019262167</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/02/acceptance-testing-silverlight-with.html' ref='tag:blogger.com,1999:blog-35609063.post-6459247927404721087' source='http://www.blogger.com/feeds/35609063/posts/default/6459247927404721087' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-28446399'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='5:12 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-5817638976459249428</id><published>2010-02-10T14:45:48.068Z</published><updated>2010-02-10T14:45:48.068Z</updated><title type='text'>Really liked your post. Can&amp;#39;t wait to see the ...</title><content type='html'>Really liked your post. Can&amp;#39;t wait to see the next two. There is so little information and documentation about Retlang out there. This really helped!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/8477129913498842960/comments/default/5817638976459249428'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/8477129913498842960/comments/default/5817638976459249428'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2010/01/using-retlang-for-multi-threaded_5958.html?showComment=1265813148068#c5817638976459249428' title=''/><author><name>Scott D.</name><uri>http://www.blogger.com/profile/12352921435510736165</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2010/01/using-retlang-for-multi-threaded_5958.html' ref='tag:blogger.com,1999:blog-35609063.post-8477129913498842960' source='http://www.blogger.com/feeds/35609063/posts/default/8477129913498842960' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1232935220'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='2:45 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-4333076023837850051</id><published>2009-11-25T15:02:46.135Z</published><updated>2009-11-25T15:02:46.135Z</updated><title type='text'>I guess what I was trying to say is that, as with ...</title><content type='html'>I guess what I was trying to say is that, as with most things in life, it depends on the situation. &lt;br /&gt;&lt;br /&gt;When promoting code to production I feel having some kind of debugging mechanism ready to troubleshoot any issues caused by the production environment is key to rapid resolution.&lt;br /&gt;&lt;br /&gt;Once in the production environment, and from then on, proper and useful logging is the way to go...&lt;br /&gt;&lt;br /&gt;And as a previous post stated, logging (just like security) should be integrated into the code as it is being written, not treated as an afterthought. We use a library for logging that gets reused each time...in theory at least.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/4333076023837850051'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/4333076023837850051'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/11/ban-debugger.html?showComment=1259161366135#c4333076023837850051' title=''/><author><name>JimWi</name><uri>http://www.blogger.com/profile/10243720783300200352</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/11/ban-debugger.html' ref='tag:blogger.com,1999:blog-35609063.post-5907208074939323619' source='http://www.blogger.com/feeds/35609063/posts/default/5907208074939323619' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1268662528'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='3:02 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-8114357599055533937</id><published>2009-11-25T13:27:54.706Z</published><updated>2009-11-25T13:27:54.706Z</updated><title type='text'>Someone said it more succinctly in 1979

&amp;quot;The...</title><content type='html'>Someone said it more succinctly in 1979&lt;br /&gt;&lt;br /&gt;&amp;quot;The most effective debugging tool is still careful thought, coupled with judiciously placed print statements.&amp;quot; -- Brian Kernighan&lt;br /&gt;&lt;br /&gt;and followed it up with &lt;br /&gt;&lt;br /&gt;&amp;quot;Everyone knows that debugging is twice as hard as writing a program in the first place. So if you&amp;#39;re as clever as you can be when you write it, how will you ever debug it?&amp;quot;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/8114357599055533937'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/8114357599055533937'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/11/ban-debugger.html?showComment=1259155674706#c8114357599055533937' title=''/><author><name>Maht</name><uri>http://www.blogger.com/profile/01863908675256558774</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://www.proweb.co.uk/~matt/greenfly.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/11/ban-debugger.html' ref='tag:blogger.com,1999:blog-35609063.post-5907208074939323619' source='http://www.blogger.com/feeds/35609063/posts/default/5907208074939323619' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-644419340'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='1:27 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-1805104430979518041</id><published>2009-11-25T01:39:38.538Z</published><updated>2009-11-25T01:39:38.538Z</updated><title type='text'>you cannot debug most real production apps.  the p...</title><content type='html'>you cannot debug most real production apps.  the performance hit is way to much.  &lt;br /&gt;&lt;br /&gt;i think he is suggesting that requiring that the logs be read will require them to design the log output just as they would any other part of the app.  this is real functionality that has a real role/user that requires it.&lt;br /&gt;&lt;br /&gt;how about a user story:&lt;br /&gt;&lt;br /&gt;In order to be able quickly investigate and resolve user issues&lt;br /&gt;As a customer support specialists&lt;br /&gt;I need a log that will indicate what was happening, when it occurred and where exceptions occurred.&lt;br /&gt;&lt;br /&gt;maybe you need this for every feature you are adding.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/1805104430979518041'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/1805104430979518041'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/11/ban-debugger.html?showComment=1259113178538#c1805104430979518041' title=''/><author><name>Wes Williams</name><uri>http://www.blogger.com/profile/13876446130614977799</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='31' height='14' src='http://3.bp.blogspot.com/_9dn1MuVR6Ho/Sj4n2LEKMCI/AAAAAAAAC2A/sLMcaGSJdF4/s400/us.JPG'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/11/ban-debugger.html' ref='tag:blogger.com,1999:blog-35609063.post-5907208074939323619' source='http://www.blogger.com/feeds/35609063/posts/default/5907208074939323619' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-462571926'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='1:39 AM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-1009892282605773345</id><published>2009-11-24T22:18:38.808Z</published><updated>2009-11-24T22:18:38.808Z</updated><title type='text'>We built quite elaborate logging system for our ga...</title><content type='html'>We built quite elaborate logging system for our game libraries. &lt;br /&gt;&lt;br /&gt;It has really started to pay off and my usage of debugger has dramatically decreased. With debug traces, we can see the context of the problem, which is critical for reasoning about the execution in complex problem cases. &lt;br /&gt;&lt;br /&gt;Building a good logging/tracing system is not a trivial task. There are a lot of aspects and design issues you need to consider: flexible tracing syntax, conditional tracing &amp;amp; conditional compilation of tracing for performance reasons, pretty printing, callstacks, robustly sending traces to server, etc. Different projects have different tracing needs, but I still find it odd that there isn&amp;#39;t more quality open source qtracing libraries in common usage.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/1009892282605773345'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/1009892282605773345'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/11/ban-debugger.html?showComment=1259101118808#c1009892282605773345' title=''/><author><name>Teemu</name><uri>http://www.blogger.com/profile/06799795487288094534</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='http://3.bp.blogspot.com/_M3Y-FeGIon4/SbuHT53ST9I/AAAAAAAABsk/21ebKmzwerw/S220/teemu_red_120x120.png'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/11/ban-debugger.html' ref='tag:blogger.com,1999:blog-35609063.post-5907208074939323619' source='http://www.blogger.com/feeds/35609063/posts/default/5907208074939323619' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-907112986'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='10:18 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-6866561543400318418</id><published>2009-11-24T20:27:52.197Z</published><updated>2009-11-24T20:27:52.197Z</updated><title type='text'>Banning the debugger is like cutting your legs off...</title><content type='html'>Banning the debugger is like cutting your legs off. Doing so just before going live is even worse, because your developers are, at this point, used to their debugger; if you have to force them to use logfiles, you&amp;#39;re probably without an efficient debugging method just before due day. I would recommend against it.&lt;br /&gt;&lt;br /&gt;Next point: Too verbose a logfile is worse than useless, because it hides vital information in tons of tons of junk (if it really is in there). Developers tend to love stacktraces in logfiles, which is fine for debugging purposes, but useless for admins, how have to read logfiles of many different applications. As a rule of thumb, anything with a stacktrace attached is routed as bug back to development.&lt;br /&gt;&lt;br /&gt;So I suggest to have an eye on your logfiles early in development. Make sure they are readable, not only by developers (because most logfiles are not read by developers), and completey free of junk. Ask one of your admin staff if he likes your logfiles and make sure he can find configuration problems himself. If he complains, listen. (Mind you, developers reading logfiles to find a wrong line in a configuration file is a brilliant way to throw away real money.)&lt;br /&gt;&lt;br /&gt;Finally, log any exception which does not imply a configuration error with full stacktrace. No need to be shy here, a bug is a bug. But hey, that&amp;#39;s what all people do, right?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/6866561543400318418'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/6866561543400318418'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/11/ban-debugger.html?showComment=1259094472197#c6866561543400318418' title=''/><author><name>ketchup</name><uri>http://www.blogger.com/profile/07064508919149090930</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/11/ban-debugger.html' ref='tag:blogger.com,1999:blog-35609063.post-5907208074939323619' source='http://www.blogger.com/feeds/35609063/posts/default/5907208074939323619' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-765210045'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='8:27 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-1507955658913843642</id><published>2009-11-24T20:10:32.485Z</published><updated>2009-11-24T20:10:32.485Z</updated><title type='text'>Thanks for recommending this -- just what I needed...</title><content type='html'>Thanks for recommending this -- just what I needed!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/3902638817129835602/comments/default/1507955658913843642'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/3902638817129835602/comments/default/1507955658913843642'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/09/great-os-x-app-for-those-who-change.html?showComment=1259093432485#c1507955658913843642' title=''/><author><name>publius</name><uri>http://www.blogger.com/profile/16441884094087139473</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/09/great-os-x-app-for-those-who-change.html' ref='tag:blogger.com,1999:blog-35609063.post-3902638817129835602' source='http://www.blogger.com/feeds/35609063/posts/default/3902638817129835602' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-2056864678'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='8:10 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-7215328285989844991</id><published>2009-11-24T19:45:34.695Z</published><updated>2009-11-24T19:45:34.695Z</updated><title type='text'>Good article. I sort out corporate computing messe...</title><content type='html'>Good article. I sort out corporate computing messes of various scales. A debugger is cool to find out where something has been and whether it goes where you think it went. Sometimes -- often early in a gig -- it&amp;#39;s the only way. But if you aren&amp;#39;t developing on your logs, then you aren&amp;#39;t developing maintainable software. And if you aren&amp;#39;t developing maintainable software, then you&amp;#39;ve got a lot to learn.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/7215328285989844991'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/7215328285989844991'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/11/ban-debugger.html?showComment=1259091934695#c7215328285989844991' title=''/><author><name>auxbuss</name><uri>http://www.blogger.com/profile/09442399553336584669</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/11/ban-debugger.html' ref='tag:blogger.com,1999:blog-35609063.post-5907208074939323619' source='http://www.blogger.com/feeds/35609063/posts/default/5907208074939323619' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-569499783'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='7:45 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-6991241144387757166</id><published>2009-11-24T17:43:34.471Z</published><updated>2009-11-24T17:43:34.471Z</updated><title type='text'>I think if any two programmers used the same loggi...</title><content type='html'>I think if any two programmers used the same logging format this would be great...and of course there are the devs who have a binary approach to logging and you either get nothing or, quite literally, a line of log for every line of code.&lt;br /&gt;&lt;br /&gt;Another option of course it to provide the support function with a very &amp;#39;thin&amp;#39; debugger app so they can view the code and locate the problem. Why this is good, in my opinion, is because variable/register values etc can be directly manipulated in the debugger to recreate the failure scenario. This depends on the abilities of the support staff I guess...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/6991241144387757166'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/5907208074939323619/comments/default/6991241144387757166'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/11/ban-debugger.html?showComment=1259084614471#c6991241144387757166' title=''/><author><name>JimWi</name><uri>http://www.blogger.com/profile/10243720783300200352</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/11/ban-debugger.html' ref='tag:blogger.com,1999:blog-35609063.post-5907208074939323619' source='http://www.blogger.com/feeds/35609063/posts/default/5907208074939323619' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1268662528'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='5:43 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-6034234778397540803</id><published>2009-04-27T04:20:00.000+01:00</published><updated>2009-04-27T04:20:00.000+01:00</updated><title type='text'>I just had a great Monday morning when I saw this ...</title><content type='html'>I just had a great Monday morning when I saw this post... I remind people all the time how important tests are.. but sometimes I feel like some devs don't value tests as much as what they call "the production code". &lt;br /&gt;One big problem is "design". We should design the tests as well... Refactor.. create abstractions, remove duplications whenever possible without removing the ability to read the test.&lt;br /&gt;Perfect, congratulations Ian, &lt;br /&gt;very good post.. &lt;br /&gt;I'll refer to it whenever I have one of these discussions when people argue that "tests will not go to production..."</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/6034234778397540803'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/6034234778397540803'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html?showComment=1240802400000#c6034234778397540803' title=''/><author><name>Fabio Pereira</name><uri>http://www.blogger.com/profile/05883478467597535825</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html' ref='tag:blogger.com,1999:blog-35609063.post-7883773794613159687' source='http://www.blogger.com/feeds/35609063/posts/default/7883773794613159687' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-53442789'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='4:20 AM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-1346892709759307726</id><published>2009-04-25T16:12:00.000+01:00</published><updated>2009-04-25T16:12:00.000+01:00</updated><title type='text'>An interesting analysis.  Btw, that's six items, n...</title><content type='html'>An interesting analysis.  Btw, that's six items, not five!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/2636555933831729493/comments/default/1346892709759307726'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/2636555933831729493/comments/default/1346892709759307726'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/01/five-kinds-of-technical-debt.html?showComment=1240672320000#c1346892709759307726' title=''/><author><name>Dave</name><uri>http://www.blogger.com/profile/09036111908884849266</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/01/five-kinds-of-technical-debt.html' ref='tag:blogger.com,1999:blog-35609063.post-2636555933831729493' source='http://www.blogger.com/feeds/35609063/posts/default/2636555933831729493' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-177555707'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='4:12 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-5082839124025374951</id><published>2009-04-23T10:23:00.000+01:00</published><updated>2009-04-23T10:23:00.000+01:00</updated><title type='text'>I think the big objection I hear about writing tes...</title><content type='html'>I think the big objection I hear about writing tests - particularly unit tests - is that as the code evolves then you have to re-write all the tests and so you are wasting time with all that test maintenance. &lt;br /&gt;&lt;br /&gt;I say that if you need to change tests all the time then you probably aren't doing very good OO development. Classes that are well encapsulated with good interfaces that consume other interfaces via IoC will be flexible and composable and more than likely they will also be easily testable.&lt;br /&gt;&lt;br /&gt;I also wrote this in a similar vein:&lt;br /&gt;&lt;br /&gt;http://nomorehacks.wordpress.com/2008/11/05/when-is-a-unit-test-not-a-unit-test/</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/5082839124025374951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/5082839124025374951'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html?showComment=1240478580000#c5082839124025374951' title=''/><author><name>sam.m.gardiner</name><uri>http://www.blogger.com/profile/07219075313897914920</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html' ref='tag:blogger.com,1999:blog-35609063.post-7883773794613159687' source='http://www.blogger.com/feeds/35609063/posts/default/7883773794613159687' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-530593521'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='10:23 AM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-8917535003687873027</id><published>2009-04-23T09:58:00.000+01:00</published><updated>2009-04-23T09:58:00.000+01:00</updated><title type='text'>Very good post. When I first encountered TDD, this...</title><content type='html'>Very good post. When I first encountered TDD, this was an epiphany for me. I began writing lots of tests, which helped tremendously - but I did not give as much thought to the organization of my tests suite as I did to the project itself, and over time the tests themselves started to become painful to work with, for pretty much the reasons you listed. The morale of the story for me is the same as for "regular" code: write it as if it's going to grow, and as if you will have to look at it later when you have forgotten everything about the project...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/8917535003687873027'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/8917535003687873027'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html?showComment=1240477080000#c8917535003687873027' title=''/><author><name>Mathias</name><uri>http://www.blogger.com/profile/02903237219994919458</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html' ref='tag:blogger.com,1999:blog-35609063.post-7883773794613159687' source='http://www.blogger.com/feeds/35609063/posts/default/7883773794613159687' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-868539620'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='9:58 AM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-4055714749633005343</id><published>2009-04-22T20:59:00.000+01:00</published><updated>2009-04-22T20:59:00.000+01:00</updated><title type='text'>Really refreshing to read this. I agree with every...</title><content type='html'>Really refreshing to read this. I agree with everything said in this post.Test Code should be treated as production code. &lt;br /&gt;&lt;br /&gt;IMHO this is a slippery slope because&lt;br /&gt;&lt;br /&gt;* When a development team is behind on schedule, I have seen devs start cutting corners in test code. That is when the Copy Paste syndrome which you highlight often comes into play. When I look at something like that these days, I thank my stars that atleast there is a test.&lt;br /&gt;&lt;br /&gt;* If TDD'ing an area of code has become overly complex because of bad usage of mocks etc.. this often does not figure out in the Technical Debt list of a team.&lt;br /&gt;&lt;br /&gt;* Test code refactoring also never gets considered when devs think of estimating a story, especially when dev team is too focused on getting the story done&lt;br /&gt;&lt;br /&gt;In an ideal world, constant refactoring of test code along with production code should happen as a part of each story, and as we know the system better each day</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/4055714749633005343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/4055714749633005343'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html?showComment=1240430340000#c4055714749633005343' title=''/><author><name>Anand Vishwanath</name><uri>http://www.blogger.com/profile/04391284554540881059</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='21' height='32' src='http://3.bp.blogspot.com/_k5P0omIkPzI/SbXFzYsmo-I/AAAAAAAAAI0/2-Yk4DNrCWA/S220/n526987425_5693.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html' ref='tag:blogger.com,1999:blog-35609063.post-7883773794613159687' source='http://www.blogger.com/feeds/35609063/posts/default/7883773794613159687' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1727134046'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='8:59 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-3508059905047805494</id><published>2009-04-22T20:14:00.000+01:00</published><updated>2009-04-22T20:14:00.000+01:00</updated><title type='text'>Excellent advice. I've already referred people to ...</title><content type='html'>Excellent advice. I've already referred people to it.&lt;br /&gt;&lt;br /&gt;Because code "talks to the developer", and test code is code, then the intention of the test should be clear.&lt;br /&gt;&lt;br /&gt;If we're using tests as executable specifications of system behaviour, then we should be very deliberate about how those specifications are expressed.&lt;br /&gt;&lt;br /&gt;Names are very important, as is the abstraction of infrastructure (like SQL, HTML, even web testing tool API) as you describe.&lt;br /&gt;&lt;br /&gt;The advice here will help high-performance teams have purposeful, easy-to-change tests that allow rapid turnaround of business requirements.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/3508059905047805494'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/7883773794613159687/comments/default/3508059905047805494'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html?showComment=1240427640000#c3508059905047805494' title=''/><author><name>Joshua Graham</name><uri>http://www.blogger.com/profile/13148399856460503228</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://static.flickr.com/24/63795709_6415a7c239.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/04/test-code-is-just-code.html' ref='tag:blogger.com,1999:blog-35609063.post-7883773794613159687' source='http://www.blogger.com/feeds/35609063/posts/default/7883773794613159687' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-232719195'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='8:14 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-1417146844896638951</id><published>2009-02-26T04:01:00.000Z</published><updated>2009-02-26T04:01:00.000Z</updated><title type='text'>Good use of White. But for cross browser stuff or ...</title><content type='html'>Good use of White. But for cross browser stuff or a simpler way of doing this, we have already done silverlight extension for Selenium. :)&lt;BR/&gt;&lt;BR/&gt;Check this out http://code.google.com/p/silverlight-selenium/</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/6459247927404721087/comments/default/1417146844896638951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/6459247927404721087/comments/default/1417146844896638951'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/02/acceptance-testing-silverlight-with.html?showComment=1235620860000#c1417146844896638951' title=''/><author><name>Sai Venkatakrishnan</name><uri>http://www.blogger.com/profile/14442693638745288134</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='27' src='http://1.bp.blogspot.com/_fSsd65KlPiM/SYAZKHZO_3I/AAAAAAAAALU/Wspf_SefPkM/S220/Sun-Wukong-Monkey-King.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/02/acceptance-testing-silverlight-with.html' ref='tag:blogger.com,1999:blog-35609063.post-6459247927404721087' source='http://www.blogger.com/feeds/35609063/posts/default/6459247927404721087' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1109423285'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='4:01 AM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-5404821315793007303</id><published>2009-02-05T09:56:00.000Z</published><updated>2009-02-05T09:56:00.000Z</updated><title type='text'>Ian it was good to meet you last night.  Please dr...</title><content type='html'>Ian it was good to meet you last night.  Please drop me a note about geek night and rabbitmq.  Cheers, alexis</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/9017481066037400871/comments/default/5404821315793007303'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/9017481066037400871/comments/default/5404821315793007303'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2009/02/problems-with-configure-and-make-on-osx.html?showComment=1233827760000#c5404821315793007303' title=''/><author><name>alexis</name><uri>http://www.blogger.com/profile/12281522589184676541</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2009/02/problems-with-configure-and-make-on-osx.html' ref='tag:blogger.com,1999:blog-35609063.post-9017481066037400871' source='http://www.blogger.com/feeds/35609063/posts/default/9017481066037400871' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1396076678'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='9:56 AM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-645824778462502515</id><published>2009-01-11T03:29:00.000Z</published><updated>2009-01-11T03:29:00.000Z</updated><title type='text'>Thanks for making an interesting post, but I disag...</title><content type='html'>Thanks for making an interesting post, but I disagree. Specifically, I disagree that not serializing your domain objects reduces the frequency of conflicts or makes conflict resolution easier. If user A fetches version 1 of an order and tries to change its shipping date and user B, who has also fetched version 1 of an order, also tries to change its shipping date then there is a conflict, whether they both sent and received "documents" to the server or serialized domain objects. Two "documents" that say the shipping date has changed are no different than 2 domain objects with different shipping dates (at least with respect to conflict resolution). Your solution to conflicts was&lt;BR/&gt;"...requests are processed one at a time, there is no complicated conflict resolution". If you've managed somehow to enforce that only one user is allowed to modify any given record at a time, then that is an unusual and convenient peculiarity of your system but has nothing to do whether data is exchanged with the client as serialized domain objects or "document" objects. Even with serialized domain objects you could still presumably enforce this arbitrary rule. Since you mention your concern for "large projects" I can't fathom how you're able to assume that requests are "handled one at a time". For all of the rest of us who are building scalable multi-user applications, we must deal with dozens, hundreds, or thousands of users potentially making simultaneous changes to the same pieces of data so we have to implement a strategy for concurrency, regardless of whether we send the client serialized domain objects or "document" objects or DTO's or anything else.&lt;BR/&gt;&lt;BR/&gt;I don't see any relationship between the formatting of data exchanged and problems with concurrency or conflict resolution.&lt;BR/&gt;&lt;BR/&gt;I also disagree that "document" objects or any other kinds of DTO make it easier to handle changes in requirements. With everything cleanly encapsulated within the same domain objects, fewer classes need to change when requirements change. Under your approach, if my business's concept of what an Order is changed, then I would have to change not only Order and maybe some UI, but also all of the "document" and other DTO objects. This sounds like less coherence, not more.&lt;BR/&gt;&lt;BR/&gt;Thanks again for posting, though. It's a good discussion to have.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/1376518251960148440/comments/default/645824778462502515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/1376518251960148440/comments/default/645824778462502515'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2006/12/dont-make-your-domain-objects.html?showComment=1231644540000#c645824778462502515' title=''/><author><name>Clay</name><uri>http://www.blogger.com/profile/00922765290168063017</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2006/12/dont-make-your-domain-objects.html' ref='tag:blogger.com,1999:blog-35609063.post-1376518251960148440' source='http://www.blogger.com/feeds/35609063/posts/default/1376518251960148440' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-146882390'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='3:29 AM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-555220615865161351</id><published>2008-08-11T17:02:00.000+01:00</published><updated>2008-08-11T17:02:00.000+01:00</updated><title type='text'>Totally agree with your points.  I also think the ...</title><content type='html'>Totally agree with your points.  I also think the reason why unit tests gets deleted is because developers aren't perhaps aware that there's an option to mark each unit test as "ignored" within the test runner.  That way, if a unit test is causing problems (i.e., needs to be refactored, the object under test changed drastically since the test was written, etc.), the test runner will simply ignore it.  Then, have a process/review meeting where each ignored tests are challenged (i.e., are they still relevant? Why were they ignored?  etc.)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/6512171817231474543/comments/default/555220615865161351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/6512171817231474543/comments/default/555220615865161351'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2008/08/dont-delete-unit-tests-even-if-you-have.html?showComment=1218470520000#c555220615865161351' title=''/><author><name>Brian Di Croce</name><uri>http://www.blogger.com/profile/00529353279952143149</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2008/08/dont-delete-unit-tests-even-if-you-have.html' ref='tag:blogger.com,1999:blog-35609063.post-6512171817231474543' source='http://www.blogger.com/feeds/35609063/posts/default/6512171817231474543' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-309974823'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='5:02 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-4542597574438554272</id><published>2008-08-08T23:45:00.000+01:00</published><updated>2008-08-08T23:45:00.000+01:00</updated><title type='text'>totally agree.  I have still to hear a good reason...</title><content type='html'>totally agree.  I have still to hear a good reason to delete a unit test, other than that the code that is being test has been delete as well!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/6512171817231474543/comments/default/4542597574438554272'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/6512171817231474543/comments/default/4542597574438554272'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2008/08/dont-delete-unit-tests-even-if-you-have.html?showComment=1218235500000#c4542597574438554272' title=''/><author><name>Domingos Neto</name><uri>http://www.blogger.com/profile/16748499695622931125</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2008/08/dont-delete-unit-tests-even-if-you-have.html' ref='tag:blogger.com,1999:blog-35609063.post-6512171817231474543' source='http://www.blogger.com/feeds/35609063/posts/default/6512171817231474543' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-168542429'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='11:45 PM'/></entry><entry><id>tag:blogger.com,1999:blog-35609063.post-8861253993067205359</id><published>2008-07-25T16:03:00.000+01:00</published><updated>2008-07-25T16:03:00.000+01:00</updated><title type='text'>Ian,&lt;br&gt;&lt;br&gt;Intersting article, thank you.&lt;br&gt;&lt;br&gt;...</title><content type='html'>Ian,&lt;BR/&gt;&lt;BR/&gt;Intersting article, thank you.&lt;BR/&gt;&lt;BR/&gt;My hunch is that the multicore programming paradigm that'll prevail will be one which allows an evolutionary approach.  Adopting a new language feels like a huge amount of "activation energy" to overcome.&lt;BR/&gt;&lt;BR/&gt;I'd argue that what's needed is a sufficiently smooth path to multicore for all the legacy apps out there.  Sure, folks will develop new apps, but for an organization that has a 5 million line C++ app, built over 10 years, it is a competitive imperative to move THAT to multicore, and soon.&lt;BR/&gt;&lt;BR/&gt;For what it's worth, one resource we've recently created at Cilk Arts is an e-Book, "How to Survive the Multicore Software Revolution (Or At Least Survive the Hype)"&lt;BR/&gt;&lt;BR/&gt;http://www.cilk.com/multicore-e-book/ &lt;BR/&gt;&lt;BR/&gt;Cheers,&lt;BR/&gt;ilya</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/4337563737218256417/comments/default/8861253993067205359'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/35609063/4337563737218256417/comments/default/8861253993067205359'/><link rel='alternate' type='text/html' href='http://blog.iancartwright.com/2008/07/patterns-for-concurrency-over.html?showComment=1216998180000#c8861253993067205359' title=''/><author><name>ilya</name><uri>http://www.blogger.com/profile/03096365954358832378</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.iancartwright.com/2008/07/patterns-for-concurrency-over.html' ref='tag:blogger.com,1999:blog-35609063.post-4337563737218256417' source='http://www.blogger.com/feeds/35609063/posts/default/4337563737218256417' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1936285205'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.displayTime' value='4:03 PM'/></entry></feed>
