<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title></title>
	<atom:link href="http://stevehaddon.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://stevehaddon.wordpress.com</link>
	<description>less is more ...</description>
	<lastBuildDate>Thu, 26 Mar 2009 17:54:36 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='stevehaddon.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title></title>
		<link>http://stevehaddon.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://stevehaddon.wordpress.com/osd.xml" title="" />
	<atom:link rel='hub' href='http://stevehaddon.wordpress.com/?pushpress=hub'/>
		<item>
		<title>The  Multi-Valued (MV) Database</title>
		<link>http://stevehaddon.wordpress.com/2009/03/24/the-multi-valued-mv-database/</link>
		<comments>http://stevehaddon.wordpress.com/2009/03/24/the-multi-valued-mv-database/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 12:17:35 +0000</pubDate>
		<dc:creator>Steve Haddon</dc:creator>
				<category><![CDATA[Multi-value Database]]></category>
		<category><![CDATA[Pick]]></category>
		<category><![CDATA[software development]]></category>
		<category><![CDATA[Universe]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[multi-value]]></category>
		<category><![CDATA[reality]]></category>
		<category><![CDATA[reverse polish]]></category>

		<guid isPermaLink="false">http://stevehaddon.wordpress.com/?p=60</guid>
		<description><![CDATA[The Flat Database Society I&#8217;ve been tasked with explaining the concepts (and origin) of the MV database (more commonly referred to as: Pick, Universe, Unidata and Reality), to a bunch of developers who are under the impression that there is only one database: SQL Server. They believe that the database world is flat! And, alarmingly, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stevehaddon.wordpress.com&amp;blog=5069602&amp;post=60&amp;subd=stevehaddon&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<div style="color:#212847;">
<span style="text-decoration:underline;"><strong>The Flat Database Society</strong></span></p>
<p>I&#8217;ve been tasked with explaining the concepts (and origin) of the MV database (more commonly referred to as: Pick, Universe, Unidata and Reality), to a bunch of developers who are under the impression that there is only one database: SQL Server. <strong>They believe that the database world is flat!</strong> And, alarmingly, they are part of the vast majority of software developers, who have never gone beyond relational.</p>
<p><span style="text-decoration:underline;"><strong>History of MV</strong><br />
</span></p>
<p>It all started back in 1965. <em><strong>Yes!</strong></em> Way before Mr Codd &#8220;<em>invented</em>&#8221; the database in 1970 and IBM &#8220;<em>invented</em>&#8221; the database retrieval language, SEQUEL &#8211; later to become SQL. Two programmers (Dick Pick &amp; Don Nelson), employed by TRW, were working on a US  Army project and developed something called <strong>Generalized Information Retrieval Language System</strong> (GIRLS), which was up and running by 1968. See <a href="http://en.wikipedia.org/wiki/Pick_database">wikipedia for more info</a>.</p>
<p><strong><span style="text-decoration:underline;">English</span></strong></p>
<p>The first commercial port of the MV database, was Microdata&#8217;s Reality, which incorporated GIRLS under the name <strong>English</strong>. The core strength of English (as the name might suggest) was it&#8217;s ability to retrieve data using a human readable language. An example better illustrates than an explanation:</p>
<pre>LIST ORDER.HEAD <span style="color:#808080;">BY</span> CUSTNO <span style="color:#808080;">WITH</span> DATE = "22/03/2009" DATE <span style="color:#808080;">BREAK-ON</span> CUSTNO ORDNO <span style="color:#808080;">TOTAL</span> ORDVAL</pre>
<p>The <span style="color:#808080;">keywords</span> in this command are:</p>
<ul>
<li><span style="color:#808080;">BY</span> &#8211; which tells us that the following field (CUSTNO) is what we need to sort by.</li>
<li><span style="color:#808080;">WITH</span> &#8211; indicates the selection criteria (DATE = &#8220;22/03/2009&#8243;)</li>
<li><span style="color:#808080;">BREAK-ON</span> &#8211; tells us what we need to sub-total on (CUSTNO)</li>
<li><span style="color:#808080;">TOTAL</span> &#8211; tells us what needs to be totalled (ORDVAL)</li>
</ul>
<p>The rest is fairly obvious: ORDER.HEAD is the file/table and CUSTNO, DATE, ORDNO &amp; ORDVAL are the fields/columns.</p>
<p>The other major strength of <strong>English</strong> is the <strong>Dictionary</strong> &#8211; which is used to define the fields/columns in the table. The dictionary, not only gives names to the columns (e.g. CUSTNO, DATE, ORDNO &amp; ORDVAL), it also allows manipulation of the data. For instance, you probably want to see the DATE in human-readable form (rather than internal format: i.e. number of days since 01/01/1968), and you probably want to see the order value with 2DP rather than as an integer. It goes way beyond this, however. In addition to string manipulation; data formatting and database joins, all of these operations could be combined, in the wonderful F-Correlative.</p>
<p><span style="text-decoration:underline;"><strong>Reverse Polish</strong></span></p>
<p>The F-Correlative uses a notation called <a href="http://en.wikipedia.org/wiki/Reverse_polish">Reverse Polish</a>, which allows operations to be performed on the top one or two items in the stack. Again, an example is the easiest way to explain:</p>
<pre style="font:18px;background:#C0C0C0;"><strong>8,3,2,+,-</strong></pre>
<p>Will first put &#8220;8&#8243; onto the stack, followed by &#8220;3&#8243;, then &#8220;2&#8243;. So, &#8220;2&#8243; is at the top.</p>
<p>We then reach our first operation (&#8220;+&#8221;), which will sum the top two values (&#8220;2&#8243; and &#8220;3&#8243;) and remove them from the stack, and put the result (&#8220;5&#8243;) on the top.</p>
<p>The next item we reach is another operation (&#8220;-&#8221;) which will subtract &#8220;5&#8243; from &#8220;8&#8243;.</p>
<p>Many implementations of Reverse Polish are limited to mathematical operations, but the F-Correlative provides conditional operators and access to any of the other functions available in the Dictionary &#8211; e.g. string manipulation, formatting, and database joins. Over time, yet more powerful functionality has been incorporated into the Dictionary (e.g.  subroutine calls),</p>
<p><span style="text-decoration:underline;"><strong>Multi-Values</strong></span></p>
<p>The multi-value is just one part of a database structure called the <strong>Dynamic Array</strong>. The dynamic array provides the MV database with it&#8217;s flexibility, efficiency and power. In simple terms, the dynamic array is a record consisting of delimited (rather than fixed-length) fields. A well-known example of this is a CSV file. The dynamic array, however, doesn&#8217;t use the comma as a delimiter &#8211; it uses something called a Field Mark (also called Attribute Mark). It then goes one step further, by adding an additional dimension to the array (multi-values), which are delimited by the Value Mark.</p>
<p>The purpose of the multi-value is to allow repeating data to be easily accomodated within the database. This is quite useful, because, in &#8220;real life&#8221; a lot of &#8220;stuff&#8221; occurs more than once, and a database that accomodates this, requires less code. If we compare a CSV record with the MV equivalent (using a family tree as an example), here&#8217;s how they differ:</p>
<p><strong>CSV:</strong></p>
<pre style="font:18px;background:#C0C0C0;">ID,Parent Name,Child 1,Child 2,Child n,,,,,
1,Steve,Sarah,Charlie,,,,,,</pre>
<p><strong>MV </strong>(where &#8220;^&#8221; indicates a Field Mark and &#8220;]&#8221; is a Value Mark)<strong>:</strong></p>
<pre style="font:18px;background:#C0C0C0;">ID^Parent Name^Children
1^Steve^Sarah]Charlie</pre>
<p>In the CSV record, we have an unknown number of columns, whereas in the MV record it&#8217;s fixed. And if we want to view this data, we enter the command &#8220;<span style="color:#333333;">LIST FAMILY.TREE PARENT CHILDREN</span>&#8221; which gives us this:</p>
<pre style="font:18px;background:#C0C0C0;">ID Parent Children
1  Steve  Sarah
          Charlie</pre>
<p>I concede that comparing any type of database to a CSV file is a little one-sided. And, yes, we could achieve the same result with a &#8220;real&#8221; RDMS, but at the expense of having two tables. I would also concede that the MV concept is open to abuse. I&#8217;ve seen many examples of multi-values being used when a &#8220;normailised&#8221; approach would have been much better. And multi-values being used to collect up a bunch of non-repeating fields. This is where programming standards are required &#8211; a topic for another day, I think!
</p></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stevehaddon.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stevehaddon.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stevehaddon.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stevehaddon.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stevehaddon.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stevehaddon.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stevehaddon.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stevehaddon.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stevehaddon.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stevehaddon.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stevehaddon.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stevehaddon.wordpress.com/60/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stevehaddon.wordpress.com/60/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stevehaddon.wordpress.com/60/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stevehaddon.wordpress.com&amp;blog=5069602&amp;post=60&amp;subd=stevehaddon&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stevehaddon.wordpress.com/2009/03/24/the-multi-valued-mv-database/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09708a57ea960cdd9bf5cb686e652e5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">stevehaddon</media:title>
		</media:content>
	</item>
		<item>
		<title>X misses the spot</title>
		<link>http://stevehaddon.wordpress.com/2008/10/19/x-misses-the-spot/</link>
		<comments>http://stevehaddon.wordpress.com/2008/10/19/x-misses-the-spot/#comments</comments>
		<pubDate>Sun, 19 Oct 2008 21:37:00 +0000</pubDate>
		<dc:creator>Steve Haddon</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[Gnome]]></category>
		<category><![CDATA[GNU]]></category>
		<category><![CDATA[KDE]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[kubuntu]]></category>
		<category><![CDATA[ubuntu]]></category>
		<category><![CDATA[X-windows]]></category>

		<guid isPermaLink="false">http://stevehaddon.wordpress.com/?p=33</guid>
		<description><![CDATA[I&#8217;m a big fan of open source software &#8211; using Linux for both work &#38; home. But the very nature of open source development can, at times, be it&#8217;s own worst enemy. You have to admit that Apple have the perfect set up &#8211; being in total control of both hardware and software. It&#8217;s not [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stevehaddon.wordpress.com&amp;blog=5069602&amp;post=33&amp;subd=stevehaddon&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a big fan of open source software &#8211; using Linux for both work &amp; home. But the very nature of open source development can, at times, be it&#8217;s own worst enemy.</p>
<p>You have to admit that Apple have the perfect set up &#8211; being in total control of both hardware and software. It&#8217;s not surprising that they deliver such a great product. Next comes Microsoft, who at least have complete control of the software. But, in aiming for hardware ubiquity,  have to accomodate the vagaries of many different hardware manufacturers.</p>
<p>The Linux world, however, is a far more complicated place. In many respects, the approach to hardware portability is even more ambitious than Microsoft. Linux distributions frequently offer ports for Sparc/Risc processors, in addition to Intel/AMD x86 and 64-bit CPUs. But that&#8217;s not the complicated bit! It&#8217;s how these distributions are put together that makes life so difficult. A Linux distribution is a compilation of a whole bunch of different components, all developed by different individuals, with different goals.</p>
<p>The <a href="http://www.kernel.org/">Linux Kernel</a> is just a small (but obviously core) part of what you get when installing a distribution. In addition, there are a number of libraries, utilities and compilers provided by the <a href="http://www.gnu.org/">GNU project</a>; the <a href="http://www.x.org/wiki/">X-windows</a> GUI framework; and a choice of desktop managers (including <a href="http://www.kde.org/">KDE</a> &amp; <a href="http://www.gnome.org/">Gnome</a>). And, when one of these components goes off track, it can be a frustrating time for both distributors and users.</p>
<div class="wp-caption alignleft" style="width: 244px"><a href="http://www.kubuntu.org/"><img title="Kubuntu" src="http://www.kubuntu.org/themes/kubuntu-theme-v2/logo.png" alt="Kubuntu " width="234" height="65" /></a><p class="wp-caption-text"> </p></div>
<p>For the past three years I&#8217;ve been running Kubuntu on my desktop &#8211; successfully moving through the releases (Edgy, Feisty &amp; Gutsy) and then coming to a complete halt. For me, the current release (Hardy) has been a non-starter. Some major hacks to X-windows have left ATI Radeon graphics cards (virtually) unsupported. The distributor (Canonical) are not really at fault &#8211; they need to put together the pieces of each <em>&#8220;distribution jigsaw puzzle&#8221;</em> in a way that allows them to keep moving forward. And this is one of the really great things about open source: the pace of change &amp; progress. I would still not hesitate to recommend the Ubuntu/Kubuntu distributions. But, for now, I sit in a cul-de-sac, hoping that some time soon, a hack to X-windows will set me on my way again.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stevehaddon.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stevehaddon.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stevehaddon.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stevehaddon.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stevehaddon.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stevehaddon.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stevehaddon.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stevehaddon.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stevehaddon.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stevehaddon.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stevehaddon.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stevehaddon.wordpress.com/33/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stevehaddon.wordpress.com/33/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stevehaddon.wordpress.com/33/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stevehaddon.wordpress.com&amp;blog=5069602&amp;post=33&amp;subd=stevehaddon&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stevehaddon.wordpress.com/2008/10/19/x-misses-the-spot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09708a57ea960cdd9bf5cb686e652e5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">stevehaddon</media:title>
		</media:content>

		<media:content url="http://www.kubuntu.org/themes/kubuntu-theme-v2/logo.png" medium="image">
			<media:title type="html">Kubuntu</media:title>
		</media:content>
	</item>
		<item>
		<title>The wonder of the wiki</title>
		<link>http://stevehaddon.wordpress.com/2008/10/11/the-wonder-of-the-wiki/</link>
		<comments>http://stevehaddon.wordpress.com/2008/10/11/the-wonder-of-the-wiki/#comments</comments>
		<pubDate>Sat, 11 Oct 2008 08:45:25 +0000</pubDate>
		<dc:creator>Steve Haddon</dc:creator>
				<category><![CDATA[software development]]></category>
		<category><![CDATA[wiki]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[moinmoin]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[version history]]></category>

		<guid isPermaLink="false">http://stevehaddon.wordpress.com/?p=21</guid>
		<description><![CDATA[About 12 months ago, I decided to implement a wiki in the IT department &#8211; purely for internal use. For no reason in particular I went with MoinMoin. As a fan of Linux and Open Source Software, it fits the bill. It was also very easy to install &#38; deploy. The IT department consists of [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stevehaddon.wordpress.com&amp;blog=5069602&amp;post=21&amp;subd=stevehaddon&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>About 12 months ago, I decided to implement a wiki in the IT department &#8211; purely for internal use. For no reason in particular I went with <a href="http://moinmo.in/">MoinMoin</a>. As a fan of Linux and Open Source Software, it fits the bill. It was also very easy to install &amp; deploy.</p>
<p>The IT department consists of about 40: web developers, back-office system developers and support staff. In the 14 years I&#8217;ve been there, it has always been a struggle to get system documentation up to date and in line with reality.</p>
<p><strong>Wow!</strong> How the wiki has changed that. We now have approaching 900 pages of documentation and contributions from 100% of the team. The reason, I believe it has been so successful is that developers who would normally adhere to <a href="http://stevehaddon.wordpress.com/top-10-credos-of-a-klingon-programmer"> Klingon Programming Standards</a>, actually seem to like using the wiki.</p>
<p>The other major benefit of the wiki, is it&#8217;s version history. Now, when our software is modified, the associated wiki is updated and a comment is added referencing back to the project. A simple click (on the diff button) shows what changes were made for each project.</p>
<p><strong>Anyone involved in software development should look at implementing a wiki.</strong></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/stevehaddon.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/stevehaddon.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/stevehaddon.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/stevehaddon.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/stevehaddon.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/stevehaddon.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/stevehaddon.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/stevehaddon.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/stevehaddon.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/stevehaddon.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/stevehaddon.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/stevehaddon.wordpress.com/21/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/stevehaddon.wordpress.com/21/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/stevehaddon.wordpress.com/21/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=stevehaddon.wordpress.com&amp;blog=5069602&amp;post=21&amp;subd=stevehaddon&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://stevehaddon.wordpress.com/2008/10/11/the-wonder-of-the-wiki/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/b09708a57ea960cdd9bf5cb686e652e5?s=96&#38;d=identicon" medium="image">
			<media:title type="html">stevehaddon</media:title>
		</media:content>
	</item>
	</channel>
</rss>
