<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>
<channel>
	<title>Comments for An Independent Game Developer's Diary</title>
	<atom:link href="http://www.mibgames.co.uk/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.mibgames.co.uk</link>
	<description>Journalling the creation of a games development company</description>
	<pubDate>Mon, 06 Oct 2008 20:49:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.2</generator>
		<item>
		<title>Comment on Why I will be sharing baby photo&#8217;s on Flickr and not Facebook by Gaz</title>
		<link>http://www.mibgames.co.uk/2008/08/04/why-i-will-be-sharing-baby-photos-on-flickr-and-not-facebook/#comment-4001</link>
		<dc:creator>Gaz</dc:creator>
		<pubDate>Mon, 15 Sep 2008 12:37:49 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/?p=155#comment-4001</guid>
		<description>Glad I read this thanks, will be thinking about Facebook terms myself now</description>
		<content:encoded><![CDATA[<p>Glad I read this thanks, will be thinking about Facebook terms myself now</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Twitter Updates for 2008-07-30 by Peer</title>
		<link>http://www.mibgames.co.uk/2008/07/30/twitter-updates-for-2008-07-30/#comment-3985</link>
		<dc:creator>Peer</dc:creator>
		<pubDate>Thu, 31 Jul 2008 05:23:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/2008/07/30/twitter-updates-for-2008-07-30/#comment-3985</guid>
		<description>Congratulations and all the best wishes for Arty, Cathy and you.

Wiebke and Peer</description>
		<content:encoded><![CDATA[<p>Congratulations and all the best wishes for Arty, Cathy and you.</p>
<p>Wiebke and Peer</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on My first post by Simon Brunning</title>
		<link>http://www.mibgames.co.uk/2008/06/26/my-first-post/#comment-3980</link>
		<dc:creator>Simon Brunning</dc:creator>
		<pubDate>Thu, 26 Jun 2008 14:12:19 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/?p=131#comment-3980</guid>
		<description>Git.</description>
		<content:encoded><![CDATA[<p>Git.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Upgraded wordpress by Michael Brunton-Spall</title>
		<link>http://www.mibgames.co.uk/2008/05/29/upgraded-wordpress/#comment-3977</link>
		<dc:creator>Michael Brunton-Spall</dc:creator>
		<pubDate>Thu, 29 May 2008 23:40:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/2008/05/29/upgrading-wordpress/#comment-3977</guid>
		<description>TEsting commenting</description>
		<content:encoded><![CDATA[<p>TEsting commenting</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Google AppEngine, BigTable and why RDBMS mentality is harmful by Ben Bangert</title>
		<link>http://www.mibgames.co.uk/2008/04/15/google-appengine-bigtable-and-why-rdbms-mentality-is-harmful/#comment-3697</link>
		<dc:creator>Ben Bangert</dc:creator>
		<pubDate>Thu, 17 Apr 2008 00:10:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/?p=81#comment-3697</guid>
		<description>You're still missing a big part of the picture.

First, they need a way to do mass updates stil, since you can only fetch 1000 at a time, and doing so many updates in that manner is *really slow*. You will run out of time and Google will kill your request. In the meantime, the best you can do is some sort of AJAX page where it then triggers all the other hits that try to load subsets of products and update their names. Either way, its still really messy right now.

Second, with regards to storing a customers data. You're missing the important bit about Entity Groups and ancestor keys. If you have a batch of customer data that you need to work with at one time, you should ensure that the entities are keyed to the same ancestor. 

This allows you to:
a) ensure that all the data you want to get to for a specific customer is stored in the same portion of the distributed database.
b) do transactions that wrap the whole group of entities
c) update multiple entities in a single put() statement

There's definitely a lot to consider with BigTable.</description>
		<content:encoded><![CDATA[<p>You&#8217;re still missing a big part of the picture.</p>
<p>First, they need a way to do mass updates stil, since you can only fetch 1000 at a time, and doing so many updates in that manner is *really slow*. You will run out of time and Google will kill your request. In the meantime, the best you can do is some sort of AJAX page where it then triggers all the other hits that try to load subsets of products and update their names. Either way, its still really messy right now.</p>
<p>Second, with regards to storing a customers data. You&#8217;re missing the important bit about Entity Groups and ancestor keys. If you have a batch of customer data that you need to work with at one time, you should ensure that the entities are keyed to the same ancestor. </p>
<p>This allows you to:<br />
a) ensure that all the data you want to get to for a specific customer is stored in the same portion of the distributed database.<br />
b) do transactions that wrap the whole group of entities<br />
c) update multiple entities in a single put() statement</p>
<p>There&#8217;s definitely a lot to consider with BigTable.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Google AppEngine, BigTable and why RDBMS mentality is harmful by mib</title>
		<link>http://www.mibgames.co.uk/2008/04/15/google-appengine-bigtable-and-why-rdbms-mentality-is-harmful/#comment-3696</link>
		<dc:creator>mib</dc:creator>
		<pubDate>Wed, 16 Apr 2008 21:22:02 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/?p=81#comment-3696</guid>
		<description>Whoops,  I made the assumption that everyone knows what normalisation is, or what denormalisation is, and of course not everybody does.  I was going to write an overview of what normalisation is in a database, but thats actually quite complicated to do.

A simple explanation is that normalisation attempts to remove all duplication between data in tables.
Thats the thing that makes you want to put customer information in a customer table, order information in an order table and create relationships between them.

This is what we've done for nearly 30 years now, so it's become second nature to us.

However, sometimes we realise that it will cost more to do the join on the two tables when we want to query it than we save by seperating the data.  
We've recently had an example of that at my work, where we discovered that in order to select about 10 items from our database of nearly a million items, it had ot join all those million items into about 5 tables because the where clause relied on properties on multiple tables.

The solution then is to go the opposite way to normalisation, to denormalise.  This means that we copy data from our end tables, often into the join table, which means that the database can be more efficient, limiting the join table first, and then performing the join.

Finally, Google AppEngine does have foreign keys, at least in the django model anyway, and they're called ReferenceProperties.

Hope that helps</description>
		<content:encoded><![CDATA[<p>Whoops,  I made the assumption that everyone knows what normalisation is, or what denormalisation is, and of course not everybody does.  I was going to write an overview of what normalisation is in a database, but thats actually quite complicated to do.</p>
<p>A simple explanation is that normalisation attempts to remove all duplication between data in tables.<br />
Thats the thing that makes you want to put customer information in a customer table, order information in an order table and create relationships between them.</p>
<p>This is what we&#8217;ve done for nearly 30 years now, so it&#8217;s become second nature to us.</p>
<p>However, sometimes we realise that it will cost more to do the join on the two tables when we want to query it than we save by seperating the data.<br />
We&#8217;ve recently had an example of that at my work, where we discovered that in order to select about 10 items from our database of nearly a million items, it had ot join all those million items into about 5 tables because the where clause relied on properties on multiple tables.</p>
<p>The solution then is to go the opposite way to normalisation, to denormalise.  This means that we copy data from our end tables, often into the join table, which means that the database can be more efficient, limiting the join table first, and then performing the join.</p>
<p>Finally, Google AppEngine does have foreign keys, at least in the django model anyway, and they&#8217;re called ReferenceProperties.</p>
<p>Hope that helps</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Google AppEngine, BigTable and why RDBMS mentality is harmful by G-man</title>
		<link>http://www.mibgames.co.uk/2008/04/15/google-appengine-bigtable-and-why-rdbms-mentality-is-harmful/#comment-3695</link>
		<dc:creator>G-man</dc:creator>
		<pubDate>Wed, 16 Apr 2008 19:47:36 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/?p=81#comment-3695</guid>
		<description>As the Zen Master said, 'When you have forgotten all you know, then you will achieve Enlightenment...'

OK, I'm doing my best to 'empty my mind', and here are my realizations:

1. So, there are really no 'foreign keys', in the sense of Customer = Customer_id(5)?

2. Then, my customer_name will be written all over the place in different tables - that's denormalization?

3. If I want to track projects-persons, I have to make a list property with the projects ['house', 'office', 'street'], instead of a join table.

4. And I really have to rethink my database design with the business logic of queries governing all.

It's really a return to a much more naive state of how databases were done 'back in the day'.

Thanks!</description>
		<content:encoded><![CDATA[<p>As the Zen Master said, &#8216;When you have forgotten all you know, then you will achieve Enlightenment&#8230;&#8217;</p>
<p>OK, I&#8217;m doing my best to &#8216;empty my mind&#8217;, and here are my realizations:</p>
<p>1. So, there are really no &#8216;foreign keys&#8217;, in the sense of Customer = Customer_id(5)?</p>
<p>2. Then, my customer_name will be written all over the place in different tables - that&#8217;s denormalization?</p>
<p>3. If I want to track projects-persons, I have to make a list property with the projects ['house', 'office', 'street'], instead of a join table.</p>
<p>4. And I really have to rethink my database design with the business logic of queries governing all.</p>
<p>It&#8217;s really a return to a much more naive state of how databases were done &#8216;back in the day&#8217;.</p>
<p>Thanks!</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Militant atheism by mib</title>
		<link>http://www.mibgames.co.uk/2008/04/16/militant-atheism/#comment-3693</link>
		<dc:creator>mib</dc:creator>
		<pubDate>Wed, 16 Apr 2008 17:32:00 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/2008/04/16/militant-atheism/#comment-3693</guid>
		<description>Firstly, I currently sit next to Simon B, and he knows that I'm not being serious about ebing offended.
I use the term militant in the same sense that Simon would use the term to mean someone who attaches their "truth" or meaning to any news story. A militant christian is someone who always tries to remind you that you are going to hell for example.

Anyway, I thought it was interestingly funny that Simon disclaims what Christians do, but then goes and does the same himself

Must go, pub is calling</description>
		<content:encoded><![CDATA[<p>Firstly, I currently sit next to Simon B, and he knows that I&#8217;m not being serious about ebing offended.<br />
I use the term militant in the same sense that Simon would use the term to mean someone who attaches their &#8220;truth&#8221; or meaning to any news story. A militant christian is someone who always tries to remind you that you are going to hell for example.</p>
<p>Anyway, I thought it was interestingly funny that Simon disclaims what Christians do, but then goes and does the same himself</p>
<p>Must go, pub is calling</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Militant atheism by Samuel Skinner</title>
		<link>http://www.mibgames.co.uk/2008/04/16/militant-atheism/#comment-3692</link>
		<dc:creator>Samuel Skinner</dc:creator>
		<pubDate>Wed, 16 Apr 2008 16:00:48 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/2008/04/16/militant-atheism/#comment-3692</guid>
		<description>Well, technically this isn't based on religious reasons. However you could argue that the Prophet of Islam set a rather bad example marrying a child. Or you could argue that religious beliefs about women and girls being subservient to their parents, husbands and wives are the cause. The beliefs aren't always religious, but religion tends to be the trump card in alot of cases. 

However, the most adequate explanation is that Yemen is a dirt poor country. It has absolutely no oil, the majority if the popiulation is stoed most of the time (the drug they take is called quat), it was the only Arab country to even have a  communist civil war... it is basically an odd ball, and extremely poor and backward.

It isn't as much "bad religious practice" as bad cultural practice. Different problems, same solution. Reason, individual freedom and wealth seem to be the key.</description>
		<content:encoded><![CDATA[<p>Well, technically this isn&#8217;t based on religious reasons. However you could argue that the Prophet of Islam set a rather bad example marrying a child. Or you could argue that religious beliefs about women and girls being subservient to their parents, husbands and wives are the cause. The beliefs aren&#8217;t always religious, but religion tends to be the trump card in alot of cases. </p>
<p>However, the most adequate explanation is that Yemen is a dirt poor country. It has absolutely no oil, the majority if the popiulation is stoed most of the time (the drug they take is called quat), it was the only Arab country to even have a  communist civil war&#8230; it is basically an odd ball, and extremely poor and backward.</p>
<p>It isn&#8217;t as much &#8220;bad religious practice&#8221; as bad cultural practice. Different problems, same solution. Reason, individual freedom and wealth seem to be the key.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Militant atheism by Ray Ingles</title>
		<link>http://www.mibgames.co.uk/2008/04/16/militant-atheism/#comment-3691</link>
		<dc:creator>Ray Ingles</dc:creator>
		<pubDate>Wed, 16 Apr 2008 15:47:46 +0000</pubDate>
		<guid isPermaLink="false">http://www.mibgames.co.uk/2008/04/16/militant-atheism/#comment-3691</guid>
		<description>It's a hilarious double-standard that you actually have to pick up a gun and kill somebody to be considered a 'militant' believer, but all you have to do to be considered a 'militant' atheist is write a blog post.</description>
		<content:encoded><![CDATA[<p>It&#8217;s a hilarious double-standard that you actually have to pick up a gun and kill somebody to be considered a &#8216;militant&#8217; believer, but all you have to do to be considered a &#8216;militant&#8217; atheist is write a blog post.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
