<?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>Overanalyzed &#187; Science</title>
	<atom:link href="http://coollabssoft.com/blog/index.php/category/all/science/feed/" rel="self" type="application/rss+xml" />
	<link>http://coollabssoft.com/blog</link>
	<description>A Systems Analyst's thoughts on science, technology, programming, business, and occasionally politics.</description>
	<lastBuildDate>Tue, 26 Oct 2010 04:05:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<item>
		<title>Education or Ineducation</title>
		<link>http://coollabssoft.com/blog/2009/11/08/education-or-ineducation/</link>
		<comments>http://coollabssoft.com/blog/2009/11/08/education-or-ineducation/#comments</comments>
		<pubDate>Sun, 08 Nov 2009 22:22:50 +0000</pubDate>
		<dc:creator>Chris Davenport</dc:creator>
				<category><![CDATA[Business]]></category>
		<category><![CDATA[Politics]]></category>
		<category><![CDATA[Science]]></category>
		<category><![CDATA[invention]]></category>
		<category><![CDATA[patent law]]></category>

		<guid isPermaLink="false">http://coollabssoft.com/blog/?p=13</guid>
		<description><![CDATA[I&#8217;ve been bugged for years over this problem of inventing things that already exist. For example, I may spend a great deal of time working on a concept, and arrive at an inventive solution, only to discover, when telling someone else about it, that it&#8217;s already been invented. I myself have done that to others, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been bugged for years over this problem of inventing things that already exist.</p>
<p>For example, I may spend a great deal of time working on a concept, and arrive at an inventive solution, only to discover, when telling someone else about it, that it&#8217;s already been invented.</p>
<p>I myself have done that to others, told them their ideas already exist. I know Jeffy&#8217;s come up with a few.</p>
<p>After my most recent encounter with this problem, while working with a NAT traversal technique, I became annoyed at my education. </p>
<p><span id="more-13"></span><br />
I&#8217;m wondering whether because I am not fully briefed and up to date with the goings-on of the fields in which I am attempting to create, I need to pursue a greater education, and evaluating what I&#8217;ve already had as incomplete.</p>
<p>But today I was reading a comic, and another possibility occurred to me. Independent Invention and Non-obviousness.</p>
<p>Theoretically issued patents have satisfied the non-obvious clause, so any joe contemporary in the field shouldn&#8217;t be able to come up with it. But maybe when I spend days thinking about it, and come up with an answer, it still counts as non-obvious.</p>
<p>But it&#8217;s still independent invention. It seems to me that creating something that happens to be patented by others but totally unknown to you should still count. Still allow you to benefit from it, and possibly now fail the obviousness test.</p>
<p>Under that logic, someone who is only partially educated in the field experiences greatest advantage. On one hand, they&#8217;re not familiar with pre-existing solutions to the problems they&#8217;re encountering, so they waste time working on them. On the other, they could reinvent just about anything and use it carefree. But if we are to consider development of the field, and we assume that we&#8217;re fully versed, all the new technology is in non-obvious development along the same paths as have already been followed. History tells us that while much development happens along these lines, it is more the natural progression of the field than the sort of developmental leap that tends to happen when not versed.</p>
<p>There seems to be a natural point at which an invention is no longer non-obvious, and the point at which it is independently invented would seem to qualify. More to the point, techniques that would otherwise be considered public domain, and presumably taught in schools, </p>
<p>Under current law, that&#8217;s still infringement.</p>
]]></content:encoded>
			<wfw:commentRss>http://coollabssoft.com/blog/2009/11/08/education-or-ineducation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New CPU Instruction</title>
		<link>http://coollabssoft.com/blog/2009/04/28/new-cpu-instruction/</link>
		<comments>http://coollabssoft.com/blog/2009/04/28/new-cpu-instruction/#comments</comments>
		<pubDate>Tue, 28 Apr 2009 15:12:22 +0000</pubDate>
		<dc:creator>Chris Davenport</dc:creator>
				<category><![CDATA[Science]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://coollabssoft.com/blog/?p=16</guid>
		<description><![CDATA[I&#8217;m going to propose a new CPU instruction. Purely theoretical for now, but interesting to talk about. At least I hope so. My new CPU instruction is going to load into EAX the value of EAX from 10 seconds in the future. Crazy talk, I know. But I&#8217;m going to ignore the &#8220;you can&#8217;t do [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to propose a new CPU instruction. Purely theoretical for now, but interesting to talk about. At least I hope so.</p>
<p>My new CPU instruction is going to load into EAX the value of EAX from 10 seconds in the future.</p>
<p>Crazy talk, I know. But I&#8217;m going to ignore the &#8220;you can&#8217;t do that!&#8221; aspect, because that&#8217;s just silly rejectionism. Instead, I&#8217;m going to think about how to actually implement the instruction. </p>
<p><span id="more-16"></span><br />
Supposing we had a second computer, nay, a supercomputer available. That supercomputer has a virtual machine in it, that exactly matches our machine. It&#8217;s going to pack 10 seconds of runtime of our computer into the time to execute one instruction, and provide the value back to our machine.</p>
<p>And we&#8217;ve implemented it. Well, with a few exceptions.. Our virtual machine simulator doesn&#8217;t have the connection to a supercomputer to provide the same 10 seconds in the future instruction. We&#8217;d need an even more super computer. Also, I&#8217;ve assumed that 10 seconds of runtime is 10 seconds of realtime, which may or may not hold.</p>
<p>That isn&#8217;t anything new really, that&#8217;s an old turing machine problem. The question of whether a turing machine can determine if a program for that machine will ever halt is considered unsolvable by that same machine.</p>
<p>But that&#8217;s because we need that external connection to the supercomputer to give us that 10 seconds&#8217; future result.</p>
<p>Supposing we didn&#8217;t. We already know about virtual machines. We already know we can run, on one machine, a virtual machine that just emulates everything. If we don&#8217;t worry about time and memory, we could concieveably do all this on one machine, by just firing up a virtual machine that&#8217;s a copy of our currently running machine, running it for 10 seconds, then returning to our original machine with the result.</p>
<p>That one can even provide the same 10-seconds&#8217; future EAX, by just creating a second virtual machine within the virtual machine.</p>
<p>So my instruction is going to be a FORK. It means &#8220;clone yourself and continue, then in 10 seconds, die and return EAX&#8221; </p>
<p>It&#8217;s an interesting instruction. We already use branch prediction and pipelining very similarly. And it highlights something we should have noticed earlier. Of COURSE a turing machine can solve the problem of it ever halting. It just takes the machine waiting for itself to run to completion. </p>
<p>One of the interesting problems with FORK in software is telling the two apart. If we really execute a FORK instruction, and really accomplish it, then the new machine is expecting the results of a fork instruction in EAX. Supposing the next instruction is the equivalent of &#8220;oh, well, don&#8217;t do that then&#8221;.</p>
<p>What should the fork instruction assume? should it assume a value at all? should it nest again? we&#8217;ll just run out of resources cloning machines. Maybe throw a temporal processor exception?</p>
<p>I see a paradox. There is one here, there&#8217;s no way to just nest machines forever. Paradoxes by their nature is interesting, because they either can&#8217;t happen, or can&#8217;t not happen. So if it&#8217;s not happening, it never will. And if it is happening, it&#8217;s a tautology and always will.</p>
<p>So press onward. We don&#8217;t need to nest forever. EAX is only 32 bits. We only need to create 2^32 virtual machines, each with a different value for EAX, let them all run, and figure out which one resolves the paradox. Which machines, when given a value for EAX, actually produce that same value in 10 seconds time.</p>
<p>And the instruction, the same for all of them, is now &#8220;Guess and Explode if Wrong&#8221; (GEW?), and of course we throw away the one that guesses it explodes, though I suppose that can&#8217;t happen because &#8220;exploded&#8221; isn&#8217;t a valid value of EAX, but now we have the problem of them all exploding.</p>
<p>We&#8217;ve gotten around the requirement of requiring intramachine communication, though we still have the cellular automata problem of a machine copying itself, but it stands to reason that if we can copy it, we can also copy it with a new value of Guessed EAX.</p>
<p>If we keep the VM on the same machine, running inside the same machine, then we can answer the larger class of turing problems, provided that we have a specific limitation on the instruction set. There can&#8217;t be a halt instruction, because that can&#8217;t be emulated without halting the machine, we&#8217;re working with non-self-modifying code here, and there must be a return-to-host-or-halt instruction. With those two limits, one program can analyze another and determine if it ever halts within an arbitrary limit, by running it for that long. And the only reason we can&#8217;t say if a program will EVER halt is because we can&#8217;t run it one step past forever and see.</p>
<p>But that&#8217;s for really complicated predictions. Most predictions in a computer system can be made more simply. If all we want to know is the result of a function call, we can do that in the same machine, by setting up a little function-calling sandbox closure and calling it.</p>
<p>I wrote a patent similar to this, many years ago, in which an application could trade runtime for user input, by cloning itself and predicting that input, and then destroying those that guessed wrong. It&#8217;s even trainable using standard net techniques.</p>
<p>Pretty easy to see how this technique could be used in a distributed processing system, the function-closure model is very similar to google&#8217;s map/reduce, and I doubt it will be long before the OS vendors figure out that they can export memory and runtime to other systems.</p>
]]></content:encoded>
			<wfw:commentRss>http://coollabssoft.com/blog/2009/04/28/new-cpu-instruction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Colors</title>
		<link>http://coollabssoft.com/blog/2008/09/30/colors/</link>
		<comments>http://coollabssoft.com/blog/2008/09/30/colors/#comments</comments>
		<pubDate>Tue, 30 Sep 2008 23:13:10 +0000</pubDate>
		<dc:creator>Chris Davenport</dc:creator>
				<category><![CDATA[Science]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[prism]]></category>
		<category><![CDATA[rainbow]]></category>
		<category><![CDATA[violet]]></category>

		<guid isPermaLink="false">http://coollabssoft.com/blog/?p=7</guid>
		<description><![CDATA[Purple is an odd concept. We see it as a combination of red and blue&#8230; because we have roughly RGB retinas&#8230; but then we see 50%R 50%G as yellow, when there&#8217;s a real yellow that just triggers 50%R 50%G.. We can&#8217;t see the difference though. But there&#8217;s no frequency of light that corresponds to purple. [...]]]></description>
			<content:encoded><![CDATA[<p>Purple is an odd concept.</p>
<p>We see it as a combination of red and blue&#8230; because we have roughly RGB retinas&#8230; but then we see 50%R 50%G as yellow, when there&#8217;s a real yellow that just triggers 50%R 50%G.. We can&#8217;t see the difference though.</p>
<p>But there&#8217;s no frequency of light that corresponds to purple. Makes the color wheels seem a little goofy, honestly. And suddenly bothers me to find purple on manmade rainbows, when real rainbows have indigo and violet, neither of which have any red in them.</p>
<p><em><strong>EDIT:</strong> I recently discovered that the red cones in your eye actually do have a second peak in their response to color. Instead of a nice bell curve centered around red, it tails off more slowly in the high-frequency (green/blue) direction, and has a second, much lower hump above blue. This is why some people may see some purplish colors there, it&#8217;s signal confusion.</em></p>
<p><span id="more-7"></span><br />
Violet is past blue.. past indigo.. ultra indigo&#8230; Eyes don&#8217;t work at the ultraviolet frequencies. As you move your view across a rainbow, the light goes from yellow to green to blue, then it goes more blue to indigo, then to violet, and then disappears as it gets beyond our range of vision. </p>
<div style="float:left; clear:left; padding: 10px;">Compare this artist&#8217;s rendition:<br />
<a href="http://media-2.web.britannica.com/eb-media/10/7710-004-5E698CE9.gif" target="_new"><img width="315" height="185" src="http://media-2.web.britannica.com/eb-media/10/7710-004-5E698CE9.gif" alt="Artist's prism" /><br />
<font size="-1">(click for large version)</font></a></div>
<div style="float:left; padding: 10px;">
To this photograph:<br />
<a href="http://people.rit.edu/andpph/photofile-c/prism-DSCN4991.jpg" target="_new"><img width="180px" height="254" src="http://people.rit.edu/andpph/photofile-c/prism-DSCN4991.jpg" alt="Photograph of prism" /><br />
<font size="-1">(click for large version)</font></a>
</div>
<p style="clear:left">There&#8217;s no purple at the high edge of a rainbow. There&#8217;s no red color there. Purple is the mix of red and blue light, and it just doesn&#8217;t exist as a physical color, the way white and black don&#8217;t. All the other colors on the wheel, sure, but there are no purples, no colors that mix red and blue. Just like there are no numbers &gt;5 and &lt;-5.</p>
<p>Even the <a href="http://en.wikipedia.org/w/index.php?title=Violet_(color)&#038;oldid=241956046">wikipedia article</a> indicates that they&#8217;re showing some electric violet color in which they&#8217;ve just added some red because violet can&#8217;t actually be represented in RGB channels.</p>
<p>In the photo, you&#8217;ll see some &#8220;purple&#8221; near the prism in the blue/indigo areas, which is a result of white light bleeding into those areas, the other colors have been lightened as well, to the point where the yellow is white as you get close. But it&#8217;s down near the bottom where you&#8217;ll see the blue just taper off. Red has a sharper line because cameras have lenses that aren&#8217;t transparent to red-infrared.</p>
<p>Obviously our artist has an issue with the whole blue-to-violet range, he&#8217;s clearly indicated a cyan color as blue.</p>
<p>RGB is a total scam. We lost our indigoes and violets, and have to put up with this sham of purple instead. There was a time that 0,0,255 would have been called violet, because blue was/is 0,128,128.</p>
<p><center><img width="269" height="276" src="http://www.graphic-design.com/Photoshop/color_cast/color_wheel.jpg" alt="Color Wheel" /></center></p>
<p>The whole lower right quadrant is colors that don&#8217;t exist. Notice how they&#8217;ve compressed the blue range so that the 3 first tier colors (Blue/indigo/violet) fit in 30 degrees, compressed the orange section so it&#8217;s 2nd tier, elongating the greens to invent cyan. ROYGBIV man.  Not RYGCBM.</p>
<p>It&#8217;s not unreasonable. People are most sensitive to greens, less so to blues, least to reds. Any division that looks balanced to us would have to be biased. And we have a way to identify red+blue and red+blue+green individually, so we might as well put them on the wheel even if there&#8217;s no such thing.</p>
]]></content:encoded>
			<wfw:commentRss>http://coollabssoft.com/blog/2008/09/30/colors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

