<?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/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-1690638653163761520</id><updated>2024-09-22T00:07:32.213+01:00</updated><category term="Lean"/><category term="SOLID"/><category term="Web Design"/><category term="Craftsmanship"/><category term="HTTP"/><category term="SqlServer"/><category term="Testing"/><category term="aspnetmvc"/><title type='text'>Knowledge Nuggets</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default?redirect=false'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>19</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-8718148377355316223</id><published>2009-06-03T08:15:00.002+01:00</published><updated>2009-06-03T08:17:52.847+01:00</updated><title type='text'>What is a mock object?</title><content type='html'>In object oriented programming mock objects are simulated objects that mimic the behaviour of real objects in a controlled way.  Similar to a crash test dummy in car design.&lt;br /&gt;You might use a mock object when a real object is impracticle or impossible to incorporate in a unit test or to test behaviour which is new.&lt;br /&gt;Mock objects are used in test driven development.</content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/8718148377355316223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/06/what-is-mock-object.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/8718148377355316223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/8718148377355316223'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/06/what-is-mock-object.html' title='What is a mock object?'/><author><name>James Enock</name><uri>http://www.blogger.com/profile/08210903885628012539</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-6843689143143186163</id><published>2009-06-01T11:11:00.003+01:00</published><updated>2009-06-01T11:14:10.227+01:00</updated><title type='text'>Show what you know and what you don&#39;t know</title><content type='html'>Be generous in sharing your knowledge (without inflicting help).  But also be willing to hear other peoples&#39; ideas, build on them, and help others shine.  Admit when you don&#39;t know the answers; there&#39;s nothing worse than a know-it-all who is wrong.  Asking for help helps others see you as a real person, and people generally like to behelpful.&lt;br /&gt;&lt;br /&gt;Advice from Esther Derby&#39;s &quot;Insights you can use&quot; blog&lt;br /&gt;Article: 5 ways that team members build trust with each other (April 02 2009)</content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/6843689143143186163/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/06/show-what-you-know-and-what-you-dont.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/6843689143143186163'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/6843689143143186163'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/06/show-what-you-know-and-what-you-dont.html' title='Show what you know and what you don&#39;t know'/><author><name>James Enock</name><uri>http://www.blogger.com/profile/08210903885628012539</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-7484360124438703057</id><published>2009-05-18T08:46:00.003+01:00</published><updated>2009-05-18T08:49:12.022+01:00</updated><title type='text'>Why keeping a backlog on index cards is a good idea...</title><content type='html'>Portability - easy to pick up the cards and take them wherever.&lt;br /&gt;&lt;br /&gt;Easy to prioritise - put them on a table and shuffle them.&lt;br /&gt;&lt;br /&gt;Focused - there&#39;s not much you can write on an index card so only the most important information will be written on them.&lt;br /&gt;&lt;br /&gt;Low maintenance - all you need is a pencil and a pile of index cards, and if something changes tear up the current card and write a new one.</content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/7484360124438703057/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/05/why-keeping-backlog-on-index-cards-is.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/7484360124438703057'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/7484360124438703057'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/05/why-keeping-backlog-on-index-cards-is.html' title='Why keeping a backlog on index cards is a good idea...'/><author><name>James Enock</name><uri>http://www.blogger.com/profile/08210903885628012539</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-8420758169528509873</id><published>2009-05-15T08:22:00.002+01:00</published><updated>2009-05-15T08:25:18.031+01:00</updated><title type='text'>What is a test stub?</title><content type='html'>A test stub replaces a real component on which part of the system under test (SUT) relies.&lt;br /&gt;&lt;br /&gt;A stub is used to inject the SUT with indirect inputs allowing the test to execute different paths through the SUT.&lt;br /&gt;&lt;br /&gt;There are two types of test stub - a responder and a saboteur.  A responder injects valid values and a saboteur injects errors or exceptions.</content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/8420758169528509873/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/05/what-is-test-stub.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/8420758169528509873'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/8420758169528509873'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/05/what-is-test-stub.html' title='What is a test stub?'/><author><name>James Enock</name><uri>http://www.blogger.com/profile/08210903885628012539</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-4402378787302829363</id><published>2009-02-12T15:40:00.001+00:00</published><updated>2009-02-12T15:40:12.036+00:00</updated><title type='text'>Burnup or Burndown</title><content type='html'>&lt;p&gt;A &lt;em&gt;burndown&lt;/em&gt; chart shows how much work is left to do. For example, a release burndown will show the amount of story points left on the backlog for a particular release, or a sprint burndown will show the amount of ideal (golden) hours left for the current sprint.&lt;/p&gt;  &lt;p&gt;A &lt;em&gt;burnup&lt;/em&gt; chart shows how many running, tested, features have been done and is thus more value-focussed.&lt;/p&gt;  &lt;h4&gt;What is the difference?&lt;/h4&gt;  &lt;p&gt;A burndown chart tracks net progress. It doesn’t easily depict changes in scope. For example, if we have 100 story points to burndown and we discover 20 missed points whilst completing 50 then we still have 70 left to do.&lt;/p&gt;  &lt;p&gt;A burnup chart tracks gross progress.&lt;/p&gt;  &lt;h4&gt;When would you use each chart and why?&lt;/h4&gt;  &lt;p&gt;In Scrum, a burndown chart is best suited to depicting sprint progress because scope is not permitted change during a sprint. A burndown chart also gives the team a sense of an end goal (the ‘getting to zero’ feeling). On the other hand, a burn-up chart is best suited to depicting overall product progress because scope is likely to change throughout the lifetime of the project. Burnup will easily communicate these changes in scope because a change in the top line clearly indicates this change.&lt;/p&gt;  &lt;h4&gt;So why might you use a burnup chart for a sprint or iteration?&lt;/h4&gt;  &lt;p&gt;A burnup chart being used for tracking a sprint or iteration is generally a sign that a team is unable to work out its’ velocity. This can happen for a number of reasons, most notably:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Poor estimation – tasks are not broken down into small enough pieces (rushed planning meeting)&lt;/li&gt;    &lt;li&gt;Unclear stories (information provided is often unsuitable)&lt;/li&gt;    &lt;li&gt;Poor acceptance criteria (not done before or during sprint planning)&lt;/li&gt;    &lt;li&gt;Missed tasks, such as reporting&lt;/li&gt;    &lt;li&gt;Working on items not in the sprint (such as items slipped in undercover, bugs or management tasks)&lt;/li&gt; &lt;/ul&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/4402378787302829363/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/burnup-or-burndown.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/4402378787302829363'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/4402378787302829363'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/burnup-or-burndown.html' title='Burnup or Burndown'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-869041835810859419</id><published>2009-02-11T09:58:00.001+00:00</published><updated>2009-02-11T09:58:15.827+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Web Design"/><title type='text'>GIF</title><content type='html'>&lt;p&gt;GIF (Graphics Interchange Format)&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Uses a palette of 256 colours&lt;/li&gt;    &lt;li&gt;Handles solid colours well&lt;/li&gt;    &lt;li&gt;Handles sharp edged line art well&lt;/li&gt;    &lt;li&gt;Doesn’t handle gradients well (can be handled with dithering and blur)&lt;/li&gt;    &lt;li&gt;GIF allows interchange of images / frames to support animation&lt;/li&gt;    &lt;li&gt;Handles transparency on block objects&lt;/li&gt;    &lt;li&gt;Uses matting for edges of graphic &amp;amp; transparency&lt;/li&gt; &lt;/ul&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/869041835810859419/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/gif.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/869041835810859419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/869041835810859419'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/gif.html' title='GIF'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-4910609199648137958</id><published>2009-02-11T09:52:00.001+00:00</published><updated>2009-02-11T09:52:35.967+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Testing"/><title type='text'>A Bug is not a Bug unless you provide</title><content type='html'>&lt;ol&gt;   &lt;li&gt;Steps to reproduce&lt;/li&gt;    &lt;li&gt;What you expected to see&lt;/li&gt;    &lt;li&gt;What you saw instead&lt;/li&gt; &lt;/ol&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/4910609199648137958/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/bug-is-not-bug-unless-you-provide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/4910609199648137958'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/4910609199648137958'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/bug-is-not-bug-unless-you-provide.html' title='A Bug is not a Bug unless you provide'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-1795586096011891380</id><published>2009-02-11T09:51:00.001+00:00</published><updated>2009-02-11T09:51:06.260+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="aspnetmvc"/><title type='text'>ASP.NET MVC Attributes</title><content type='html'>&lt;p&gt;There are attributes available in ASP.NET MVC that allow us to handle common scenarios consistently and easily, such as:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;[Authorize]&lt;/li&gt;    &lt;li&gt;[HandleError]&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;We are using these in some places and not in others. Maybe we should take the time during development tasks to investigate different ways of doing things.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/1795586096011891380/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/aspnet-mvc-attributes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/1795586096011891380'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/1795586096011891380'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/aspnet-mvc-attributes.html' title='ASP.NET MVC Attributes'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-8911013731920505052</id><published>2009-02-11T09:48:00.001+00:00</published><updated>2009-02-11T09:48:10.975+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Craftsmanship"/><title type='text'>Criticise ideas, not people</title><content type='html'>&lt;p&gt;Don’t do this:&lt;/p&gt;  &lt;blockquote&gt;“You have a lot invested in your design. You’ve put your heart and soul into it. You know it’s better than anyone else’s. Don’t even bother listening to their ideas, they’ll just confuse the issue.”&lt;/blockquote&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/8911013731920505052/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/criticise-ideas-not-people.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/8911013731920505052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/8911013731920505052'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/criticise-ideas-not-people.html' title='Criticise ideas, not people'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-1978334011558672209</id><published>2009-02-03T08:08:00.004+00:00</published><updated>2009-02-03T08:21:42.081+00:00</updated><title type='text'>DRY (i) Don&#39;t Repeat Yourself</title><content type='html'>&quot;Duplication may be the root of all evil in software.&quot; (ii)&lt;br /&gt;&lt;br /&gt;Duplication slows you down and makes your code more error prone.  If the same code has to be changed in more than one place you may/will miss something. &lt;br /&gt;&lt;br /&gt;Dupliction appears in many disguises, but there are ways to deal with it so don&#39;t worry...&lt;br /&gt;&lt;br /&gt;1) Clumps of identical code/CPS (iii).  Consider using extract method or extract class followed by highlight and delete on the remaining offenders.&lt;br /&gt;&lt;br /&gt;2) Conditional logic testing for the same set of conditions (switch/case OR if/else).  Consider polymorphism.&lt;br /&gt;&lt;br /&gt;3) Database schema.  Consider using normalisation, it can be a winner&lt;br /&gt;&lt;br /&gt;In short duplication stinks, exterminate it ruthlessly.&lt;br /&gt;&lt;br /&gt;(i) Andy Hunt and Dave Thomas - The Pramattic Programmer&lt;br /&gt;(ii) Uncle Bob - Clean Code&lt;br /&gt;(iii) CPS &amp;copy; - Copy/Paste Syndrome - James Enock 2009)</content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/1978334011558672209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/dry-i-dont-repeat-yourself.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/1978334011558672209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/1978334011558672209'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/dry-i-dont-repeat-yourself.html' title='DRY (i) Don&#39;t Repeat Yourself'/><author><name>James Enock</name><uri>http://www.blogger.com/profile/08210903885628012539</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-646027526997593110</id><published>2009-02-03T04:55:00.001+00:00</published><updated>2009-02-03T04:55:52.361+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lean"/><title type='text'>Add Nothing But Value</title><content type='html'>&lt;p&gt;&lt;em&gt;Lean : Eliminate Waste&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;What is waste?&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Waste is anything that does not add value, such as defects not caught by tests, developing features not required for the current sprint, not coding directly from stories, etc&lt;/p&gt;  &lt;p&gt;Mary Popendieck provides a table for waste in software in her paper &lt;a title=&quot;Principles of Lean Thinking (pdf)&quot; href=&quot;http://www.poppendieck.com/papers/LeanThinking.pdf&quot; rel=&quot;bookmark&quot;&gt;Principles of Lean Thinking&lt;/a&gt; which also demonstrates how &lt;a title=&quot;Extreme Programming&quot; href=&quot;http://www.extremeprogramming.org/&quot; rel=&quot;bookmark&quot;&gt;XP&lt;/a&gt; addresses waste.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/646027526997593110/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/add-nothing-but-value.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/646027526997593110'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/646027526997593110'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/add-nothing-but-value.html' title='Add Nothing But Value'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-4234412238562830550</id><published>2009-02-03T04:44:00.001+00:00</published><updated>2009-02-03T04:44:22.489+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Lean"/><title type='text'>Seven Principles of Lean Software Development</title><content type='html'>&lt;ol&gt;   &lt;li&gt;Eliminate Waste&lt;/li&gt;    &lt;li&gt;Create Knowledge&lt;/li&gt;    &lt;li&gt;Build Quality In&lt;/li&gt;    &lt;li&gt;Defer Commitment&lt;/li&gt;    &lt;li&gt;Optimize the Whole&lt;/li&gt;    &lt;li&gt;Deliver Fast&lt;/li&gt;    &lt;li&gt;Respect People&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;See also: &lt;a title=&quot;Seven Principles of Lean Software Development&quot; href=&quot;http://agilesoftwaredevelopment.com/leanprinciples&quot; rel=&quot;bookmark&quot;&gt;Agile Software Development.com&lt;/a&gt;&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/4234412238562830550/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/seven-principles-of-lean-software.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/4234412238562830550'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/4234412238562830550'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/02/seven-principles-of-lean-software.html' title='Seven Principles of Lean Software Development'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-2103208228940458228</id><published>2009-01-22T21:02:00.001+00:00</published><updated>2009-01-22T21:02:40.179+00:00</updated><title type='text'>What is this blog?</title><content type='html'>&lt;p&gt;Those of you who have happened upon this blog for the first time may be wondering what it is.&lt;/p&gt;  &lt;p&gt;Three weeks ago, &lt;a title=&quot;Alan Dean&quot; href=&quot;http://alandean.blogspot.com/&quot; rel=&quot;bookmark&quot;&gt;I&lt;/a&gt; took over as CTO of &lt;a title=&quot;Move Me | Moving house made easier&quot; href=&quot;http://www.moveme.com/&quot; rel=&quot;bookmark&quot;&gt;MoveMe.com&lt;/a&gt; (a London-based start-up). I am committed to &lt;a title=&quot;Agile software development - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/Agile_software_development&quot; rel=&quot;nofollow&quot;&gt;agile development practices&lt;/a&gt; and amongst the changes I am bringing to the development team are two practices that deliberately place the value of knowledge at the heart of the team:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Weekly, voluntary, &lt;a title=&quot;Exceptional Performers Executive Coaching - Brown Bag Lunches&quot; href=&quot;http://www.exceptionalperformers.com/general/brown-bag-lunches-bite-sized-learning-and-development-for-your-bus.html&quot; rel=&quot;bookmark&quot;&gt;brown bag lunch&lt;/a&gt; sessions (alternating between presentations and &lt;a title=&quot;Coding Dojo Wiki&quot; href=&quot;http://codingdojo.org/&quot; rel=&quot;bookmark&quot;&gt;Coding Dojo’s&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;A Knowledge Nugget at the Daily &lt;a title=&quot;Stand-up meeting - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/Stand-up_meeting&quot; rel=&quot;nofollow&quot;&gt;Stand-Up&lt;/a&gt;&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;The rules for the Knowledge Nugget are simple:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;The nugget must be written (legibly) on one side of an &lt;a title=&quot;Index card - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/Index_card&quot; rel=&quot;nofollow&quot;&gt;index card&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;At the end of the Stand-Up, the nugget is simply read out by the author&lt;/li&gt;    &lt;li&gt;No questions about the nugget inside the Stand-Up (to avoid wasting time)&lt;/li&gt;    &lt;li&gt;When the nugget has been read, someone volunteers to do the next nugget (they do not need to say what it is about)&lt;/li&gt;    &lt;li&gt;The index card is placed in team view until the next nugget is done (pinned to a board, or blue-tacked on the wall)&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;On top of this, I decided to blog the nuggets for posterity :-)&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/2103208228940458228/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/what-is-this-blog.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/2103208228940458228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/2103208228940458228'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/what-is-this-blog.html' title='What is this blog?'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-7859270301580060266</id><published>2009-01-22T20:36:00.001+00:00</published><updated>2009-01-22T20:36:52.927+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="Web Design"/><title type='text'>PNG (Portable Network Graphics)</title><content type='html'>&lt;ul&gt;   &lt;li&gt;The &lt;a title=&quot;Portable Network Graphics - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/Portable_Network_Graphics&quot; rel=&quot;nofollow&quot;&gt;PNG format&lt;/a&gt; was created to improve upon and replace &lt;a title=&quot;Graphics Interchange Format - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/Gif&quot; rel=&quot;nofollow&quot;&gt;GIF (Graphics Interchange Format)&lt;/a&gt; which was limited to 256 Colours.&lt;/li&gt;    &lt;li&gt;An image format embodying lossless data compression (known as &lt;a title=&quot;Deflate - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/DEFLATE_(algorithm)&quot; rel=&quot;nofollow&quot;&gt;deflate&lt;/a&gt;).&lt;/li&gt;    &lt;li&gt;PNG offers a variety of transparency options; most notably allowing the addition of an &lt;a title=&quot;Alpha compositing - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/Alpha_channel&quot; rel=&quot;nofollow&quot;&gt;alpha channel&lt;/a&gt; thus greatly improving transparency quality with no need for matting.&lt;/li&gt;    &lt;li&gt;Improved transparency allows improved &lt;a title=&quot;Layering multiple background images - W3C&quot; href=&quot;http://www.w3.org/TR/css3-background/#layering&quot; rel=&quot;nofollow&quot;&gt;layering&lt;/a&gt; and visual effects in web design.&lt;/li&gt;    &lt;li&gt;Greater colour depth gives greater precision and clarity and improves the quality of fades.&lt;/li&gt;    &lt;li&gt;PNG has better image clarity than &lt;a title=&quot;JPEG - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/Jpeg&quot; rel=&quot;nofollow&quot;&gt;JPEG&lt;/a&gt; when used for text or images with sharp transitions.&lt;/li&gt; &lt;/ul&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/7859270301580060266/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/png-portable-network-graphics.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/7859270301580060266'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/7859270301580060266'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/png-portable-network-graphics.html' title='PNG (Portable Network Graphics)'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-602557987376823504</id><published>2009-01-19T18:09:00.001+00:00</published><updated>2009-01-19T18:09:34.745+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SqlServer"/><title type='text'>View SQL Server Metadata</title><content type='html'>&lt;p&gt;SQL Server stores metadata about all objects in a database.&lt;/p&gt;  &lt;p&gt;Highlight the object name and press Alt+F1.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/602557987376823504/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/view-sql-server-metadata.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/602557987376823504'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/602557987376823504'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/view-sql-server-metadata.html' title='View SQL Server Metadata'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-7134638652243796972</id><published>2009-01-19T18:07:00.001+00:00</published><updated>2009-01-19T18:07:36.683+00:00</updated><title type='text'>The Common Closure Principle</title><content type='html'>&lt;p&gt;“&lt;a title=&quot;Common Closure Principle - Google Search&quot; href=&quot;http://www.google.com/search?q=common+closure+principle&quot; rel=&quot;nofollow&quot;&gt;Classes that change together, belong together&lt;/a&gt;.” (&lt;a title=&quot;The Science of Packages&quot; href=&quot;http://blogs.quintor.nl/bbottema/tag/common-closure-principle/&quot; rel=&quot;bookmark&quot;&gt;Robert Martin&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;This principle advises which classes should be packaged together based on patterns of change.&lt;/p&gt;  &lt;p&gt;The classes in a package should be closed together against the same kind of changes.&lt;/p&gt;  &lt;p&gt;A change that affects a package affects all the classes in that package.&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/7134638652243796972/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/common-closure-principle.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/7134638652243796972'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/7134638652243796972'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/common-closure-principle.html' title='The Common Closure Principle'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-8275453838029502025</id><published>2009-01-14T10:45:00.001+00:00</published><updated>2009-01-14T10:45:14.019+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SOLID"/><title type='text'>The L in SOLID</title><content type='html'>&lt;h4&gt;&lt;a title=&quot;The Liskov Substitution Principle - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/Liskov_substitution_principle&quot; rel=&quot;nofollow&quot;&gt;The Liskov Substitution Principle&lt;/a&gt;&lt;/h4&gt;  &lt;ul&gt;   &lt;li&gt;Subtypes must be substitutable for their base types.&lt;/li&gt;    &lt;li&gt;Closely related to &lt;a title=&quot;Design by Contract - Wikipedia&quot; href=&quot;http://wikipedia.org/wiki/Design_by_Contract&quot; rel=&quot;nofollow&quot;&gt;Design by Contract&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Substituting subtypes should not cause different or unexpected behaviour.&lt;/li&gt;    &lt;li&gt;Google: &lt;a title=&quot;Search for &amp;quot;Liskov Substitution Square Rectangle&amp;quot;&quot; href=&quot;http://www.google.com/search?q=Liskov+Substitution+Square+Rectangle&quot; rel=&quot;nofollow&quot;&gt;Liskov Substitution Square Rectangle&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/8275453838029502025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/l-in-solid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/8275453838029502025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/8275453838029502025'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/l-in-solid.html' title='The L in SOLID'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-979950560506870168</id><published>2009-01-13T13:58:00.000+00:00</published><updated>2009-01-13T14:28:56.643+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="SOLID"/><title type='text'>The D in SOLID</title><content type='html'>&lt;h4&gt;Dependency Inversion Principle&lt;/h4&gt;  &lt;ol&gt;   &lt;li&gt;High-level modules should not depend on low-level modules. Both should depend on abstractions.     &lt;br /&gt;&lt;/li&gt;    &lt;li&gt;Abstractions should not depend upon details. Details should depend on abstractions.&lt;/li&gt; &lt;/ol&gt;  &lt;h5&gt;Advantages&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;Re-use high-level modules in different contexts.&lt;/li&gt;    &lt;li&gt;Reduces coupling and increases cohesion.&lt;/li&gt;    &lt;li&gt;Increases separation of concerns.&lt;/li&gt;    &lt;li&gt;Makes unit testing easier as it allows low-level module injection; for example &lt;a href=&quot;http://martinfowler.com/articles/mocksArentStubs.html&quot;&gt;Mocks&lt;/a&gt;.&lt;/li&gt; &lt;/ul&gt; The technique by which low-level objects are injected into high-level objects is called &lt;em&gt;dependency injection&lt;/em&gt;.  &lt;br /&gt;  &lt;h4&gt;Inversion of Control (IoC)&lt;/h4&gt;  &lt;p&gt;Objects do not create other objects on which they rely to do their work. Instead they get their dependencies from an outside source.&lt;/p&gt;  &lt;h5&gt;IoC Frameworks:&lt;/h5&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href=&quot;http://www.castleproject.org/container/index.html&quot;&gt;Castle MicroKernel/Windsor&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://www.springframework.net/&quot;&gt;Spring.NET&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://www.codeplex.com/unity&quot;&gt;Unity&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href=&quot;http://structuremap.sourceforge.net/&quot;&gt;StructureMap&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;See also: “&lt;a title=&quot;What is S.O.L.I.D?&quot; href=&quot;http://www.lostechies.com/blogs/chad_myers/archive/2008/03/07/pablo-s-topic-of-the-month-march-solid-principles.aspx&quot; rel=&quot;bookmark&quot;&gt;What is S.O.L.I.D?&lt;/a&gt;”&lt;/p&gt;  </content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/979950560506870168/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/d-in-solid.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/979950560506870168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/979950560506870168'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/d-in-solid.html' title='The D in SOLID'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-1690638653163761520.post-1980363629920857998</id><published>2009-01-13T09:13:00.000+00:00</published><updated>2009-01-13T13:58:27.344+00:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="HTTP"/><title type='text'>301 Moved Permanently</title><content type='html'>Use the &lt;a href=&quot;http://delicious.com/alan.dean/301&quot;&gt;301 status code&lt;/a&gt; when:&lt;div&gt;&lt;ol&gt;&lt;li&gt;You know the the URI requested is never going to be available again&lt;/li&gt;&lt;li&gt;You know where the replacement URI can be found&lt;/li&gt;&lt;/ol&gt;Example response message:&lt;/div&gt;&lt;code&gt;&lt;br /&gt;301 Moved Permanently&lt;br /&gt;Location: http://example.com/new-location&lt;br /&gt;Cache-Control: public&lt;br /&gt;Expires: &lt;span class=&quot;Apple-style-span&quot; style=&quot;font-style: italic;&quot;&gt;{Now + 1 year}&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;/code&gt;</content><link rel='replies' type='application/atom+xml' href='http://knowledge-nugget.blogspot.com/feeds/1980363629920857998/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/301-moved-permanently.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/1980363629920857998'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1690638653163761520/posts/default/1980363629920857998'/><link rel='alternate' type='text/html' href='http://knowledge-nugget.blogspot.com/2009/01/301-moved-permanently.html' title='301 Moved Permanently'/><author><name>Alan Dean</name><uri>http://www.blogger.com/profile/05589768205632967394</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh8Kb2cCA4sbFhYMsJxQI2UAfkfx3rzHi_hqOmMBt1_TNYi52MMIAXKK1TZoVr0Sm3zlbofpWILYCigTAnJhzyBRoacgMaMEOwvQdMRoxpHC5wEjgMD6Q1CqPUSaOec3g/s220/500x500.jpg'/></author><thr:total>0</thr:total></entry></feed>