<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Noldorin's Blog</title>
	
	<link>http://blog.noldorin.com</link>
	<description>Musings on mathematics, science, technology, philosophy, and the untold wonders of life</description>
	<lastBuildDate>Sat, 17 Nov 2012 04:29:17 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/noldorin-blog" /><feedburner:info uri="noldorin-blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Visitor Stats for 2011</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/YamOWRHOqcA/</link>
		<comments>http://blog.noldorin.com/2012/02/visitor-stats-for-2011/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 23:11:23 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[2011]]></category>
		<category><![CDATA[blog]]></category>
		<category><![CDATA[internet]]></category>
		<category><![CDATA[popularity]]></category>
		<category><![CDATA[posts]]></category>
		<category><![CDATA[referrers]]></category>
		<category><![CDATA[statistics]]></category>
		<category><![CDATA[stats]]></category>
		<category><![CDATA[visitors]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=1080</guid>
		<description><![CDATA[WordPress.com seems to be a lot more into the marketing and publicity side of things these days. Earlier in January I was sent a flashy report article on my blog stats and visitors for the past year (2011). I thought I&#8217;d share a few of them, mainly for amusement, but also in case anyone else [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://wordpress.com/">WordPress.com</a> seems to be a lot more into the marketing and publicity side of things these days. Earlier in January I was sent a flashy report article on my blog stats and visitors for the past year (2011). I thought I&#8217;d share a few of them, mainly for amusement, but also in case anyone else is interested what WordPress monitors on your behalf.</p>
<blockquote><p>The concert hall at the Sydney Opera House holds 2,700 people. This blog was viewed about <strong>19,000</strong> times in 2011. If it were a concert at Sydney Opera House, it would take about 7 sold-out performances for that many people to see it.</p></blockquote>
<p>Yeah, so that still doesn&#8217;t impress me too much. I suppose the analogy works if you presume most people turn up for the opera and leave after a mere 30 seconds or 1 minute.</p>
<blockquote><p>In 2011, there were <strong>6</strong> new posts, growing the total archive of this blog to 62 posts.</p></blockquote>
<p>Okay, I admit it; this was a really poor year in terms of output. I blame that nasty thing called a degree (followed by the even nastier demands of a job). At least you can rest assured that care and effort goes into every post!</p>
<blockquote><p>The top referring sites in 2011 were:</p>
<ul>
<li><a href="http://reddit.com/" target="_blank">reddit.com</a></li>
<li><a href="http://en.wikipedia.org/" target="_blank">en.wikipedia.org</a></li>
<li><a href="http://dotnetkicks.com/" target="_blank">dotnetkicks.com</a></li>
<li><a href="http://noldorin.com/" target="_blank">noldorin.com</a></li>
<li><a href="http://ru.wikipedia.org/" target="_blank">ru.wikipedia.org</a></li>
</ul>
</blockquote>
<p>I think this just proves the best way of getting blog visitors is to spam Reddit. Or link to yourself on Wikipedia. Shameless I know, but it requires minimal effort on my half at least, and maximum benefit for everyone.</p>
<blockquote><p>Most visitors came from The United States. The United Kingdom &amp; Germany were not far behind.</p></blockquote>
<p>Right; English speaking (either natively or to a high level) and technologically advanced nations. Big surprise there. Other notables seem to include: Russia, Sweden, India, Brazil, Egypt, South Africa, Australia.</p>
<p>Quite amusingly, <a href="http://blog.noldorin.com/2011/12/the-hardest-logic-puzzle-ever/">my most popular post of the whole year</a> was posted was only posted several of days from the end, while I was on holidays. That&#8217;s inspiration for you.</p>
<p>So in conclusion, it would seem what these wonderfully informative stats are telling me is a) visitors are almost totally due to viral marketing and much less to content, b) I don&#8217;t really care about the popularity contest, c) nothing I really didn&#8217;t know already.</p>
<p>Until 2013, folks. (Or perhaps not, if the Mayans turn out to be right.)</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/YamOWRHOqcA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2012/02/visitor-stats-for-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.noldorin.com/2012/02/visitor-stats-for-2011/</feedburner:origLink></item>
		<item>
		<title>IEEEXtreme Competition 2011</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/-3Fvb7x0n3g/</link>
		<comments>http://blog.noldorin.com/2012/02/ieeextreme-competition-2011/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 23:27:38 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c++ standard library]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[competitions]]></category>
		<category><![CDATA[contests]]></category>
		<category><![CDATA[google code jam]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[ieee]]></category>
		<category><![CDATA[ieeextreme]]></category>
		<category><![CDATA[imperial college]]></category>
		<category><![CDATA[london]]></category>
		<category><![CDATA[problem solving]]></category>
		<category><![CDATA[programming competitions]]></category>
		<category><![CDATA[sleep]]></category>
		<category><![CDATA[teams]]></category>
		<category><![CDATA[university of london]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=999</guid>
		<description><![CDATA[This post is just a brief nod to the IEEEXtreme Competition that I took part in at the end of last year with a couple of like-minded students at my university. Queen Mary, University of London were kind enough to host the participants from Imperial College. (Unfortunately just a single team, since the others didn&#8217;t [...]]]></description>
				<content:encoded><![CDATA[<p>This post is just a brief nod to the <a href="http://www.ieee.org/membership_services/membership/students/competitions/xtreme/index.html">IEEEXtreme Competition</a> that I took part in at the end of last year with a couple of like-minded students at my university. Queen Mary, University of London were kind enough to host the participants from Imperial College. (Unfortunately just a single team, since the others didn&#8217;t manage to get their registration through in time!</p>
<p>The event was a gruelling but undoubtedly challenging and enjoyable 24 hours of programming solutions to a range of small problems given to us by the competition organisers. Alas, we were restricted to C++ for our solutions (the lesser of two evils when compared to Java), but considering than myself and one of the two other team members were far from regular users, I thought we did a fair job of coping. (We were constantly refreshing ourselves on much of the basics!)</p>
<p>The results were published not too long ago, and I must say I was amazed we managed to rank as high as <a href="http://www.ieee.org/membership_services/membership/students/competitions/xtreme/ieeextreme5officialresults_region.pdf">71 overall</a> (out of some 1,500 teams). In fact, I gather we were somewhere in the 20s at one point, but evidently slipped dramatically when we all lost the desire to keep going about four hours from the end.  What&#8217;s even more astounding is that our lone Imperial College team managed to rank first among the teams from the United Kingdom. Admittedly, this says more about the popularity of this relatively new contest in the UK, especially when one notes how many British teams entered. Eastern European countries unsurprisingly put forth a host of participants. Still, I was moderately pleased with our effort. Our phenomenal team spirit more than made up for any shortcomings, of course.</p>
<p>Oh, and as it turns out, a power outage in that area of London induced a delay of some two hours, mainly spent dashing around the campus. The fire alarm and standing around in the freezing area wasn&#8217;t much appreciated, though I doubt it affected our success in any real way. Though that isn&#8217;t what I&#8217;ll be telling the electricity company, of course, when I claim full competition-related damages.</p>
<p>Most annoyingly of all during the marathon competition, there was a singularly irritating problem relating to dynamic programming that none of our team was able to solve throughout the event &#8212; despite persistent efforts and the fact that the great majority of other team had no problem! The contest had its faults too; the arbitrary swings in difficulty level of many questions often took us by surprise, as the times taken for us to fully solve the questions ranged from 20 minutes to 5 hours to never. I hear most were rather better specified than their counterparts from last year, however.</p>
<p>In all, my day of IEEEXtreme was a perversely enjoyable exercise in frantic coding and sleep deprivation. Probably not one I&#8217;ll repeat in its current form (even if I were still in university), but not one I&#8217;d take back either. I daresay I&#8217;ll be revisiting the similar but less biologically demanding Google Code Jam contest this year, only to fail utterly in the second one, when facing up against some truly super-human competitors.</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/-3Fvb7x0n3g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2012/02/ieeextreme-competition-2011/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.noldorin.com/2012/02/ieeextreme-competition-2011/</feedburner:origLink></item>
		<item>
		<title>The Hardest Logic Puzzle Ever</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/1zMfovHBqjk/</link>
		<comments>http://blog.noldorin.com/2011/12/the-hardest-logic-puzzle-ever/#comments</comments>
		<pubDate>Fri, 30 Dec 2011 02:07:09 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Fun]]></category>
		<category><![CDATA[Maths & Science]]></category>
		<category><![CDATA[boolean algebra]]></category>
		<category><![CDATA[boolean logic]]></category>
		<category><![CDATA[counterfactuals]]></category>
		<category><![CDATA[formal logic]]></category>
		<category><![CDATA[john mccarthy]]></category>
		<category><![CDATA[logic]]></category>
		<category><![CDATA[logic puzzles]]></category>
		<category><![CDATA[logical formula]]></category>
		<category><![CDATA[logical paradox]]></category>
		<category><![CDATA[markup language]]></category>
		<category><![CDATA[material implication]]></category>
		<category><![CDATA[math]]></category>
		<category><![CDATA[mathematical logic]]></category>
		<category><![CDATA[mathematics]]></category>
		<category><![CDATA[natural language]]></category>
		<category><![CDATA[paradox]]></category>
		<category><![CDATA[paradoxes]]></category>
		<category><![CDATA[proofs]]></category>
		<category><![CDATA[propositional calculus]]></category>
		<category><![CDATA[propositional formula]]></category>
		<category><![CDATA[propositional logic]]></category>
		<category><![CDATA[propositional variables]]></category>
		<category><![CDATA[puzzles]]></category>
		<category><![CDATA[raymond smullyan]]></category>
		<category><![CDATA[sentential calculus]]></category>
		<category><![CDATA[sentential logic]]></category>
		<category><![CDATA[the hardest logic puzzle ever]]></category>
		<category><![CDATA[traveller's paradox]]></category>
		<category><![CDATA[XOR]]></category>
		<category><![CDATA[zeroth order logic]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=1033</guid>
		<description><![CDATA[Some time ago I wrote a post about the well-known logic puzzle of The Traveller&#8217;s Paradox and attempted to derive and justify a solution using the formal methods of propositional calculus (zeroth order logic). I return today to another intriguing and somewhat challenging problem within the realm of mathematical logic, albeit with what I hope [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" style="height: 200px;" title="The Three Taoist Gods of Luck (Fu, Lu, and Shou)" src="http://i2.wp.com/upload.wikimedia.org/wikipedia/en/2/23/Mammoth_Ivory_Three_Star_Gods.JPG" alt="Carvings of the gods of Fu, Lu, and Shou; sourced from http://en.wikipedia.org/wiki/File:Mammoth_Ivory_Three_Star_Gods.JPG" data-recalc-dims="1" />Some time ago I wrote a post about the well-known logic puzzle of <a href="http://blog.noldorin.com/2010/03/the-travellers-paradox/">The Traveller&#8217;s Paradox</a> and attempted to derive and justify a solution using the formal methods of propositional calculus (zeroth order logic). I return today to another intriguing and somewhat challenging problem within the realm of mathematical logic, albeit with what I hope is a much clearer approach and argument.</p>
<p>Although &#8220;<a href="http://en.wikipedia.org/wiki/The_hardest_logic_puzzle_ever">The Hardest Logic Puzzle Ever</a>&#8221; is scarcely a logically verifiable statement, the puzzle does indeed have a reputation as a rather tricky logic puzzle (at least among those encountered by laymen) and in any case has a non-trivial solution. The problem has some notable names attached to it, having <a href="http://www.hcs.harvard.edu/~hrp/issues/1996/Boolos.pdf">originally been published</a> in The Harvard Review of Philosophy by the logician George Boolos, but originating with the popular mathematician Raymond Smullyan, and altered slightly by the late computer scientist and AI pioneer John McCarthy.</p>
<p>The puzzle is commonly stated as follows.</p>
<blockquote><p>Three gods A, B, and C are called, in no particular order, True, False, and Random. True always speaks truly, False always speaks falsely, but whether Random speaks truly or falsely is a completely random matter. Your task is to determine the identities of A, B, and C by asking three <a title="Yes-no question" href="http://en.wikipedia.org/wiki/Yes-no_question">yes-no questions</a>; each question must be put to exactly one god. The gods understand English, but will answer all questions in their own language, in which the words for <em>yes</em> and <em>no</em> are <em>da</em> and <em>ja</em>, in some order. You do not know which word means which.</p></blockquote>
<p>At first glance, the problem may appear insurmountable due to the behaviour of god C, yet when we notice that his behaviour is not truly random, but r<em></em>ather only his veracity is &#8212; he otherwise follows all rules of logic. Boolos clarified: &#8220;Whether Random speaks truly or not should be thought of as depending on the flip of a coin hidden in his brain: if the coin comes down heads, he speaks truly; if tails, falsely.&#8221;.</p>
<p>Encountering this puzzle for the first time just in the past week, I made an effort to solve it on my own using a formal approach, as much as possible. As it turns out, I had some success, and hence thought I might share my reasoning here in the form of an article.</p>
<p>Let us begin by setting up the puzzle in the standard language of propositional logic (that is, Boolean algebra). We first define our useful propositional variables and predicates, which are</p>
<ul>
<li><img src="//s0.wp.com/latex.php?latex=R&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="R" title="R" class="latex" />, whether the <em>da</em> response corresponds to <em>yes</em> (absolute truth). $R$ is thus true if <em>da</em> means <em>yes</em> and <em>ja</em> means no, and false if <em>da</em> means no and <em>ja</em> means <em>yes</em>;</li>
<li><img src="//s0.wp.com/latex.php?latex=T&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="T" title="T" class="latex" />, whether a given god (we consider them independently) is telling the truth. Note, this has a well-defined value even for Random (god C), since the context is a specific question and corresponding response.</li>
<li><img src="//s0.wp.com/latex.php?latex=Q&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q" title="Q" class="latex" />, the question (propositional predicate) that is asked to a given god.</li>
</ul>
<p>Note that the latter two variables are semantically valid within only within individual questions. However, because we shall only utilise them within the context of question-response pairs, we need not concern ourselves with this.</p>
<p>There is a number of ways to convert the verbal problem statement into a set of formal logical expressions, but I shall adopt a fairly direct and unambiguous one here. We start by noting two simple facts regarding the truthfulness of a particular yes-no response <img src="//s0.wp.com/latex.php?latex=A&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="A" title="A" class="latex" />.</p>
<p><img src="//s0.wp.com/latex.php?latex=%5Cbegin%7Baligned%7D++T+%26%5Crightarrow+%28A+%5Cleftrightarrow+Q%29+%5C%5C++%5Cneg+T+%26%5Crightarrow+%28A+%5Cleftrightarrow+%5Cneg+Q%29+.++%5Cend%7Baligned%7D++&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="&#92;begin{aligned}  T &amp;&#92;rightarrow (A &#92;leftrightarrow Q) &#92;&#92;  &#92;neg T &amp;&#92;rightarrow (A &#92;leftrightarrow &#92;neg Q) .  &#92;end{aligned}  " title="&#92;begin{aligned}  T &amp;&#92;rightarrow (A &#92;leftrightarrow Q) &#92;&#92;  &#92;neg T &amp;&#92;rightarrow (A &#92;leftrightarrow &#92;neg Q) .  &#92;end{aligned}  " class="latex" /></p>
<p>Note that the biconditional (<img src="//s0.wp.com/latex.php?latex=%5Cleftrightarrow&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="&#92;leftrightarrow" title="&#92;leftrightarrow" class="latex" />) can be interpreted as material (syntactic) equality. This is precisely equivalent to the non-fundamental XNOR (<img src="//s0.wp.com/latex.php?latex=%5Coplus&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="&#92;oplus" title="&#92;oplus" class="latex" />) operator in propositional logic. With a bit of manipulation it can be shown that</p>
<p><img src="//s0.wp.com/latex.php?latex=A+%5Cleftrightarrow+%5Cneg+%28Q+%5Coplus+T%29+.++&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="A &#92;leftrightarrow &#92;neg (Q &#92;oplus T) .  " title="A &#92;leftrightarrow &#92;neg (Q &#92;oplus T) .  " class="latex" /></p>
<p>In other words, the yes-no of any response shall be the absolute (true) answer to the question XNOR whether one is asking a truth-teller.</p>
<p>We must then note the complication to the puzzle introduced by the fact we do not understand the language of the gods. &#8216;da&#8217; could mean either yes or no and &#8216;ja&#8217; conversely. To account for this, we can write two more statements specifically about the da-ja response (denoted <img src="//s0.wp.com/latex.php?latex=B&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="B" title="B" class="latex" />), which take virtually identical forms to before;</p>
<p><img src="//s0.wp.com/latex.php?latex=%5Cbegin%7Baligned%7D++R+%26%5Crightarrow+%28B+%5Cleftrightarrow+A%29+%5C%5C++%5Cneg+R+%26%5Crightarrow+%28B+%5Cleftrightarrow+%5Cneg+A%29+.++%5Cend%7Baligned%7D++&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="&#92;begin{aligned}  R &amp;&#92;rightarrow (B &#92;leftrightarrow A) &#92;&#92;  &#92;neg R &amp;&#92;rightarrow (B &#92;leftrightarrow &#92;neg A) .  &#92;end{aligned}  " title="&#92;begin{aligned}  R &amp;&#92;rightarrow (B &#92;leftrightarrow A) &#92;&#92;  &#92;neg R &amp;&#92;rightarrow (B &#92;leftrightarrow &#92;neg A) .  &#92;end{aligned}  " class="latex" /></p>
<p>Unsurprisingly, this can be rewritten in the same way to use the XNOR operator;</p>
<p><img src="//s0.wp.com/latex.php?latex=B+%5Cleftrightarrow+%5Cneg+%28A+%5Coplus+R%29+.++&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="B &#92;leftrightarrow &#92;neg (A &#92;oplus R) .  " title="B &#92;leftrightarrow &#92;neg (A &#92;oplus R) .  " class="latex" /></p>
<p>Note that the value of <img src="//s0.wp.com/latex.php?latex=B&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="B" title="B" class="latex" /> represents the actual response; that is, it is the single observable of the logical system we have constructured to represent the puzzle.</p>
<p>While we could restrict ourselves to the use of the primitive Boolean operators (AND, OR, and NOT), the use of the XOR operator here facilitates things considerably, due to its special properties (notably commutativity and associativity) and the simplicity it gives our theorems.</p>
<p>Now, combining the two expressions (theorems) for <img src="//s0.wp.com/latex.php?latex=A&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="A" title="A" class="latex" /> and <img src="//s0.wp.com/latex.php?latex=B&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="B" title="B" class="latex" /> (this can be seen easily by considering the biconditional as equality), we can factor out the negations and use associativity of the XOR operator to write</p>
<p><img src="//s0.wp.com/latex.php?latex=%5Cbegin%7Baligned%7D++B+%26%5Cleftrightarrow+%5Cneg+%28%5Cneg+%28Q+%5Coplus+T%29+%5Coplus+R%29+%5C%5C++B+%26%5Cleftrightarrow+Q+%5Coplus+T+%5Coplus+R+.++%5Cend%7Baligned%7D++&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="&#92;begin{aligned}  B &amp;&#92;leftrightarrow &#92;neg (&#92;neg (Q &#92;oplus T) &#92;oplus R) &#92;&#92;  B &amp;&#92;leftrightarrow Q &#92;oplus T &#92;oplus R .  &#92;end{aligned}  " title="&#92;begin{aligned}  B &amp;&#92;leftrightarrow &#92;neg (&#92;neg (Q &#92;oplus T) &#92;oplus R) &#92;&#92;  B &amp;&#92;leftrightarrow Q &#92;oplus T &#92;oplus R .  &#92;end{aligned}  " class="latex" /></p>
<p>We now have an easily manageable form for the da-ja response of a given god. The question now becomes, how do we extract the absolute truth value of the response from this observable variable? Clearly, one has no control over the <img src="//s0.wp.com/latex.php?latex=T&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="T" title="T" class="latex" /> and <img src="//s0.wp.com/latex.php?latex=R&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="R" title="R" class="latex" /> variables, which are predetermined by god being asked the question (and possibly by the flip of a coin) as well as the language of the gods. However, we do have direct and full control over the question to ask, the predicate <img src="//s0.wp.com/latex.php?latex=Q&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q" title="Q" class="latex" />.</p>
<p>In order to extra meaningful (absolute) truth value we first note that any propositional variable XNOR itself is false, thus disappearing from its containing expression. Given that we wish to eliminate the variables <img src="//s0.wp.com/latex.php?latex=T&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="T" title="T" class="latex" /> and <img src="//s0.wp.com/latex.php?latex=R&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="R" title="R" class="latex" /> from the final expression, we can decompose the predicate <img src="//s0.wp.com/latex.php?latex=Q&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q" title="Q" class="latex" />; that is, give it an explicit form.</p>
<p>Let <img src="//s0.wp.com/latex.php?latex=Q+%3D+Q%27+%5Coplus+T+%5Coplus+R&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q = Q&#039; &#92;oplus T &#92;oplus R" title="Q = Q&#039; &#92;oplus T &#92;oplus R" class="latex" />. Hence, we can say</p>
<p><img src="//s0.wp.com/latex.php?latex=%5Cbegin%7Baligned%7D++B+%26%5Cleftrightarrow+Q%27+%5Coplus+T+%5Coplus+R+%5Coplus+T+%5Coplus+R++B+%26%5Cleftrightarrow+Q%27+%5Coplus+%28T+%5Coplus+T%29+%5Coplus+%28R+%5Coplus+R%29++B+%26%5Cleftrightarrow+Q%27+.++%5Cend%7Baligned%7D++&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="&#92;begin{aligned}  B &amp;&#92;leftrightarrow Q&#039; &#92;oplus T &#92;oplus R &#92;oplus T &#92;oplus R  B &amp;&#92;leftrightarrow Q&#039; &#92;oplus (T &#92;oplus T) &#92;oplus (R &#92;oplus R)  B &amp;&#92;leftrightarrow Q&#039; .  &#92;end{aligned}  " title="&#92;begin{aligned}  B &amp;&#92;leftrightarrow Q&#039; &#92;oplus T &#92;oplus R &#92;oplus T &#92;oplus R  B &amp;&#92;leftrightarrow Q&#039; &#92;oplus (T &#92;oplus T) &#92;oplus (R &#92;oplus R)  B &amp;&#92;leftrightarrow Q&#039; .  &#92;end{aligned}  " class="latex" /></p>
<p>At this point we almost have a solution to the puzzle. We have shown that one can obtain an accurate true-false response to any question we wish to ask any god. As long as we ask a question of the form <img src="//s0.wp.com/latex.php?latex=Q&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q" title="Q" class="latex" />, then a response (effectively to question <img src="//s0.wp.com/latex.php?latex=Q%27&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q&#039;" title="Q&#039;" class="latex" />) of &#8216;da&#8217; always corresponds to truth and &#8216;ja&#8217; always to falsehood.</p>
<p>There are a number of ways to use this to reveal the identities of the three gods. The simplest and most direct, I feel, is to ask gods A and B whether they are Random. This definitively indicates the Random god (since if both answer in the negative, then it must be god C by elimination). One can then simply ask either of the remaining gods (not Random) whether he is True, deducing the identities of the True and False gods in a single question. Hence, we have totally and provably solved the puzzle within the desired three questions.</p>
<p><span id="more-1033"></span>The only task that now remains is to translate the formal solution, which we have stated as a set of predicates of form <img src="//s0.wp.com/latex.php?latex=Q+%3D+Q%27+%5Coplus+T+%5Coplus+R&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q = Q&#039; &#92;oplus T &#92;oplus R" title="Q = Q&#039; &#92;oplus T &#92;oplus R" class="latex" /> (in zeroth-order logic), into natural language. Since the first question to ask is invariably the most intricate, and the second or third must be conditional on previous answer(s) in some way, it makes sense only to consider the verbal representation of the first as an exercise.</p>
<p>George Boolos (the populariser of the puzzle) proposed asking the following initial question.</p>
<blockquote><p>Does <em>da</em> mean <em>yes</em> <a title="If and only if" href="http://en.wikipedia.org/wiki/If_and_only_if">iff</a> you are True <a title="If and only if" href="http://en.wikipedia.org/wiki/If_and_only_if">iff</a> B is Random?</p></blockquote>
<p>When we recall that <em>iff</em> (if and only if), i.e. the biconditional connective, is logically equivalent to the XNOR operator, it is quite straightforward to see that this is of the above proposed form for <img src="//s0.wp.com/latex.php?latex=Q&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q" title="Q" class="latex" />. (Note that a triple of formulas connected either by a pair of XOR or pair of XNOR operators form the equivalent expression.)</p>
<p>The <a href="http://en.wikipedia.org/wiki/The_hardest_logic_puzzle_ever#The_solution">Wikipedia entry</a> for the logic puzzle gives only a slight variation on the above that is fully equivalent;</p>
<p>Are an odd number of the following statements true: you are False, <em>da</em> means <em>yes</em>, B is Random.</p>
<p>Start by considering how the operations <img src="//s0.wp.com/latex.php?latex=X+%5Coplus+%5Ctop&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="X &#92;oplus &#92;top" title="X &#92;oplus &#92;top" class="latex" /> and <img src="//s0.wp.com/latex.php?latex=X+%5Coplus+%5Cbot&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="X &#92;oplus &#92;bot" title="X &#92;oplus &#92;bot" class="latex" /> change the truth value of <img src="//s0.wp.com/latex.php?latex=X&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="X" title="X" class="latex" />. The former clearly inverts the value, while the latter leaves it unchanged. In order words, each XOR with a formula that is true inverts the overall truth value. Hence, considering an arbitrary number of formulae XORed together, we must deduce that if an odd number of statements are true, then the entire expression must in fact be true (and conversely if an even number of statements are true then the entire expression is false).</p>
<p>We now come to a somewhat different form of verbal solution, first proposed by T. S. Roberts (Journal of Philosophical Logic, 2001);</p>
<blockquote><p>If I asked you Q&#8217;, would you say <em>ja</em>?</p></blockquote>
<p>(We do not assume for now that <img src="//s0.wp.com/latex.php?latex=Q%27&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q&#039;" title="Q&#039;" class="latex" /> is the same variable as used in the formal solution given above.)</p>
<p>A counterfactual may be thought of as a nested question; that is, an &#8216;if-then&#8217; style of statement/predicate. Let us first consider the slightly simpler question: &#8220;If I asked you Q&#8217;, what would you answer?&#8221;. It should not be hard to see that this essential form of the counterfactual is equivalent to <img src="//s0.wp.com/latex.php?latex=Q%27+%5Coplus+T&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q&#039; &#92;oplus T" title="Q&#039; &#92;oplus T" class="latex" />. The additional &#8220;would you say <em>ja</em>?&#8221; (as opposed to simply &#8220;what would you say?&#8221;) may be evaluated as a post-condition, equating <img src="//s0.wp.com/latex.php?latex=Q%27+%5Coplus+T&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q&#039; &#92;oplus T" title="Q&#039; &#92;oplus T" class="latex" /> to <img src="//s0.wp.com/latex.php?latex=ja&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="ja" title="ja" class="latex" />. Formally, we may infer</p>
<p><img src="//s0.wp.com/latex.php?latex=%5Cbegin%7Baligned%7D++Q%27+%5Coplus+T+%3D+R+%2C%5C%5C++%5Cneg+%28%28Q%27+%5Coplus+T%29+%5Coplus+R%29+%2C%5C%5C++Q%27+%5Coplus+T+%5Coplus+%5Cneg+R+.++%5Cend%7Baligned%7D++&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="&#92;begin{aligned}  Q&#039; &#92;oplus T = R ,&#92;&#92;  &#92;neg ((Q&#039; &#92;oplus T) &#92;oplus R) ,&#92;&#92;  Q&#039; &#92;oplus T &#92;oplus &#92;neg R .  &#92;end{aligned}  " title="&#92;begin{aligned}  Q&#039; &#92;oplus T = R ,&#92;&#92;  &#92;neg ((Q&#039; &#92;oplus T) &#92;oplus R) ,&#92;&#92;  Q&#039; &#92;oplus T &#92;oplus &#92;neg R .  &#92;end{aligned}  " class="latex" /></p>
<p>Since <img src="//s0.wp.com/latex.php?latex=%5Cneg+R&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="&#92;neg R" title="&#92;neg R" class="latex" /> represents &#8220;ja&#8221; under our labelling, this formula is clearly equivalent to the expression for <img src="//s0.wp.com/latex.php?latex=Q&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q" title="Q" class="latex" /> reached at the end of the previous section. Hence by equating the separate expressions, the two <img src="//s0.wp.com/latex.php?latex=Q%27&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="Q&#039;" title="Q&#039;" class="latex" /> originally assumed to be independent are in fact rendered identical.</p>
<p>This concludes my article on The Hardest Logic Puzzle ever. I hope that I&#8217;ve given readers some appreciation for a formal (mathematical) solution to this intriguing puzzle, and indeed an insight into the equivalence of the various forms of solutions that one might posit from thinking about the problem holistically. No doubt, an exhaustive truth table would have proven the isomorphisms just as well, except that I felt they added little to overall understanding. If anyone has an additional alternative solution or general comments on the preceding, by all means please share via the comments section.</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/1zMfovHBqjk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2011/12/the-hardest-logic-puzzle-ever/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.noldorin.com/2011/12/the-hardest-logic-puzzle-ever/</feedburner:origLink></item>
		<item>
		<title>Losing faith in Apple</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/7B6qCwpgz7g/</link>
		<comments>http://blog.noldorin.com/2011/11/losing-faith-in-apple/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 21:54:05 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[android phone]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[carphone warehouse]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[google android]]></category>
		<category><![CDATA[hardware]]></category>
		<category><![CDATA[ios]]></category>
		<category><![CDATA[ios 5]]></category>
		<category><![CDATA[iphoen 4s]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[iphone 3gs]]></category>
		<category><![CDATA[iphone 5]]></category>
		<category><![CDATA[microsoft]]></category>
		<category><![CDATA[mobile phones]]></category>
		<category><![CDATA[mobiles]]></category>
		<category><![CDATA[o2]]></category>
		<category><![CDATA[phone networks]]></category>
		<category><![CDATA[phone stores]]></category>
		<category><![CDATA[phones]]></category>
		<category><![CDATA[rants]]></category>
		<category><![CDATA[siri]]></category>
		<category><![CDATA[telephones]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows phone]]></category>
		<category><![CDATA[windows phone 7]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=1017</guid>
		<description><![CDATA[The iPhone 4S model was released by Apple just under a month ago here in the United Kingdom. Having gotten over the general disappointment of a late (delayed?) release and no new hardware (the widely-rumoured iPhone 5 model), I was soon excited by some of the new software features offered by iOS 5 on the [...]]]></description>
				<content:encoded><![CDATA[<p><img class="alignright" title="iPhone 4S" src="http://i2.wp.com/upload.wikimedia.org/wikipedia/commons/thumb/d/d2/IPhone_4S_No_shadow.png/346px-IPhone_4S_No_shadow.png?w=200" alt="" data-recalc-dims="1" />The <strong><a href="http://www.apple.com/iphone/">i</a></strong><strong><a href="http://www.apple.com/iphone/">Phone 4S</a></strong> model was released by Apple just under a month ago here in the United Kingdom. Having gotten over the general disappointment of a late (delayed?) release and no new hardware (the widely-rumoured iPhone 5 model), I was soon excited by some of the new software features offered by iOS 5 on the new iPhone model, most notably the advanced voice recognition system <em>Siri</em>. The much-improved processing power, not to mention updates to the camera and external antenna were also appreciated, though in some sense just reaffirmed what the more demanding technical consumers were expecting in the original iPhone 4 release.</p>
<p><span style="color: #993300;"><em><strong>Warning: Rant ahead. Apple fan-boys, avert your gazes.</strong></em></span></p>
<p><strong>Four weeks later, and I&#8217;m still sitting here with my two-and-a-bit year old iPhone 3GS.</strong> I was due for an upgrade on my O2 contract just a week after the initial release, and contacted both O2 directly and my local Carphone Warehouse retailer to find out what the status of this upgrade was. Apparently, not only was the retailer entirely out of stock of the new iPhone 4S (in its warehouses or otherwise), but they had no word on when any further shipments would be arriving soon. In the ensuing three weeks, I&#8217;ve made the personal effort of checking for new stock updates every few days, only to be told that a new delivery should be coming soon. Besides a brief restocking a week ago <strong></strong>(that didn&#8217;t include any of the 64 GB versions), I have repeatedly and consistently been told to come back and enquire again in a few days regarding stock. Now, it&#8217;s hard to blame this on Carphone Warehouse, since every employee I spoke to seemed about as perplexed as me.</p>
<p>To me,<strong> the simple fact that Apple has failed to sufficiently stock one of their primary UK retailers with the new iPhone model for almost 4 weeks now</strong> is absolutely shambolic. I mean, how can one of the largest companies in the world, which prides themselves on customer satisfaction, make such an atrocious mess of logistics? It&#8217;s not like Apple has just entered a technology sector with a minor new product no-one has heard about or might consider buying. While undoubtedly initial sales figures for the new iPhone have been quite impressive, I can&#8217;t help but think Apple has severely damaged customer relations in the UK, if not suffered a notable loss in sales. At this point in time, I&#8217;m really struggling to find that irrational love for a company that so many Apple fan-boys have latched onto over recent years. Sure, my current phone is an older iPhone model and my laptop a MacBook Pro, but I bought these products mainly because they far ahead of the field at the time of release and merited their price tags. With outstanding-looking Android phones currently on the market, and some impressive Windows Phone 7.5 models just released, I&#8217;m quickly rethinking whether to let myself be led around by Apple any more.</p>
<p><strong>In short: get your act together, Apple</strong>, and don&#8217;t expect to remain the dominant player in consumer technology whilst sitting there and twiddling your thumbs. You&#8217;ve done of good work to earn the respect of millions of users throughout the world (not least through clever marketing), but realise that you&#8217;ve no god-given entitlement to keep it in the future.</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/7B6qCwpgz7g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2011/11/losing-faith-in-apple/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://blog.noldorin.com/2011/11/losing-faith-in-apple/</feedburner:origLink></item>
		<item>
		<title>Starting Tutoring</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/S9gdQEoIg0E/</link>
		<comments>http://blog.noldorin.com/2011/10/starting-tutoring/#comments</comments>
		<pubDate>Thu, 06 Oct 2011 10:24:44 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Maths & Science]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[career]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[electronics]]></category>
		<category><![CDATA[english language]]></category>
		<category><![CDATA[english literature]]></category>
		<category><![CDATA[essex]]></category>
		<category><![CDATA[graduation]]></category>
		<category><![CDATA[information technology]]></category>
		<category><![CDATA[IT]]></category>
		<category><![CDATA[jobs]]></category>
		<category><![CDATA[london]]></category>
		<category><![CDATA[mathematics]]></category>
		<category><![CDATA[maths]]></category>
		<category><![CDATA[microsoft robotics developer studio]]></category>
		<category><![CDATA[north london]]></category>
		<category><![CDATA[PhD]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[tutor]]></category>
		<category><![CDATA[tutoring]]></category>
		<category><![CDATA[university]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=1011</guid>
		<description><![CDATA[So this is sort of an overdue update where things are with my life, as well as a bit of self-promotion for the work I&#8217;m going to be doing over the next 9 months or so&#8230; The first thing that needs to be mentioned is my total relief at no long being a student of [...]]]></description>
				<content:encoded><![CDATA[<p>So this is sort of an overdue update where things are with my life, as well as a bit of self-promotion for the work I&#8217;m going to be doing over the next 9 months or so&#8230;</p>
<p>The first thing that needs to be mentioned is my total relief at no long being a student of physics. Well alright, it wasn&#8217;t all that bad. To be fair, there were many parts of my degree I enjoyed, yet unfortunately my current feelings seem to be dominated by a few painful lecture courses and exams! In any case, I am now happy to announce that I&#8217;ve graduated with 2:1 honours in theoretical physics at a world-class university.</p>
<p>Before I commit myself to the unavoidable drudgery of a full-time career, or more likely (given my talent for procrastination) a PhD course, the plan is to take a very non-committal year out &#8212; post-university gap year if you like. More on future plans to come in another post, but for now I wanted to mention that I&#8217;m going to be doing some part-time month over the coming year. Specifically, I will be working as a <strong>private tutor in the areas of mathematics, physics, electronics, computing, and English language/literature</strong>. My plan is to do this on an ad-hoc basis alongside other potential freelancing work. Learning and particular pedagogy is something I&#8217;m very passionate about. For anyone that may just happen to stumble across this post, I am offering to tutor secondary school students as well as adult learners in the <strong>N/NE London and SW Essex regions</strong> in these subjects, focusing on GCSE and A-level courses, but willing to accommodate to other courses.</p>
<p>If you&#8217;re at all interested, you can check out my <strong><a href="http://www.firsttutors.com/uk/tutor/alex.maths.physics.electronics.computer-studies-it.english">profile on <em>First Tutors</em></a></strong>. Feel free to contact me either via the contact form on this website, or via the First Tutors website.</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/S9gdQEoIg0E" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2011/10/starting-tutoring/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://blog.noldorin.com/2011/10/starting-tutoring/</feedburner:origLink></item>
		<item>
		<title>Installing Windows 7 from an Upgrade Disk</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/CSxaQK4K0Xc/</link>
		<comments>http://blog.noldorin.com/2011/05/installing-windows-7-from-an-upgrade-disk/#comments</comments>
		<pubDate>Thu, 19 May 2011 01:32:50 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[boot camp]]></category>
		<category><![CDATA[bootcamp]]></category>
		<category><![CDATA[computer]]></category>
		<category><![CDATA[installation]]></category>
		<category><![CDATA[installation disk]]></category>
		<category><![CDATA[license key]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[macbook]]></category>
		<category><![CDATA[macbook pro]]></category>
		<category><![CDATA[operating system]]></category>
		<category><![CDATA[upgrade disk]]></category>
		<category><![CDATA[verification code]]></category>
		<category><![CDATA[verification key]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows 7]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=996</guid>
		<description><![CDATA[Just a month or so ago now I received my shiny new MacBook Pro. While the matter of a long-time Microsoft fan selling out his soul so easily is the subject for another day, it is worth mentioning that I did not (indeed could not!) ditch the Windows operating system. My initial thoughts were fairly [...]]]></description>
				<content:encoded><![CDATA[<p>Just a month or so ago now I received my shiny new MacBook Pro. While the matter of a long-time Microsoft fan selling out his soul so easily is the subject for another day, it is worth mentioning that I did not (indeed could not!) ditch the Windows operating system. My initial thoughts were fairly optimistic &#8211; all Macs now come with a utility called <em>Boot Camp</em>, which provides official support for installing a full copy of Windows alongside the existing OS X installation.</p>
<p><img class="alignright size-medium wp-image-997" title="Windows 7 product boxes" src="http://i1.wp.com/blog.noldorin.com/wp-content/uploads/2011/05/Windows-7-Box.png?h=200" alt="" data-recalc-dims="1" />My problems, however, began when I started to read the Boot Camp installation guide. To my horror, in a clear notice in the guide, I was told that only a <em>full installation disk</em> for Windows can be used to install a Boot Camp (Windows) partition on the machine. Now, having long used Windows Vista on a previous laptop (which I was in the process of retiring), and given my purchase of a Windows 7 Ultimate upgrade disk less than a year earlier, I was most reluctant to shell out another larger sum of cash just to get Windows 7 running on my MacBook Pro. As it happens, my stubbornness insisted that I proceed with the Boot Camp installation anyway. (A few quickly researched articles online seemed to suggest I <em>might</em> have luck doing this.) In fact, I managed to use the upgrade disk to get as far as the verification code screen in the setup, before I decided things weren&#8217;t going to happen. Long story short: I played around with things for a while, eventually found a Microsoft support number to call, and had a very helpful and knowledgeable support technician guide me through the end of the installation and activation process.</p>
<p>As there appears to be minimal information regarding this process online, I thought I would post a short set of instructions here for all who are interested. Myself, I was much reassured to know that <em>it is possible to make a clean installation of Windows (7) from an upgrade disk and activate the copy</em>. While I have not tried the process on a machine other than my MacBook / outside of Boot Camp, I was reliabily informed that the process is no different. These are the steps to follow:</p>
<ol>
<li>Insert the Windows Upgrade disk.</li>
<li>Follow the setup wizard and select the &#8220;clean install&#8221; option.</li>
<li>Windows should proceed to install successfully, and after a few reboots, you will reach the license key screen.</li>
<li>Leave the box for the license key blank and continue.</li>
<li>The installation should complete and you should be able to temporarily use Windows in &#8220;trial&#8221; mode (unactivated license).</li>
<li>Reboot the machine with the upgrade disk still in the drive.</li>
<li>When the setup screen loads, now select the &#8220;upgrade&#8221; option.</li>
<li>The setup should proceed to perform an &#8220;upgrade&#8221;. In fact, you are just &#8220;upgrading&#8221; Windows 7 to Windows 7 (in my case) &#8211; this is required for the sake of license activation.</li>
<li>When the upgrade process completes, log on to your administrator account.</li>
<li>Open the <em>Computer Properties</em> window (Control Panel\System and Security\System).</li>
<li>At the bottom of the page is the <em>Windows activation</em> section. Select the &#8220;Change product key&#8221; option.</li>
<li>Enter the product key for your Windows Upgrade disk, and voila, you should have a full licensed copy of Windows in your machine.</li>
<li>(If the previous activation step did not work, try the phone activation upon failure, which is virtually guaranteed to succeed.)</li>
</ol>
<p>While this process is somewhat non-intuitive and poorly documented, it is nonetheless quite possible. (I suspect there may be a loophole that allows customers of only upgrade disks to install full licensed versions of Windows, which explains the lack of information on the matter.) Either way, I hope this short guide helps save others the moderate amount of pain and trouble I had trying to work around this issue myself! I would be pleased to hear of any other success stories.</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/CSxaQK4K0Xc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2011/05/installing-windows-7-from-an-upgrade-disk/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<feedburner:origLink>http://blog.noldorin.com/2011/05/installing-windows-7-from-an-upgrade-disk/</feedburner:origLink></item>
		<item>
		<title>Musical Gem of the Week #15</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/zQTGozKU7hc/</link>
		<comments>http://blog.noldorin.com/2011/03/musical-gem-of-the-week-15/#comments</comments>
		<pubDate>Sun, 27 Mar 2011 16:39:10 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Arts & Humanities]]></category>
		<category><![CDATA[20th century composer]]></category>
		<category><![CDATA[adagio for strings]]></category>
		<category><![CDATA[adagio in g minor]]></category>
		<category><![CDATA[albinoni]]></category>
		<category><![CDATA[baroque]]></category>
		<category><![CDATA[baroque music]]></category>
		<category><![CDATA[baroque period]]></category>
		<category><![CDATA[chamber music]]></category>
		<category><![CDATA[classical music]]></category>
		<category><![CDATA[italian composers]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[musical hoax]]></category>
		<category><![CDATA[neo-baroque]]></category>
		<category><![CDATA[neo-baroque music]]></category>
		<category><![CDATA[organ music]]></category>
		<category><![CDATA[remo giazotto]]></category>
		<category><![CDATA[tomaso albinoni]]></category>
		<category><![CDATA[venetian composers]]></category>
		<category><![CDATA[violin music]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=976</guid>
		<description><![CDATA[Moving forward in time to the 1950s, we return with this piece to the style of Vivaldi and Bach. Albinoni&#8217;s Adagio in G minor was for some time thought to be be a work of the well-known 18th century Italian composer Tomaso Albinoni, yet is now accepted as a Neo-Baroque work of the modern biographer [...]]]></description>
				<content:encoded><![CDATA[<div class="wp-caption alignright" style="width: 210px"><img title="Tomaso Albinoni" src="http://i2.wp.com/upload.wikimedia.org/wikipedia/commons/2/21/Albinoni.jpg?w=200" alt="" data-recalc-dims="1" /><p class="wp-caption-text">Portrait of Tomaso Albinoni, to whom the piece is commonly misattributed.</p></div>
<p>Moving forward in time to the 1950s, we return with this piece to the style of Vivaldi and Bach. Albinoni&#8217;s <a href="http://en.wikipedia.org/wiki/Adagio_in_G_minor">Adagio in G minor</a> was for some time thought to be be a work of the well-known 18th century Italian composer <a href="http://en.wikipedia.org/wiki/Tomaso_Albinoni">Tomaso Albinoni</a>, yet is now accepted as a Neo-Baroque work of the modern biographer of Albinoni <a href="http://en.wikipedia.org/wiki/Remo_Giazotto">Remo Giazotto</a> (with just perhaps some inspiration from an original Albinoni manuscript). The name and common attribution have nonetheless stuck, even to this day.</p>
<p>Though often described as a musical hoax, passing off a work as one by a famous master was a relatively common practice by lesser-known composers from the 19th century onwards, done in order to gain widespread recognition. In this sense, Giazotto has certainly succeeded, but moreover, he has created a masterpiece of modern classical music and an unforgettable melody of sombre.</p>
<p><strong></strong><strong><a href="http://noldorin.com/media/music/AlbinoniAdagioForStrings.mp3">Listen or Download Here</a></strong></p>
<p>(Performed by the Leningrad Chamber Orchestra.)</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/zQTGozKU7hc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2011/03/musical-gem-of-the-week-15/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://noldorin.com/media/music/AlbinoniAdagioForStrings.mp3" length="7017997" type="audio/mpeg" />
		<feedburner:origLink>http://blog.noldorin.com/2011/03/musical-gem-of-the-week-15/</feedburner:origLink></item>
		<item>
		<title>Astronomy Picture of the Day on your Desktop</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/3GhzlbNxEwk/</link>
		<comments>http://blog.noldorin.com/2011/03/apod-on-your-desktop/#comments</comments>
		<pubDate>Sun, 13 Mar 2011 02:15:29 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Arts & Humanities]]></category>
		<category><![CDATA[Fun]]></category>
		<category><![CDATA[Maths & Science]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[APOD]]></category>
		<category><![CDATA[APOD wallpaper]]></category>
		<category><![CDATA[astronomy]]></category>
		<category><![CDATA[astronomy picture of the day]]></category>
		<category><![CDATA[computer wallpapers]]></category>
		<category><![CDATA[cosmos]]></category>
		<category><![CDATA[desktop]]></category>
		<category><![CDATA[desktop background]]></category>
		<category><![CDATA[desktop pictures]]></category>
		<category><![CDATA[desktop wallpaper]]></category>
		<category><![CDATA[galaxies]]></category>
		<category><![CDATA[moon]]></category>
		<category><![CDATA[NASA]]></category>
		<category><![CDATA[outer space]]></category>
		<category><![CDATA[planets]]></category>
		<category><![CDATA[solar system]]></category>
		<category><![CDATA[space]]></category>
		<category><![CDATA[stars]]></category>
		<category><![CDATA[universe]]></category>
		<category><![CDATA[windows]]></category>
		<category><![CDATA[windows desktop]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=970</guid>
		<description><![CDATA[It&#8217;s a universal fact that computer wallpapers never stay fun for long. No matter how pretty the picture is, staring at the same desktop each day can get a little tiresome. (Okay, so if you&#8217;re anything like me, the desktop is continuously obscured by masses of windows, but we all know that&#8217;s irrelevant.) NASA have [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s a universal fact that computer wallpapers never stay fun for long. No matter how pretty the picture is, staring at the same desktop each day can get a little tiresome. (Okay, so if you&#8217;re anything like me, the desktop is continuously obscured by masses of windows, but we all know that&#8217;s irrelevant.)</p>
<div class="wp-caption alignright" style="width: 330px"><a href="http://apod.nasa.gov/apod/ap110311.html"><img title="AE Aurigae and the Flaming Star Nebula " src="http://i0.wp.com/apod.nasa.gov/apod/image/1103/IC405FlamingstarDetail_geissinger900.jpg?w=320" alt="" data-recalc-dims="1" /></a><p class="wp-caption-text">AE Aurigae and the Flaming Star Nebula. Image Credit &amp; Copyright: Rolf Geissinger.</p></div>
<p>NASA have for years now run the wonderful <em><a href="http://apod.nasa.gov/apod/">Astronomy Picture of the Day </a></em>website, featuring a new (and almost invariably stunning) image of outer space or some astronomical phenomenon &#8211; from our own moon, to neighbouring planets, stars, and galaxies. Even better these days, the pictures are inevitably high-resolution, making them ideal for desktop wallpapers.</p>
<p>As it happens, some clever guy came up with the idea of creating a program to run in the background and automatically update your desktop each day with the latest astronomical picture, published by NASA on their website. The application, called <em>APOD Wallpaper</em>, is available to <strong><a href="http://sites.google.com/site/apodwallpaper/">download and install </a></strong>on your Windows machine, and having used it for roughly a week now, I can already highly recommend this handy little app. As a student of physics (and someone with a particular interest in astrophysics and cosmology), this has quickly become a must-have for my laptop; yet who could not appreciate the beauty of these pictures?</p>
<p>May you never tire of your desktop again!</p>
<p><strong>Update</strong></p>
<p>Having just gotten hold of my lovely new MacBook Pro, I&#8217;ve had a chance to play around with getting an automatic APOD wallpaper on OS X too. As it turns out a certain scripting guru (Harold Bakker) has written a script to automatically update the OS X desktop wallpaper with the latest APOD and has kindly <a href="http://www.haroldbakker.com/personal/apod.php">put it on his website</a>. It&#8217;s slightly less trivial to setup than the Windows app, though he provides clear instructions on how to create a <em>cron</em> job for automatic updates&#8230; it&#8217;s been working perfectly for me so far!</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/3GhzlbNxEwk" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2011/03/apod-on-your-desktop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.noldorin.com/2011/03/apod-on-your-desktop/</feedburner:origLink></item>
		<item>
		<title>Musical Gem of the Week #14</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/_uHL1pbVrpw/</link>
		<comments>http://blog.noldorin.com/2011/03/musical-gem-of-the-week-14/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 03:08:58 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Arts & Humanities]]></category>
		<category><![CDATA[20th century composers]]></category>
		<category><![CDATA[Andrés Segovia]]></category>
		<category><![CDATA[classical guitar]]></category>
		<category><![CDATA[classical music]]></category>
		<category><![CDATA[concerto]]></category>
		<category><![CDATA[Concierto de Aranjuez]]></category>
		<category><![CDATA[Fantasia para un gentilhombre]]></category>
		<category><![CDATA[guitar]]></category>
		<category><![CDATA[guitar music]]></category>
		<category><![CDATA[Joaquín Rodrigo]]></category>
		<category><![CDATA[modern classical music]]></category>
		<category><![CDATA[music]]></category>
		<category><![CDATA[orcherstral music]]></category>
		<category><![CDATA[spanish composers]]></category>
		<category><![CDATA[spanish guitar]]></category>
		<category><![CDATA[spanish music]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=932</guid>
		<description><![CDATA[It&#8217;s been some time since my last installment in this series, but despair not, there is more to come &#8212; beginning with a new modern masterpiece. Let me also say that I fully intend to restore a bit of regularity to this series! Joaquin Rodrígo is arguably the greatest composer in the history of Spanish [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://i1.wp.com/blog.noldorin.com/wp-content/uploads/2011/03/classical_guitar.png"><img class="alignright size-medium wp-image-960" title="Classical (Spanish) guitar" src="http://i1.wp.com/blog.noldorin.com/wp-content/uploads/2011/03/classical_guitar.png?h=300" alt="" data-recalc-dims="1" /></a>It&#8217;s been some time since my last installment in this series, but despair not, there is more to come &#8212; beginning with a new modern masterpiece. Let me also say that I fully intend to restore a bit of regularity to this series!</p>
<p><a href="http://en.wikipedia.org/wiki/Joaqu%C3%ADn_Rodrigo">Joaquin Rodrígo</a> is arguably the greatest composer in the history of Spanish guitar music, though it was far from all he composed. His life, spanning almost the entirety of the 20th century, produced two great and enduring works. The more popular is the <em>Concertio de Aranjuez</em>, but it is his <em>Fantasia para un gentilhombre</em>, which I prefer and which I wish to introduce here. The name literally means &#8220;fantasy for a gentleman&#8221;; the gentleman in question here being the virtuoso guitarist <a href="http://en.wikipedia.org/wiki/Andres_Segovia">Andrés Segovia</a>. The piece itself draws inspiration from Spanish folk music, retaining both its lively and lyrical characteristics while making superb use of the classical orchestra. All in all, a true delight.</p>
<p><strong>Watch and Listen:</strong></p>
<p><a href="http://www.youtube.com/watch?v=_JAsA078XBY"><strong>1st Movement, Villano y Ricercare</strong></a></p>
<p><strong><a href="http://www.youtube.com/watch?v=ZCUkYSdCoTg">2nd Movement, Españoleta y Fanfare</a></strong></p>
<p><strong><a href="http://www.youtube.com/watch?v=ydZ57vkTWr0">3rd Movement, Danza de las Hachas</a></strong></p>
<p><strong><a href="http://www.youtube.com/watch?v=2L--xXEck84">4th Movement, Canario</a></strong><a href="http://www.youtube.com/watch?v=2L--xXEck84"></a></p>
<p>(Performed by Narciso Yepes.)</p>
<p>(Unfortunately I couldn&#8217;t find any freely available download, so YouTube will make do! If you&#8217;re looking for a good performance to buy though, I can definitely recommend one by Pepe Romero and the Academy of St. Martin in the Fields.)</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/_uHL1pbVrpw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2011/03/musical-gem-of-the-week-14/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://blog.noldorin.com/2011/03/musical-gem-of-the-week-14/</feedburner:origLink></item>
		<item>
		<title>KD-Trees for .NET</title>
		<link>http://feedproxy.google.com/~r/noldorin-blog/~3/lY29rv31MKo/</link>
		<comments>http://blog.noldorin.com/2011/03/kd-trees-for-dotnet/#comments</comments>
		<pubDate>Tue, 01 Mar 2011 01:31:24 +0000</pubDate>
		<dc:creator>Noldorin</dc:creator>
				<category><![CDATA[Maths & Science]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[.net]]></category>
		<category><![CDATA[.net 4.0]]></category>
		<category><![CDATA[algorithms]]></category>
		<category><![CDATA[astronomy]]></category>
		<category><![CDATA[binary trees]]></category>
		<category><![CDATA[bsp trees]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[c# 4.0]]></category>
		<category><![CDATA[computational physics]]></category>
		<category><![CDATA[data structures]]></category>
		<category><![CDATA[generic arithmetic]]></category>
		<category><![CDATA[hipparcos catalogue]]></category>
		<category><![CDATA[kd trees]]></category>
		<category><![CDATA[math.net]]></category>
		<category><![CDATA[math.net numerics]]></category>
		<category><![CDATA[nearest neighbour]]></category>
		<category><![CDATA[octrees]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[quadtrees]]></category>
		<category><![CDATA[range search]]></category>
		<category><![CDATA[space partitioning]]></category>
		<category><![CDATA[star catalogues]]></category>
		<category><![CDATA[stars]]></category>
		<category><![CDATA[tree structures]]></category>

		<guid isPermaLink="false">http://blog.noldorin.com/?p=952</guid>
		<description><![CDATA[The kd-tree is a well-known data structure, which alongside quadtrees and octrees, is commonly used for the task of space partitioning. That is, it aims to represent a set of points in k-dimensional space in a way that is efficient to access. Kd-trees, as do all binary trees, have the notable advantage of an average [...]]]></description>
				<content:encoded><![CDATA[<p>The <strong><a href="http://en.wikipedia.org/wiki/Kd-tree">kd-tree</a></strong> is a well-known data structure, which alongside quadtrees and octrees, is commonly used for the task of <a href="http://en.wikipedia.org/wiki/Space_partitioning">space partitioning</a>. That is, it aims to represent a set of points in k-dimensional space in a way that is efficient to access. Kd-trees, as do all binary trees, have the notable advantage of an <img src="//s0.wp.com/latex.php?latex=O%28%5Clog+n%29&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="O(&#92;log n)" title="O(&#92;log n)" class="latex" /> average search time, far superior to the naive <img src="//s0.wp.com/latex.php?latex=O%28n%29&#038;bg=ffffff&#038;fg=000&#038;s=0" alt="O(n)" title="O(n)" class="latex" /> search.</p>
<p>While such trees perhaps have their best known application in computer graphics, I discovered them here in relation to a <a href="https://launchpad.net/fermisim">computational physics project</a> on which I am currently working. For those who are curious about the context, I have recently been doing some statistical analysis on the distribution stars using the Hipparcos catalogue. Unfortunately due to sheer number of stars (100,000+), performing a nearest neighbour search or range search on each star in 3D (Euclidean) space is simply infeasible without the use of a clever algorithm. This is how I discovered the wonder of kd-trees, reducing a task that would otherwise take days to several minutes.</p>
<p>The software I am writing for this project happens to be in C# 4.0, and upon a bit of investigation, I discovered that there exists no (decent) implementation of the kd-tree structure and its algorithms for .NET.  Thus, with a bit of help from the Wikipedia article and a paper I dug up, I decided to have a go at a generic implementation. Now that it is complete and tested, I can gladly declare that the job was not half as easy as I expected (but somehow quite rewarding)!</p>
<p>The following features have been implemented (and fully documented with XML comments).</p>
<ul>
<li>Tree construction</li>
<li>Dynamic node addition</li>
<li>Dynamic node removal</li>
<li>Nearest neighbour search</li>
<li>Range search</li>
</ul>
<p>I&#8217;ve now uploaded the complete code for the implementation, which is available below as several C# code files. Note that you will also need the (wonderful) <a href="http://numerics.mathdotnet.com/">Math.NET Numerics</a> library to compile things &#8211; it provides the generic vector type and a few other handy things. (You can probably adapt the code easily enough if you don&#8217;t fancy having  this dependency.)</p>
<p><strong>Downloads</strong></p>
<p><em>(All code is licensed under the <a href="http://www.opensource.org/licenses/mit-license.php">MIT license</a>. Copyright 2011 Alex Regueiro.)</em></p>
<p><a href="http://noldorin.com/programming/KdTree.cs">KdTree.cs</a></p>
<p><a href="http://noldorin.com/programming/KdTreeNode.cs">KdTreeNode.cs</a></p>
<p><a href="http://noldorin.com/programming/Arithmetic.cs">Arithmetic.cs</a></p>
<p><em>Tests</em> (MSTest framework)</p>
<p><a href="http://noldorin.com/programming/KdTreeTests.cs">KdTreeTests.cs</a></p>
<p>The idea is that the <em>KdTree</em> class is available to use as a black box, so let me know if anything is unclear. (If you&#8217;re wondering though, the arithmetic stuff is there to provide generic arithmetic support complementing the generic vector support. You&#8217;ll probably just want to use <em>double</em> most of the time.) Finally, if you&#8217;re interested in the unit tests, you can <a href="http://bazaar.launchpad.net/~fermisim-dev/fermisim/devel/view/head:/src/FermiSim.Tests/KdTreeTests.cs">grab them</a> over at the project repository. Enjoy.</p>
<img src="http://feeds.feedburner.com/~r/noldorin-blog/~4/lY29rv31MKo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://blog.noldorin.com/2011/03/kd-trees-for-dotnet/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
		<feedburner:origLink>http://blog.noldorin.com/2011/03/kd-trees-for-dotnet/</feedburner:origLink></item>
	</channel>
</rss>
