<?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>ideonexus.com &#187; Geeking Out</title>
	<atom:link href="http://ideonexus.com/category/geeking-out/feed/" rel="self" type="application/rss+xml" />
	<link>http://ideonexus.com</link>
	<description></description>
	<lastBuildDate>Mon, 16 Jan 2012 05:00:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Science Fiction Versus Fantasy &#8211; Uncensored</title>
		<link>http://ideonexus.com/2011/09/26/9041/</link>
		<comments>http://ideonexus.com/2011/09/26/9041/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 05:00:40 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Enlightenment Warrior]]></category>
		<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=9041</guid>
		<description><![CDATA[This is the uncensored version of my Science Fiction VS Fantasy piece I wrote for the Science Creative Quarterly several years ago. I&#8217;ve also written much more extensively on this topic in the past. This is the abbreviated version with 10% more snark: I Fanboy: Hey gang! Did you read The Sword of Shanara? The [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is the uncensored version of my <a href="http://www.scq.ubc.ca/science-fiction-vs-fantasy-an-opinionated-guide/">Science Fiction VS Fantasy</a> piece I wrote for the Science Creative Quarterly several years ago. I&#8217;ve also written <a href="http://ideonexus.com/2007/08/20/science-fiction-vs-fantasy/">much more extensively on this topic in the past</a>. This is the abbreviated version with 10% more snark:</em></p>
<p>
<center><br />
<H2>I</H2><br />
</center></p>
<p>
<b>Fanboy</b>: Hey gang! Did you read <i>The Sword of Shanara</i>? The characters traveled hundreds of miles described in excruciating detail for hundreds of pages, until they reached the ultimate battle between good and evil! Cool huh?</p>
<p>
<b>Scientist:</b> <i>Whatever.</i> The characters in <i>Red Planet</i> traveled 48 million miles to Mars, while those in <i>2001</i> traveled 369 million miles to Jupiter. Characters in Asimov&#8217;s <i>Foundation</i> books travel millions of light-years all over the Milky Way galaxy in routine manner. Isn&#8217;t it amazing what people can accomplish when they don&#8217;t have to walk everywhere? Thank a scientist for your planes, trains, automobiles, and spaceflight whydontcha.</p>
<p>
<b>Fanboy</b>: Yeah, but did you see in <i>The Lord of the Rings</i> when Gandalf fought the Balrog all the way down a really deep hole and then all the way back up to the top of a mountain peak!?!?</p>
<p>
<b>Scientist:</b> <i>Big whoop.</i> The adventurers in <i>The Core</i> traveled to the very center of the Earth, fighting technological, natural, and human hazards all the way down and all the way back up to the Earth&#8217;s crust again. Characters in <i>Fantastic Voyage</i> and <i>Innerspace</i> fought their way all through the human body in microscopic form. </p>
<p>
<b>Fanboy</b>: Ooookay&#8230; But did you see all those maps having to do with the <i>Wheel of Time</i> books? It&#8217;s a huge continent! Pretty epic, huh?<br />
<span id="more-9041"></span></p>
<p>
<b>Scientist:</b> <i>Thpppt. Not.</i> The film <i>Contact</i> opens with a satellite shot of Earth and pulls away, out of the solar system, out of the galaxy, and out to a view of many galaxies. The film <i>Men in Black</i> pulls out past many galaxies to many universes. Maybe you can find some flat-Earthers to impress with you dinky little maps.</p>
<p><table border="0" cellpadding="10" cellspacing="0" width="0" align="center">
<tr>
<td align="center" nowrap>
<center><br />
<img src="http://ideonexus.com/wp-content/uploads/2011/09/sffantasyscopes.jpg" width="400" height="270" border="0" alt="Fantasy and SF Scopes"><br />
</center><br />
<b>Fantasy and SF Scopes</b>
</td>
</tr>
</table>
<p>
<b>Fanboy</b>: The Dragon Riders in <i>Eragon</i> spent thousands of years protecting and guarding and stuff. <b><i>Thousands of years!!!</i></b> Isn&#8217;t that amazing?</p>
<p>
<b>Scientist:</b> <i>No, that&#8217;s &#8220;we todd did.&#8221; (Say that outloud until you get it.)</i> The film <i>A.I.</i> begins in our near future and then jumps 10,000 years ahead of that. And you know what? <b>Things changed</b>. Technology advanced incomprehensibly, society changed and its inhabitants evolved. Compare this to a bunch of dumbass Dragon Riders who never updated their swords to guns or dragons to fighter jets despite having <b>millenia</b> to do so? Dude, that&#8217;s Weak.</p>
<p>
<b>Fanboy</b>: The Balrog, Godzilla, and Dragons are really big. That&#8217;s got to count for something. Right?</p>
<p>
<b>Scientist:</b> <i>Whaddya want, a cookie?</i> V&#8217;ger, from <i>Star Trek, The Motion Picture</i>, is so large that much of the movie is spent showing the Enterprise traveling through it. The living ocean in <i>Solaris</i> covers an entire planet. V&#8217;ger wants to find god. Solaris is so advanced we cannot even decipher it&#8217;s motivations. Colossal Science Ficiton beings,  have much bigger aspirations than growling and smashing things.</p>
<p>
<b>Fanboy</b>: There were thousands of monsters and people on the battlefields of <i>Lord of the Rings</i>. When Sauron is destroyed a volcano erupts and the earth swallows its legions of monsters. Now <b>that</b> was awesome! Am I right? I mean, am I right???</p>
<p>
<b>Scientist:</b> (<i>Rolling eyes and pantomiming masturbation.</i>) <i>War of the Worlds</i> reduced entire cities to rubble. <i>Star Wars</i> blew up entire planets. <i>2010</i> transformed Jupiter into a star just to thaw out Europa for life to evolve there. Your &#8220;epic&#8221; armies are kind of cute though.</p>
<p>
<b>Fanboy</b>: Okay. Okay. Okay. I got one. In <i>LOTR</i> Arwen Evenstar&#8217;s father warns her that, as an immortal, if she abandons her elfin people, her mortal lover will eventually die and she will be alone forever. <i>Forever!</i> Top that Science Fiction!</p>
<p>
<b>Scientist:</b> <i>Bite me fanboy.</i>  In Science Fiction, <i>all</i> of the immortal elves would be cursed, as eventually the Universe would dissipate to an entropic state of absolute zero, leaving them frozen in total darkness forever, completely devoid of emotional, intellectual, or spiritual growth (Not too different from sitting through all 16-plus hours of the extended DVD version of <i>Lord of the Rings</i>). Sucks to be an elf.</p>
<p><p>
<center><br />
<H2>II</H2><br />
</center></p>
<p>
In <i>Star Trek</i> human beings travel through space in a type of flying saucer, secretly visiting primitive civilizations like the one we live in presently, never interfering with them so as not to violate the &#8220;Prime Directive.&#8221; <i>Star Trek</i> provides a powerfully positive vision of what the human race may become through scientific understanding, technological progress, and human ambition.</p>
<p>
<i>Conan, The Barbarian</i> is about a barbarian. He travels around a teensy-weensy percentage of planet Earth&#8217;s total landmass, chopping things with his sword, and seeking revenge against the man who killed his parents. <i>Conan</i> presents a glimpse into a single lifetime from ancient human history, and one we may aspire to if we abandon all technology, burn down all libraries, abolish all Universities, and stop wiping our butts.</p>
<p>
I love <i>Star Trek</i>. <i>Star Trek</i> inspires me to educate and improve myself. I know I can&#8217;t achieve in my lifetime what <i>Star Trek</i> presents, but I also know my children&#8217;s children&#8217;s children will one day make similarly fantastic accomplishments, so long as they remain as inspired as I am by Science Fiction&#8217;s vision.</p>
<p><table border="0" cellpadding="10" cellspacing="0" width="0" align="right">
<tr>
<td align="center" nowrap>
<center><br />
<img src="http://ideonexus.com/wp-content/uploads/2011/09/chosenone.jpg" width="200" height="286" border="0" alt="Typical Chosen One"><br />
</center><br />
<b>Typical<br />
&#8220;Chosen One&#8221;</b>
</td>
</tr>
</table>
<p>At the same time, <i>Conan</i>, while entertaining, doesn&#8217;t provide a practical model for inspiring present-day action. I like having a clean butt, and I want my children to have clean butts; therefore, <i>Conan</i> doesn&#8217;t hold much appeal as role-model. The <i>Lord of the Rings</i> films were entertaining, but we all know the reality is that Frodo would be missing lots of teeth, Gandalf would be a very stinky old man, and Aragorn would have a serious flea problem.</p>
<p>
Not that we could aspire to anything in fantasy stories even if we wanted to. That&#8217;s because fantasy stories are about &#8220;chosen ones,&#8221; be they kings, hobbits, or wizards. Only these elites, born into their castes, may save the world.</p>
<p>
It&#8217;s also really boring. Here&#8217;s every single &#8220;chosen one&#8221; story line:</p>
<p>
<b>Someguy:</b> I think he is the chosen one!</p>
<p>
<b>Choosen One:</b> But I&#8217;m just some doofy pud-wacker!</p>
<p>
<b>Everybody Else:</b> He is the chosen one!!!</p>
<p>
<b>The Grand Poo-Bah:</b> He has defeated the melodramatic personification of pure concentrated evil!!! Thus, proving his status as the chosen one!!!</p>
<p>
<b>Everybody:</b> Hooray for the chosen one! Let&#8217;s party!</p>
<p>
<b>Chosen One:</b> Hooray for me!</p>
<p>
There, now you can skip seeing <i>Lord of the Rings</i> <i>Eragon</i>, <i>Harry Potter</i>, <i>Willow</i>,, <i>Star Wars</i>, <i>Highlander</i>, <i>Dragonslayer</i>, <i>Flash Gordon</i>, <i>Transformers The Movie</i>, <i>The Golden compass</i>, <i>The Lion, the Witch, and the Wardrobe</i>, <i>The Matrix</i>, <i>The Neverending Story</i>, <i>Dune</i>, <i>Legend</i>, <i>Excalibur</i>, and the <i>New Testament</i>.</p>
<p>
If you weren&#8217;t born with &#8220;metachlorians&#8221; in your blood, superpowers, a magical birthmark, a fair complexion, blonde hair, blue eyes, and a penus, then I&#8217;m sorry, but you don&#8217;t qualify as a chosen one, and no amount of body building, martial arts training, gender reassignment surgery, motivational speakers, higher education, psychotherapy, hard work or determination will every make you the &#8220;chosen one.&#8221;</p>
<p>
Compare this to <i>Star Trek</i>, where a team of experts regularly collaborate on problem solving. <i>Star Trek</i> heroes are heroic because they went to Starfleet Academy. They study in their spare time to keep on top of the latest advances in their fields. They are perpetually exploring and broadening their horizons to become better heroes, and anyone, even the audience, can do the same. In Scence Fiction, heroism is open to <i>everyone</i>.</p>
<p>
<center><br />
<H2>III</H2><br />
</center></p>
<p>
Fantasy sells. Bookstores and theaters are brimming with works of fantasy, be they <i>Harry Potter</i>, C.S. Lewis, <i>Dragonology</i>, <i>Eragon</i>, or <i>Lord of the Rings</i>. Science Fiction sales are in decline, while Fantasy sales are shooting through the roof. </p>
<p>
C.S. Lewis (<i>Chronicles of Narnia</i>) and J.R.R. Tolkien (<i>Lord of the Rings</i>) were English faculty at Oxford. Robert Jordan (<i>Wheel of Time</i>) has a BS in Physics. J.K. Rowling (<i>Harry Potter</i>) has a BA in French. Christopher Paolini (<i>Eragon</i>) has no higher education as of yet.</p>
<p>
These fantasy writers have inspired countless fans to stand in long lines at movie theaters and books stores sporting capes, light-sabers, and elf-ears, while endlessly debating which of their favorite trilogies is superior based on purely subjective criteria. </p>
<p>
In contrast, David Brin (<i>Uplift</i>) has a Ph.D. in Space Science. Stanislaw Lem (<i>Solaris</i>) could not attain his medical degree because he refused to accept <a href=" http://en.wikipedia.org/wiki/Lysenkoism" target="_blank">Lysenkoism</a>, but did work as a scientific researcher. Dr. Isaac Asimov (<i>Foundation</i>) was a professor of biochemistry, Vice President of Mensa International, president of the American Humanist Association, and wrote <b>hundreds</b> of books on science, politics, and human improvability. </p>
<p>
These science fiction authors have accurately predicted the future from cell phones to the Internet. They have contributed to the human race&#8217;s collective body of knowledge, and they have inspired countless others to do the same. </p>
<p>
Science Fiction fans are intellectually engaged with their subject matter, taking the speculation beyond what is presented, and internalizing its vision to inspire their own accomplishments and contributions to society. Science Fiction walks alongside civilization, evolving and growing in potential as we grow and evolve as a society and a species.</p>
<p>
Fantasy books use printing presses and desktop publishing software to glorify times when most people were illiterate. Fantasy movies use computer animation and special effects technologies to let people escape to worlds without films and special effects. Fantasy video games whisk players away to realms devoid of computers. Fantasy wants to delude us into thinking things were better, more exciting and morally clear in mythical ancient times without electricity, running water, toothpaste, toiletpaper, fast food, equal rights, aspirin, diet soft drinks, or any of the other myriad conveniences of modern life that science has betowed upon us. All fantasy fans have to look forward to is bigger swords, flashier magic, and more gruesome monsters. Fantasy is an intellectual dead end.</p>
<p>
While fantasy broods on an overly idealized dramatization of the past, science fiction looks upwards and outwards to the future. As L. Ron Hubbard said:</p>
<blockquote><p>
<i>[Science Fiction] is the herald of possibility. It is the plea that someone should work on the future. Yet it is not prophecy. It is the dream that precedes the dawn when the inventor or scientist awakens and goes to his books or his lab saying, ‘I wonder whether I could make that dream come true in the world of real science.’</i>
</p></blockquote>
<p>Science Fiction argues that the best times lay ahead of us, but only if we make them happen.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2011/09/26/9041/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Computer Science in Tron Legacy</title>
		<link>http://ideonexus.com/2011/04/04/computer-science-in-tron-legacy/</link>
		<comments>http://ideonexus.com/2011/04/04/computer-science-in-tron-legacy/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 05:00:58 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=8720</guid>
		<description><![CDATA[Tron and Tron Legacy I attended the Experiments with the Imagination session at Science Online 2011, where we discussed what made good versus bad inclusion of science in fiction. Interesting points were made, such as audience members being able to excuse bad science for kick-ass portrayals of scientists, like in the movie 2012, and a [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/04/tronoldnewposters.jpg" border="0" width="500" height="339" alt="Tron and Tron Legacy"><br />
<b><em>Tron</em> and <em>Tron Legacy</em></b>
</div>
<p>I attended the <a href="http://memexplex.com/Meme/255/">Experiments with the Imagination</a>  session at <a href="http://scienceonline2011.com/">Science Online 2011</a>, where we discussed what made good versus bad inclusion of science in fiction. Interesting points were made, such as audience members being able to excuse bad science for kick-ass portrayals of scientists, like in the movie <em>2012</em>, and a deep concern for how science is portrayed in film because Hollywood blockbusters carry so much cultural influence in America.</p>
<p>There was also an intriguing question about working scientific elucidation into fiction, which stuck in my mind when a member of the audience mentioned how terrible was the film <a href="http://disney.go.com/tron/"><em>Tron Legacy</em></a> and was met with lots of head-nodding and murmurs of agreement. I had actually enjoyed <em>Legacy</em>, and, after rewatching it, realized that I was seeing a very different film than the average audience member.<br />
<span id="more-8720"></span></p>
<h2>Unexplained Computer Science in <em>Tron Legacy</em></h2>
<p><em>Legacy</em> starts out promising enough, with hard SF possibilities and discussions of deeper, real-world issues being tackled in software development. Alan Bradley, the programmer who invented Tron in the first film, questions the cost of the software his company markets at a software release meeting, &#8220;Given the prices that we charge to students and schools, what sort of improvements have been made in Flynn&#8211;I mean, <em>Encom OS 12</em>?&#8221; To which, the CEO cynically replies, &#8220;This year we put a &#8217;12&#8242; on the box.&#8221; The story appears to be setting up a conflict between open and closed source software, but then doesn’t.</p>
<p>When Sam Flynn puts the latest version of Encom&#8217;s software online for free, Edward Dillinger, the company&#8217;s star programmer and potential villain for the sequel, hops onto the server and types in: <em>ps -ef | grep -i os12</em>. The <em>ps -ef</em> part tells the OS to provide a full listing of every process running on the server. The <em>grep -i os12</em> performs a case-insensitive search for files with name and contents matching &#8220;os12&#8243;. He then types in the command <em>kill -9 17319</em>, telling the OS to kill the process identified by the number 17319 with the &#8220;-9&#8243; part forcing the termination in the most forceful way possible. Sam put the file online for free, Edward killed it.</p>
<div align="center">
<a href="http://www.flickr.com/photos/driph/3045140292/"><img src="http://ideonexus.com/wp-content/uploads/2011/04/tronarcade.jpg" border="0" width="500" height="375" alt="TRON Arcade Game"></a><br />
<b>TRON Arcade Game</b><br />
Credit: <a href="http://www.flickr.com/photos/driph/3045140292/">driph</a>
</div>
<p>When Sam finds his father&#8217;s workstation still up and running after 20 years in the old arcade, the first thing he does when he sits down at the console is type <em>whoami</em> to find out what user was working on it last. The answer is that his father, Kevin Flynn was the last person to work on it. He then types <em>uname -a</em> to find out the current system&#8217;s basic name information and follows that with an unsuccessful attempt to login to the system with full privileges. Finally, he tries the <em>history</em> command, revealing the last dozen commands his father performed on the system. The last of these is an ominous sounding &#8220;<em>LLLSDLaserControl -ok 1</em>,&#8221; but preceding it is a little joke, if you understand that the <em>vi</em> command stands for &#8220;Visual Editor,&#8221; a text-editing program:</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/04/flynndesktop.jpg" border="0" width="500" height="294" alt="Kevin Flynn's Final System Commands"><br />
<b>Kevin Flynn&#8217;s Final System Commands</b>
</div>
<p>This is what I saw happen in the first 20 minutes of <em>Tron Legacy</em>, and it made for a much more engaging film. It got me primed to really geek-out when the protagonist inevitably gets zapped into the special-effects laden fantasy world.  But what did anyone unfamiliar with a command-line operating system see? People looking serious and typing gobbledeegook. I appreciate the inside-jokes for computer geeks, but would it have hurt the film&#8217;s pace to clue the audience in a little more as to what was going on here?</p>
<h2>Missed Possibilities in the Fantasy World</h2>
<p>The film throws some important terms around in describing what is taking place on the &#8220;Grid,&#8221; Kevin Flynn&#8217;s personal server where the world of the original <em>TRON</em> is preserved and evolving. Alan Bradley mentions that Kevin was working with <a href="http://en.wikipedia.org/wiki/Genetic_algorithm">genetic algorithms</a>, a fascinating realm of computer science where software developers actually <em>grow and evolve</em> programs through a kind of natural selection, where the programs that perform their tasks most efficiently are allowed to propagate. The mention of this term got me leaning forward in my seat, but since the film doesn&#8217;t define the term for the audience, they continue to twiddle their thumbs waiting for the action to start.</p>
<p>Once on the grid, we learn a little about Flynn&#8217;s history in creating it, establishing order and producing a digital mirror of himself in the character Clu to help with his plan. Then, the ISOs emerged from the system. <a href="http://mathworld.wolfram.com/Isomorphic.html">Isomorphic Algorithms</a> are objects that are similar in their structural properties if you can ignore their minor differences. In the case of the grid, the ISOs are identical in their consciousnesses and in their digital DNA, but they are remarkable for their differences and what we can learn from them,<br />
&#8220;a digital frontier to reshape the human condition&#8221; as Kevin Flynn calls them. </p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/04/flynnclu.jpg" border="0" width="500" height="333" alt="Flynn VS Clu"><br />
<b>Flynn VS Clu</b>
</div>
<p>There is a fascinating evolution taking place on the grid, and the director even refered to the computer system as a <a href="http://www.wired.com/underwire/2010/11/tron-legacy-evolved/">digital Galapagos island</a> where life is evolving along divergent lines in isolation. With this background, we can see Clu as an artificial intelligence who does not understand the complexities of evolution. It is a being who believes life on the Grid will best evolve through games of life and death, survival of the fittest, but that is <em>unnatural selection</em>.</p>
<p>We can&#8217;t fault Clu for his misunderstanding; after all, Clu itself is the product of artificial selection. Genetic algorithms are selected by the programmer for traits the experimenter finds desirable. Clu imposes order on the grid the way Flynn imposed order: unnatural selection. The ISOs are an unexpected, messy development, undesigned and unplanned, and Flynn has lost interest in actively directing the evolution of life on the grid. So Clu purges them both.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/04/quora.jpg" border="0" width="500" height="375" alt="Quora the Isomorph"><br />
<b>Quora the Isomorph</b>
</div>
<h2>The Computer Science Fiction Frontier</h2>
<p>It&#8217;s easy to indulge in cynical speculation as to why the creators of <em>Tron Legacy</em> decided to gloss over all of these deeper aspects of the plot. Maybe they didn&#8217;t trust audiences to appreciate the philosophical conflicts. Maybe they wanted to avoid the geek-factor that many use to explain the original <em>Tron</em> being such a flop.</p>
<p>1982&#8242;s <em>Tron</em> was unabashed geekdom. Kevin Flynn wasn&#8217;t a fighter, he was a programmer and a gamer. He&#8217;s an intellectual renegade and his coworkers are serious nerds. The film was brimming with little techie inside jokes, like the Bit who can only answer with &#8220;yes&#8221; and &#8220;no&#8221; to questions put to it and an actuarial program named Ram who got great satisfaction from his work before being assimilated by the Master Control Program (MCP). The MCP itself was an evolved being, a chess program that grew by assimilating the intellectual property of other software developers and crushing the faith of programs who believed in the existence of &#8220;Users.&#8221;</p>
<p>Such nerd-appeal may have doomed <em>Tron&#8217;s</em> box office take, but it&#8217;s also what made the film a cult classic. Does <em>Legacy</em> delve into its philosophical issues deeply enough to stay engaging into the future? Or is it just another CGI orgy destined to be forgotten with all the other action films overloading theaters each year?</p>
<p>For science fiction enthusiasts, <em>Tron Legacy</em> does at least have the benefit of trying something different. Computer science has opened a new frontier for fiction, from <em>Tron</em>, <em>The 13th Floor</em>, <em>The Matrix</em>, and <em>Dark City</em>, there are deeper and shallower explorations of what it means to create a tiny, virtual world and the unique ethical conundrums that possibility brings. If you think of <em>Tron Legacy</em> in this context, the film is a quite enjoyable piece of science fiction.</p>
<hr width="90%" />
<p><b>Additional Notes</b></p>
<li>Gotta plug my book here, <a href="http://ideonexus.com/2010/09/07/entropy-of-imagination-a-creative-commons-ebook/"><em>Entropy of Imagination</em></a>, written before <em>Tron Legacy</em>, deals with a World Wide Web populated by AIs abandoned by the minds that created them and the inevitable breakdown of ideas that will doom them.</li>
<li>For a deeper engagement of the philosophical issues in <em>Tron Legacy</em> I recommend Alasdair Stuart&#8217;s <a href="http://www.alasdairstuart.com/?p=333">Digital Galapagos: Tron Legacy</a>, which deals more with the character-driven drama.</li>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2011/04/04/computer-science-in-tron-legacy/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>&#8220;Kill Your Darlings&#8221; is a Programming Principle Too</title>
		<link>http://ideonexus.com/2011/02/28/kill-your-darlings-is-a-programming-principle-too/</link>
		<comments>http://ideonexus.com/2011/02/28/kill-your-darlings-is-a-programming-principle-too/#comments</comments>
		<pubDate>Mon, 28 Feb 2011 04:16:29 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=7940</guid>
		<description><![CDATA[Proce55ing Source Code Credit: Niels Heidenreich In his book On Writing Stephen King argued that to be a good writer, you must be able to &#8220;Kill your darlings,&#8221; where, for the sake of keeping the prose moving, you must cut out the non-essential parts, no matter how well-written: Mostly when I think of pacing, I [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<a href="http://www.flickr.com/photos/schoschie/8821223/"><img src="http://ideonexus.com/wp-content/uploads/2011/02/processingcode.jpg" border="0" width="550" height="480" alt="Proce55ing Source Code"></a><br />
<b>Proce55ing Source Code</b><br />
Credit: <a href="http://www.flickr.com/photos/schoschie/8821223/">Niels Heidenreich</a>
</div>
<p>In his book <em>On Writing</em> Stephen King argued that to be a good writer, you must be able to &#8220;<a href="http://memexplex.com/Meme/238/">Kill your darlings</a>,&#8221; where, for the sake of keeping the prose moving, you must cut out the non-essential parts, no matter how well-written:</p>
<blockquote><p>
Mostly when I think of pacing, I go back to Elmore Leonard, who explained it so perfectly by saying he just left out the boring parts. This suggest cutting to speed the pace, and that’s what most of us end up having to do (kill your darlings, kill your darlings, even when it breaks your egocentric little scribbler’s heart, kill your darlings)&#8230;I got a scribbled comment that changed the way I rewrote my fiction once and forever. Jotted below the machine-generated signature of the editor was this mot: “Not bad, but PUFFY. You need to revise for length. Formula: 2nd Draft = 1st Draft – 10%. Good luck.”
</p></blockquote>
<p>Writing code is much like writing prose, but I think it&#8217;s even harder to cut your most beautiful ideas from a computer program. In software design, we have to research heavily and go through hours of trial and error to produce some of our solutions. It&#8217;s one thing to slash several paragraphs of prose crafted in a hour of brilliant inspiration, it&#8217;s quite another to throw away an inventive solution and the wisdom that came with it.<br />
<span id="more-7940"></span><br />
When we refactor, we seek to both reduce the amount of code and improve its logical flow. We use the term &#8220;<a href="http://web.eecs.utk.edu/~mclennan/papers/Elegance.html">elegance</a>&#8221; to convey the ideal of well-written code. But there&#8217;s a nuance to this, we also need to avoid <a href="http://c2.com/cgi/wiki?KillYourDarlings">being clever for the sake of being clever</a>:</p>
<blockquote><p>
In software design, when you find yourself feeling particularly proud of a neat little bit of design or code, stop and ask yourself how someone who didn&#8217;t give birth to it will regard it. If it turns out to be overwrought or too slick for the need, you should probably kill your darling and replace it with an ordinary solution that others can actually use, and not just marvel at. <em>Darlings are sometimes characterized as being &#8220;ever so clever.&#8221; For an example, the phrase &#8220;ever so clever&#8221; is ever so clever.</em>
</p></blockquote>
<p>Reading this passage, I can think of lots of times I&#8217;ve had to refactor code that was &#8220;ever so clever&#8221; and make it more straightforward. There is nothing inelegant about being straightforward, and your peers will appreciate it.</p>
<p>Some code falls on the borderline. Consider the following snippet from the <a href="http://code.google.com/p/memexplex/source/browse/">MemexPlex codebase</a>:</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/02/decoratorpattern.jpg" border="0" width="503" height="316" alt="Decorator Pattern"><br />
<b>Decorator Pattern</b>
</div>
<p>I managed to eliminate about 300 lines of code with this design pattern, and that&#8217;s great, but I also made the code much more difficult to comprehend. This is an example of the <a href="http://en.wikipedia.org/wiki/Decorator_pattern">Decorator Pattern</a>, where each object accepts an object of the same class as one of its arguments and then adds its own methods and properties to it. In this case, each object contains a section of HTML for building a complete web page, which the object accepting it then appends its own HTML section onto in in the appropriate place. I think this code falls in a gray area, not straightforward, but it increases maintainability dramatically. So it&#8217;s great so long as I&#8217;m the only one working with it.</p>
<p>Jay Fields also talks about the &#8220;Kill Your Darlings&#8221; concept <a href="http://blog.jayfields.com/2009/03/kill-your-darlings.html">as it relates to programming</a>, considering it as a way to avoid stagnation:</p>
<blockquote><p>
George Malamidis taught me something about code attachment a few years ago: You always gain by allowing someone to show you an alternative solution. If someone wants to solve a problem in a different way, there are several gains to be had. If their way is inferior, you have an opportunity to mentor a team-mate. If their way is equally elegant, you&#8217;ve gained another solution, or point of view that may be superior in the future. If their way is superior you learn something new and the codebase improves. In exchange for these gains you only need to give up time. Time is valuable, but it&#8217;s also well spent on improving the ability of a team-mate or your personal ability.</p>
<p>[...]</p>
<p>I think killing your darlings extends beyond codebases and frameworks to languages themselves. At SpeakerConf 2009, I floated the idea that <b>we should more actively seek to kill languages. Perhaps, after 3 versions of a language, it&#8217;s time for that language to be retired.</b> Imagine what we could create if the resources dedicated to Java were instead focused on creating a successor to Java. Think of all the time that would be saved if backwards compatibility became a non-issue.
</p></blockquote>
<p>This is an interesting perspective, killing code, frameworks, and even languages as a means of forcing the programming community to improve the entire environment. It&#8217;s a way to fend off <a href="http://cscs.umich.edu/~crshalizi/notabene/qwerty.html">technology lock-in</a>, like QWERTY for keyboard layouts, but for languages and frameworks. Look at what a huge standard the <a href="">Zend Framework</a> is, with tons of libraries and an enormous codebase, compared to the sleeker <a href="">Code Igniter</a>. One person&#8217;s code library is another&#8217;s baggage.</p>
<p>It&#8217;s another balancing act: learning from the mistakes of the past versus having the daring to venture into new solutions. Our code serves as a repository of our knowledge, and, if you&#8217;re like me, you keep libraries of old code around so you can quickly look up how you solved some bit of minutiae, like a string manipulation or regex expression, without having to figure it out again. If you&#8217;re also like me, you keep <a href="http://stackoverflow.com/">stackOverflow</a> open all day looking for new solutions. The code I&#8217;ve written in the past has survived the trial by fire of a production environment, but it&#8217;s old, while the code I find online, while not as fleshed-out, will often provide a more modern and elegant solution.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2011/02/28/kill-your-darlings-is-a-programming-principle-too/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Breakout of Slide Presentation Linearity with Prezi</title>
		<link>http://ideonexus.com/2011/02/21/breakout-of-slide-presentation-linearity-with-prezi/</link>
		<comments>http://ideonexus.com/2011/02/21/breakout-of-slide-presentation-linearity-with-prezi/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 05:00:02 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>
		<category><![CDATA[Mediaphilism]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=7930</guid>
		<description><![CDATA[MemexPlex Prezi Screenshot At Science Online 2011 I was introduced to the Prezi Presentation Paradigm by Stacy Baker of Extreme Biology. After getting past a surprisingly mild learning curve, I was able to produce the following presentation mixing a Prezi presentation with desktop video capture: Keeping in mind this is not the best example of [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/02/mxplxprezi.jpg" border="0" width="500" height="310" alt="MemexPlex Prezi Screenshot"><br />
<b>MemexPlex Prezi Screenshot</b>
</div>
<p>At <a href="http://scienceonline2011.com/">Science Online 2011</a> I was introduced to the <a href="http://prezi.com">Prezi Presentation Paradigm</a> by Stacy Baker of <a href="http://missbakersbiologyclass.com/blog/">Extreme Biology</a>. After getting past a surprisingly mild learning curve, I was able to produce the following presentation mixing a Prezi presentation with desktop video capture:</p>
<div align="center">
<iframe title="YouTube video player" width="500" height="312" src="http://www.youtube.com/embed/LwDOiPdH_kI?hd=1" frameborder="0" allowfullscreen></iframe>
</div>
<p>Keeping in mind this is not the best example of a Prezi demo, you can step through and play with the MemexPlex Prezi itself below (alternately, you can <a href="http://prezi.com/explore/">browse popular Prezis here</a>). Don&#8217;t confine yourself to just click through the presentation, as you can click-and-drag, double-click, and zoom as well: </p>
<div align="center">
<div class="prezi-player">
<style type="text/css" media="screen">.prezi-player { width: 550px; } .prezi-player-links { text-align: center; }</style>
<p><object id="prezi_7nc7yvfpeayv" name="prezi_7nc7yvfpeayv" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="550" height="400"><param name="movie" value="http://prezi.com/bin/preziloader.swf"/><param name="allowfullscreen" value="true"/><param name="allowscriptaccess" value="always"/><param name="bgcolor" value="#ffffff"/><param name="flashvars" value="prezi_id=7nc7yvfpeayv&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"/><embed id="preziEmbed_7nc7yvfpeayv" name="preziEmbed_7nc7yvfpeayv" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="550" height="400" bgcolor="#ffffff" flashvars="prezi_id=7nc7yvfpeayv&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"></embed></object>
<div class="prezi-player-links">
<p><a title="An online tool for managing citations, quotes from those references, and building semantic associations between ideas." href="http://prezi.com/7nc7yvfpeayv/introduction-to-memexplexcom-a-citation-management-tool-for-researchers-and-active-readers/">Introduction to MemexPlex.com: A Citation-Management Tool for Researchers and Active Readers</a> on <a href="http://prezi.com">Prezi</a></p>
</div>
</div>
</div>
<p><span id="more-7930"></span><br />
Stacy Baker advised us to start big and work into smaller displays to manage things, and she demonstrated some fantastic examples of this, zooming through the letter &#8220;o&#8221; in a sentence to reveal a high-quality image tucked away in the presentation. Prezi also allows you to break out of the linearity of slide show presentations. Baker explained how she could show her entire presentation to her class and then focus on the sections they were curious about, making the teaching flow more dynamic. </p>
<p>I tried to do something similar with an <a href="http://studios.amazon.com/projects/3618">Amazon Studios Writer&#8217;s Pitch</a> for a screenplay I submitted. I apologize for the audio, but it does demonstrate how Prezi can show your audience the entire outline of your presentation, take them full loop through it, and bring them back to the big picture:</p>
<div align="center">
<iframe title="YouTube video player" width="500" height="312" src="http://www.youtube.com/embed/lBMvnspA8j0?hd=1" frameborder="0" allowfullscreen></iframe>
</div>
<p>You can play with the Prezi-only version of this presentation here:</p>
<div align="center">
<div class="prezi-player">
<style type="text/css" media="screen">.prezi-player { width: 550px; } .prezi-player-links { text-align: center; }</style>
<p><object id="prezi_hfopiyfse8zu" name="prezi_hfopiyfse8zu" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="550" height="400"><param name="movie" value="http://prezi.com/bin/preziloader.swf"/><param name="allowfullscreen" value="true"/><param name="allowscriptaccess" value="always"/><param name="bgcolor" value="#ffffff"/><param name="flashvars" value="prezi_id=hfopiyfse8zu&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"/><embed id="preziEmbed_hfopiyfse8zu" name="preziEmbed_hfopiyfse8zu" src="http://prezi.com/bin/preziloader.swf" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="550" height="400" bgcolor="#ffffff" flashvars="prezi_id=hfopiyfse8zu&amp;lock_to_path=0&amp;color=ffffff&amp;autoplay=no&amp;autohide_ctrls=0"></embed></object>
<div class="prezi-player-links">
<p><a title="A synopsis of my creative commons screenplay." href="http://prezi.com/hfopiyfse8zu/detail-of-a-life-a-screenplay-in-four-acts/">Detail of a Life, A Screenplay in Four Acts</a> on <a href="http://prezi.com">Prezi</a></p>
</div>
</div>
</div>
<p>There&#8217;s a real &#8220;WOW&#8221; factor in Prezi demos right now. They might be taken for granted in the near fuure, but they look like the death of Power Point today (or will be with a few more features like video and animation integration). Prezi is free to use through an online interface with nothing to download and it’s lots of fun to play with. So <a href="http://www.prezi.com">go check it out</a>!</p>
<hr width="90%" />
<p><b>Notes:</b></p>
<li>I captured video and sound for these videos using the free <a href="http://www.microsoft.com/expression/products/EncoderPro_Overview.aspx">Microsoft Expression Encoder</a>, which was a breeze. I tried using the open source <a href="http://camstudio.org/">CamStudio</a>, but couldn&#8217;t get the sound to capture off the speakers and the video capture was very jerky.</li>
<li>While the Prezi interface is very intuitive, one crucial tip I got from Stacy Baker was the ability to hold down SHIFT and draw a rectangle to select groups of objects to move an manipulate together. This was a HUGE help in when I needed to make major edits to my presentation in the polish phase.</li>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2011/02/21/breakout-of-slide-presentation-linearity-with-prezi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Generating Grids, Hexmaps, and Image Markups with JavaScript</title>
		<link>http://ideonexus.com/2011/02/02/generating-grids-hexmaps-and-image-markups-with-javascript/</link>
		<comments>http://ideonexus.com/2011/02/02/generating-grids-hexmaps-and-image-markups-with-javascript/#comments</comments>
		<pubDate>Wed, 02 Feb 2011 05:00:30 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=7905</guid>
		<description><![CDATA[Corrosion Mapping, Hotspots Highlighted (Not an Actual Report Image) One application I had the honor of working with in my time with the Coast Guard was a Corrosion Mapping tool used by Engineers to track the wear and tear on aircraft parts over their lifetime. Using an Active X control, users would bring up a [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/02/diagram.jpg" border="0" width="500" height="363" alt="Corrosion Mapping, Hotspots Highlighted"><br />
<b>Corrosion Mapping, Hotspots Highlighted</b><br />
(Not an Actual Report Image)
</div>
<p>One application I had the honor of working with in my time with the Coast Guard was a Corrosion Mapping tool used by Engineers to track the wear and tear on aircraft parts over their lifetime. Using an Active X control, users would bring up a TIF of an aircraft part, and then click on grid coordinates laid over it to identify places where corrosion was noted. These X and Y coordinates were then saved to the database, where they could be tallied in reports, with the number of occurrences of corrosion highlighted to identify weak points in the parts. It looked something like the image above.</p>
<p>I recently tried to reproduce this functionality with JavaScript for an application where researchers would mark incidents of contamination on a building floor plan in order to determine the radius of the area that would need to be sterilized. Here are three JavaScript variations on this theme of plotting coordinates on a grid.<br />
<span id="more-7905"></span></p>
<h2>Marking an Image with JavaScript and Mouse Coordinates</h2>
<div align="center"><iframe src="http://www.ryansomma.com/files/grid/image.html" width="550" height="400" scrolling="no"></p>
<p>Your browser does not support iframes.</p>
<p></iframe><br />
<b>Marking an Image with JavaScript Using Mouse Coordinates</b><br />
(Click on the Image to Place an Elf Druid)
</div>
<p>For the greatest precision, nothing beats <a href="http://www.webdeveloper.com/forum/showthread.php?t=82803">plotting mouse Coordinates on an image</a>. These coordinates can then be stored in the database and the image redrawn with markers in their exact places. Complexity arises when you want to run a report on this data, as it its precision makes grouping the coordinates for tallying more complex. Grouping the coordinates by vicinity might not be too difficult, but recognizing and accounting for an artificial barrier, like a wall that prevents grouping coordinates, is a much more difficult problem.</p>
<h2>Creating a Grid of X and Y Coordinates with JavaScript</h2>
<div align="center"><iframe src="http://www.ryansomma.com/files/grid/grid.html" width="550" height="349" scrolling="no"></p>
<p>Your browser does not support iframes.</p>
<p></iframe><br />
<b>JavaScript Grid Example</b><br />
(Click on a Coordinate to Highlight, Click Again to UnHiglight)
</div>
<p>In the above example, I have laid out a grid of evenly-spaced div tags over the image. Clicking on a grid square marks the coordinate. The advantage of this strategy is that the number of coordinates is limited, making it easier to tabulate how many times a coordinate has been marked and not having to worry about artificial barriers. The disadvantage is that our precision is reduced the larger we make our grid squares.</p>
<h2>Creating a Hexmap Grid with JavaScript</h2>
<p>Bees have evolved to use hexagons in constructing their honeycombs because the shape provides the largest possible space while still being able to tesselate, lock together without any space between them. For this same reason, hexmaps are popular with gamers, allowing the most space for pieces, while also providing the greatest number of directions for that piece to move (squares can also offer six directions, but they don&#8217;t look as cool).</p>
<p>The example below isn&#8217;t the greatest, since I had to shrink the hexagons down so much. You can see a larger, cleaner <a href="http://www.ryansomma.com/files/grid/hexmap100.html" target="_new">example here</a> (highlights a range of squares as well).</p>
<div align="center"><iframe src="http://www.ryansomma.com/files/grid/hexmap.html" width="550" height="422" scrolling="no"></p>
<p>Your browser does not support iframes.</p>
<p></iframe><br />
<b>JavaScript Hexmap Example</b><br />
(Click on a Coordinate to Highlight, Click Again to UnHiglight)
</div>
<p>The above example uses hexagon vector graphics as the background of DIV tags to create the hexmap since I am unaware of any way to achieve this effect with pure CSS. Because the DIV tags are square and they carry the mouse-over and onclick effects, there is a slight disjoint between where the highlighting starts and ends at the borders of the hexagons.</p>
<p>The advantage of this strategy is that we now have empty DIV tags in which we may put contents. As you may have noticed, my screenshots are from RPG video games like <em>Ultima II</em> and the free open-source RPG <a href="http://www.wesnoth.org/">The Battle for Wesnoth</a>, and my original intention with this hexmap was to figure out it if was possible to code a strategy RPG in pure JavaScript. With the above example, it is a simple matter to put a game piece or character inside one of the hexagons.</p>
<p>I&#8217;ve collected a bunch of the Wesnoth character and terrain icons, which come in a variety of poses to make them easy to animate, and would make excellent toys for crafting a game. You can <a href="http://www.ryansomma.com/files/grid/WesnothPieces.zip">download them here (16 megs)</a>. There are also terrain pieces, conveniently in vector graphic hexagons for easy resizing and integration with the above hexmap strategy. Just replace the DIV backgrounds with these graphic legos to make JavaScript programming fun.</p>
<hr width="90%">
<p><b>Downloads:</b></p>
<li>Download the <a href="http://www.ryansomma.com/files/grid/JavaScriptGridExamples.zip">JavaScript examples used in this post</a>.</li>
<li>Download the <a href="http://www.ryansomma.com/files/grid/WesnothPieces.zip">Wesnoth Pieces</a> for playing with JavaScript RPG design.</li>
<hr width="90%">
<p><b>Additional Notes:</b></p>
<li>Grouping mouse-pointer coordinates might involve <a href="http://stackoverflow.com/questions/2712744/finding-the-closest-grid-coordinate-to-the-mouse-position-with-javascript-jquery">thinking about the problem in this fashion</a>.</li>
<li>While my grid solution uses divs with borders, most discussions of the problem I found online involved laying a table over the image(<a href="http://stackoverflow.com/questions/4587761/grid-overlayed-on-image-using-javascript-need-help-getting-grid-coordinates">here</a>, <a href="http://stackoverflow.com/questions/1775466/how-to-get-cells-td-x-and-y-coordinate-in-table-using-jquery">here</a>, and <a href="http://www.devcomments.com/q433852/Grid-overlayed-on-image-using-javascript-need-help-getting-grid">here</a>). This didn&#8217;t grok with me, but if you try it out, let me know how it goes.</li>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2011/02/02/generating-grids-hexmaps-and-image-markups-with-javascript/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Social Network Mapping Fun with NodeXL and Science Online 2011</title>
		<link>http://ideonexus.com/2011/01/17/social-network-mapping-fun-with-nodexl-and-science-online-2011/</link>
		<comments>http://ideonexus.com/2011/01/17/social-network-mapping-fun-with-nodexl-and-science-online-2011/#comments</comments>
		<pubDate>Mon, 17 Jan 2011 22:30:39 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=7875</guid>
		<description><![CDATA[Social Networking Results for #scio11 Hash Tag on Twitter (Click to Enlarge) The above image is just one graph of the many tweets related to the Science Online 2011 Unconference. I generated the above graph using the open-source free software NodeXL, a Microsoft Excel plugin that harvests social networking data from common online sources and [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/01scio11twitter.png" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/01scio11twitter.png" border="0" width="500" height="396" alt="Social Networking Results for #scio11 Hash Tag on Twitter"></a><br />
<b>Social Networking Results for #scio11 Hash Tag on Twitter</b><br />
(Click to Enlarge)
</div>
<p>The above image is just one graph of the many tweets related to the <a href="http://scienceonline2011.com/">Science Online 2011 Unconference</a>. I generated the above graph using the open-source free software <a href="http://nodexl.codeplex.com/">NodeXL</a>, a Microsoft Excel plugin that harvests social networking data from common online sources and provides a variety of mean for analyzing it. In the following post, I&#8217;ll provide a brief overview of social network mapping with NodeXL using data harvested from Facebook and Science Online 2011 tweets and provide directions for making your own social network maps, where you can explore and manipulate the data to find your own insights.<br />
<span id="more-7875"></span></p>
<h2>Quick Overview of Social Network Graphing Using Facebook Data</h2>
<p>I&#8217;m starting with a Facebook example, because it will merely map the inter-relationships of my friends, a much smaller and more manageable dataset than the thousands of relationships twitter produces. If you want to experiment with NodeXL network mapping, I highly recommend starting with your Facebook network for simplicity and saving CPU cycles.</p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/02facebookvicky.jpg" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/02facebookvicky.jpg" border="0" width="500" height="375" alt="My Facebook Friends, Vicky Highlighted"></a><br />
<b>My Facebook Friends, Vicky Highlighted</b><br />
(Click to Enlarge)
</div>
<p>The map above is known as an &#8220;Egocentric graph,&#8221; because it lists all the people I am friends with on Facebook. The data was made available via the <a href="http://apps.facebook.com/namegenweb/">Name Gen Web</a> Facebook app, which enabled me to download all of my Facebook friend data as an XML file and see who was connected to who. I&#8217;ve highlighted <a href="http://tgaw.wordpress.com">Vicky</a> because, as my wife and best friend, she appears at the center of the graph, connected to everyone I&#8217;m connected to.</p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/03facebookgroups.jpg" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/03facebookgroups.jpg" border="0" width="500" height="410" alt="My Different Social Groups, Science Online Highlighted"></a><br />
<b>My Different Social Groups, Science Online Highlighted</b><br />
(Click to Enlarge)
</div>
<p>Using the <a href="http://portal.acm.org/citation.cfm?id=729397">Harel-Koren Fast Multiscale</a> graphing option sorted all the people I am networked with into easily recognizable groups. The highly interconnected group of people immediately surrounding Vicky consists of my family, high school, and college friends. Outliers to my inner circle are people who I know through more purposeful means. They are my coworkers, neighborhood kids, fellow gamers, and people I know through Science Online. </p>
<p>With some groups, there is someone who stands out as the glue keeping the group together. For my gaming friends, that person is the owner of the comic shop, for Science Online, it should come as no surprise that it is <a href="http://coturnix.org/">Bora Zivkovic</a>.</p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/04scio11peopleatbora.png" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/04scio11peopleatbora.png" border="0" width="500" height="396" alt="Bora-Centric Scio11 Twitter Graph"></a><br />
<b>Bora-Centric Scio11 Twitter Graph</b><br />
(Click to Enlarge)
</div>
<h2>Mapping the Science Online 2011 Twitter Feed</h2>
<p>While my ability to map the Facebook network can only go as far as those people to whom I am personally connected, <a href="http://twitter.com">Twitter</a> provides a delightful opportunity to map a network of connections that includes people I am not connected to. </p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/05scio11twitter20101115.png" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/05scio11twitter20101115.png" border="0" width="500" height="395" alt="#scio11 Hash Tag"></a><br />
<b>#scio11 Hash Tag</b><br />
(Click to Enlarge)
</div>
<p>This graph reflects &#8220;Mentions&#8221; and &#8220;Replies-to&#8221; relationships in tweets with the <a href="">#scio11</a>  hash tag on 20110117, “following” data has also been harvested. Don&#8217;t see your avatar here? That&#8217;s because there are over 330 twitter users in this image and the canvas size isn&#8217;t large enough to display all their avatars, those who posted the most tweets are buried under a mountain of other individuals in the center of the image. Even trying to pull the network apart by hand, I was still unable to reveal anywhere near the number of users actually participating in the network.</p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/06scio11twitter20110117overload.png" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/06scio11twitter20110117overload.png" border="0" width="500" height="398" alt="#scio11 Hash Tag Explosion"></a><br />
<b>#scio11 Hash Tag Explosion</b><br />
(Click to Enlarge)
</div>
<p>This is a very important point: as the size of the social network grows, NodeXL becomes less useful for producing nifty images of the network; however, NodeXL remains very useful as an interactive tool for <b>exploring</b> the data you harvest. For example, I expected <a href="http://twitter.com/#!/BoraZ">BoraZ</a>, <a href="http://twitter.com/#!/mistersugar">mistersugar</a>, <a href="http://twitter.com/#!/ktraphagen">ktraphagen</a>, and <a href="http://twitter.com/#!/scio11">scio11</a> to be important vertices in the Science Online Tweet network, but I also discovered two other key players by exploring the below graph: <a href="http://twitter.com/#!/edyong209">edyong209</a> and <a href="http://twitter.com/#!/ivanoransky">ivanoransky</a>.</p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/07scio11twitter20110117keypeople.png" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/07scio11twitter20110117keypeople.png" border="0" width="500" height="396" alt="BoraZ, MisterSugar, scio11, EdYong, and ivanoransky Highlighted"></a><br />
<b>BoraZ, MisterSugar, scio11, EdYong, and ivanoransky Highlighted</b><br />
(Click to Enlarge)
</div>
<p>NodeXL also provides means to Filtering by relationship date, number of followers, number of tweets, tweet date, and joined twitter date&#8230; among others. I experimented with a simple X and Y vertex filter to reduce the number of results in my graph.</p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/08scio11twitter20101115filtered.png" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/08scio11twitter20101115filtered.png" border="0" width="500" height="395" alt="#scio11 Hash Tag Filtered"></a><br />
<b>#scio11 Hash Tag Filtered</b><br />
(Click to Enlarge)
</div>
<p>Other Science Online tags you might want to try harvesting from twitter are <a href="http://twitter.com/#!/search/%23techwild">#techwild</a>, <a href="http://twitter.com/#!/search/%23huggedbora">#huggedbora</a>, <a href="http://twitter.com/#!/search/%23sciophoto">#sciophoto</a>, <a href="http://twitter.com/#!/search/%23altmetrics">#altmetrics</a>, <a href="http://twitter.com/#!/search/%23opensci">#opensci</a>, and <a href="http://twitter.com/#!/search/%23drunksci">#drunksci</a>. You&#8217;ll get fewer, more manageable results, and might find a tag of more specific interest to you regarding the conference. </p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/09scio11twitter20110117filtered.png" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/09scio11twitter20110117filtered.png" border="0" width="500" height="392" alt="#scio11 Filterd to Just BoraZ, MisterSugar, and Scio11"></a><br />
<b>#scio11 Filterd to Just BoraZ, MisterSugar, and Scio11</b><br />
(Click to Enlarge)
</div>
<p>You can also filter by clicking on the column headers in the spreadsheet, unchecking &#8220;Select All&#8221; and then checking just those twitter users you want to see results for. In the above graph, I have filtered my results to just BoraZ, MisterSugar, and scio11. You can filter your results down to just yourself, in what I suppose would be called &#8220;Ego-Filtering&#8221; (ala &#8220;<a href="http://en.wikipedia.org/wiki/Egosurfing">egosurfing</a>&#8220;).</p>
<h2>Getting Started with NodeXL</h2>
<h3>Installation</h3>
<p>You can download NodeXL from Microsoft&#8217;s Codeplex at <a href="http://www.codeplex.com/NodeXL">codeplex.com/NodeXL</a>. You&#8217;ll need to have a version of Excel equal to or greater than the 2007 version. Download the ZIP file, unzip it, make sure Microsoft Excel is closed, and run the Setup.exe file (you can then delete the zip files). NodeXL works as an Excel Template, and you can access it via <b>Start > All Programs > Microsoft NodeXL > Excel 2007 Template</b>. This will open Microsoft Excel with a &#8220;NodeXL&#8221; menu option and graphing area.</p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/10nodexl.png" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/10nodexl.png" border="0" width="500" height="353" alt="NodeXL"></a><br />
<b>NodeXL</b><br />
(Click to Enlarge)
</div>
<h3>Harvesting Your Facebook Network</h3>
<p>A fun way to get started with NodeXL is to analyze your Facebook network. As I demonstrated earlier, you&#8217;ll find that your friends naturally group into clusters around the different areas of your life: work, family, friends, etc. The first thing you&#8217;ll need to do is download your Facebook friend data as an XML file using the Name Gen Web app accessed via <a href="http://apps.facebook.com/namegenweb">apps.facebook.com/namegenweb</a> and choose to download the NodeXL graph after accepting the application. When Name Gen Web has generated the data for your network, right-click the link and &#8220;Save as&#8230;&#8221; it to your computer.</p>
<p>Once you have this file, open NodeXL from the template, select <b>Import > From GraphML file</b> and open the file you saved from Name Gen Web. Click &#8220;Read Workbook&#8221; to have NodeXL process the vertices and render your network.</p>
<h3>Harvesting Twitter Feeds</h3>
<p><b>Warning:</b> because Twitter limits the amount of data you can harvest each hour, it can take a very long time to collect your results. Another warning is that, for a hash tag like #scio11, the data set is large enough that your computer will grind to a crawl as you explore it. Make sure you are not checking twitter via another application as you harvest data to prevent your IP address from maxing out your access to the service. You might try <a href="http://twitter.com/help/request_whitelisting">Requesting Whitelisting</a> for your IP; although, twitter didn&#8217;t respond to my request and most people don&#8217;t have a static IP anyway.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/11NodeXLImportTwitter.png" border="0" width="349" height="590" alt="Import from Twitter"><br />
<b>Import from Twitter</b>
</div>
<p>All that being said, you can download the scio11 NodeXL data below (right-click and &#8220;Save as&#8230;&#8221;):</p>
<ul>
<li><a href="http://ideonexus.com/wp-content/uploads/2011/01/20101115scio11-tweets.xlsx">2010-11-15 scio11 Twitter NodeXL data</a></li>
<li><a href="http://ideonexus.com/wp-content/uploads/2011/01/20110117scio11-tweets01.xlsx">2011-01-17 @ 0738 scio11 Twitter NodeXL dataset</a></li>
<li><a href="http://ideonexus.com/wp-content/uploads/2011/01/20110117scio11-tweets02.xlsx">2011-01-17 @ 1507 scio11 Twitter NodeXL dataset</a></li>
<li><a href="http://ideonexus.com/wp-content/uploads/2011/01/20110117scio11-tweets03.xlsx">2011-01-17 @ 1624 scio11 Twitter NodeXL dataset</a></li>
</ul>
<p>One thing I learned today while harvesting data is that <b>timing is important</b>. Although tweet histories have no limit on how far back in time they go, NodeXL will only harvest at most 500 tweets into the past. So when I got flagged for DoS Sunday night after the conference, and could not successfully harvest data until the next day, I lost access to many of the tweets made during the conference, especially when you consider there were <a href="http://wthashtag.com/Scio11">9,490 tweets, 1,214 contributors, and 1,355.7 tweets per day</a> using the tag.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/12nodeXLTwitterImages.png" border="0" width="500" height="548" alt="Add Twitter Avatars to Your Graph"><br />
<b>Add Twitter Avatars to Your Graph</b>
</div>
<p>One finale note, it&#8217;s nifty to add Twitter Avatars to your graph. So to accomplish this, in the graph window click on Options and select &#8220;Images” from the Vertices > Shape dropdown.</p>
<h3>Going Deeper</h3>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/13analyzingsocialmedianetworkscover.jpg" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/13analyzingsocialmedianetworkscover.jpg" border="0" width="400" height="493" alt="Analyzing Social Media Networks with NodeXL"></a><br />
<b>Analyzing Social Media Networks with NodeXL</b><br />
(Click to Enlarge)
</div>
<p>If you&#8217;re interested in learning more about NodeXL&#8217;s possibilities and features, I highly recommend Hansen, Shneiderman, and Smith&#8217;s excellent book <a href="http://www.connectedaction.net/2010/09/13/book-analyzing-social-media-networks-with-nodexl-insights-from-a-connected-world-now-available/">Analyzing Social Media Networks with NodeXL: Insights from a Connected World</a>, which not only provides step-by-step instructions for making the most of the tool, but also provides a great deal of background on the emerging science of Social Network mapping.</p>
<p>If you have questions or need support getting features working in NodeXL, please ask in the comments section. I&#8217;m happy to oblige.</p>
<div align="center">
<a href="http://ideonexus.com/wp-content/uploads/2011/01/14scio11SpiralTweets.png" target="_blank"><img src="http://ideonexus.com/wp-content/uploads/2011/01/14scio11SpiralTweets.png" border="0" width="500" height="458" alt="Scio11 Twitter Hash Tag, Spiral Graph"></a><br />
<b>Scio11 Twitter Hash Tag, Spiral Graph</b><br />
(Click to Enlarge)
</div>
<hr width="90%" />
<p><b>Update:</b></p>
<p>The authors sent me some additional links to NodeXL resources. Great stuff!</p>
<li>Flickr photo set of <a href="http://www.flickr.com/photos/marc_smith/sets/72157622437066929/">NodeXL Graphs</a>.</li>
<li>Free PDF <a href="http://casci.umd.edu/images/4/46/NodeXL_tutorial_draft.pdf">Analyzing Social Media Networks:<br />
Learning by Doing with NodeXL</a></li>
<li>Video: <a href="http://www.connectedaction.net/2009/11/11/video-using-nodexl-to-map-the-digg-mentioning-twitter-population/">Using NodeXL to map the “digg” mentioning Twitter population</a></li>
<li>Slideshare presentations <a href="http://www.slideshare.net/Marc_A_Smith/2009-december-nodexl-overview">here</a> and <a href="http://www.slideshare.net/Marc_A_Smith/2010-june-personal-democracy-forum-marc-smith-mapping-political-social-media-crowds">here</a>.</li>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2011/01/17/social-network-mapping-fun-with-nodexl-and-science-online-2011/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Introducing MemexPlex: A Citation-Management Tool for Researchers and Active Readers</title>
		<link>http://ideonexus.com/2011/01/10/introducing-memexplex-a-citation-management-tool-for-researchers-and-active-readers/</link>
		<comments>http://ideonexus.com/2011/01/10/introducing-memexplex-a-citation-management-tool-for-researchers-and-active-readers/#comments</comments>
		<pubDate>Mon, 10 Jan 2011 05:00:32 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=7854</guid>
		<description><![CDATA[The Memetic Ecosystem Within Memexplex I&#8217;m a big reader, and a lot of what I read inspires the posts for ideonexus. I love it when I find a brilliant insight in a text and can slap it down as a blockquote or relate it to other citations I&#8217;ve come across in the past. I&#8217;m tickled [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/memeticecosystem.jpg" border="0" width="500" height="500" alt="The Memetic Ecosystem Within Memexplex"><br />
<b>The Memetic Ecosystem Within Memexplex</b>
</div>
<p>I&#8217;m a big reader, and a lot of what I read inspires the posts for ideonexus. I love it when I find a brilliant insight in a text and can slap it down as a blockquote or relate it to other citations I&#8217;ve come across in the past. I&#8217;m tickled by brilliant ideas, and I love the communal exercise of building on old ideas and mashups from them.</p>
<p>A frustration I&#8217;ve experienced often over the years is remembering a brilliant insight from Carl Sagan, Richard Feynman, or some other author that would make an excellent complement for my current blog post, but having no idea which book in which it appeared. Even if I know the book, it can take an hour of thumbing through the pages to locate the passage I need (often because the text isn&#8217;t worded the way I remember it). And what about all those brilliant passages I&#8217;ve long forgotten?</p>
<p>These are the reasons I&#8217;ve written <a href="http://www.memexplex.com">MemexPlex</a>, an online tool to aide in the practice of <a href="http://www.open.ac.uk/skillsforstudy/active-reading.php">active reading</a>, research, and citation management.<br />
<span id="more-7854"></span></p>
<h2>Background</h2>
<p>MemexPlex is a portmanteu of &#8220;memex&#8221; and &#8220;meme-complex.&#8221; A memecomplex, or memeplex, is a collection of ideas that tend to replicate together, like how the genes in a species replicate together. The memex is an imaginary research tool described by science administrator Vannevar Bush in his July 1945 essay &#8220;<a href="http://www.theatlantic.com/magazine/archive/1969/12/as-we-may-think/3881/">As We May Think</a>,&#8221; which used an elaborate system of gears and microfische that would allow researchers to bookmark articles, link their own ideas to them, and create &#8220;trails&#8221; of knowledge through multiple references.</p>
<div align="center">
<img src="http://www.memexplex.org/wp-content/uploads/2010/11/memex_article.jpg" border="0" width="446" height="568" alt="Vannevar Bush's Memex"><br />
<b>Vannevar Bush&#8217;s Memex</b>
</div>
<p>Today, most people would agree that, with hypertext, we have the ability to bookmark and create links between articles on the World Wide Web; however, the creation of knowledge trails is still lacking. MemexPlex provides a tool for storing reusable idea objects, allowing researchers to fit them together in new conceptual constructs, converting information into knowledge and forging new paths through ideas for others to follow.</p>
<h2>Curating Ideas: References and Memes</h2>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/reference.jpg" border="0" width="100" height="98" alt="Reference"><br />
<b>Reference</b>
</div>
<p>Let&#8217;s start with a reference: a book, film, song, journal paper, legal ruling,  or whatever the source material you are browsing. You can enter this material in MemexPlex, and then, as you are working through it, capture those ideas from it that you wish to relate back to later or would simply enjoy having in your collection. The reference form is very flexible so you may enter attributes in any format you like, and I&#8217;ve even provided a search window to browse items at <a href="http://www.amazon.com/">Amazon.com</a> and autopopulate your reference with the appropriate data from their database for quicker data entry.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/meme.jpg" border="0" width="100" height="101" alt="Meme"><br />
<b>Meme</b>
</div>
<p>Once you have a reference you may begin capturing important or entertaining ideas from it in the form of <b>memes</b>. A meme is a unit of measurement for an idea that gets replicated. A popular example of a meme is <a href="http://lolcats.com/">LOL Cats</a>, a funny fad that spread virally on the World Wide Web<sup>1</sup>. MemexPlex is for curators of memes.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/referencesmemes.jpg" border="0" width="500" height="500" alt="References and Associated Memes"><br />
<b>References and Associated Memes</b>
</div>
<p>A recent example of a reference I picked up at a used bookstore is Esther Dyson&#8217;s <a href="http://memexplex.com/Reference/id=95"><em>Release 2.0</em></a>. Most people reading Dyson&#8217;s book wouldn&#8217;t be very impressed. Much of what she writes concerning information technology is considered common knowledge and taken for granted today, but this wasn&#8217;t the case when she wrote the book in 1996. </p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/releasetwooh.jpg" border="0" width="500" height="295" alt="Release 2.0 reference on MemexPlex with memes"><br />
<b><a href="http://memexplex.com/Reference/id=95"><em>Release 2.0</em> reference on MemexPlex with memes</a></b>
</div>
<p>So, even though this incredibly prescient work has been overcome by events, there are still a great deal of insights left to be found within it, just not enough to justify book publishers to continue printing it. As a curator of ideas, I happily captured a number of memes from the book into my MemexPlex collection.</p>
<h2>Connecting Ideas: Folksonomies, Triples and Schemas</h2>
<p>Flat lists of references and memes aren&#8217;t especially useful, so in addition to text-search, filters, and sorting options, I&#8217;ve added several other ways to semantically-link data into MemexPlex. One standard is to link references by author, and another is to link all MemexPlex objects with meta-tags, which are referred to as <a href="http://memexplex.com/Meme/id=213">folksonomies</a> in the application for the sake of acuity if and when I am able to entertain including ontologies.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/triple.jpg" border="0" width="100" height="86" alt="Triple"><br />
<b>Triple</b>
</div>
<p>Additionally, MemexPlex curators may create <b>triples</b> to generate a semantic connection between two memes. Similar to <a href="http://en.wikipedia.org/wiki/Resource_Description_Framework">RDF Triples</a>, these objects create <em>subject-predicate-object</em> relationships between memes. For example, at the recent <a href="http://memexplex.com/Reference/id=98">Rally to Restore Sanity</a>, Jon Stewart presented an inspiring example of <a href="http://memexplex.com/Meme/id=230">cars merging lanes on the freeway</a> as evidence why civilization works. When I heard this, I immediately thought of David Brin&#8217;s <a href="http://memexplex.com/Reference/id=97"><em>Disputation Arenas</em></a> essay, and his example of a <a href="http://memexplex.com/Meme/id=229">four way stop intersection</a> for the same purpose. </p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/triples.jpg" border="0" width="500" height="500" alt="Triples Semantically Connecting Memes"><br />
<b>Triples Semantically Connecting Memes</b>
</div>
<p>I created a triple to link the two memes for both <a href="http://memexplex.com/Triple/id=2">Using Road Traffic as a Metaphor for Civilization</a>. Now, when I or someone else views either of these memes, they will also find this triple leading them to additional useful information. Predicates for triples don&#8217;t just have to be similarities either; they can establish a variety of semantic relationships including comparisons, concessions, conclusions, summaries, and others.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/schema.jpg" border="0" width="100" height="99" alt="Schemas"><br />
<b>Schema</b>
</div>
<p>For less strictly defined associations between numerous memes, I&#8217;ve created <b>schemas</b>, which are like buckets for storing collections of related memes. If I have an idea for a future blog post, I&#8217;ll create a schema and toss the memes useful to my concept into it. This way, I have both a list of useful blockquotes and the references to go with them when I go to write my post.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/schemas.jpg" border="0" width="500" height="500" alt="Schemas Semantically Grouping Memes"><br />
<b>Schemas Semantically Grouping Memes</b>
</div>
<p>For example, one of my pet peeves is the irrational standards for spelling in American English. I firmly believe that illiteracy in our country could be greatly reduced if we reworked our words to be spelled phonetically. Most people think this idea is silly and laugh when they see slogans like &#8220;&#8216;Enuf&#8217; is enuf, &#8216;Enough&#8217; is too much!&#8221; advocating spelling reform.</p>
<p>As silly as the idea appears on its face, it is something advocated by many great minds throughout history, including <a href="http://memexplex.com/Meme/id=102">Benjamin Franklin</a>, <a href="http://memexplex.com/Meme/id=97">Richard Feynman</a>, and Isaac Asimov. So I started collecting all of these memes into a schema titled <a href="http://memexplex.com/Schema/id=4">The Tyranny of English Grammar</a>. Now, when I see someone laughing off the idea of spelling reform, I can open a well-referenced can of intellectual whup-ass on them.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2011/01/schemamemereference.jpg" border="0" width="500" height="351" alt="Schema With Memes and References"><br />
<b>Schema With Memes and References</b>
</div>
<h2>MemexPlex&#8217;s Next Steps</h2>
<p>Presently MemexPlex is in a beta stage of development. I&#8217;m opening it up to new users with the understanding that there are still bugs in the system, and things might break here and there as I work them out and refine the functionality. I&#8217;m hoping users will <a href="http://www.memexplex.org/todo-list/">report problems they find</a> on the development blog.</p>
<p>Also, I am releasing MemexPlex as an <a href="http://code.google.com/p/memexplex/">open-source project on Google Code</a>. So if there are any other developers out there who are interested in contributing to the project, you are more than welcome. Once MemexPlex is working well and optimized for individuals, I would like to start working on community features that will allow collaboration, sharing ideas, and a slashdot-style rating system to empower the community to regulate itself.</p>
<p>Finally, I have also posted a <a href="http://www.memexplex.org/">link for donations</a> on the blog for anyone interested in supporting the project financially. My web hosting costs are low and I would be paying them anyway, but if you find the application useful, sufficient funding would allow me to work on it fulltime. : )</p>
<hr width="90%">
<p><b>Notes</b></p>
<p><sup>1</sup> Other examples of memes are alphabets, keyboard layouts, political ideologies, and driving on the right or left side of the road. Although the concept of the meme was first introduced by Richard Dawkins in his book <a href="http://memexplex.com/Reference/id=109"><em>The Selfish Gene</em></a>, a fantastic introduction to the science of memetics is Susan Blackmore&#8217;s <a href="http://memexplex.com/Reference/id=108"><em>The Meme Machine</em></a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2011/01/10/introducing-memexplex-a-citation-management-tool-for-researchers-and-active-readers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Advice to an IT Graduate</title>
		<link>http://ideonexus.com/2010/12/13/advice-to-an-it-graduate/</link>
		<comments>http://ideonexus.com/2010/12/13/advice-to-an-it-graduate/#comments</comments>
		<pubDate>Mon, 13 Dec 2010 05:00:11 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=7841</guid>
		<description><![CDATA[Will Code JAVA for Food (Even with Eclipse) Credit: cismet_geeks A newly-minted graduate in software development recently wrote me after finding my resume online, seeking career advice on how to succeed in the IT professional world. These were my personal thoughts; maybe other readers will have additional insights to add in the comments section: Dedicate [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<a href="http://www.flickr.com/photos/cismet/2440165713/"><img src="http://ideonexus.com/wp-content/uploads/2010/11/willcodeforfood.jpg" border="0" width="570" height="428" alt="Will Code JAVA for Food"></a><br />
<b>Will Code JAVA for Food</b><br />
(Even with Eclipse)<br />
Credit: <a href="http://www.flickr.com/photos/cismet/2440165713/">cismet_geeks</a>
</div>
<p>A newly-minted graduate in software development recently wrote me after <a href="http://ryansomma.com">finding my resume online</a>, seeking career advice on how to succeed in the IT professional world. These were my personal thoughts; maybe other readers will have additional insights to add in the comments section:</p>
<h3>Dedicate yourself to lifelong learning.</h3>
<p>Don&#8217;t be afraid to research while you&#8217;re on the job. You are a professional, a technical expert, and must keep up with the literature and latest developments in your field. Search engines and forums will provide the most practical and nuanced advice, while organizations like the IEEE and ACM provide the academic sustenance. Remember what Adlai Stevenson said, &#8220;I reserve the absolute right to be smarter today than I was yesterday.&#8221;</p>
<h3>Work with people who are smarter than you.</h3>
<p><span id="more-7841"></span><br />
Getting a job as the big-chief in a small organization will give you bragging rights and a higher salary, but it will also be a dead end for your career because you have nowhere to grow. Getting an entry-level position with a medium sized organization will start you with a lower salary, but you will have lots to learn and your salary will eventually grow much higher in the long run. Working with a variety of people who have ten or more years in the profession is a fantastic learning experience, and will broaden your horizons in ways that will make you all the more valuable to the workforce.</p>
<h3>Put forth just a little more effort than your coworkers.</h3>
<p>It&#8217;s amazing how many people just want to get by, expecting their supervisors to direct their every action. If you are happy where you are at, and see the possibility of being selected for advancement as the environment grows, then you need to focus on the nuances of the system in which you are working. <b>Take notes:</b> I kept a notebook of all the little nuances of our system, which quickly made me a go-to person whenever anything went wrong or if someone needed help. It also empowered me to work independently on most tasks, and management notices when you get them checkmarks on their todo list. </p>
<p>Certifications are nice if you think you will need to change companies in order to advance your career past a certain point, they act like keywords to get you noticed by employers; however, if you take on extracurricular training, make sure it will give you deeper insights into the technologies you are presently working with. You might convince management to pay for it too. : )</p>
<h3>Work in the presentation layer.</h3>
<p>By this I mean code for the presentation layer; be responsible for the User Interface. By working in this aspect of the system, you will be closer to the actual business and learn how the users actually work with it. The interface is where you&#8217;re going to be connected to the customer. You will be visible to them, and that social interaction will be the biggest boon to your career. The customer can&#8217;t rave about how helpful you are if you&#8217;re sequestered in a dark cubicle coding SQL, no matter how crucial that effort is (In fact, being crucial in such a position will often <em>keep you from advancement</em>).</p>
<p>Another benefit to working with the user interface is that everything bubbles up to it. If something goes wrong in the business or persistence layers, it will manifest in the UI, making you the first-responder, which brings me to my next lesson:</p>
<h3>Learn all aspects of the business.</h3>
<div align="center">
<a href="http://xkcd.com/485/"><img src="http://ideonexus.com/wp-content/uploads/2010/11/layersofit.jpg" border="0" width="570" height="538" alt="Layers of Information Technology"></a><br />
<b>Layers of Information Technology</b><br />
(Click to Enlarge)<br />
Credit: <a href="http://xkcd.com/485/">xkcd</a>
</div>
<p>Too many developers work with blinders on, keeping their head down and only focusing on what they are directly responsible for. Don&#8217;t be that way. If you think your code isn&#8217;t working because of someone else&#8217;s work, debug that person&#8217;s work and find the problem. Then, not only can you give them the solution when you bring it up, but you will understand their solution and gain a wider perspective on the whole system.</p>
<p>But don&#8217;t be a jerk about it&#8230; Which brings me to the most important principle:</p>
<h3>Be humble.</h3>
<p>Don&#8217;t ever <i>ever</i> <b><i>ever</i></b> mention fault when discussing problems with a system. Everyone checks in code that doesn&#8217;t work or was poorly written from time to time. Time wasted pointing fingers is time not spent solving the problem. I&#8217;ve watched developers waste hours trying to figure out who was responsible for a bug in the system, all so they could make a big production out of exposing their peer&#8217;s error. No one is impressed by this, and the peer gets antagonized by it. </p>
<p>If you see an error in someone&#8217;s code, just fix it. If the team is dealing with a bug, just fix it. Don&#8217;t get irritated when someone comes to you for the third or nth time to get an IP address or database vnode, take it as a sign that you are making yourself invaluable to the organization. Treat all your coworkers like customers, provide services for them, and when it comes time for management to promote, they will see you as the person everyone <em>enjoys</em> coming to for help, the person the customers like working with, and the person management knows is capable of tackling any problem thrown at him or her.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2010/12/13/advice-to-an-it-graduate/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Cloud Computing&#8217;s Real Strength</title>
		<link>http://ideonexus.com/2010/11/15/cloud-computings-real-strength/</link>
		<comments>http://ideonexus.com/2010/11/15/cloud-computings-real-strength/#comments</comments>
		<pubDate>Mon, 15 Nov 2010 05:00:46 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=7793</guid>
		<description><![CDATA[cloud passing by Credit: Diego Sevilla Ruiz “Cloud Computing will revolutionize IT!” Really? What&#8217;s Cloud Computing? &#8220;Instead of people installing software on their local computers, future applications will run on host computers!&#8221; So Cloud Computing is just a funny name for a client/server Mainframe Architecture? &#8220;But it&#8217;s not running on a Mainframe! It&#8217;s running in [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<a href="http://www.flickr.com/photos/dsevilla/491134213/"><img src="http://ideonexus.com/wp-content/uploads/2010/11/cloud1.jpg" border="0" width="334" height="500" alt="cloud passing by"></a><br />
<b>cloud passing by</b><br />
Credit: Diego Sevilla Ruiz
</div>
<p>“Cloud Computing will revolutionize IT!” </p>
<p><em>Really? What&#8217;s Cloud Computing?</em></p>
<p>&#8220;Instead of people installing software on their local computers, future applications will run on host computers!&#8221;</p>
<p><em>So Cloud Computing is just a funny name for a client/server Mainframe Architecture?</em></p>
<p>&#8220;But it&#8217;s not running on a Mainframe! It&#8217;s running in <em>the Cloud</em>!&#8221;</p>
<p><em>So it&#8217;s an application running on the World Wide Web&#8230; like Yahoo Mail and Google Docs?</em></p>
<p>&#8220;Not at all! In Cloud Computing, you own your application and the data running on it!&#8221; </p>
<p><em>So it&#8217;s an application I upload to my web host, like WordPress.org or EyeOS&#8230;</em></p>
<p>&#8220;No. No. No. Because with Cloud Computing you only pay for the processing power you use!&#8221; </p>
<p><b><em>Etc, etc, etc.</em></b></p>
<p>This sums up my last two years&#8217; worth of trying to figure out what the heck this &#8220;Cloud Computing&#8221; thing is. I&#8217;ve downloaded and then uploaded cloud desktop applications that work in ways so esoteric as to make them useless. I joined Amazon&#8217;s AWS only to find it offers little more than my current Web Hosting provider. I&#8217;ve read lots of articles brimming with buzzwords like &#8220;single-tenancy&#8221;, &#8220;service-oriented architecture&#8221;, and &#8220;integration connector,&#8221; none of these articles apply a consistent definition of &#8220;the Cloud.&#8221;<br />
<span id="more-7793"></span></p>
<div align="center">
<a href="http://www.flickr.com/photos/swamibu/1407809687/"><img src="http://ideonexus.com/wp-content/uploads/2010/11/cloud2.jpg" border="0" width="500" height="375" alt="Clouds"></a><br />
<b>Clouds</b><br />
Credit: Swamibu
</div>
<p>The biggest problem with the concept of &#8220;Cloud Computing&#8221; is that people define it extremely broadly to mean any application accessed online and extremely narrowly to mean any application you own the code to, but is hosted on a 3rd party server. Depending on how you define it, you&#8217;ve either been in the Cloud since you first opened up a web mail account over a decade ago or when you first uploaded a dynamic web page to a web host&#8230; also probably over a decade ago. I&#8217;ve come to prefer the narrow definition, because it makes Cloud Computing, not something new, but something old that businesses and individuals are finally starting to discover.</p>
<h3>Cloud Computing VS Software as a Service</h3>
<p><a href=”http://www.theatlantic.com/science/archive/2010/07/when-buzzwords-collide-open-source-meets-the-cloud/60025/”>Contrary to many perceptions</a> Gmail, Hotmail, and Yahoo mail are not a cloud applications. Google Docs is not part of the Cloud, neither are Facebook, Flickr, or any of the third-party applications we take for granted online today. These are examples of <em>Software as a Service (SaaS)</em>, and, while they are useful, they are lacking one very important feature: <b>portability</b>.</p>
<p>If a third-party is hosting my data, then that host could vanish at any time, taking my bits with it, as when Yahoo Briefcase closed shop and I didn&#8217;t get the warning email, I lost all the files I had backed up in that online storage service. When I migrated from Yahoo Mail to Gmail, I had to pay for a POP3 Yahoo account so I could download my many years&#8217; worth of important correspondence. In other words, my data wasn&#8217;t mine; I had to pay for it if I wanted to take it with me somewhere else.</p>
<p>For myself, the worst example of an online application lacking the portability benefits of Cloud Computing is flickr. I pay flickr $25 a year to host my photos in a way that makes it easy for people to find them for creative commons use, and have uploaded more than 10 gigabytes of image data and hundreds of hours in applying metatags and descriptions to them. If I die tomorrow and my account expires, all that effort vanishes from the World Wide Web. If I find a better image-hosting service, I will have to reorganize and reupload all those images once again. My investment of personal time and money into flickr is an important example of the disadvantage of SaaS compared to the Cloud.</p>
<div align="center">
<a href="http://www.flickr.com/photos/look4u/2412156385/"><img src="http://ideonexus.com/wp-content/uploads/2010/11/cloud3.jpg" border="0" width="500" height="350" alt="UFO Cloud"></a><br />
<b>UFO Cloud</b><br />
Credit: Scott Shiffman
</div>
<p>In contrast to these, when I ran this blog on WordPress.com, the SaaS version of the WordPress blogging software, they owned the software code and my data, but, when I decided to put ideonexus in the Cloud, they were nice enough to provide an export tool. I was able to easily migrate a year&#8217;s worth of effort onto my own wordpress blog software downloaded from the open-source wordpress.org and host it on Bluehost.com. </p>
<p>Now I own the code and I own the data. When I recently wanted to archive my several years&#8217; worth of Science Etcetera posts, I was able to do so with a simple SQL statement, while the same task on WordPress.com would have meant manually unpublishing each one of those thousand or so posts in page-sized batches. When a new version of WordPress had a bug that prevented me from scheduling posts in the future, I was able to go in and code a workaround. I didn&#8217;t have to wait for a new release because I owned the code. I am also free to migrate to another host with minimal effort, I simply export the MySQL database, ftp down the content, and ftp upload the content to the new host.</p>
<div align="center">
<a href="http://www.flickr.com/photos/33224129@N00/3208014258/in/photostream/"><img src="http://ideonexus.com/wp-content/uploads/2010/11/cloud4.jpg" border="0" width="500" height="333" alt="Day 18 - Clouds"></a><br />
<b>Day 18 &#8211; Clouds</b><br />
Credit: AlwaysBreaking
</div>
<p>In the Cloud, I own my data, I own my code, and I can move all of it elsewhere at any time. I&#8217;ve been hosting web applications and data on host servers for more than a decade now, as have most of my friends. We&#8217;ve been Cloud Computing for an IT eternity since before the &#8220;Cloud&#8221; buzzword ever came on the stage.</p>
<p>That’s right. Corporate America is discovering that instead of investing thousands or even hundreds of thousands of dollars in an air-conditioned server closet to host their applications, they could be paying BlueHost or GoDaddy five bucks a month to manage this for them. If Cloud Computing is an impending revolution, then it is only in the domain of business to business services, but that&#8217;s okay, better to catch up with geek culture late than never.</p>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2010/11/15/cloud-computings-real-strength/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Entropy for Information Systems</title>
		<link>http://ideonexus.com/2010/08/30/entropy-for-information-systems/</link>
		<comments>http://ideonexus.com/2010/08/30/entropy-for-information-systems/#comments</comments>
		<pubDate>Mon, 30 Aug 2010 05:00:49 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>
		<category><![CDATA[Ionian Enchantment]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=6828</guid>
		<description><![CDATA[Entropy is a fairly easy concept to define, the measure of disorder in a closed system, and a rather difficult concept to grasp, but one that furnishes us with wonderful insights into the way the world around us operates. The amount of entropy in the Universe is ever-increasing, the energy concentrated in our sun is [...]]]></description>
			<content:encoded><![CDATA[<p>Entropy is a fairly easy concept to define, the <a href="http://en.wikipedia.org/wiki/Introduction_to_entropy">measure of disorder in a closed system</a>, and a rather difficult concept to grasp, but one that furnishes us with wonderful insights into the way the world around us operates. The amount of entropy in the Universe is ever-increasing, the energy concentrated in our sun is constantly radiating away in light and heat, dissipating into an unusable state, absolute undifferentiation.</p>
<div align="center">
<a href="http://www.flickr.com/photos/riccarducci/1009383068/"><img src="http://ideonexus.com/wp-content/uploads/2010/08/sunflower.jpg" border="0" width="425" height="272" alt="Sunflower"></a><br />
<b>Sunflower</b><br />
Credit: <a href="http://www.flickr.com/photos/riccarducci/1009383068/">riandreu</a>
</div>
<p>Living things form &#8220;<a href="http://books.google.com/books?id=DQYXoRx9CcEC&#038;pg=RA7-PA9&#038;lpg=RA7-PA9&#038;dq=entropy+%22pockets+of+resistance%22&#038;source=bl&#038;ots=OJDyckxxVs&#038;sig=g0DO4glm0attUd7fFoB2WL4pHg0&#038;hl=en&#038;ei=JNN6TKi9AYaKlwfj5_jqCw&#038;sa=X&#038;oi=book_result&#038;ct=result&#038;resnum=5&#038;ved=0CCYQ6AEwBA#v=onepage&#038;q=entropy%20%22pockets%20of%20resistance%22&#038;f=false">pockets of resistance</a>&#8221; to the force of entropy. They do this through <a href="http://en.wikipedia.org/wiki/Negentropy">syntropy</a>, or negentropy, which is the entropy we export to reduce our internal entropy; in other words, it&#8217;s the waste energy we generate to keep our soma in an organized working state. We collect the sun&#8217;s waste energy and use it to organize ourselves through syntropy.</p>
<div align="center">
<img src="http://ideonexus.com/wp-content/uploads/2010/08/informationentropy.jpg" border="0" width="425" height="283" alt="How Much Information Entropy?"><br />
<b>How Much Information Entropy?</b><br />
Credit: Moi
</div>
<p>In Information Systems, entropy, known as <a href="http://en.wikipedia.org/wiki/Entropy_(information_theory)">Shannon entropy</a> for <a href="http://ideonexus.com/category/science-etcetera/page/10/">Claude Shannon</a>, is the measure of uncertainty in a random variable. A coin toss has one bit of entropy for the 50/50 chance of it turning up heads or tails, 0 or 1. A six-sided dice carries three bits of entropy for the possible outcomes it may produce with each roll (1 (000), 2 (001), 3 (010), 4 (011), 5 (100), 6 (101)). The weather has an amount of entropy difficult to quantify, but it varies from location to location. The weather in New York has more entropy than the weather in Southern California because Southern California has a more consistent climate. Similarly, in our first example, if we were dealing with a rigged coin, one that turned up heads more often than tails, then there would be less than one bit of entropy in each coin toss because we would expect heads more frequently than tails.<br />
<span id="more-6828"></span></p>
<hr width="90%">
<p>On the face of it, the only thing in common with the thermodynamic and information theory definitions is that entropy is a measure of disorder, but the two are analogous in other ways. In our thermodynamic Universe things move toward a state of increasing entropy, and a similar tendency towards a state of total uniformity occurs in an information system, only in reverse.</p>
<p>A living organism in an information system starts out in a world of absolute entropy, nothing is known. As that life interacts with its Universe, the amount of entropy in the Universe decreases for that being, and the amount of its internal entropy increases as what it knows becomes more of a variable to its peers. As the beings living in an information system decrease the entropy of their universe, it tends toward a state of absolute syntropy, absolute predictability.</p>
<p>We exist in a thermodynamic system, and it powers the information systems in our brains, the information systems we construct, and the information system these combine to form in our civilization. The increase of syntropy in an information system comes at the cost of an increase of entropy in the thermodynamic system powering it. Our thermodynamic system is winding down, a bad thing for us, but our information system is becoming increasingly more sophisticated, more syntropic. This brings a deeper insight to H.G. Wells&#8217; prescient observation: &#8220;Human history becomes more and more a race between education and catastrophe.&#8221;</p>
<hr width="90%">
<p><b>Notes:</b></p>
<li>With this understanding of Information Entropy, apply this deeper understanding to the <a href="http://www.nytimes.com/2008/04/08/science/08tier.html">Monty Hall Problem</a> (and the <a href="http://www.nytimes.com/2008/04/08/science/08monty.html">interactive demo of information entropy in effect</a>.</li>
<li>Playing with a deck of cards is also a fun way to think about information entropy. What&#8217;s the measure of entropy in a 52-card deck? What&#8217;s the entropy of just the suits?</li>
<li>Simulations and bioinformatics are giving us increasing syntropic power over previously chaotic (read &#8220;highly entropic&#8221;) systems. Chaos theory could just as well be &#8220;Information Entropy Theory.&#8221;</li>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2010/08/30/entropy-for-information-systems/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Three Methods for Providing a Print View of a Web Page</title>
		<link>http://ideonexus.com/2010/08/11/three-methods-for-providing-a-print-view-of-a-web-page/</link>
		<comments>http://ideonexus.com/2010/08/11/three-methods-for-providing-a-print-view-of-a-web-page/#comments</comments>
		<pubDate>Wed, 11 Aug 2010 05:00:24 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=6816</guid>
		<description><![CDATA[Web developers put content online to be consumed, but we have little control over the mediums consuming it. Web pages are rendered on mobile phones, printers, televisions, and their semantic content consumed by a variety of bots, each with their own requirements and best-practices for layout. Here I&#8217;ll outline three commons solutions to providing a [...]]]></description>
			<content:encoded><![CDATA[<p>Web developers put content online to be consumed, but we have little control over the mediums consuming it. Web pages are rendered on mobile phones, printers, televisions, and their semantic content consumed by a variety of bots, each with their own requirements and best-practices for layout. Here I&#8217;ll outline three commons solutions to providing a print version of web page content.</p>
<h2>Defining Printer-Friendly Design</h2>
<p>First we need to define the differences between design for the screen and design for print. Computer monitors and mobile phones are very different media from paper, even when displaying static content. Screens are backlit, while paper is reflective. Web development for the screen must take into account screen resolutions, while presentation on paper must consider page dimensions and toner consumption.</p>
<p>Jennifer Kyrnin has a <a href="http://webdesign.about.com/od/printerfriendly/a/aa041403a.htm">definitive list of print-friendly attributes</a>, changes that should be made to web content before outputting it to the printed document. Here are the three I find most important, but the list can get much longer depending on your needs:</p>
<ol>
<li>Eliminate dark backgrounds and darken font colors presented over them.</li>
<li>Do something with links, either display full URLs, emphasize the text, or remove them altogether.</li>
<li>Remove headers, footers, side menus, and advertising.</li>
</ol>
<h2>Server-Side Solutions</h2>
<p>One strategy for handling both print and screen layouts of a web page is to have two methods for building the page on the server. For example, <a href="http://www.w3schools.com/">w3schools&#8217;</a> &#8220;PRINT&#8221; button at the bottom of each page opens a new window/tab accessing the same page, but with an &#8220;output=print&#8221; variable added to the end of the URL, which the VBScript accesses via a GET method. When the VBScript detects the &#8220;print&#8221; flag, it builds the page without all the extraneous content.<br />
<span id="more-6816"></span></p>
<div align="center">
<a href="http://www.w3schools.com/css/css_mediatypes.asp"><img src="http://ideonexus.com/wp-content/uploads/2010/08/w3schools.png" border="0" width="400" height="476" alt="w3schools Regular and Print View"></a><br />
<b>w3schools Regular and Print View</b>
</div>
<p><b>Pros:</b></p>
<ol>
<li>Provides a perma-link for users to reference the main content of your page without extraneous information.</li>
<li>Provides a primitive type of Print Preview functionality for the user.</li>
<li>Setting up your application to display print-friendly pages in this way sets it up to display other cool things, like XML versions and REST services.</li>
</ol>
<p><b>Cons:</b></p>
<ol>
<li>Print view must be turned on manually, doesn&#8217;t automatically render a print-version of the page for printers.</li>
<li>We are making a return trip to the server, and probably a database hit too, in order to get information we are already displaying on the screen.</li>
<li>Provides a perma-link for users to bypass your advertising and menus when referencing your content.</li>
</ol>
<h2>Strictly CSS Solutions</h2>
<p>Another technique involves applying cascading style sheets to targeted mediums. In the example below, the first CSS file describes the page display, while the second css file describes the page display for printers specifically:</p>
<pre>
&lt;link rel="stylesheet" type="text/css" href="screen.css" /&gt;
&lt;link rel="stylesheet" type="text/css" href="print.css" <b>media="print"</b> /&gt;
</pre>
<p>Alternatively, you can use the <a href="http://www.w3schools.com/CSS/css_mediatypes.asp"><b>@media Rule</b></a> with an inline style like so:</p>
<pre>
&lt;style type="text/css"&gt;
@media screen
{
  body {font-family:verdana,sans-serif;font-size:12px;}
}
@media print
{
  body {font-family:times,serif;font-size:10px;}
}
@media screen,print
{
  body {font-weight:bold;}
}
&lt;/style&gt;
</pre>
<p>Using this strategy involves identifying all of the items on the page we don&#8217;t want printed and setting their styles to &#8220;display: none;&#8221; so that they appear on our screen, but don&#8217;t appear in our print outs.</p>
<p><b>Pros:</b></p>
<ol>
<li>The same URL automatically renders the page in screen- or print-appropriate layouts depending on the device rendering it.</li>
<li>There is no &#8220;print&#8221; button or link cluttering up the page, the functionality is abstracted cleanly away from the user.</li>
</ol>
<p><b>Cons:</b></p>
<ol>
<li>Having a print.css file with media=&#8221;print&#8221; is a violation of the <a href="http://en.wikipedia.org/wiki/Don't_repeat_yourself">DRY principle</a>. It leads to maintaining duplicate code. It&#8217;s better to use one CSS file and bracket print and view-specific design choices in @media tags.</li>
<li>Means having to put ID attributes around all the content you don&#8217;t want to display in order to hide it from the print view.</li>
<li>Takes some control away from the user, makes it inconvenient for people who want to save your page electronically. I don&#8217;t print web pages. I feel it defeats the purpose of using computers. So I like to pull up the print-version of a page in my web browser and save just the article. @media=&#8221;print&#8221; means I have to File>Print and then save electronically in some BS proprietary format instead of html.</li>
</ol>
<h2>JavaScript Solutions</h2>
<p>With some JavaScript-driven DOM manipulation, you can come up with a function that will provide a pop-up window &#8220;print preview&#8221; that displays just the content on the page that you want printable. The following openPrintView() function accepts the id of the html element you want to display in a printable view. This function then uses the printFormat() function to strip the links out of the text provided it.</p>
<pre>
&lt;script type="text/javascript"&gt;
/**
 * Strips HREF tags from an html string.
 * Can be modified to strip other tags as well.
 */
function printFormat(html)
{
    var container = document.createElement("div");
    container.innerHTML = html;
    var newHTML = container.innerHTML.toString();
    var anchors = container.getElementsByTagName("a");
    for (var i = 0; i &lt; anchors.length; i++)
    {
        var hrefcontainer = document.createElement("div");
        hrefcontainer.appendChild(
        anchors[i].cloneNode(true)
        );
        var href = hrefcontainer.innerHTML.toString();
        var text = anchors[i].innerHTML.toString();
        newHTML = newHTML.replace(href,text);
    }
    return newHTML;
}
/**
 * @param html: The block of html to be displayed in the print window.
 */
function openPrintView(content)
{
    // specify window parameters
    printWin = window.open
    (
       "",
       "print",
       "width=600,height=450,status,scrollbars"
       + ",resizable,screenX=20,screenY=40"
       + ",left=20,top=40"
    );
    // write content to window
    printWin.document.write('&lt;html>&lt;head&gt;');
    printWin.document.write('&lt;link rel="Stylesheet" type="text/css" href="style.css"&gt;');
    printWin.document.write('&lt;/head>&lt;body&gt;');
    printWin.document.write('&lt;span id="printcontrols" style="float:right;"&gt;');
    printWin.document.write('&lt;a href="javascript:window.print();">print&lt;/a&gt;');
    printWin.document.write(' | &lt;a href="javascript:window.close();"&gt;close&lt;/a&gt;');
    printWin.document.write('&lt;/span&gt;');
    printWin.document.write
    (
        printFormat(
        document.getElementById(content).innerHTML)
    );
    printWin.document.write('&lt;/body&gt;&lt;/html&gt;');
    printWin.document.close();
    printWin.focus();
 }
&lt;/script&gt;
</pre>
<p>You can then apply a style rule to hide just the print controls in the new window:</p>
<pre>
&lt;style type="text/css"&gt;
@media print
{
    #printcontrols
    {
        display:none;
    }
}
&lt;/style&gt;
</pre>
<p><b>Pros:</b></p>
<ol>
<li>Uses an inclusion rather than exclusion strategy. You can grab other elements off the page using <a href="http://stackoverflow.com/questions/935127/how-to-access-parent-iframe-from-javascript">parent.getElementById()</a> methods and writing them into the window. This way, when new elements are added to the page, there is no need to modify the print CSS to exclude them.</li>
<li>Can be used to strike a balance between presentation control and user control. The JavaScript references just the block of html you want to print, so on a page displaying multiple articles or reports, the user can pop-up a print-view of just the section they want.</li>
<li>Can serve as a &#8220;Print Preview&#8221; function for slicker web browsers, like Google Chrome, that don&#8217;t have that feature.</li>
</ol>
<p><b>Cons:</b></p>
<ol>
<li>No permalink with this method (A permalink could be provided with JavaScript that reformats the page onload, but that’s klugey.)</li>
<li>Like the server-side solution, this must be triggered.</li>
</ol>
<p>While this last method is my preference because I&#8217;m a JavaScript geek, each of these methods is valid. Depending on your skill set and aesthetic, any of these, or a combination of two can serve your visitors well. </p>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2010/08/11/three-methods-for-providing-a-print-view-of-a-web-page/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Aquires the Semantic Web, or Why Metaweb Matters</title>
		<link>http://ideonexus.com/2010/07/20/google-aquires-the-semantic-web-or-why-metaweb-matters/</link>
		<comments>http://ideonexus.com/2010/07/20/google-aquires-the-semantic-web-or-why-metaweb-matters/#comments</comments>
		<pubDate>Tue, 20 Jul 2010 05:00:20 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=6807</guid>
		<description><![CDATA[Isaac Asimov Entry on Freebase With Google&#8217;s aquisition of Metaweb the searchopolis takes a stake in the seemingly-forever-emerging Semantic Web, a concept with endlessly verbose standards and few demonstrable applications for all it promises. I yawned when I read of Google&#8217;s move, remembering a few years ago when I explored Freebase, Metaweb&#8217;s semantic database. I [...]]]></description>
			<content:encoded><![CDATA[<div align="center">
<a href="http://www.freebase.com/view/en/isaac_asimov"><img src="http://ideonexus.com/wp-content/uploads/2010/07/freebase.jpg" border="0" width="425" height="302" alt="Isaac Asimov Entry on Freebase"></a><br />
<b>Isaac Asimov Entry on Freebase</b>
</div>
<p>With Google&#8217;s <a href="http://googleblog.blogspot.com/2010/07/deeper-understanding-with-metaweb.html">aquisition of Metaweb</a> the searchopolis takes a stake in the seemingly-forever-emerging Semantic Web, a concept with endlessly verbose standards and few demonstrable applications for all it promises. I yawned when I read of Google&#8217;s move, remembering a few years ago when I explored <a href="http://freebase.com">Freebase</a>, Metaweb&#8217;s semantic database. I even tried downloading and playing with their semantically-rich database version of Wikipedia&#8230; and was really unimpressed. It was 3GB of schemas, xml, and ontology, seeming to add up to little of practical value.</p>
<p>Was I ever wrong. I returned to the database this last weekend and found a community of several hundred users maintaining a <a href="http://www.freebase.com/schema">browsable schema</a>, with some of these volunteer ontologists having contributed millions of facts to the database the same way people devote thousands of hours to maintaining Wikipedia. On its surface, the database just seems like a bunch of web pages, you click through the associations as you would on Wikipedia, with articles and entries leading into each other in standard hypertext fashion.</p>
<p>Where the value of <em>semantic</em> associations comes into play is when you experiment with the <a href="http://www.freebase.com/app/queryeditor">Freebase Query Editor</a>, where you can search for data in explicit detail, tailoring it to your specific needs. For example, with the following query I can get a <a href="http://www.freebase.com/app/queryeditor?q=[{%22b:type%22:%22/computer/computer_scientist%22,%22date_of_birth%22:null,%22date_of_birth%3C%3D%22:%221950%22,%22education%22:[{%22institution%22:null,%22id%22:null}],%22name%22:null,%22id%22:null,%22type%22:%22/people/person%22}]">list of computer scientists born before 1950</a>:</p>
<pre>
[{
  "b:type":        "/computer/computer_scientist",
  "date_of_birth": null,
  "date_of_birth<=": "1950",
  "education": [{
    "institution": null,
    "id":          null
  }],
  "name":          null,
  "id":            null,
  "type":          "/people/person"
}]
</pre>
<p><span id="more-6807"></span><br />
A slight modification, and we can <a href="http://www.freebase.com/app/queryeditor?q=[{%22b:type%22:%22/computer/computer_scientist%22,%22date_of_birth%22:null,%22date_of_birth%3C%3D%22:%221950%22,%22education%22:[{%22institution%22:%22Harvard%20University%22,%22id%22:null}],%22name%22:null,%22id%22:null,%22type%22:%22/people/person%22}]">restrict the list to just those scientists affiliated with Harvard</a>:</p>
<pre>
[{
  "b:type":        "/computer/computer_scientist",
  "date_of_birth": null,
  "date_of_birth<=": "1950",
  "education": [{
    "institution": "<b>Harvard University</b>",
    "id":          null
  }],
  "name":          null,
  "id":            null,
  "type":          "/people/person"
}]
</pre>
<p>This is a person-instigated search, but Freebase offers many ways for other applications to take advantage of its data. With REST services provided by Freebase, we can run JSON queries to inform our web applications like so:</p>
<p><a href="http://api.freebase.com/api/service/mqlread?query={%22query%22:{%22type%22:%20%22/people/person%22,%22b:type%22:%22/computer/computer_scientist%22,%22name%22:[],%22date_of_birth%22:[]}}">http://api.freebase.com/api/service/mqlread?query={%22query%22:{%22type%22:%20%22/people/person%22,%22<br/>b:type%22:%22/computer/computer_scientist%22,%22name%22:[],%22<br/>date_of_birth%22:[]}}</a></p>
<p>Or, if you prefer XML, try Freebase&#8217;s <a href="http://rdf.freebase.com/">RDF Browser</a>, where I queried for <a href="http://rdf.freebase.com/rdf/en/isaac_asimov">Isaac Asimov in RDF</a> and got back a huge amount of semantic data. Currently the API only allows a measly <strike>100kb of data downloading</strike> 100k of HTTP requests a day, but with Google&#8217;s backing, this database could start providing semantically-rich data to applications all over the World Wide Web.</p>
<p>I know Google will keep it free, the company&#8217;s business model is built entirely on the universe of free stuff online, and since most of the content in the database is fueled by Wikipedia, it&#8217;s in the commons. I trust Google will increase Freebase&#8217;s accessibility, making it so everyone can play mashup games with the data, just as they did with Google Maps. And, of course, Google will reap incredible benefits to the services they already provide with this acquisition, meaning it&#8217;s a good time to invest in <a href="http://www.google.com/finance?q=goog">GOOG</a>.</p>
<hr width="90%">
<li><a href="http://wiki.freebase.com/wiki/Developers">Freebase Devlopers Wiki</a></li>
<li>Freebase was inspired by Daniel Hillis&#8217; <a href="http://www.edge.org/3rd_culture/hillis04/hillis04_index.html">Aristotle</a> essay in <i>Edge</i></li>
<li>Also check out <a href="http://www.google.com/advanced_search?hl=en">Google Advanced Search</a>, which I didn&#8217;t know about until today.</li>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2010/07/20/google-aquires-the-semantic-web-or-why-metaweb-matters/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Diversifying Technofauna</title>
		<link>http://ideonexus.com/2010/07/12/diversifying-technofauna/</link>
		<comments>http://ideonexus.com/2010/07/12/diversifying-technofauna/#comments</comments>
		<pubDate>Mon, 12 Jul 2010 05:00:54 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=6798</guid>
		<description><![CDATA[Pager, Tamagotchi and Psion Organiser Pager, Tamagotchi and Psion Organiser Credit: steve greer Every time a new device comes around, the self-proclaimed techsperts start declaring the death of older devices. It&#8217;s boring to keep hearing critics say things like the Smartphone is the &#8220;death of laptops,&#8221; the Kindle is the &#8220;death of books,&#8221; and the [...]]]></description>
			<content:encoded><![CDATA[<div align="center">Pager, Tamagotchi and Psion Organiser<br />
<a href="http://www.flickr.com/photos/steviegreer/2773682949/"><img src="http://ideonexus.com/wp-content/uploads/2010/07/oldtech.jpg" border="0" width="400" height="300" alt="Pager, Tamagotchi and Psion Organiser"></a><br />
<b>Pager, Tamagotchi and Psion Organiser</b><br />
Credit: <a href="http://www.flickr.com/photos/steviegreer/2773682949/">steve greer</a>
</div>
<p>Every time a new device comes around, the self-proclaimed techsperts start declaring the death of older devices. It&#8217;s boring to keep hearing critics say things like the Smartphone is the &#8220;<a href="http://htcpedia.com/news/Smartphones-And-The-Future-Of-Laptops/">death of laptops</a>,&#8221; the Kindle is the &#8220;<a href="http://noelpiper.com/2010/02/15/death-of-books/">death of books</a>,&#8221; and the iPad is the &#8220;<a href="http://blog.atomicpoet.org/?p=197">death of PCs</a>&#8221; and the &#8220;<a href="http://gigaom.com/2010/01/27/will-the-ipad-kill-the-kindle-in-a-word-yes/">death of e-Readers</a>.&#8221;</p>
<div align="center">
<a href="http://www.flickr.com/photos/mrbill/4622395909/"><img src="http://ideonexus.com/wp-content/uploads/2010/07/androidtablet.jpg" border="0" width="425" height="249" alt="Eken M001 Android Tablet"></a><br />
<b>Eken M001 Android Tablet</b><br />
Credit: <a href="http://www.flickr.com/photos/mrbill/4622395909/">mrbill</a>
</div>
<p>I can see the iPad being nice for lying on the couch, flipping through websites and comic books, or playing relaxing video games that aren&#8217;t too intense. As appealing a toy as it is, I don&#8217;t find it very hard to resist buying the Android tablet equivalent. I get whatever it could provide me between my existing devices, my laptop, e-reader, and Smartphone. Like a lot of other technologies on display at Best Buy, the tablet pc doesn&#8217;t fit any particular need in my life.<br />
<span id="more-6798"></span></p>
<div align="center">
<a href="http://www.flickr.com/photos/br1dotcom/4736458283/"><img src="http://ideonexus.com/wp-content/uploads/2010/07/ibmportablecomputer.jpg" border="0" width="425" height="267" alt="IBM Portable Personal Computer"></a><br />
<b>IBM Portable Personal Computer</b><br />
Credit: <a href="http://www.flickr.com/photos/br1dotcom/4736458283/">br1dotcom</a>
</div>
<p>The idea tablet-pc will replace the personal computer is just silly. For being productive, a sit-up, <a href="http://technologizer.com/2008/12/18/tv-today-its-still-about-lean-forward-vs-sit-back/">lean-forward</a> device like the workstation, with a keyboard and a mouse for faster input, is the best medium. I suggest anyone who thinks the iPad will replace the laptop try coding for eight hours on one.</p>
<div align="center">
<a href="http://www.flickr.com/photos/goodrob13/3928208574/"><img src="http://ideonexus.com/wp-content/uploads/2010/07/flashbacksarcade.jpg" border="0" width="425" height="319" alt="Flashbacks Arcade"></a><br />
<b>Flashbacks Arcade</b><br />
Credit: <a href="http://www.flickr.com/photos/goodrob13/3928208574/">goodrob13</a>
</div>
<p>Likewise, the tablet-pc won&#8217;t replace the Xbox, Nintendo, or Playstation either. Those are also lean-forward media. People don&#8217;t lay back for a nice relaxing afternoon of first-person shooters, they lean forward to kick-ass. Hardcore gaming requires a gaming console, with a ergonomic controller, big-screen TV, and sound-system. That&#8217;s why PCs are no longer the best medium for gaming either; you want to lean forward on your couch, not upright at a desk.</p>
<div align="center">
<a href="http://www.flickr.com/photos/mosmanlibrary/2779083555/"><img src="http://ideonexus.com/wp-content/uploads/2010/07/microfiche02.jpg" border="0" width="377" height="450" alt="Microfische"></a><br />
<b>Microfische</b><br />
Credit: <a href="http://www.flickr.com/photos/mosmanlibrary/2779083555/">Mosman Library</a>
</div>
<p>The Kindle and Sony e-Reader aren&#8217;t going anywhere either. Tablet PCs are not quite relaxing enough and lacks sufficient battery life to completely fill this niche. The liquid ink display is a much more relaxing medium than a backlit display, making the e-reader more conducive to the lengthy, meditative attention novels demand. Plus I can take my e-Reader on a week-long camping trip and catch up on my summer-reading without having to worry about recharging.</p>
<div align="center">
<a href="http://www.amazon.com/Prehistoric-Life-Definitive-Visual-History/dp/0756655730/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1278545006&#038;sr=8-1"><img src="http://ideonexus.com/wp-content/uploads/2010/07/prehistoriclife.jpg" border="0" width="379" height="450" alt="Prehistoric Life, The Definitive Visual History of Life on Earth"></a><br />
<b>Prehistoric Life, The Definitive Visual History of Life on Earth</b><br />
DK Publishing
</div>
<p>The e-reader won&#8217;t replace all the books either. There&#8217;s no tablet or e-reader with a screen large enough to replicate Albertus Seba&#8217;s <a href="http://www.amazon.com/Albertus-Sebas-Cabinet-Natural-Curiosities/dp/3822816000/ref=sr_1_4?ie=UTF8&#038;s=books&#038;qid=1278545244&#038;sr=1-4"><em>Cabinet of Curiosities</em></a> or <a href="http://www.amazon.com/Prehistoric-Life-Definitive-Visual-History/dp/0756655730/ref=sr_1_1?ie=UTF8&#038;s=books&#038;qid=1278545006&#038;sr=8-1"><em>Prehistoric</em></a>. I can&#8217;t imagine an electronic device that would replace the coffee table book, unless it were a screen built into the surface of a coffee table or an absurdly large and cumbersome tablet.</p>
<div align="center">
<a href="http://www.flickr.com/photos/ilianov/3429515066/"><img src="http://ideonexus.com/wp-content/uploads/2010/07/radio.jpg" border="0" width="425" height="283" alt="Telefunken U-1465 Radio"></a><br />
<b>Telefunken U-1465 Radio</b><br />
Credit: <a href="http://www.flickr.com/photos/ilianov/3429515066/">GonchoA</a>
</div>
<p>We live in a world of increasingly specialized techofauna. As our options for digital solutions increases, the market share each new device can claim grows smaller. The long tail is getting ever longer. The tablet pc, e-book reader, and Smartphone are all niche items, rather than serve all our needs as they are advertised, they serve increasingly specialized needs. Any of these devices can serve as our phone, web browser, game console, mp3 player, video player, personal planner, etc, etc, but each of them provides varying degrees of comfort in our consumption of those services. </p>
<p>None of these are the death of the PC, put they do make the PC into more of a niche item, serving a specific, lean-forward purpose for productivity, just like my light-weight, thumb-sized MP3 player accompanies me on my morning jog, my FM radio accompanies me on my ride to work, my workstation keeps me focused all day at work, while video displays keep me entertained on the cardio machines at the gym afterwards, and my Smartphone serves as a niche-item for keeping me entertained while I stand in line at the grocery store. : )</p>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2010/07/12/diversifying-technofauna/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The n Types of Programmers</title>
		<link>http://ideonexus.com/2010/07/05/the-n-types-of-programmers/</link>
		<comments>http://ideonexus.com/2010/07/05/the-n-types-of-programmers/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 05:00:41 +0000</pubDate>
		<dc:creator>ideonexus</dc:creator>
				<category><![CDATA[Geeking Out]]></category>
		<category><![CDATA[humor]]></category>

		<guid isPermaLink="false">http://ideonexus.com/?p=6737</guid>
		<description><![CDATA[In the tradition of Matt Groening&#8217;s Life in Hell&#8230; Abstraction Guy &#8220;We really need a Factory Pattern for that Factory Pattern.&#8221; Pros: Produces really really really loosely-coupled systems. Cons: Output will never escape the layers of code. Buzzword Bumbler &#8220;This enterprise needs to move to a service-oriented paradigm in the cloudplex to encapsulate polydactylism!&#8221; Pros: [...]]]></description>
			<content:encoded><![CDATA[<p>In the tradition of Matt Groening&#8217;s <a href="http://en.wikipedia.org/wiki/Life_in_Hell">Life in Hell</a>&#8230;</p>
<p><br/></p>
<div style="float:left;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/abstraction.jpg" width="150" height="146" alt="Abstraction Guy"></div>
<h2>Abstraction Guy</h2>
<p>&#8220;We really need a Factory Pattern for that Factory Pattern.&#8221;<br />
<b>Pros:</b> Produces really really really loosely-coupled systems.<br />
<b>Cons:</b> Output will never escape the layers of code.
</p>
<p><br/></p>
<div style="float:right;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/buzzword.jpg" width="125" height="163" alt="Buzzword Bumbler"></div>
<h2>Buzzword Bumbler</h2>
<p>&#8220;This enterprise needs to move to a service-oriented paradigm in the cloudplex to encapsulate polydactylism!&#8221;<br />
<b>Pros:</b> Impresses the heck out of people who don&#8217;t know better.<br />
<b>Cons:</b> Someone will eventually call bullshit.<br />
<b>Note:</b> For fun try putting two in the same room to watch them throw nonsense at one another.
</p>
<p><br/></p>
<div style="float:left;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/bleedingedge.jpg" width="105" height="132" alt="Bleeding Edge"></div>
<h2>Bleeding Edge</h2>
<p>&#8220;Why don&#8217;t we just replace the company phonelist spreadsheet with a FOAF browser plugged into an object database?&#8221;<br />
<b>Pros:</b> Thinks outside the box.<br />
<b>Cons:</b> Must regularly be beaten back into the box.
</p>
<p><br/><span id="more-6737"></span></p>
<div style="float:right;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/standards2.jpg" width="91" height="121" alt="Standards Sociopath"></div>
<h2>Standards Sociopath</h2>
<p>&#8220;I&#8217;m auditing the process, not the person, and this person is not following the process!&#8221;<br />
<b>Pros:</b> Will keep your organization ISO 9000 compliant.<br />
<b>Cons:</b> Will make it so that&#8217;s all your organization does.
</p>
<p><br/></p>
<div style="float:left;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/localguru.jpg" width="108" height="162" alt="The Local Guru"></div>
<h2>The Local Guru</h2>
<p>&#8220;Oh yeah, this bug is usually caused when a stray cosmic ray flips a bit in the system. I&#8217;ve got a workaround for it.&#8221;<br />
<b>Pros:</b> Knows every little odd detail about the system bits-to-gigabits.<br />
<b>Cons:</b> Probably put a lot those odd details in the system to begin with.
</p>
<p><br/></p>
<div style="float:right;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/cargocultist.jpg" width="171" height="148" alt="Cargo Cultist"></div>
<h2>Cargo Cultist</h2>
<p>&#8220;Can you help me debug this script I got from scriptkiddies.ru?&#8221;<br />
<b>Pros:</b> Great at finding existing solutions online.<br />
<b>Cons:</b> Will copy 10,000 lines of code into a program to make use of a custom replace() function on line 437 rather than figure out the regex themselves.
</p>
<p><br/></p>
<div style="float:left;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/workaholic.jpg" width="135" height="125" alt="Workaholic"></div>
<h2>Workaholic</h2>
<p>&#8220;Going home already? Must be nice&#8230;&#8221;<br />
<b>Pros:</b> Work ethic of steel.<br />
<b>Cons:</b> Works harder, not smarter.
</p>
<p><br/></p>
<div style="float:right;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/fan.jpg" width="140" height="169" alt="Fanboy/Fangirl"></div>
<h2>Fanboy/Fangirl</h2>
<p>&#8220;This would be so much more [efficient, elegant, convenient] in [Ruby, Python, .Net, etc]!!!&#8221;<br />
<b>Pros:</b> Really knows their solution of choice in and out.<br />
<b>Cons:</b> It&#8217;s never the solution for the project you&#8217;re currently working on.
</p>
<p><br/></p>
<div style="float:left;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/googlegeek.jpg" width="144" height="134" alt="Google Whiz"></div>
<h2>Google Whiz</h2>
<p>&#8220;The answer is.. (tappa-tappa-tappa) &#8230;42!&#8221;<br />
<b>Pros:</b> Can find the answer to absolutely anything online.<br />
<b>Cons:</b> Will blackmail you over those photos from the party last weekend.
</p>
<p><br/></p>
<div style="float:right;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/theorist.jpg" width="123" height="143" alt="The Theorist"></div>
<h2>The Theorist</h2>
<p>&#8220;Did you see the new min max algorithm in this month&#8217;s Communications of the ACM? It saves three steps over the current standard!&#8221;<br />
<b>Pros:</b> Produces lots of White Papers on fantastic, revolutionary solutions using pseudo code.<br />
<b>Cons:</b> Never produces a line of actual code.<br />
<b>Warning:</b> Not to be teamed up with Bleeding Edge.
</p>
<p><br/></p>
<div style="float:left;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/trainwreck.jpg" width="101" height="135" alt="The Train Wreck"></div>
<h2>The Train Wreck</h2>
<p>&#8220;Should I have put a WHERE clause on that delete statement?&#8221;<br />
<b>Pros:</b> Means well.<br />
<b>Cons:</b> Feeling sorry for them prevents proper dismissal.
</p>
<p><br/></p>
<div style="float:right;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/curmudgeon3.jpg" width="105" height="147" alt="The Curmudgeon"></div>
<h2>The Curmudgeon</h2>
<p>&#8220;Object-Oriented, shmobject-Oriented, it&#8217;s all just assembly when you get down to it!&#8221;<br />
<b>Pros:</b> Lot&#8217;s of great stories about the &#8220;old-days&#8221; of punchcards and renting time on mainframes.<br />
<b>Cons:</b> Will use Fortran as pseudo code and give it to you to figure out in implementation.
</p>
<p><br/></p>
<div style="float:left;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/linuxelitist.jpg" width="104" height="130" alt="Linux Elitist"></div>
<h2>Linux Elitist</h2>
<p>&#8220;Software crash? That&#8217;s what you get for selling out to the Evil Empire. <em>Sniff.</em>&#8221;<br />
<b>Pros:</b> Will save you tons of money on software licenses.<br />
<b>Cons:</b> Will cost you tons of money on software maintenance.
</p>
<p><br/></p>
<div style="float:right;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/rewriterenegade.jpg" width="116" height="124" alt="ReWrite Renegade<"></div>
<h2>ReWrite Renegade</h2>
<p>&#8220;Instead of fixing the input, we should just rewrite the whole Cobalt application in .NET.&#8221;<br />
<b>Pros:</b> Has fantastic vision.<br />
<b>Cons:</b> Has fantasy vision.
</p>
<p><br/></p>
<div style="float:left;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/normalizationnazi.jpg" width="168" height="155" alt="Normalization Nazi"></div>
<h2>Normalization Nazi</h2>
<p>&#8220;I pulled the area codes out of the customer_phone table and migrated them to a phone_area_code table and added an id to reference them. You’ll need to modify all the database views and procedures.&#8221;<br />
<b>Pros:</b> Might actually achieve the fabled 6NF.<br />
<b>Cons:</b> Database will grind to a halt from all the cascades and rule-fired procedures that go off each time you update a record.
</p>
<p><br/></p>
<div style="float:right;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/documentationdip.jpg" width="117" height="137" alt="Documentation Dip"></div>
<h2>Documentation Dip</h2>
<p>&#8220;The variable $i is used as a counter in the following FOR loop which&#8230;&#8221;<br />
<b>Pros:</b> Makes it look like your team is really good a documenting their code.<br />
<b>Cons:</b> Makes your team look like they can&#8217;t read code.
</p>
<p><br/></p>
<div style="float:left;"><img src="http://ideonexus.com/wp-content/uploads/2010/07/oneup.jpg" width="110" height="157" alt="1-Up"></div>
<h2>1-Up</h2>
<p>&#8220;I found an unused variable in that class you just checked in&#8230; I prefer not to have such inefficiencies in my code, but that&#8217;s just me.&#8221;<br />
<b>Pros:</b> Keeps an internal scorecard of every error every other programmer has made in the organization.<br />
<b>Cons:</b> Isn&#8217;t keeping a scorecard on his or herself.
</p>
<p><br/><br/></p>
<hr width="90%" />
<p><b>Note:</b> These are caricatures of people, stereotypes, not real people. If you know me personally, please don&#8217;t think any of these were inspired by you. : )</p>
]]></content:encoded>
			<wfw:commentRss>http://ideonexus.com/2010/07/05/the-n-types-of-programmers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

