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

<channel>
	<title>ferrouswheel</title>
	<atom:link href="http://ferrouswheel.me/feed/" rel="self" type="application/rss+xml" />
	<link>http://ferrouswheel.me</link>
	<description>watching the world turn.</description>
	<lastBuildDate>Sat, 25 May 2013 13:43:37 +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>
		<item>
		<title>Your Brain, Copyright, and Lossy Compression</title>
		<link>http://ferrouswheel.me/2011/04/your-brain-copyright/</link>
		<comments>http://ferrouswheel.me/2011/04/your-brain-copyright/#comments</comments>
		<pubDate>Thu, 21 Apr 2011 04:55:00 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[ideas]]></category>
		<category><![CDATA[mind]]></category>
		<category><![CDATA[copyright]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=10334</guid>
		<description><![CDATA[Last week, the New Zealand government passed a controversial copyright law related to file sharing. This was partly outrageous because of the use of urgency to pass these laws without due consultation. If you watch any of the videos from that particular debate, it will shine a light on just how clueless the majority of [...]]]></description>
				<content:encoded><![CDATA[<p>Last week, the New Zealand government <a href="http://www.zeropaid.com/news/93174/new-zealanders-plan-may-1st-protests-of-three-strikes/">passed a controversial copyright law related to file sharing</a>. This was partly outrageous because of the use of urgency to pass these laws without due consultation. If you watch any of the videos from <a href="http://www.youtube.com/watch?v=9IIyk1y9o_8">that particular debate</a>, it will shine a light on just how clueless the majority of NZ&#8217;s politicians are. The notable exceptions are Clare Curran and <a href="http://www.youtube.com/watch?v=PFhrJMVYcZ4">Gareth Hughes</a>. However, this isn&#8217;t a post about the politics! Instead I want to talk about the philosophy behind copyright and how as technology becomes an intrinsic part of our intelligence, the less sense it makes to challenge the personal dispersal or storage of information.</p>
<p>For a good introduction to the topic, read <a href="http://ansuz.sooke.bc.ca/entry/23">this post on the &#8220;colour of bits&#8221;</a>. The post outlines the conflicting viewpoints on information: How computer scientists can&#8217;t academically differentiate between one copy of a copyrighted piece of data and another, but the pressure from law to try to make something up regardless (e.g. DRM). It also discusses how, if you perform a reversable mathematical transformation of the bits you are fundamentally changing the data but can restore it at any moment. If you can do that, is the transformed version copyrighted too? Given that with the right transformation you can turn any sequence of bytes into any other. That means there is only one copyright holder: the universe.<br />
<span id="more-10334"></span><br />
My interest in the topic comes from my background in AI and thinking about the mind and consciousness. If making a recording of a song without the permission of the rightholder is illegal, what does it mean when you remember a catchy song in your mind? A lot (if not all) of what brain does is information processing, and the patterns stored in your neurons also store information. Now, clearly we don&#8217;t have full HD recordings of feature length films in our head that we can replay at will, &#8230; even if some people have photographic memory, &#8220;videographic&#8221; memory is probably even rarer. Regardless, older memories will still be degraded as new sensory input is absorbed as that&#8217;s the nature of intelligence. Full representation doesn&#8217;t scale and isn&#8217;t actually intelligent (in fact, people believe that the compression research is strongly related to AI research as it&#8217;s all to do with predicting the next bit in the bit sequence).</p>
<p>What I&#8217;m curious about is when does a piece of copyrighted material lose it&#8217;s copyrighted identity?</p>
<p>Everyone by now is familiar with MP3s for storing music. Unlike <a href="http://flac.sourceforge.net/">FLAC</a>, the MP3 format is a lossy compression algorithm. Admittedly, it&#8217;s a very good algorithm that is ideal at representing audio well with a minimum of bits, but it&#8217;s still not an identical copy of the original recording. It&#8217;s only qualitatively the same to a human listener after it is decoded. What happens if you slowly decrease the bitrate though? (The bitrate is the number of bits per second you allow the algorithm to use for storing the audio). At what point does it become indistinguishable from another similar song. At what point does the representation become worse than the ability of our minds to remember the song? This is pretty low &#8211; even at 24 kbps  one can make out speech (most music is distributed at 192kbps or higher these days)&#8230; however, humans are able to identify many songs just from hearing a tiny part of it. So clearly there is a fair amount processing going on in our heads to do this recognition. In other words, you can&#8217;t exactly recognise a low quality recording of a song as the original song unless you here the original first. Once you&#8217;ve heard the original, it&#8217;s easy to hear the song&#8217;s melody/rhythm in a lower quality recording.</p>
<p>Why is this of interest right now? I think that as we progress along a continual symbiotic interaction with technology, the more we rely on it to represent our identity. I use <a href="http://www.evernote.com/">Evernote</a> as my offboard memory. This is a curated collection of notes that has a lot of meaning for me and without it I&#8217;d be severely crippled in my job. The same goes with my GMail history and ability to search thousands of emails.</p>
<p>This is also not a new thing. People have used notebooks and filed their paper mail for hundreds of years. If someone wrote a copyrighted poem into their notebook, they are essentially breaching copyright. The difference now is that we can trivially share notebooks with essentially zero cost.</p>
<p>I think one of the problems with copyright is that the boundaries of where an individual starts and begins is dissolving. It&#8217;s no longer purely about our physical position and the information flow is not constrained to only our local environment and surroundings.</p>
<p>(Note: I wrote a quick note about similar ideas back in 2006: <a href="http://ferrouswheel.me/2006/03/multimedia-copyright">Multimedia copyright</a>. Ironically for the music industry, the specific example I give there is what lead me to buy lots of alternative music!)</p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=10334&amp;md5=20b5134d916d74bcb377a19144cc35c3" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2011/04/your-brain-copyright/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2011%2F04%2Fyour-brain-copyright%2F&amp;language=en_GB&amp;category=text&amp;title=Your+Brain%2C+Copyright%2C+and+Lossy+Compression&amp;description=Last+week%2C+the+New+Zealand+government+passed+a+controversial+copyright+law+related+to+file+sharing.+This+was+partly+outrageous+because+of+the+use+of+urgency+to+pass+these+laws+without...&amp;tags=copyright%2Cblog" type="text/html" />
	</item>
		<item>
		<title>The weird and wonderful world of UAVs</title>
		<link>http://ferrouswheel.me/2011/04/quadcopter/</link>
		<comments>http://ferrouswheel.me/2011/04/quadcopter/#comments</comments>
		<pubDate>Thu, 31 Mar 2011 13:13:53 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[fun]]></category>
		<category><![CDATA[geek]]></category>
		<category><![CDATA[destin]]></category>
		<category><![CDATA[opencog]]></category>
		<category><![CDATA[quadcopter]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=9849</guid>
		<description><![CDATA[Recently, my long time friend and colleague Ben Goertzel came to Hong Kong to help advise on the AI project I&#8217;m working on. He also happened to bring a &#8220;Parrot&#8221; quadcopter (warning, this link autoplays a youtube video), which is an awesome wifi controlled toy that has quad rotors. Not much different to a radio-controlled [...]]]></description>
				<content:encoded><![CDATA[<p>Recently, my long time friend and colleague <a href="http://multiverseaccordingtoben.blogspot.com/">Ben Goertzel</a> came to Hong Kong to help advise on the <a href="http://blog.opencog.org/2010/12/07/opencog-hong-kong-project/">AI project I&#8217;m working on</a>. He also happened to bring a <a href="http://ardrone.parrot.com/parrot-ar-drone/usa/">&#8220;Parrot&#8221; quadcopter</a> (warning, this link autoplays a youtube video), which is an awesome wifi controlled toy that has quad rotors. Not much different to a radio-controlled helicopter except it&#8217;s much cheaper and also more stable.</p>
<p>There are some vague plans to do autonomous control of these devices using vision processing and voice recognition. Although the actual hardware used maybe different since quadcopter drones have <a href="http://diydrones.com">gone hobbyist</a> and you can build your own from scratch.</p>
<p>I will now leave you with two youtube videos of them in action&#8230;</p>
<p>Using the Kinect hacked onto a drone to allow it to build a 3d model of the environment and do it&#8217;s own path finding:</p>
<p><iframe title="YouTube video player" width="480" height="360" src="http://www.youtube.com/embed/aiNX-vpDhMo" frameborder="0" allowfullscreen></iframe></p>
<p>Other&#8217;s have used motion capture to allow tracking of a ball which is then juggled between two quadcopters with trampolines:</p>
<p><iframe title="YouTube video player" width="480" height="360" src="http://www.youtube.com/embed/3CR5y8qZf0Y" frameborder="0" allowfullscreen></iframe></p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=9849&amp;md5=5ae3bd470f6e8c89113f8c98d4d2f3cb" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2011/04/quadcopter/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2011%2F04%2Fquadcopter%2F&amp;language=en_GB&amp;category=text&amp;title=The+weird+and+wonderful+world+of+UAVs&amp;description=Recently%2C+my+long+time+friend+and+colleague+Ben+Goertzel+came+to+Hong+Kong+to+help+advise+on+the+AI+project+I%26%238217%3Bm+working+on.+He+also+happened+to+bring+a+%26%238220%3BParrot%26%238221%3B...&amp;tags=destin%2Copencog%2Cquadcopter%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Q&amp;A about open-source AGI development</title>
		<link>http://ferrouswheel.me/2011/01/qa-about-oss-agi-development/</link>
		<comments>http://ferrouswheel.me/2011/01/qa-about-oss-agi-development/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 05:12:12 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=8163</guid>
		<description><![CDATA[Ben Goertzel recently asked several people for comment about open-source AGI development for a couple of pieces of writing he&#8217;s working on. I thought I&#8217;d share my own responses, and I&#8217;ll update the post later with Ben&#8217;s finished product that will have responses from others too. Q1. What are the benefits you see of the [...]]]></description>
				<content:encoded><![CDATA[<p>Ben Goertzel recently asked several people for comment about open-source AGI development for a couple of pieces of writing he&#8217;s working on. I thought I&#8217;d share my own responses, and I&#8217;ll update the post later with Ben&#8217;s finished product that will have responses from others too. </p>
<blockquote><p>Q1.<br />
What are the benefits you see of the open-source methodology for an AGI project, in terms of effectively achieving the goal of AGI at the human level and ultimately beyond?  How would you compare it to a traditional closed-source commercial methodology; or to a typical university research project in which software code isn&#8217;t cleaned up and architected in a manner conducive to collaborative development by a broad group of people.
</p></blockquote>
<p>I believe open source software is beneficial for AGI development for a number of reasons.</p>
<p>Making an AGI project OSS gives the effort persistence and allows some coherence in an otherwise fragmented research community.</p>
<p>Everyone has there own pet theory of AGI, and providing a shared platform with which to test these theories I think invites collaboration. Even if the architecture of a project doesn&#8217;t fit a particular theory, learning that fact is something that is valuable to know along with where the approaches diverge.</p>
<p>More than one commercial projects with AGI-like goals have run into funding problems. If the company then dissolves there will often be restrictions on how the code can be used or it may even be shut-away in a vault and never be seen again. Making a project OSS means that funding may come and go, but the project will continue to make incremental progress.</p>
<p>OSS also prompts researchers to apply effective software engineering practices. Code developed for research often can end up a mess due to being worked on by a single developer without peer review. I was guilty of this in the past, but working and collaborating with a team means I have to comment my code and make it understandable to others. Because my efforts are visible to the rest of the world there is more incentive to design and test properly instead of just doing enough to get results and publish a paper.</p>
<blockquote><p>Q2.<br />
How would you say OpenCog has benefitted specifically from its status<br />
as an OSS project so far?
</p></blockquote>
<p>I think OpenCog has benefited in all the ways I&#8217;ve described above.</p>
<p>We&#8217;re fortunate to also have had Google sponsor our project for the Summer of Code in 2008 and 2009. This initiative brought in new contributors as well as helped us improve documentation and guides for<br />
making OpenCog more approachable to newcomers. As one might imagine, there is a steep learning curve to learning the ins and outs to a AGI framework!</p>
<blockquote><p>Q3.<br />
In what ways would you say an AGI project differs from a typical OSS project?  Does this  make operating OpenCog significantly different from operating the average OSS project?
</p></blockquote>
<p>One of the most challenging things of building an OSS AGI project compared to any other is that most OSS projects have an end use. A music player plays music, a web server serves web pages, and a statistical library provides implementations of statistical functions.</p>
<p>An AGI on the other hand doesn&#8217;t really reach it&#8217;s end use until it&#8217;s complete. Thus creating packaged releases and the traditional development cycle is not as well defined. We are working to improve this with projects that are applying OpenCog to game characters and other domains, but the core framework is still a mystery to most people. It takes a certain level of investment before you can see how might apply the server and other aspects of OpenCog in your applications.</p>
<p>However, a number of projects associated with OpenCog have made packaged releases. RelEx, the NLP relationship extractor,  and MOSES, a probabilistic genetic programming system, are both standalone tools.</p>
<blockquote><p>Q4.<br />
Some people have expressed worries about the implications of OSS<br />
development for AGI ethics in the long term.   After all, if the code<br />
for the AGI is out there, then it&#8217;s out there for everyone, including<br />
bad guys.  On the other hand, in an OSS project there are also<br />
generally going to be a lot more people paying attention to the code<br />
to spot problems.  How do you view the OSS approach to AGI on balance<br />
&#8211; safer or less safe than the alternatives, and why?  And how<br />
confident are you of your views on this?
</p></blockquote>
<p>I believe that the concerns of OSS development of AGI are exaggerated. We are still in the infancy of AGI development and scare-mongering by saying that any such efforts shouldn&#8217;t happen won&#8217;t solve anything. Much like prohibition, making something illegal or refusing to do it will just leave it to more unscrupulous types.</p>
<p>I&#8217;m also completely against the idea of a group of elites developing AGI behind closed doors. Why should I trust self-appointed guardians of humanity? This technique is often used by the less pleasant rulers of modern-day societies: &#8220;Trust us &#8211; everything will be okay! Your fate is in our hands. We know better.&#8221;</p>
<p>The open-source development process allows developers to catch the coding mistakes of one another. When a project reaches fruition, they typically have many contributors and many eyes on the code will catch what smaller teams may not. However, it also allows other Friendly AI theorists to inspect the mechanism behind an AGI system and make specific comments about the ways in which Unfriendliness could occur. When everyone&#8217;s AGI system is created behind closed doors, these specific comments can not be made, or proven to be correct.</p>
<p>Further, a lot behind the trajectory of an AGI system will be dependent on the initial conditions. Indeed, even the apparent intelligence of the system may be influenced by whether it has the right environment and whether it&#8217;s bootstrapped with knowledge about the world. Just like having an ultra intelligent brain sitting in a jar with no external stimulus will be next to useless, so will a seed AI that doesn&#8217;t have a meaningful connection to the world&#8230; (despite potential claims otherwise I can&#8217;t see seed AI developing in a ungrounded null-space).</p>
<p>I&#8217;m not 100% confident of this, but I&#8217;m a rational optimist. Much like I&#8217;m a fan of open governance, I feel the fate of our future should also be open.</p>
<blockquote><p>Q5.<br />
Are there any other relevant questions you think I should have asked?<br />
If so feel free to pose and answer them for me <img src='http://ferrouswheel.me/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  &#8230;
</p></blockquote>
<p>When will the singularity occur? &#8230; would be the typical question the<br />
press would ask so that they can make bold claims about the future</p>
<p>But my answer to that is NaN. <img src='http://ferrouswheel.me/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=8163&amp;md5=0fe4722a9047c41633c97dc4bddbb9b0" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2011/01/qa-about-oss-agi-development/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2011%2F01%2Fqa-about-oss-agi-development%2F&amp;language=en_GB&amp;category=text&amp;title=Q%26%23038%3BA+about+open-source+AGI+development&amp;description=Ben+Goertzel+recently+asked+several+people+for+comment+about+open-source+AGI+development+for+a+couple+of+pieces+of+writing+he%26%238217%3Bs+working+on.+I+thought+I%26%238217%3Bd+share+my+own+responses%2C+and...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Variadic template example in C++0x</title>
		<link>http://ferrouswheel.me/2010/10/variadic-template-example-in-cpp/</link>
		<comments>http://ferrouswheel.me/2010/10/variadic-template-example-in-cpp/#comments</comments>
		<pubDate>Tue, 19 Oct 2010 23:02:26 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[geek]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[c++0x]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=5833</guid>
		<description><![CDATA[I must have been living under a rock because I&#8217;d been unaware of all the cool additions being added in C++0x. I thought I&#8217;d do a series of examples showing simple use of several of these. This one is about variadic templates, namely, templates that can have any number of types associated with them. So [...]]]></description>
				<content:encoded><![CDATA[<p>I must have been living under a rock because I&#8217;d been unaware of all the cool additions being added in C++0x. I thought I&#8217;d do a series of examples showing simple use of several of these. This one is about variadic templates, namely, templates that can have any number of types associated with them.</p>
<p>So not only can you do:</p>
<div class="codecolorer-container cpp twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:470px;"><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000080;">&lt;</span><span style="color: #0000ff;">typename</span> T<span style="color: #000080;">&gt;</span> <span style="color: #0000ff;">int</span> my_function<span style="color: #008000;">&#40;</span>T arg<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>...<span style="color: #008000;">&#125;</span></div></div>
<p>But you can do this:</p>
<div class="codecolorer-container cpp twitlight" style="border:1px solid #9F9F9F;width:470px;"><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000080;">&lt;</span><span style="color: #0000ff;">typename</span> T, <span style="color: #0000ff;">typename</span>... <span style="color: #007788;">Args</span><span style="color: #000080;">&gt;</span> in my_function<span style="color: #008000;">&#40;</span>T arg, Args the_rest<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span>...<span style="color: #008000;">&#125;</span></div></div>
<p>Wikipedia <a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Variadic_templates">has a good overview</a>, so I&#8217;ll direct you there for more. I&#8217;m essentially copying their printf example, but I had a few issues compiling it, so for completeness I&#8217;ll mention them here:</p>
<div class="codecolorer-container cpp twitlight" style="border:1px solid #9F9F9F;width:470px;"><div class="cpp codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #339900;">#include &lt;stdexcept&gt;</span><br />
<span style="color: #339900;">#include &lt;iostream&gt;</span><br />
<br />
<span style="color: #0000ff;">void</span> mprintf<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span><span style="color: #000040;">*</span> s<span style="color: #008000;">&#41;</span> <br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>s<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>s <span style="color: #000080;">==</span> <span style="color: #FF0000;">'%'</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">++</span>s<span style="color: #008000;">&#41;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #FF0000;">'%'</span><span style="color: #008000;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">throw</span> std<span style="color: #008080;">::</span><span style="color: #007788;">runtime_error</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;invalid format string: missing arguments&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; std<span style="color: #008080;">::</span><span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #000040;">*</span>s<span style="color: #000040;">++</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
<span style="color: #008000;">&#125;</span><br />
&nbsp;<br />
<span style="color: #0000ff;">template</span><span style="color: #000080;">&lt;</span><span style="color: #0000ff;">typename</span> T, <span style="color: #0000ff;">typename</span>... <span style="color: #007788;">Args</span><span style="color: #000080;">&gt;</span><br />
<span style="color: #0000ff;">void</span> mprintf<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">const</span> <span style="color: #0000ff;">char</span><span style="color: #000040;">*</span> s, T value, Args... <span style="color: #007788;">args</span><span style="color: #008000;">&#41;</span><br />
<span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>s<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>s <span style="color: #000080;">==</span> <span style="color: #FF0000;">'%'</span> <span style="color: #000040;">&amp;&amp;</span> <span style="color: #000040;">*</span><span style="color: #008000;">&#40;</span><span style="color: #000040;">++</span>s<span style="color: #008000;">&#41;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #FF0000;">'%'</span><span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; std<span style="color: #008080;">::</span><span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> value<span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; mprintf<span style="color: #008000;">&#40;</span>s, args...<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span> <span style="color: #666666;">// call even when *s == 0 to detect extra arguments</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #0000ff;">return</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; std<span style="color: #008080;">::</span><span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #000040;">*</span>s<span style="color: #000040;">++</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #008000;">&#125;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">throw</span> std<span style="color: #008080;">::</span><span style="color: #007788;">logic_error</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;extra arguments provided to printf&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span><br />
<br />
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">int</span> argc, <span style="color: #0000ff;">char</span><span style="color: #000040;">**</span> argv<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span><br />
&nbsp; &nbsp; std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> s<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;test&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> s2<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;test2&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; mprintf<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;% - %&quot;</span>, s, s2<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span><br />
&nbsp; &nbsp; <span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span><br />
<span style="color: #008000;">&#125;</span></div></div>
<p>Compile with:</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:470px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">gcc -std=c++0x -lstdc++ file.cc -o vtemplate-example</div></div>
<p>If you run the executable vtemplate-example you should get the output &#8220;test &#8211; test2&#8243;.</p>
<p>A couple of notes:</p>
<ul>
<li>I renamed printf (used in the wikipedia example) to mprintf because the compiler complained about the call to the overloaded printf being ambiguous.</li>
<li>If you are on OSX, make sure you have gcc-4.4 installed and that you invoke it instead of the Apple gcc. If you try to use the Apple version of gcc it won&#8217;t understand the -std=c++0x option.</li>
</ul>
<p>I hope to play with lambda functions sometime soon too.</p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=5833&amp;md5=bfafe73a03b51347f1830ba753945e22" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2010/10/variadic-template-example-in-cpp/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2010%2F10%2Fvariadic-template-example-in-cpp%2F&amp;language=en_GB&amp;category=text&amp;title=Variadic+template+example+in+C%2B%2B0x&amp;description=I+must+have+been+living+under+a+rock+because+I%26%238217%3Bd+been+unaware+of+all+the+cool+additions+being+added+in+C%2B%2B0x.+I+thought+I%26%238217%3Bd+do+a+series+of+examples+showing...&amp;tags=c%2B%2B%2Cc%2B%2B0x%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Idea: Combine Flattr and Boxee</title>
		<link>http://ferrouswheel.me/2010/09/flattr-and-boxee/</link>
		<comments>http://ferrouswheel.me/2010/09/flattr-and-boxee/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 22:21:34 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[ideas]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=4280</guid>
		<description><![CDATA[This is something I&#8217;ve been simmering on for a while, hoping against hope that an influx of spare time might let me implement it. Alas, it seems unlikely, so here&#8217;s a post to push it into the collective unconscious of the internet. Boxee is a platform for media PCs based on XBMC which is free [...]]]></description>
				<content:encoded><![CDATA[<p>This is something I&#8217;ve been simmering on for a while, hoping against hope that an influx of spare time might let me implement it. Alas, it seems unlikely, so here&#8217;s a post to push it into the collective unconscious of the internet.</p>
<p><a href="http://www.boxee.tv/">Boxee</a> is a platform for media PCs based on XBMC which is free to download (they eventually plan to release a hardware appliance). <a href="https://flattr.com/">Flattr</a> is a social micropayment site, who I think have got the payment system just right (fixed monthly amount you can choose, Flattr evenly distributes that amount amongst the things you &#8220;flattr&#8221;, that way you can freely flattr things without worrying about breaking the bank).</p>
<p>I would like to combine the two. I have a lot of media, but I rarely watch broadcast TV. I&#8217;m not purposefully trying to avoid the media creators being paid, but:</p>
<ul>
<li>I want to watch shows when and where I feel like it, not at designated times.</li>
<li>I don&#8217;t want to be bombarded by inane advertising that is so blatantly manipulative and in your face that it usually puts me off the products.</li>
<li>I don&#8217;t want to accumulate more physical stuff by buying bits of plastic (aka DVDs)</li>
<li>I hate iTunes &#8211; I wouldn&#8217;t trust it to do&#8230; well anything, except reliably have the GUI thread lock up while trying to use it (yes, on OSX as well as Windows)</li>
</ul>
<p>Thus I resort to downloading torrents and sharing media with friends. I want to give back to the media creators, but it has to be convenient. To me, convenience is the primary factor driving piracy. I can download almost any piece of media and I can usually do it faster than it takes me to go to the shop or dvd rental store. I also don&#8217;t have to return anything or accumulate and waste physical materials.</p>
<p>So, my idea is, to set up a trust of some sort, which creates a plugin to be added to Boxee, this in turn flattrs the media that you watch. This trust would then be responsible for passing the payment on to the initial creators. The difficult part is getting the money to the creators, but you could allow for creators to claim content and/or only seek the creator when a certain threshold of money has been assigned to that piece of content.</p>
<p>Flattr also allows anonymous flattrs, so it&#8217;d hopefully protect people from being singled out for piracy while the law catches up with digital reality. Besides, you could also allow people to just flattr episodes they are fond of, so that there is no evidence of whether it&#8217;s just a fan or someone who &#8220;illegally&#8221; downloaded the show.</p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=4280&amp;md5=0f6b330078852612656067a1810894da" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2010/09/flattr-and-boxee/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2010%2F09%2Fflattr-and-boxee%2F&amp;language=en_GB&amp;category=text&amp;title=Idea%3A+Combine+Flattr+and+Boxee&amp;description=This+is+something+I%26%238217%3Bve+been+simmering+on+for+a+while%2C+hoping+against+hope+that+an+influx+of+spare+time+might+let+me+implement+it.+Alas%2C+it+seems+unlikely%2C+so+here%26%238217%3Bs...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Free will and chaotic brains</title>
		<link>http://ferrouswheel.me/2010/08/free-will-and-chaotic-brains/</link>
		<comments>http://ferrouswheel.me/2010/08/free-will-and-chaotic-brains/#comments</comments>
		<pubDate>Wed, 18 Aug 2010 21:20:43 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[mind]]></category>
		<category><![CDATA[chaos]]></category>
		<category><![CDATA[free will]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=3327</guid>
		<description><![CDATA[My personal take on free will is that it&#8217;s an illusion, as is consciousness. The impression of free-will is very believable though as the brain probably exhibits chaotic dynamics[1]. From any given state the brain is in, a slight change, however minute, could give rise to a very different outcome later on. This means that [...]]]></description>
				<content:encoded><![CDATA[<p>My personal take on free will is that it&#8217;s an illusion, as is consciousness.</p>
<p>The impression of free-will is very believable though as the brain probably exhibits chaotic dynamics[1]. From any given state the brain is in, a slight change, however minute, could give rise to a very different outcome later on. This means that for any system with a model that&#8217;s external to an individual brain (e.g. a brain simulation <a href="http://www.embracingchaos.com/2010/08/brain-simulation-tactics-and-complexity-estimates.html">if such a thing is possible</a>), it is impossible for that model to completely predict the behaviour of the brain&#8230; eventually the brain&#8217;s state will diverge from the model. The important point is, this can happen <i>even if the brain is completely deterministic</i>. So even if the rules governing our cognition are unwavering instructions, which I think is unlikely, there is still the inability for a system outside of the brain to predict it&#8217;s behaviour[2].</p>
<p>In addition, I believe that consciousness is due to a recursive model that represents ourselves (ala Douglas Hofstadter&#8217;s book &#8211; <a href="http://en.wikipedia.org/wiki/I_Am_A_Strange_Loop"><i>I am a Strange Loop</i></a>). As this is a model of the epiphenomenon of our &#8220;self&#8221;, it also has incomplete knowledge of the rest of the brain &#8211; this gives our conscious minds the illusion of free will as it can&#8217;t completely predict what it/we will do next. We think we are weighing up choices based on our knowledge and then making a &#8220;decision&#8221;, but that&#8217;s because we (our conscious minds) don&#8217;t have complete knowledge of the brain&#8217;s underlying hardware which ultimately leads us to that choice. This lack of knowledge in our conscious minds is what we call &#8220;free will&#8221;.</p>
<p>[1] Or at least I&#8217;d expect it to, I don&#8217;t have references I&#8217;ve read over, but <a href="http://www.dhushara.com/book/paps/chaos/bchaos1.htm">this</a> looks promising.</p>
<p>[2] That is, assuming we exclude the almost impossible ideal of having perfect knowledge of the brain&#8217;s state which would include all neurochemistry as well as structure.</p>
<p><em>This post is taken from a comment I made to Leo Parker Dirac&#8217;s post on <a href="http://www.embracingchaos.com/2007/02/turing_complete.html">&#8220;Free Will and Turing-completeness of the Brain&#8221;</a>. Turns out I think it&#8217;s a relatively succinct description of what the concept of free will actually is so I thought I&#8217;d repost it here&#8230;</em></p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=3327&amp;md5=c2d2335f30dddd9fd13446a80dc6a789" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2010/08/free-will-and-chaotic-brains/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2010%2F08%2Ffree-will-and-chaotic-brains%2F&amp;language=en_GB&amp;category=text&amp;title=Free+will+and+chaotic+brains&amp;description=My+personal+take+on+free+will+is+that+it%26%238217%3Bs+an+illusion%2C+as+is+consciousness.+The+impression+of+free-will+is+very+believable+though+as+the+brain+probably+exhibits+chaotic+dynamics%5B1%5D.+From...&amp;tags=chaos%2Cfree+will%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Don&#8217;t become a closed system</title>
		<link>http://ferrouswheel.me/2010/07/dont-become-a-closed-system/</link>
		<comments>http://ferrouswheel.me/2010/07/dont-become-a-closed-system/#comments</comments>
		<pubDate>Thu, 29 Jul 2010 08:07:01 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[mind]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=442</guid>
		<description><![CDATA[Another post from the draft pile that I finally polished into something that isn&#8217;t a series of half formed sentences&#8230; enjoy The human body as a closed system is not sustainable, as any closed system eventually achieves an equilibrium lacking order. Entropy would increase as the second law of thermodynamics asserts itself. Flux of energy/matter [...]]]></description>
				<content:encoded><![CDATA[<p><i>Another post from the draft pile that I finally polished into something that isn&#8217;t a series of half formed sentences&#8230; enjoy <img src='http://ferrouswheel.me/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </i></p>
<p>The human body as a closed system is not sustainable, as any closed system eventually achieves an equilibrium lacking order. Entropy would increase as the second law of thermodynamics asserts itself. Flux of energy/matter is required to <a href="http://en.wikipedia.org/wiki/Extropy">maintain and build order</a>. This is a central part of <a href="http://en.wikipedia.org/wiki/Ludwig_von_Bertalanffy">Ludwig von Bertalanffy&#8217;s</a> paper on &#8220;general systems theory&#8221; and his theory of open systems:</p>
<blockquote><p>
“the conventional formulation of physics are, in principle, inapplicable to the living organism being open system having steady state. We may well suspect that many characteristics of living systems which are paradoxical in view of the laws of physics are a consequence of this fact.”</p></blockquote>
<p>I think though, that a similar law applies to intelligent systems. <a href="http://ferrouswheel.me/2008/04/without-stimulus-the-mind-is-not-alive/">Without stimulus the mind is not alive</a> and eventually a lack of synaptic firing would lead to the neuronal weighting between neurons to deteriorate. This would result in a reversal to the initial states that most artificial neural networks start in (they are usually initiated with random weights)&#8230; but perhaps this reversal of weights on neurons that no longer fire isn&#8217;t a bad thing. It may lead to them being re-purposed&#8230;</p>
<p>As one ages, it can become more difficult to pick up new information as existing synaptic channels get reinforced and so the neuronal tributaries of our brains because less used, or require more active effort to use than taking the ready associations that come easily to our consciousness. While these tributaries may get reset to random weightings due to dis-use, this may allowed them to later get stimulated and used to store new associations.</p>
<p>The NY Times earlier this year posted <a href="http://www.nytimes.com/2010/01/03/education/edlife/03adult-t.html">&#8220;How to train the aging brain&#8221;</a>:</p>
<blockquote><p>“There’s a place for information,” Dr. Taylor says. “We need to know stuff. But we need to move beyond that and challenge our perception of the world. If you always hang around with those you agree with and read things that agree with what you already know, you’re not going to wrestle with your established brain connections.”</p>
<p>Such stretching is exactly what scientists say best keeps a brain in tune: get out of the comfort zone to push and nourish your brain. Do anything from learning a foreign language to taking a different route to work.
</p></blockquote>
<p>These new scenarios make the brain utilise alternative neuronal branches:</p>
<blockquote><p>&#8220;As adults we have these well-trodden paths in our synapses,” Dr. Taylor says. “We have to crack the cognitive egg and scramble it up. And if you learn something this way, when you think of it again you’ll have an overlay of complexity you didn’t have before — and help your brain keep developing as well.”</p></blockquote>
<p>Not only that, but if you are encouraging more interesting events in your life, especially those that push and challenge you and your preconceptions, then your perception of time expands. While in the moment it may seem like time flies, retrospectively it will seem like the past took longer. <a href="http://www.nytimes.com/2010/01/05/health/05mind.html">The brain collapses intervals of time where nothing much happens</a>.</p>
<p>So if you don&#8217;t push your brain to learn new things, you&#8217;re cutting it off from having anything new to work with. It will also be easier to efficiently and compactly store your experiences based on what you already know. This shrinks your temporal impression of memory and, retrospectively, it will seem as though the last 5 or 10 years were but a blink. If you keep using the same arguments, and facing the same challenges, then you will become optimised and specialised at that task, but this will come at the cost of generality and breadth of understanding.</p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=442&amp;md5=d969d9e23b9b18a2fff32fad5bd34da1" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2010/07/dont-become-a-closed-system/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2010%2F07%2Fdont-become-a-closed-system%2F&amp;language=en_GB&amp;category=text&amp;title=Don%26%238217%3Bt+become+a+closed+system&amp;description=Another+post+from+the+draft+pile+that+I+finally+polished+into+something+that+isn%26%238217%3Bt+a+series+of+half+formed+sentences%26%238230%3B+enjoy+The+human+body+as+a+closed+system+is+not...&amp;tags=blog" type="text/html" />
	</item>
		<item>
		<title>Measuring text information content through the ages&#8230;</title>
		<link>http://ferrouswheel.me/2010/04/text-information-through-the-ages/</link>
		<comments>http://ferrouswheel.me/2010/04/text-information-through-the-ages/#comments</comments>
		<pubDate>Fri, 16 Apr 2010 01:12:53 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[ideas]]></category>
		<category><![CDATA[entropy]]></category>
		<category><![CDATA[linguistics]]></category>
		<category><![CDATA[nlp]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=477</guid>
		<description><![CDATA[Earlier this week I met with a linguistics PhD student from Victoria University named Myq, we discussed a variety of topics. I shared my experience with OpenCog and suggested he check out RelEx. He discussed his work around disproving a study which investigated the number of words required in a piece of text to retain [...]]]></description>
				<content:encoded><![CDATA[<p>Earlier this week I met with a linguistics PhD student from Victoria University named Myq, we discussed a variety of topics. I shared my experience with OpenCog and suggested he check out RelEx. He discussed his work around disproving a study which investigated the number of words required in a piece of text to retain the core meaning. Basically, a lot of the words in text/speech, although useful for stringing ideas together, are not vital to the message being carried.</p>
<p>This got me thinking&#8230;</p>
<p>Since I&#8217;m working on <a href="http://netempathy.com">NetEmpathy</a>, which is currently focussed on analysing the sentiment of tweets, the meaning within tweets (when it exists) is very high. There&#8217;s little space for superfluous flowery text when you only have 140 characters.</p>
<p>Myq mentioned how academic papers are a lot like this now. The meaning is highly compressed, particularly in scientific papers. You&#8217;ve got to summarise past research, state your method so that it&#8217;s reproducible, analyse the results, etc. All in a half a dozen pages. This wasn&#8217;t always the case though. In the past academic papers would be long works which meandered their way to the point. Part of this might have to do with the amount of preexisting knowledge present in society, i.e. earlier on there was less global scientific knowledge available, so to adequately cover the background of a subject wasn&#8217;t a major difficulty and they could spend more time philosophising. That&#8217;s a topic for another post though&#8230;</p>
<p>What I was interested is how densely information is packed. Is this increasing?</p>
<p>My immediate thoughts were: <i>text compression!</i> and <i>measure the <a href="http://en.wikipedia.org/wiki/Entropy_(information_theory)">entropy</a>!</i>.</p>
<p>Basically, information theory dictates that text that contains less information can be represented in fewer bytes. This is why it&#8217;s possible to create lossless compression. You assign frequent symbols to be represented by smaller ones. For example, because &#8216;the&#8217; is one of the most common English words, you might replace it with &#8217;1&#8242; (and crudely, you could replace &#8217;1&#8242; with &#8216;the&#8217; so that you could still use &#8217;1&#8242; normally). This way, you&#8217;ve reduced the size of that symbol by two thirds without loss of information. Obviously this wouldn&#8217;t improve your compression factor and a spreadsheet full of numbers though.</p>
<p>A guy called <a href="http://jan.ucc.nau.edu/~biber/">Douglas Biber</a> has apparently already investigated this information content historically, but from a more linguistic and manual investigation.</p>
<p>What I&#8217;d like to do one day is examine the compression factors of early scientific journals, recent journals, tweets, txt messages, wikipedia, etc. and see just how the theoretical information content has changed, if at all.</p>
<p>Another project for when I&#8217;m independently wealthy.</p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=477&amp;md5=cd4b71a9c62cb11f41484c251f7765d3" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2010/04/text-information-through-the-ages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2010%2F04%2Ftext-information-through-the-ages%2F&amp;language=en_GB&amp;category=text&amp;title=Measuring+text+information+content+through+the+ages%26%238230%3B&amp;description=Earlier+this+week+I+met+with+a+linguistics+PhD+student+from+Victoria+University+named+Myq%2C+we+discussed+a+variety+of+topics.+I+shared+my+experience+with+OpenCog+and+suggested+he...&amp;tags=entropy%2Clinguistics%2Cnlp%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Sexism, Racism and the Ism of Reasoning</title>
		<link>http://ferrouswheel.me/2010/03/the-ism-of-reasoning/</link>
		<comments>http://ferrouswheel.me/2010/03/the-ism-of-reasoning/#comments</comments>
		<pubDate>Mon, 29 Mar 2010 21:55:46 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[ideas]]></category>
		<category><![CDATA[mind]]></category>
		<category><![CDATA[opencog]]></category>
		<category><![CDATA[friendy ai]]></category>
		<category><![CDATA[logic]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=467</guid>
		<description><![CDATA[Note this post is not to condone racism or sexism, merely as an explanation of how it might come about from embodied experience and probabilistic reasoning, as well as how we might protect against it. Things like racism or sexism, or over-generalising on a class of people is one of the more socially inappropriate things [...]]]></description>
				<content:encoded><![CDATA[<p><i>Note this post is not to condone racism or sexism, merely as an explanation of how it might come about from embodied experience and probabilistic reasoning, as well as how we might protect against it.</i></p>
<p>Things like racism or sexism, or over-generalising on a class of people is one of the more socially inappropriate things you can do. However, depending on how your logic system works, it&#8217;s not an entirely unreasonable method of thinking (the word &#8220;unreasonable&#8221; chosen purposefully) &#8211; and for any other subject, where the things being reasoned about are not humans, we wouldn&#8217;t particularly care. In fact, certain subjects like religion and spirituality are held to less strict standards of reasoning… there&#8217;s actually more defense in being racist/sexist then being a practitioner of certain religions. Perhaps this is why these occasionally go hand in hand[1].</p>
<p>So what do I actually mean by this? I&#8217;m going to use two methods of reasoning, deduction and induction, and then explain them in terms of uncertain truth. Nothing in this world is ultimately absolute[2] and so it behooves us to include probabilistic uncertainty in to any conclusion or relationship within our logic set.</p>
<p><span id="more-467"></span><br />
<strong>Deduction</strong> can be summarised as inferring the specific from the general. e.g.</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:470px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">All cats have four legs. (1)<br />
Aristotle is a cat.<br />
|-<br />
Aristotle has four legs. (2)</div></div>
<p>Note that obviously there are exceptions to the starting generalisation (1) of four-legged cats. Poor Aristotle could have been in a car accident and had a leg amputated making (2) a false conclusion. That&#8217;s where the probability and uncertain truth comes in…</p>
<p>Here we&#8217;ll use two parts to truth values (TVs), <em>strength</em> and <em>confidence</em>[3]. The first, strength, is how often the relationship holds true. E.g. with strength 0.9 for the  we&#8217;d expect approximately 90% of cats we saw to have four legs. Confidence however, indicates how sure we are of the strength. The exact semantics of confidence are not important for the current discussion, but basically if the confidence is low then we&#8217;re not very sure about the number of legs cats have &#8211; perhaps because we haven&#8217;t seen many.</p>
<p>On the other hand <strong>induction</strong> is used to infer the general from the specific. e.g.</p>
<div class="codecolorer-container text twitlight" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:470px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Aristotle is a cat that has four legs.<br />
Muffin is a cat that has four legs.<br />
Mr Percival is a cat that has four legs.<br />
|-<br />
All cats have four legs.</div></div>
<p>In other words, if, within all our experience, all cats we&#8217;ve seen have four legs it&#8217;s sensible to assume all cats do. With such a small sample size of only 3 cats, and without any other background knowledge (like animals of a particular species generally all have the same number of legs) we&#8217;d generally not afford much confidence in the result of this deduction[5].</p>
<p>So where does the sex/race/other-isms come in? Well if you haven&#8217;t worked it out yet, it&#8217;s when you use too small a sample set to do induction or you adopt generalisations from others without using your own evidence[4]. Or perhaps you do know lots of one sex that all fit your model, in that case the problem is using a single generalisation to deduct information about a new member of that sex that you know nothing about. Essentially sexism/racism is due to too large a bias towards sex/race determining an overall conclusion or understanding of the other.</p>
<p>I guess one thing should be clarified, the relationship between generalisation of sexism/racism. When does a generalisation turn into one of these categories. I&#8217;m not sure I really know, after all if you made generalisations about the basic anatomy of males/female or say something superficial like the colour of someone&#8217;s skin, then there wouldn&#8217;t be a whole lot of controversy there[6] but I guess it&#8217;s when you use that information to fully define everyone that falls into a category. The thing that I&#8217;m grappling with, is that, in the absence of any extra information on someone it&#8217;s sensible to use what you have to start trying to represent and understand someone new. In fact, if you didn&#8217;t, you&#8217;re demonstrating you don&#8217;t care enough about the other person to think about them at all!</p>
<p>And then we come to insurance brokers. They make huge generalizations. Law usually prevents them from using race as a factor, but for some reason they are still <b>allowed</b> to use your sex to determine the premium you&#8217;ll pay. They are also allowed to generalise on your age among many other things. In fact, pretty much the entire way the insurance industry works is through generalisations.</p>
<p>So what makes it okay for businesses to blatantly be sexist and ageist among many other categorical assumptions? I don&#8217;t know.</p>
<p>Ahem… got a little side-tracked there. Sorry&#8230;</p>
<p>So when is this generalization okay? If every interaction you have with people that fall into a category supports the conclusion then your confidence will increase &#8211; and you&#8217;ll have no examples of any alternative. Few people actually have such a life history to conclude this. I suspect many people who display racism or sexist tendencies probably get this strong bias from another human or information source. If it&#8217;s someone they highly respect, such as a parent, or someone who&#8217;s the social leader amongst a group, then they may adopt conclusions with high confidence without having the experience to conclude things themselves.</p>
<p>How can we protect against broad conclusions about people?</p>
<ul>
<li>By making it exceedingly difficult to increase our confidence of very broad generalizations. Realise that when making any large scale conclusion that confidence must be limited &#8211; especially when reasoning about dynamic entities like humans.</li>
<li>Favour the use of more specific categories when reasoning. This can be hard, as when you don&#8217;t know someone and all you have is their apparent race and sex then any generalisations you&#8217;ve made will be your sole source of information. You can argue that this shouldn&#8217;t be the case, but any pre-consolidated knowledge you have will come to the fore until you learn more about the person to develop a more complete representation of them.</li>
</ul>
<p>Why is it hard to change the behavior or views of people who are already displaying ism-ness?</p>
<ul>
<li>I guess that confidence in belief generally erodes slowly, unless presented with directly conflicting evidence. And sometimes conflicting evidence just makes people stop listening to you because it radically challenges their world view.</li>
<li>Perhaps it&#8217;s physically more effort/energy to update generalisations on large groups? If you have to adjust your confidence of conclusion on a large group, then they&#8217;ll be many many connections from the neuron that potentially represents that group and the instances and associations within that group. Since the brain is massively connected, larger groups probably require more effort to shift. Think of all those tens of thousands of synapses having to reconfigure themselves or die.</li>
<li>Generalisations may be self-reinforcing. While someone might not fit your generalisation, that may slightly alter your confidence in it, but not enough to completely remove it from your mind.</li>
</ul>
<p>I hope I&#8217;ve raised some questions in the readers head. I don&#8217;t like sexism or racism, but at the same time I can (kind of) understand the logical reasoning that might lead to it and I haven&#8217;t completely resolved how it&#8217;d sit in a fully functional artificial intelligence. After all, I <i>really</i> don&#8217;t want <a href="http://opencog.org">OpenCog</a> to turn into a racist bigot!</p>
<p>[1] I was going to link to an appropriate example here, but couldn&#8217;t easily think of one I could back up, feel free to suggest one.<br />
[2] If people think otherwise, I suggest  they study enough quantum physics or Gödel&#8217;s incompleteness theorem.<br />
[3] This is based on the simple truth value type of <a href="http://opencog.org">OpenCog</a>.<br />
[4] Not that accepting generalizations from others is bad thing. Everyone does it because we cannot experience everything directly.<br />
[5] Although if your sum experience of the universe you live in is merely these three cats then you&#8217;d be very confident and not only that but induct that <i>everything</i> has four legs (and is a cat).<br />
[6] Yeah yeah, I know, some people are transgendered. I&#8217;m keeping this simple okay?</p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=467&amp;md5=e2d338925249f5f23c27d1edfb3e1dac" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2010/03/the-ism-of-reasoning/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2010%2F03%2Fthe-ism-of-reasoning%2F&amp;language=en_GB&amp;category=text&amp;title=Sexism%2C+Racism+and+the+Ism+of+Reasoning&amp;description=Note+this+post+is+not+to+condone+racism+or+sexism%2C+merely+as+an+explanation+of+how+it+might+come+about+from+embodied+experience+and+probabilistic+reasoning%2C+as+well+as+how...&amp;tags=friendy+ai%2Clogic%2Cblog" type="text/html" />
	</item>
		<item>
		<title>Empathy in the machine</title>
		<link>http://ferrouswheel.me/2010/03/empathy-in-the-machine/</link>
		<comments>http://ferrouswheel.me/2010/03/empathy-in-the-machine/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 21:34:52 +0000</pubDate>
		<dc:creator>Joel</dc:creator>
				<category><![CDATA[ideas]]></category>
		<category><![CDATA[mind]]></category>
		<category><![CDATA[ai]]></category>
		<category><![CDATA[empathy]]></category>
		<category><![CDATA[friendly ai]]></category>

		<guid isPermaLink="false">http://ferrouswheel.me/?p=317</guid>
		<description><![CDATA[A draft post/idea from the archives that I thought it was about time that I release. Funnily, this was entirely before I started working on NetEmpathy &#8211; maybe it&#8217;s not as disconnected as I thought from AGI after all! It is my belief that empathy is a a prerequisite to consciousness. I recently read Hofstadter&#8217;s [...]]]></description>
				<content:encoded><![CDATA[<p><em>A draft post/idea from the archives that I thought it was about time that I release. Funnily, this was entirely before I started working on <a href="http://netempathy.com/">NetEmpathy</a> &#8211; maybe it&#8217;s not as disconnected as I thought from <a href="http://en.wikipedia.org/wiki/Artificial_general_intelligence">AGI</a> after all!</em></p>
<p>It is my belief that empathy is a a prerequisite to consciousness.</p>
<p>I recently read Hofstadter&#8217;s <em>I am a strange loop</em>, whose central themes are around recursive representations of self leading to our perception of consciousness. For some, the idea that our consciousness is somewhat of an illusion might be hard to swallow &#8211; but then, quite likely, so are all the other <a href="http://en.wikipedia.org/wiki/Qualia">qualia</a>. They seem real to us, because our mind makes it real. To me, it&#8217;s not a huge hurdle to believe. I find the idea that our minds are infinitely representing themselves via self-reflection kind of beautiful in simplicity. You can get some very strange things happening when things start self-reflecting.</p>
<p>For example, <a href="http://en.wikipedia.org/wiki/Godel%27s_theorem">Gödel&#8217;s incompleteness theorem</a> originally broke Principia Mathematica and can do the same for any sufficiently expressive formal system when you force that formal system to reason about itself. One day I&#8217;ll commit to explaining this in a post, but people write entire books about the idea to make Godel&#8217;s theorem and it&#8217;s consequences easy to understand!</p>
<p>And as an example of self-reflection and recursion being beautiful, I merely have to point to fractals which exhibit self-similarity at arbitrary levels of recursion. Or perhaps the recursive and repeating <a href="http://plus.maths.org/issue53/features/hallucinations/">hallucinations</a> induced by psychedelics give us some clue about the recursive structures within the brain.</p>
<p>Hofstadter also later in the book delves into slightly murky mystical waters, which I find quite entertaining and not without merit. He says that, due to us modelling of the behaviour of others, we also start representing their consciousness too. The eventual conclusion, which is explained in much greater and philosophical detail in his book, is that our &#8220;consciousness&#8221; isn&#8217;t just the sum of what&#8217;s in our head but is a holistic total of ourselves and everyone&#8217;s representation of us in their heads.</p>
<p>I don&#8217;t think the Turing test will really be complete until a machine can model humans as individual and make insightful comments on their motivations. Ok, so that wouldn&#8217;t formally be the Turing test any more, but I think that as a judgement of conscious intelligence, the artificial agent needs to at least be able to reflect the motivations of others and understand the representation of itself within others. Lots of recursive representations!</p>
<p>The development of consciousness within AI via empathy is what, in my opinion, will allow us to create <a href="http://en.wikipedia.org/wiki/Friendly_ai">friendly AI</a>. Formal proofs won&#8217;t work due to computational irreducibility of complex systems. In an admittedly strained analogy this is similar to trying to formally prove where a toy sailboat will end up after dropping it in a river upstream. Trying to prove that it <strong>won&#8217;t</strong> get caught in an eddy before it reaches the ocean of friendliness (or perhaps if you&#8217;re pessimistic and you view the eddy as the small space of possibilities for friendly AI). Sure computers and silicon act deterministically (for the most part), but any useful intelligence will interact with an uncertain universe. It will also have to model humans out of necessity as humans are one of the primary agents on the Earth that will need to interact with&#8230; perhaps not if it becomes all-powerful but certainly initially. By modelling humans, it&#8217;s effectively empathising with our motivations and causing parts of our consciousness to be represented inside it[1].</p>
<p>Given that machine could increase it&#8217;s computationally capacity exponentially via Moore&#8217;s law (not to mention via potentially large investment and subsequently rapid datacenter expansion) it could eventually model many more individuals than any one human does. So if the AI had a large number of simulated human minds, which would, if accurately modelled, probably bawk at killing the original, then any actions the AI performed would likely benefit the largest number of individuals.</p>
<p>Or perhaps the AI would become neurotic trying to satisfy the desires and wants of conflicting opinions.</p>
<p>In some ways this is similar to Eliezer&#8217;s <a href="http://singinst.org/upload/CEV.html">Collected Extrapolated Volition</a> (as I remember it at least&#8230; It was a long time ago that I read it. I should do so again to see how/if it fits with what I&#8217;ve said here).</p>
<p>[1] People might claim that this won&#8217;t be an issue because digital minds designed from scratch will be able to box up individual representations to prevent a bleed through of beliefs. Unfortunately, I don&#8217;t think this is a tractable design for AI, even if it was desirable. AI is about efficiency of computation and representation, so these concepts and beliefs will blend. Besides, <a href="http://en.wikipedia.org/wiki/Conceptual_blending">conceptual blending</a> is quite likely a strong source of new ideas and hypotheses in the human brain.</p>
 <p><a href="http://ferrouswheel.me/?flattrss_redirect&amp;id=317&amp;md5=9a845156f723e2b6f6e24ccfc7b95b19" title="Flattr" target="_blank"><img src="http://ferrouswheel.me/wp-content/plugins/flattr/img/flattr-badge-large.png" alt="flattr this!"/></a></p>]]></content:encoded>
			<wfw:commentRss>http://ferrouswheel.me/2010/03/empathy-in-the-machine/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<atom:link rel="payment" title="Flattr this!" href="https://flattr.com/submit/auto?user_id=ferrouswheel&amp;popout=1&amp;url=http%3A%2F%2Fferrouswheel.me%2F2010%2F03%2Fempathy-in-the-machine%2F&amp;language=en_GB&amp;category=text&amp;title=Empathy+in+the+machine&amp;description=A+draft+post%2Fidea+from+the+archives+that+I+thought+it+was+about+time+that+I+release.+Funnily%2C+this+was+entirely+before+I+started+working+on+NetEmpathy+%26%238211%3B+maybe+it%26%238217%3Bs+not...&amp;tags=ai%2Cempathy%2Cfriendly+ai%2Cblog" type="text/html" />
	</item>
	</channel>
</rss>
