<?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>InquiryLabs &#187; Software Engineering</title>
	<atom:link href="http://blog.inquirylabs.com/category/software-engineering/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.inquirylabs.com</link>
	<description>Software Engineering and Science</description>
	<lastBuildDate>Thu, 22 Jul 2010 01:35:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Perspective Cal Demo</title>
		<link>http://blog.inquirylabs.com/2010/07/21/perspective-cal-demo/</link>
		<comments>http://blog.inquirylabs.com/2010/07/21/perspective-cal-demo/#comments</comments>
		<pubDate>Thu, 22 Jul 2010 01:33:12 +0000</pubDate>
		<dc:creator>Duane Johnson</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[idea]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[raphael]]></category>

		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=1069</guid>
		<description><![CDATA[I&#8217;ve been working on a Javascript demo of the &#8220;Perspective Calendar&#8221; idea I blogged about earlier.  The code for the project is hosted on GitHub.


]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been working on a Javascript <span style="color: #000000;"><a href="http://canadaduane.github.com/Perspective-Calendar/">demo</a></span> of the &#8220;Perspective Calendar&#8221; idea I blogged about earlier.  The <a href="http://github.com/canadaduane/Perspective-Calendar">code</a> for the project is hosted on GitHub.</p>
<p><a href="http://blog.inquirylabs.com/wp-content/uploads/2010/07/PerspectiveCalendar.png"><br />
</a><a href="http://blog.inquirylabs.com/wp-content/uploads/2010/07/Screen-shot-2010-07-21-at-6.23.37-PM.png"><img class="aligncenter size-full wp-image-1073" title="Perspective Calendar Today/Tomorrow" src="http://blog.inquirylabs.com/wp-content/uploads/2010/07/Screen-shot-2010-07-21-at-6.23.37-PM.png" alt="" width="339" height="252" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inquirylabs.com/2010/07/21/perspective-cal-demo/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Perspective Calendar</title>
		<link>http://blog.inquirylabs.com/2010/07/12/perspective-calendar/</link>
		<comments>http://blog.inquirylabs.com/2010/07/12/perspective-calendar/#comments</comments>
		<pubDate>Tue, 13 Jul 2010 02:40:31 +0000</pubDate>
		<dc:creator>Duane Johnson</dc:creator>
				<category><![CDATA[Software Engineering]]></category>
		<category><![CDATA[idea]]></category>

		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=1063</guid>
		<description><![CDATA[I had an idea today that had its origins about 4 months ago when I read a blog post about a &#8220;logarithmic calendar&#8221; by Marco Arment.  The logarithmic calendar is a very practical solution to an obvious problem: we care more about what&#8217;s happening in the near future than the far future, so why not [...]]]></description>
			<content:encoded><![CDATA[<p>I had an idea today that had its origins about 4 months ago when I read a blog post about a &#8220;<a href="http://www.marco.org/480805355">logarithmic calendar</a>&#8221; by Marco Arment.  The logarithmic calendar is a very practical solution to an obvious problem: we care more about what&#8217;s happening in the near future than the far future, so why not make a calendar to reflect this need?  The idea of a rectangular page with equally-sized blocks representing days is so&#8230; Gregorian, however.  Why not use the visualization power of a computer to help us out?</p>
<p>Rather than use a 2-dimensional plane as Marco suggests, why not use our 3-dimensional spacial perception ability to &#8220;see into the future&#8221;? (Perhaps this is what he is suggesting by the mention of a &#8220;navigation screen&#8221;.) The real benefit in this case would be that we could give &#8220;high priority&#8221; events a larger size so that even when they are way in the back (far in the future) we can still see them coming from a mile away:</p>
<p><a href="http://blog.inquirylabs.com/wp-content/uploads/2010/07/Perspective-Calendar.png"><img class="aligncenter size-full wp-image-1064" title="Perspective Calendar" src="http://blog.inquirylabs.com/wp-content/uploads/2010/07/Perspective-Calendar.png" alt="" width="636" height="399" /></a></p>
<p>I would love to be able to view this calendar with a zoom in/out function, and the ability to look in the &#8220;rear-view mirror&#8221; at a history of big events in the somewhat recent past.  You could even change the perspective ratio to get more or less time in visible scale.</p>
<p>Also, you could put &#8220;tags&#8221; poking out of the side for holidays or other day-long events that need to be marked.  If the Perspective Calendar caught on, perhaps a tube or tunnel would be an even better metaphor, since it would allow for 360 degrees of events in a day&#8230; except for the clutter that might cause.  In any case, I hope the makes the rounds and someone implements it on top of iCal or Google Calendars. <img src='http://blog.inquirylabs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inquirylabs.com/2010/07/12/perspective-calendar/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Unit Test Your Brain</title>
		<link>http://blog.inquirylabs.com/2010/04/24/unit-test-your-brain/</link>
		<comments>http://blog.inquirylabs.com/2010/04/24/unit-test-your-brain/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 21:31:24 +0000</pubDate>
		<dc:creator>Duane Johnson</dc:creator>
				<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=1057</guid>
		<description><![CDATA[As a software engineer, I spend a lot of time in a text editor (about 40 hours per week).  Recently, I&#8217;ve been learning to use the Vim editor (specifically, MacVim) and have been pleasantly surprised by the power and flexibility.  One of my larger goals in life is to engage in deliberate practice in the [...]]]></description>
			<content:encoded><![CDATA[<p>As a software engineer, I spend a lot of time in a text editor (about 40 hours per week).  Recently, I&#8217;ve been learning to use the Vim editor (specifically, <a href="http://code.google.com/p/macvim/">MacVim</a>) and have been pleasantly surprised by the power and flexibility.  One of my larger goals in life is to engage in <a href="http://www.openeducation.net/2008/11/02/deliberate-practice-%E2%80%93-where-self-reflection-work-ethic-and-ambition-meet/">deliberate practice</a> in the things I want to become very good at.  Because of my vocation, I&#8217;ve chosen Vim as one area where it seems worthy of dedicating time and effort to becoming an expert.</p>
<p>So you can think of deliberate practice as Unit Tests for your brain: find an invariant function that takes inputs, applies a transform to produce outputs, and then compares the outputs with an expected value.  If I were a psychologist, I would probably be able to poke a hole in this short explanation of deliberate practice, but for this initial application to Vim, I think it suffices.</p>
<p>What would Unit Tests for your brain look like?  Whenever you learn something new in Vim, add a line to a text file that gives you the opportunity to practice your new ability:</p>
<pre style="padding-left: 30px;">Using the 'surround' plugin, remove the single quotes from 'surround'.
</pre>
<p>Your text file will grow in length as you learn new abilities.  Revisit the text file and perform each of your Unit Tests on a daily basis.  The strength of your neuronal connections will improve and you will become an expert at editing in Vim.</p>
<pre style="padding-left: 30px;">Using 'surround', remove the _value and replace with ['value']:
  config_value

Using a macro recording, prefix the first and third words of each
line with a double dash ("--"):
  one two three four
  five six seven eight
  nine ten eleven twelve

Display the contents of the register where you recorded the macro:

Modify the above macro to use underscores instead of dashes, and
then read the macro back into the register.

etc.
</pre>
<p>This is the best solution I&#8217;ve found to the <a href="http://groups.google.com/group/vim_use/browse_thread/thread/fc309c476334659e/bfadb67125fa5590">related question</a> I posted on the Vim list.  I hope it works for you!</p>
<p><strong>Update:</strong> I forgot to mention that one really neat technique I&#8217;ve picked up is the ability to quickly go to my practice file and add new tricks.  The way I do this is by using (mark-capital-letter) in Vim: go to the practice file, and type &#8220;mP&#8221;.  This adds a bookmark to the file.  Now, whenever you want to re-visit the practice file, type &#8216;P (single-quote-P).   Instant access!  Any capital letter can be used.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inquirylabs.com/2010/04/24/unit-test-your-brain/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Stanley Williams and the Memristor</title>
		<link>http://blog.inquirylabs.com/2010/04/23/stanley-williams-and-the-memristor/</link>
		<comments>http://blog.inquirylabs.com/2010/04/23/stanley-williams-and-the-memristor/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 01:12:29 +0000</pubDate>
		<dc:creator>Duane Johnson</dc:creator>
				<category><![CDATA[Science]]></category>
		<category><![CDATA[Software Engineering]]></category>

		<guid isPermaLink="false">http://blog.inquirylabs.com/?p=582</guid>
		<description><![CDATA[Ever since the discovery of the memristor was announced at HP labs last year, I&#8217;ve been fascinated by its story and its promises.  Now, its inventor Stanley Williams has given a presentation (available on YouTube) that goes in to some of the mathematical details and further predictions that he has for the device.
It&#8217;s a [...]]]></description>
			<content:encoded><![CDATA[<p>Ever since the discovery of the memristor was announced at HP labs last year, I&#8217;ve been fascinated by its story and its promises.  Now, its inventor Stanley Williams has given a presentation (available on <a href="http://www.youtube.com/watch?v=bKGhvKyjgLY">YouTube</a>) that goes in to some of the mathematical details and further predictions that he has for the device.</p>
<p>It&#8217;s a 45 minute presentation, but if you&#8217;re interested in the future of computing, I think you&#8217;ll enjoy it.  I was impressed with the foresight of Leon Chua who in the late 1960s and early 70s discovered via mathematical exercise the &#8220;missing circuit element&#8221; that should relate flux to charge.  If I were him, I think I&#8217;d have lost a little confidence in my work if my predictions hadn&#8217;t panned out after 40 years.</p>
<p>In addition to the neat math behind it (the memristor is the only fundamental circuit component that is time-variant, and therefore cannot be described in a single equality relationship), Williams makes some stunning claims about the potential of the memristor.  For example, in strange agreement with <a href="http://en.wikipedia.org/wiki/Predictions_made_by_Raymond_Kurzweil">Ray Kurzweil&#8217;s predictions</a>, Williams shows a 3D cube of memristors on his slides.  He predicts that we will soon have memory storage devices that last for &#8220;geologic time&#8221; (i.e. thousands or millions of years) but that can react at nanosecond switching speeds.  What&#8217;s more, because the memory is passive (no energy required to sustain) the memristor is perfectly suited to low-power and low-heat systems: in other words, it just makes sense to stack them on top of each other.  Williams calculates a theoretical limit of 1 petabit of storage per cubic centimeter (I think he said square centimeter in the presentation, but I assume he misspoke, since his slide shows a 3D cube?)</p>
<p>Another exciting part of the presentation comes near the end where Williams shows how the memristor may play a role in the next 10 years of computing achievements.  He highlights the work of the HP photonics lab and claims that data transfer will soon be achieved through light (photons) for distances greater than a micrometer.  With the remarkable ability of memristors to be both memory and logic gates (they naturally form the &#8220;implication&#8221; logic function which Bertrand Russell showed could represent logical operations in the most compact form), Williams envisions a computing device with hundreds or thousands of cores in a 3D matrix, with photonic message passing between devices.  He estimates that in 10 years, the combination of these two technologies will increase our computation-per-dollar by 100 times.</p>
<p>And last but not least was the incredible insight, this time once again from Leon Chua, that the memristor behaves much like a human neuron.  The HP lab that invented the memristor is already working on a prototype chip that will attempt to emulate the neurons in a brain, much like the Bluegene-L system has achieved.  As Williams pointed out in his presentation, the key here is emulation, not simulation.  Up until now, we have only been able to simulate the brain with our computing technology.  What will it be like to properly emulate it?</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.inquirylabs.com/2010/04/23/stanley-williams-and-the-memristor/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
