<?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>Technics</title>
	<atom:link href="http://www.andrewluetgers.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.andrewluetgers.com</link>
	<description>ideas, technology and all purpose braindump</description>
	<lastBuildDate>Sun, 22 Jan 2012 07:22:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>The civil rights battle of the 21st century.</title>
		<link>http://www.andrewluetgers.com/2012/01/22/he-civil-rights-battle-for-the-21st-century/</link>
		<comments>http://www.andrewluetgers.com/2012/01/22/he-civil-rights-battle-for-the-21st-century/#comments</comments>
		<pubDate>Sun, 22 Jan 2012 07:22:26 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[thinking out loud]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/?p=261</guid>
		<description><![CDATA[The new avant-garde is made of hackers, amateurs, makers, DIYers and entrepreneurs. If only we all knew how revolutionary and politically charged what we do really is. There is a tsunami of technological, cultural and political revolution brewing. Even after all we have seen in the arab spring, the occupy movement and the battle over [...]]]></description>
			<content:encoded><![CDATA[<p>The new avant-garde is made of hackers, amateurs, makers, DIYers and entrepreneurs. If only we all knew how revolutionary and politically charged what we do really is. There is a tsunami of technological, cultural and political revolution brewing. Even after all we have seen in the arab spring, the occupy movement and the battle over SOPA/PIPA it&#8217;s clear that we are in the early stages of a <a href="http://www.youtube.com/watch?v=HUEvRyemKSg" target="_blank">longer term war</a>. Thanks to a wide gamut of technological forces the balance of power has shifted dramatically in favor of the masses over the masters. Its what makes this moment so unstable for both established powers and established freedoms. The open question is if we will accept the role of rightful creators of our own world or will we be contented to stay disengaged, small-minded and apathetic like the rest of the sheeple out there. Decades from now when our time has passed will we look back and see a flurry of creative destruction heralding a brighter future or will we instead lament the crescendo of controls, limits, gate-keepers and dictators? Make no mistake, this is the civil rights battle for the 21st century and it will require a similar amount of organization, effort and determination that was needed in the 20th century. The fate of this cultural upheaval is now within our hands, we need only grasp it firmly and not let it be given away by idiots or taken by crooks. We mustn&#8217;t let go of it now that we have it and now that we do, we must recognize how insanely huge this moment is. When they realize we aren&#8217;t about to let go of this thing, they will try to wear us down. If that doesn&#8217;t work they will try to co-opt us. Sadly I can see both of these strategies being successful. Lets not let that happen. Lets own our future rather than give it away. It&#8217;s time for the new avant-garde to unite and show the world what the future will look like by making it now. Otherwise we will be hoodwinked into a future of share-cropping for a few massive plantation owners as a bunch of contented, small-minded, apathetic, suckers.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2012/01/22/he-civil-rights-battle-for-the-21st-century/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Why the rampant fanboyism around CoffeeScript worries me</title>
		<link>http://www.andrewluetgers.com/2011/09/07/coffeescript-fanboyism-rampant/</link>
		<comments>http://www.andrewluetgers.com/2011/09/07/coffeescript-fanboyism-rampant/#comments</comments>
		<pubDate>Wed, 07 Sep 2011 15:40:08 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[thinking out loud]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/?p=202</guid>
		<description><![CDATA[note: this is a work in progress only 2/3 done. More to come soon! It is good! We are saved! Since 2009 when the world was introduced to CoffeeScript it has steadily gained momentum and in recent months its starting to seem like its become the inevitable progression from current day JavaScript to &#8220;the future [...]]]></description>
			<content:encoded><![CDATA[<pre>note: this is a work in progress only 2/3 done. More to come soon!</pre>
<h2>It is good! We are saved!</h2>
<p>Since 2009 when the world was introduced to <a href="http://en.wikipedia.org/wiki/CoffeeScript" target="_blank">CoffeeScript</a> it has steadily gained <a href="http://www.rubyinside.com/rails-3-1-adopts-coffeescript-jquery-sass-and-controversy-4669.html" target="_blank">momentum</a> and in recent months its starting to seem like its become the inevitable progression from current day JavaScript to &#8220;the future is here&#8221; language of the Gods. By the title of my post you can probably guess I&#8217;m, shall we say, dubious of all the <a href="http://robots.thoughtbot.com/post/9251081564/coffeescript-spartan-javascript" target="_blank">sappy</a> <a href="http://www.coffeescriptlove.com/" target="_blank">love</a> <a href="http://ricardo.cc/2011/06/02/10-CoffeeScript-One-Liners-to-Impress-Your-Friends.html" target="_blank">poems</a> that are being written about CoffeeScript. I had been at first interested, then trepidatious and now at times almost seething about all the hype and yes <em><strong>rampant fanboyism</strong></em> growing around CoffeeScript.</p>
<h2>But why? Why must I be the lone grump at the party?</h2>
<p>That&#8217;s what this whole epic post is about so let me first say I&#8217;m not trying to be a troll here. I actually have some serious points to make and the first one is we should rightly give huge recognition to Jeremy Ashkenas, <strong>CoffeeScript IS a thing of beauty</strong>. It works, its a whole new language and yet it compiles down to plain old JS and it lets us try out some cool new language features and syntax, awesome right? And most importantly it is helping many programers love what they do and yes be productive. Even the royalty of JavaScript have nothing but praise: the God/Creator of JavaScript Brendan Eich had this to say when <a title="JS Conf 2011: Coffescript as a JS/Next - Jeremy Ashkenas" href="http://blip.tv/jsconf/jsconf2011-jeremy-ashkenas-5258082" target="_blank">sharing the stage with Jeremy at this years JS Conf in Portland</a>.</p>
<blockquote><p>&#8220;It helps to have things like CoffeeScript out there it isn&#8217;t overriding, it doesn&#8217;t tell us what we must do but its suggestive, and if we want to pave that cow path we can, and I&#8217;m in favor.&#8221;</p></blockquote>
<p>Or how about my personal idol, Doug Crockford when asked about CoffeeScript after <a title="TXJS 2011 A1 - Douglas Crockford - JavaScript Programming Style and Your Brain" href="http://vimeo.com/25606006" target="_blank">his excellent talk on code style at this years TXJS conference in Austin.</a></p>
<blockquote><p>&#8220;I think CoffeeScript is clearly good stuff. CoffeeScript is elegant it sort of takes the good parts, removes all of the stupid awful syntax that were inherited from the wrong languages, replaces it with something that is small and elegant and expressive. CoffeeScript is really great. And CoffeeScript is having a big influence on the ECMA Script committee&#8230;.. CoffeeScript is definitely in the right direction and I would like to see future languages looking more like CoffeeScript than like C.&#8221;</p></blockquote>
<p>So what do I really think? I think CoffeeScript&#8217;s big selling point of increased productivity is completely bogus because it optimizes for typing fewer characters vs readability when it should do the opposite.</p>
<h2>Don&#8217;t be that guy</h2>
<p>Clearly I had better be careful, I&#8217;m treading on very thin ice here&#8230; but I can&#8217;t hold it back any longer to be totally honest.<strong> I hate this designer language bullshit</strong>. Ahhh that feels better. Damn I thought this wasn&#8217;t about hating, but there I said it. It really is nothing personal against all the people that love CoffeeScript, but I get the feeling that CoffeeScript is just some hipster code for people that like the idea of being great programmers and super efficient at what they do but really don&#8217;t have the need for it. But that&#8217;s just one jerk&#8217;s opinion so go on loving it and using it for all I care.</p>
<p>OK now that I&#8217;ve purged the demons lets discuss the actual arguments I have. You may be surprised to note that, in fact, there are many common criticisms of CS that I&#8217;m going to skip right over. I have no intention of retreading the old complaints of the &#8220;leaky abstraction&#8221; argument, or the &#8220;compile step is a pain&#8221; argument, or the &#8220;debugging is a pain&#8221; argument, or the &#8220;output JS is less than perfect&#8221; argument. These complaints, weather valid or not, do not concern me. Moreover this post really isn&#8217;t about CoffeeScript at all, it goes way deeper than that. Its about the influence of CoffeeScript on the JS community and the direction of the ECMA Script standard itself. So here are my three arguments.</p>
<p><strong>If you didn&#8217;t catch that, what I&#8217;m saying is that the following is not attempting to be a CoffeeScript hit-piece its about the direction of JavaScript. </strong></p>
<ol>
<li>Stripping characters from the syntax is a false solution to increased productivity</li>
<li>Overly terse syntax can make code harder to scan and understand.</li>
<li>JavaScript as a compile target weakens and fragments the community</li>
</ol>
<p>Ultimately I think the ongoing pursuit of a more perfect programming language is a noble one. Despite the good intentions there are some very disheartening tendencies I see coming out of the ECMA Script standards body and I don&#8217;t want to see the language spec itself turned into a dumping ground for &#8220;whats hot now in language design.&#8221; Broad assumptions about productivity and what the JS community need and want are being made in ECMA Script discussions for the next JS veriosn after ES5. This is where I start to get seriously concerned. So lets address this head on.</p>
<h2>What really matters here anyway?</h2>
<p>Ultimately the best thing about JavaScript is its amazing community but I&#8217;m concerned its getting distracted trying to fix things that are not broken with shiny new syntax and cute language features. (yeah I know you&#8217;ll mention all the bad parts of JS now) It feels like all so much newness for newness sake. Rather than diddle with our keywords and curly braces I&#8217;d rather see the JS community focus on solving real world problems through the power of our code and our collaborative energies. Lets quickly peek at an example of what I&#8217;m talking about, shall we. Take a look at the Github profiles of <a href="https://github.com/LearnBoost" target="_blank">LearnBoost</a> and its employees. If you know anything about the node.js community then you&#8217;ll agree these guys are titans. In particular check out <a href="https://github.com/visionmedia" target="_blank">visionmedia</a> (TJ Holowaychuk) a new idol of mine. TJ is a machine! Ask yourself if your organization has been as productive as LearnBoost or if you&#8217;ve created 1% of the value that TJ has for the js community and his company. I guarantee whatever the percentage you come up with is, futzing around with the language is not going to make it go up. Note: as far as I can tell <a href="https://github.com/rails/rails/commit/9f09aeb8273177fc2d09ebdafcc76ee8eb56fe33" target="_blank">TJ is a pretty big CoffeeScript skeptic as well</a>.</p>
<p>Lets unpack our assumptions that are propping up the strong emotions we have around some feature or syntax. Ultimately all this is about being more productive so lets find the best way forward for this conversation that puts the focus where it needs to be. Helping developers ship good code often. (Just a preview: Surprise, surprise, the language and its syntax are not key factors here.)</p>
<h2>But Maybe I&#8217;m Wrong</h2>
<p>Perhaps in a few short years, or months at this rate, someone will come by this blog post (yeah right Ive had all of 5 visitors) and think <em>&#8220;ohh how quaint, there once was a day when lesser programmers thought so highly of their decrepit old ways as to question the perfection that is CoffeeScript which has freed humanity from toil and is clearly right and good. Praise be to Eich, Amen.&#8221;</em></p>
<p>Well I guess I&#8217;ll just have to be that guy then. I just hope I don&#8217;t sound like I&#8217;m trying to sell and old outmoded technology like this dude.</p>
<p><iframe src="http://www.youtube.com/embed/hewedqvSWaI" frameborder="0" width="560" height="345"></iframe></p>
<h2>Check yo self</h2>
<p>Before I get to the three arguments lets first do a little meta-cognition just to check ourselves. We should always be the first ones to point out our own foibles. By always reminding ourselves how we commonly stray from sound reasoning we can hopefully, more often than not, catch ourselves in the act. This is also for those who would suggest that I&#8217;m being ignorant or biased in some way that in fact I&#8217;m actually trying really hard not to be. Here are three points I have seriously considered over the past week while I&#8217;ve been writing this.</p>
<h3>First Head Check: - <a title="People are biased against creative ideas, studies find" href="http://www.news.cornell.edu/stories/Aug11/ILRCreativityBias.html" target="_blank">This study</a> found people have a bias to truly creative ideas. The studies&#8217; findings include:</h3>
<ul>
<li>Creative ideas are by definition novel, and novelty can trigger feelings of uncertainty that make most people uncomfortable.</li>
<li>People dismiss creative ideas in favor of ideas that are purely practical &#8212; tried and true.</li>
<li>Objective evidence shoring up the validity of a creative proposal does not motivate people to accept it.</li>
<li>Anti-creativity bias is so subtle that people are unaware of it, which can interfere with their ability to recognize a creative idea.</li>
</ul>
<div>So clearly by this point it looks like I&#8217;m just biased to a truly creative, new idea. But I would argue that this is not whats upsetting me. Read on.</div>
<h3><strong>Second Head Check -</strong> Programmers love the language they know and everything else sucks.</h3>
<div>Programmers have peculiar, near-religious emotions about programming language preferences. There is a constant battle between programmers of all stripes and the arguments are all over the board. <em>&#8220;This language is better than that because of x, y, z.&#8221; &#8220;Here are ten reasons why your language sucks.&#8221;</em> Etc. Etc. In one of his talks I recall Douglas Crockford bringing some great perspective to this incessant fracas. Sorry I can&#8217;t find the specific video so I&#8217;ll summarize.</div>
<ul>
<li>Moore&#8217;s Law means doubling in performance every 2 years or so.</li>
<li>Software is not ruled by Moore&#8217;s Law, its ruled by Murphy&#8217;s Law.</li>
<li>We see leaps in software performance in roughly 20 year increments.</li>
<li>Part of this is due to the generational nature of language preference.</li>
<li>Programmers (and everyone else) are biased to what they know and love and reject new ideas (see first head check).</li>
<li>So it takes a whole new generation of programmers to legitimize a new language.  A generation that is not encumbered by prejudice and preference of an old inferior language.</li>
</ul>
<div>I could simply be falling into this nasty trap. JavaScript is my favorite language for well over a decade. Its what I think about all day, its what I dream in. That makes me all the more likely to defend it out of emotion rather than reason. But although I&#8217;ll recognize that I do have strong emotions about this matter I assure you they are because of objective reasoning about<em><strong></strong></em> productivity. There&#8217;s far more to meaningful productivity gains to be had in this world than what you could <em><strong>maybe</strong></em> get from some new language-feature soup in a stripped down syntax.</div>
<div>
<h3><strong>Third Head Check-</strong> We all want to feel like we are in control and know what is best.</h3>
<p>Have you ever worked with that manager or colleague or fellow student that just had to take ownership of everything? You show them something great and new and they have to start hating it right away and put their little fingerprint on it before its good enough. And by fingerprint I mean repeated blows from a sledge hammer. People like this are roadblocks to innovation and getting good work done efficiently. They must feel threatened, disrespected for not being consulted, and from their perspective their valuable knowledge and skills are needed. Ultimately they get their way, preventing change for a multitude of off the wall reasons. They get their way or else there&#8217;s high drama and who has time for that? So now innovation has been stifled (or in their minds a fire has been put out) and hey they feel better and &#8220;now we can ship!&#8221;</p>
<p>Could that be me? God I hope not, those people are really annoying. But resistance to change is natural. If things changed all the time we would just be stuck in perpetual adjustment to the new conditions. And sometimes lack of change is a very good thing. (some people call it stability) One of the best things to happen to JavaScript was the dominance of Microsoft in the browser-wars and the following half decade of nearly zero innovation from them. It left the stage ripe for a dusty and ignored technology, XML HTTP requests, to herald in a new age of software on the web. But we should be farther ahead by now and yet we&#8217;re still futzing around with essentially the same web 2.0 widgets. Take a close look. The drastic changes in syntax CoffeeScript brings to the table looks like mere chipping at the edges when you think about what really needs to change to give us the next 20 year cycle of software innovation. Douglas Crockford argues its about distributed computing with the <a href="http://en.wikipedia.org/wiki/Actor_model" target="_blank">Actor Model</a> and a stronger security framework. I totally agree about the need for better security and better distributed computing. I don&#8217;t care how terse your syntax is, its not going to have an effect on these problems.</p>
<p>So head checks complete, lets (finally) get right into the arguments</p>
<h2>First Argument: Stripping characters from the syntax is a false solution to increased productivity.</h2>
<p>In fact my second argument below is that removing the characters makes the code harder to scan and quickly understand, thus making you less efficient. But lets look at this whole myth of &#8220;terse code is more productive because you have to type less.&#8221; When did this motive arise in the JS community? I have noticed in a few older videos Douglas Crockford and Brendan Eich asking the audience what they would like to replace the function keyword with. &#8220;how about the florin?&#8221; Doug asks for people to raise hands. He gets few bites on his various ideas and then relents and asks &#8220;no change?&#8221; This elicits a big response. What the hell? Where did this crap come from. When did anyone ever have a problem with typing the word function? And now they want to use -&gt; instead because its soo much shorter. Well haaang on there. It jsut so happens that typing &#8220;function&#8221; is not very hard to do. In fact most IDEs will auto-complete it for you. And yet this is a big deal in the new Harmony discussions? Heres Brendan talking again from the JSConf video I liked to above.</p>
<blockquote><p>&#8220;On more thing that I think I have to talk about because I talk about it at every talk I give which is function syntax. Im still paying for usings 8 letter key words in 1995 I think I took it from awk and ahh heh I shoudnt have done that, I should have used fn and we would have been past this becasue probably two letters is short enough. Um and were using fn in rust at mozilla. But its hard to change and the idea that you would use of a greek lamda which is an actual unicode identifier allowed in ES3 and ES5 or the florin which Doug Crockford suggested but didnt really champion, those don&#8217;t really ring true. Then there was a proposal to use hash but I think we want hash for something else and I have kind of come to realize, to be very frank, that CoffeScript has already done the right thing, C# has done this. So I am proposing for the next ECMA Script meeting, and wish me luck becasue it is not a sure thing, that we just standardize this. That what people really want is very sweet short function syntax without that leading key-word and the arrow form in CoffeScript gives us that&#8230;&#8221;</p></blockquote>
<p>And then theres this gem.</p>
<blockquote><p>&#8220;It matters becasue keystrokes matter and you see this over time you see people gravitating to lighter syntax you see productivity mattering in the long run even if it is a small win.&#8221;</p></blockquote>
<p>I have a question for every single group of product developers that have a great idea about &#8220;what people really want.&#8221;</p>
<h2>Hey Brendan Eich, I&#8217;M TALKING TO YOU</h2>
<p>My question is can you prove it? I have a very strong suspicion that of course you can&#8217;t prove it. You have two crappy languages that use it and thats enough of an excuse? All to do what? Scratch an itch youve had for a long time to make the language more terse to save on 6 keystrokes? There are actually valuable scanability and readability benefits to having the whole word there my friend and the fact that a vocal minority and a few language dictators such as yourself on the ECMA TC39 panel have a Jones to shorten the function keyword into an <strong>obtuse abstraction</strong> is a hairs breath away from changing the dot operator to do concat like in php or something stupid like that. THERE IS NO FREAKING REASON TO DO IT. You have given no real reason, just the off hand remark implying (and I paraphrase) &#8220;of course its obvious that EVERYONE wants this because it will make us all SOOO much more PRODUCTIVE.&#8221; Admit it Brendan you can never give a good reason for switching function to -&gt; let alone one that would warrant changing the worlds most popular and widely used programming language to be less readable. This is because there is no good reason. Its just your language-designer tastes that are waaaay too, well, designer. You&#8217;re picking out the European orange leather couches and all we want is the damn roof to stop leaking and the foundation shored up.</p>
<p><a href="http://brendaneich.com/2011/05/my-jsconf-us-presentation/" target="_blank">In your own blog</a> you call for dialogue intend to listen to the JavaScript community and its &#8220;natural leaders&#8221;</p>
<blockquote><p>&#8220;JS developers and implementors on TC39 must learn from one another and “meet in the middle”. The Harmony goals are good. But developers may do only what can be done in library code, or reach for CoffeeScript or another language on top of JS. And TC39 may over-invent.</p>
<p>The better way is a dialog between JS developers, especially natural leaders among them such as @jashkenas, and TC39 members.&#8221;</p></blockquote>
<p>How convenient, it must simply by a wonderful coincidence that you happen to be promoting CoffeScript style syntax and Jeremy Ashkenas makes your short list of &#8220;natural leaders&#8221; in the JavaScript community. I wonder what the jQuery team thinks about all your proposals, or what the node.js committers think about your proposals or what other (I would argue) greater leaders in the js community think about changing the function key word or paren-less syntax. Well have you asked them? I think you already know and are only hilighting the person that agrees with you the most.</p>
<p>OK im done ranting at invisible Brendan Eich now (as if hes going to read this) :-)</p>
<blockquote><p>Edit: the &#8220;invisible&#8221; comment was not trying to make Brendan out to be an absente landlord of the language, in fact he is extremely open and available and should be commended for being so.</p></blockquote>
<p>I am not the only one that is concerned about the direction of JS with all the new Harmoy proposals and the things that are being pushing beyond that. I think I have some bakckup on this in the form of Ryan Dahl. If there is anything like a natural leader in the JS community he is certainly one of the most influential right now. And he counts one of the most vital portions of the JS community as his army. So i was very heartened when <a href="http://blip.tv/jsconf/nodeconf-2011-nodecommit-panel-5420208" target="_blank">Ryan Dahl ripped into the ECMA Scipt committee</a> at node conf.</p>
<blockquote><p>&#8220;I wish ECMA Script woudnt be so ahhh &#8220;fancy pants&#8221; about adding all these features. We need 64 bit integers, please do that first. Then think about proxies in like ten years or like after we&#8217;re all dead. (applause) <em><strong>JavaScript does not need more features it just needs a couple of small things fixed</strong></em>.&#8221;</p></blockquote>
<p>Thankfully Brendan was sitting in the audience for this very panel discussion and eventually got up on stage himself to address the matter.</p>
<blockquote><p>&#8220;Everey tool has edges you need to smooth out so theres more work to do on JavaScript usability. When you look at how its used in Node its a bit different than how its used in the browser. Theres some overloap but looking at Node makes me think more about binary data and even 64 bit ints. It makes me think more about um.. getting rid of the spaghetti monster. The client has solved that a long time ago and it doesnt nest as deep I think, the logic doesnt chain as deep.&#8221;</p></blockquote>
<p>Ok it sounds like Brendan Eich can come around to logic and reason. Cool.  We&#8217;ve established why they seem so hard up to change syntax, they assert with no evidence that everyone wants it and that it makes us more productive to type less. You&#8217;ve got my feelings on the whole everyone wants this BS. Lets address the really important thing here. EVEN IF everyone wanted it, it would still be the wrong thing to do. That is because it will do nothing positive in the way of productivity if anything it will certainly reduce readability and thus lower productivity.</p>
<p>&#8220;So what is it that productivity stems from if not typing less?&#8221; I&#8217;m so glad you asked we can finally get to something actually important. (I told you we&#8217;d get here)</p>
<p>This is a very well studied subject matter. But we needn&#8217;t go far for good insight, <a href="http://yuilibrary.com/theater/douglas-crockford/crockford-quality/">Douglas Crockford has a absolutely fantastic talk on code quality</a> that really hammers it home.</p>
<blockquote><p>&#8220;Programmers don&#8217;t understand how they spend their time. They think its mostly typing programs. Mostly they are having technical conversations with collegues or in meetings or staring at the screen puzzeling over the code and problems they have to deal with.</p>
<p>Programmers tend to be skeptical of process improvements that might require more keystrokes.</p>
<p>I turns out that programmers really arent spending much time typing their software. But thats where we look for stuff, &#8220;I want an IDE with autocomple so I don&#8217;t have to type so much, I&#8217;ll go so much faster that&#8217;ll really improve my productivity.&#8221; I think those particular improvement in productivity are negligible. That&#8217;s not where the time is being spent. Programming is now a social activity.</p>
<p>The simplest thing we can do to enhance the value of our codebase is to make our programs more readable. Our ability to read our programs is the thing what gives the codebase value.&#8221;</p></blockquote>
<p>Amen to that!</p>
<h2>Updates:</h2>
<blockquote><p>On Harmony syntax changes: I had a short twitter conversation with Brendan Eich and he made it clear that although he wants -&gt; function syntax it is not making its way into Harmony.</p></blockquote>
<blockquote><p>On feedback: So at this point in the process I thought I&#8217;d air out what I had so far by <a href="http://groups.google.com/group/nodejs/browse_thread/thread/6bbc95cc1c35b099#" target="_blank">posting on the node.js mailing list</a>. Interestingly enough <a href="http://news.ycombinator.com/item?id=2985491" target="_blank">Jeremy Ashkenas caught wind of this article and posted my rant on Hacker News</a>. From the comments I&#8217;ve been getting most people disagree with me, several making good arguments. This was by far the funniest comment on HN by TrevorBurnham &#8220;&#8230;made me wonder momentarily if the essay was a work of post-modern art, subversively advertising the benefits of CoffeeScript through an implausible flourish of logorrhoea. If so: Well done, sir.&#8221; Ouch! Well what can I say it&#8217;s a hasty rant that became a big blog post. I don&#8217;t claim to be a language designer or a professional tech blogger. Im just one opinionated jerk that is apparently woefully wrongheadded about this subject. Well lets get this over with shall we.</p></blockquote>
<h2> Second Argument: Overly terse syntax can make code harder to scan and understand.</h2>
<p>&#8220;What?&#8221; You are probably crying out in wild eyed disbelief. &#8220;How can it be harder to read if it has fewer characters.&#8221; I know what you&#8217;re thinking. &#8220;It conveys the same data in a cleaner package so we can scan more code, see more of whats going on with less scrolling and fewer eye catching distractions like semicolons and curly braces. Its the epitome of readability!&#8221;</p>
<p>Well, some people call curly braces and parens &#8220;noise&#8221;, but I call them punctuation. I suppose you could consider punctuation marks in a book noise as well. I also think that the word &#8220;function&#8221; is a better signifier of a function than the more abstract tokens such as -&gt; or #. Is all of this just a matter of subjevtive opinions, individualistic esthetic tastes? I think a large ammount of it is but there has to be something concrete that makes us wince at java or objective-c when compared to JavaScript. I think it is a matter of how easy or hard it is to quickly comprehend the problem and solution embodied in the code. Reading and understanding source code is one of the most important and time consuming activites that programmers perform. So we should optimize for readability.</p>
<p>The basic fact is that we can argue this until we are all blue in the face becasue we have no objective way to grade one language or another. Hence we have what seems to be a resonable if automatic, positive response to reductions in syntax. The assumption is that if one language is easier on the eyes as it strips away boilerplate and verbose syntax then it follows that another must be better as even more things get stripped away. Now, to be clear, I am speaking purely in terms of the visual effect of the language on our ability to comprehend the code as written. There is an unquestioned assumption that less syntax is, esentially, always better, with apparently no point of diminishing returns. This view implies that the visual nature of code is that it gets more readable as it gets more terse. Well, I&#8217;d like to question those assumptions. Because they imply the point of code is to take up as littel space as possible but thats bogus. I think the point of code is to enable people to clearly express and understand a range of complex computational processes. Hopefully that computational process is solving an actual problem and so it should help you understand the nature of the problem and the nature of the solution employed. Thats a lot of responsibility and I think the visual/spatial nature of code is essential to fully succeeding at that task.</p>
<p>I think some code will help express the point.</p>
<pre class="brush: jscript; title: ; notranslate">
// #6 Filter list of numbers into two categories.
// from http://ricardo.cc/2011/06/02/10-CoffeeScript-One-Liners-to-Impress-Your-Friends.html
passed = []
failed = []
(if score &gt; 60 then passed else failed).push score for score in [49, 58, 76, 82, 88, 90]

// roughly equivalent in js
var passed = [],
    failed = [];
[49, 58, 76, 82, 88, 90].forEach(function(score) {(score &gt; 60 ? passed : failed).push(score)});

// or more verbose js with more visual/spatial structure
var passed = [],
    failed = [],
    score,
    scores = [49, 58, 76, 82, 88, 90],
    cutoff = 60,
    i = scores.length;

while (i--) {
    score = scores[i];
    if (score &gt; cutoff) {
        passed.unshift(score);
    } else {
        failed.unshift(score);
    }
}
</pre>
<p>Of couse anyone can pick a piece of code to make a point about one language or another. So the above code is purely to express the concept that there can be meaningful spatial information present in code.</p>
<p>This is a murky subject but there is some research in the area. In my short research I did find some interesting papers that address the <a title=" SPATIAL ABILITY AND LEARNING TO PROGRA" href="http://www.humantechnology.jyu.fi/articles/volume4/2008/jones-burnett.pdf" target="_blank">spatial nature of learning to program</a>[1], <a title="Spatial Skills and Navigation of Source Code" href="http://db.grinnell.edu/sigcse/iticse2007/Program/viewAcceptedProposal.asp?sessionType=paper&amp;sessionNumber=107" target="_blank">code navigation</a>[2], <a title=" Theoretical Considerations on Navigating Codespace With Spatial Cognition" href="http://smu-ca.academia.edu/MaryanneFisher/Papers/388219/Theoretical_Considerations_on_Navigating_Codespace_With_Spatial_Cognition" target="_blank">spatial cognition</a>[3], <a title="Code Scanning Patterns in Program Comprehension" href="http://www.itl.nist.gov/iaui/vvrg/hicss39/AschwandenC-CodeScanningPatternsV4.pdf" target="_blank">code scanning patterns</a>[4], and <a title="An Eye Tracking Study on camelCase and  under_score Identifier Styles" href="http://www.cs.kent.edu/~jmaletic/papers/ICPC2010-CamelCaseUnderScoreClouds.pdf" target="_blank">An Eye Tracking Study on camelCase and under_score Identifier Styles</a>[5]. There is good evidence to correlate cognitive spatial capability with ability to learn programming.  There are common explanations of how programmers comprehend code. All of the papers refer to various concepts of building mental models that are spatial in nature.</p>
<p><a href="http://www.andrewluetgers.com/wp-content/uploads/2011/09/codeSpace1.png"><img class="alignleft size-full wp-image-251" title="codeSpace" src="http://www.andrewluetgers.com/wp-content/uploads/2011/09/codeSpace1.png" alt="" width="665" height="423" /></a></p>
<p>There are also notions of Beacons which are&#8230;</p>
<blockquote><p>&#8220;sets of key features that typically indicate the presence of a particular data structure or operation in source code&#8230; Meaningful variable and procedure names have been described as Beacons. The swap operation has been shown to be a Beacon and to be beneficial in comprehension as well. &#8221; [4]</p></blockquote>
<p>I have to concede that this is a purely academic discussion at this point. But it need not be. Language developers should seek methods of validating their theories and motivations as they develop the spec. The studies I cite point to some interesting avenues like gaze-tracking to get deeper insight into the process of reading code and building a mental model of it. This technique is really hot right now and I think it can have some value to language designers.</p>
<p><iframe width="420" height="345" src="http://www.youtube.com/embed/iqSh6Hkwo_4" frameborder="0" allowfullscreen></iframe></p>
<p>However much of this scientific approach to things sounds good but the results may be very context specific. It&#8217;s clear language design is very much and art and a science.</p>
<p>None-the-less I believe we need to improve our understanding of the visual effect of a language and its syntax on our ability to efficiently build a working, mental model of the program as we read the code. I&#8217;m self-trained in programming, my education is in, of all things, fine art and design. The design background serves me well in the world of web design. But part of it beacons to point out that the visual effect of code, indented, with its various syntax hilighted tokens exists every bit as much as a visual entity as a textual one. I think this aspect of code is well worth discussing and researching more. I have a colleague that meticulously picks the colors for his light on dark theme for intelliJ. Its a thing of beauty. I don&#8217;t think there is a developer out there that would argue the value of syntax hilighting. The colors obviously help us to see the structure of the code more clearly and thus build that mental model of what we&#8217;re dealing with. I argue that so too the effects of syntax and key-words by their very shape, and the visual patterns that emerge in a page of code, plays a similar role. It can  help us to build an understanding of the code purely by means of visual cues.</p>
<p>A great way to test this theory for yourself is to spend some time reviewing code samples over at <a href="http://rosettacode.org/wiki/Rosetta_Code">Rosetta Code</a>.</p>
<p>The site exhibits solutions to specific problems in as many languages as possible. This is a fantastic resource to get a feel for the relative visual qualities of various languages. Look at the code as a visual structure, gaze at it and try to see the meaning of the code first with an eye toward the spatial relationships then by reading it intently. As you read it think of that mental model you&#8217;re trying to build of how the code works. Is the visual structure of the code doing you any favors or is it adding a layer of complexity to things. If the two reinforce each other I think that is a sign of a better piece of code. It will probably be easier to understand and maintain long after it is initially written. Now remember this is not purely about syntax, its about the visual quality of a piece of colorful, very structured text. <a href="http://rosettacode.org/wiki/CSV_to_HTML_translation">Take a look at the csv to html translation problem on rosetta code</a>.</p>
<p>This is a very strait-forward problem with a very simple solution. Go ahead and compare your favorite languages, the JavaScript example was submitted by yours truly :-) Its based it on the CoffeScript example with some modifications. Lets look at two samples.</p>
<p>So what criteria makes one solution more comprehendible, in less time, than another? Obviously familiarity with the language plays a huge role. You can clearly argue that lines of code and clean syntax have a fairly profound impact. But once you get beyond that I think other aspects become important as well. I think the visual/spatial characteristic of the code as it is written can make a meaningful impact our ability to chunk up a program&#8217;s logic and constituent parts into a working mental model of the software. Code is written for people not machines. If it were then we&#8217;d all be typing out binary or assembly. But as Doug Crockford says &#8220;we&#8217;re not trying to be E.E. Cummings here.&#8221;</p>
<p>Argument 3: JavaScript as a compile target weakens and fragments the community</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2011/09/07/coffeescript-fanboyism-rampant/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>introducing the asap js loader library</title>
		<link>http://www.andrewluetgers.com/2010/04/09/introducing-the-asap-js-loader-library/</link>
		<comments>http://www.andrewluetgers.com/2010/04/09/introducing-the-asap-js-loader-library/#comments</comments>
		<pubDate>Fri, 09 Apr 2010 08:31:57 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/?p=195</guid>
		<description><![CDATA[Here it is a very early version of asap on github The overly creative readme.txt says it all. Reproduced here cus I don&#8217;t want to do any more typing. &#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;- Here at readme.txt we love finding out just who it is were reporting on, in that vein we sat down with asap.js on the 1st [...]]]></description>
			<content:encoded><![CDATA[<p>Here it is a very early version of <a href="http://github.com/andrewluetgers/asap">asap on github</a></p>
<p>The overly creative readme.txt says it all. Reproduced here cus I don&#8217;t want to do any more typing.</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p>Here at readme.txt we love finding out just who it is were reporting on, in that vein we sat down with asap.js on the 1st of April 2010 to delve deep into his unique predilection for loading javascript early and fast. Lets cut right the transcript.</p>
<blockquote><p><strong>RM:</strong> So is this a joke or what, it is April 1st?<br />
<strong>ASAP: </strong> No. I really am a new js loader! I know its stupid right? We already have two great loaders in LABjs and RequireJS I would not be surprised if there are a ton more.</p>
<p><strong>RM:</strong> Interesting, both of those js loaders were profiled on the hugely popular Ajaxian.com blog. Is this just a pathetic attempt to get on Ajaxian?<br />
<strong>ASAP: </strong> YES! Well actually I only learned of LABjs after I was initially written as a little helper for my creator, furthermore I was birthed into a more functional version 0.2 on March 17th one day before the Ajaxian post on RequireJS. You can imagine how deflated I was in both instances&#8230; but alas here I am :-) Don&#8217;t hate me cus I&#8217;m beautiful.</p>
<p><strong>RM: </strong> There, there&#8230; nobody hates you asap. Tell me more about yourself. What really turns you on?<br />
<strong>ASAP: </strong> Well you need to include me in your page, in the head or the bottom of the page. I like being at the bottom personally. Then I&#8217;ll do all the rest of the work to load all your code and fire off the required init functions when the page and the code are ready.</p>
<p><strong>RM:</strong> I&#8217;m looking at your source code here and it looks like you&#8217;ve implemented a cute little ajax get method, and your domReady event is basically the exact same thing jQuery uses?<br />
<strong>ASAP: </strong> Well it may sound ironic but I didn&#8217;t want to reinvent the wheel. Heh, well it is nice to use my get method to load code in an asynchronous way. I&#8217;ll load it via AJAX if I can and build a script tag with it, otherwise I&#8217;ll load the js in a slower synchronous manner (setting the src on a dynamic script tag) for compatibility sake. Either way I&#8217;ll prevent the js from blocking other page resources from loading. Loading code as soon as possible while maintaining script eval order is what I do!<br />
One last thing, the domReady event can be used but it is recommended that users pass thier callbacks into my codeReady method, that will fire after both domReady AND all the code is eval&#8217;d.</p>
<p><strong>RM: </strong> Isnt it true that RequireJS can actually load code faster than you?<br />
<strong>ASAP:</strong> Yes they have a good system but it I think you&#8217;re thinking of the feature that requires you to package your code ahead of time so that it doesn&#8217;t eval out of order, usually that code will be on your own server and in that case you can just use AJAX to load it anyway. So in that case I don&#8217;t think its any faster.</p>
<p><strong>RM: </strong> I see you weigh in at a measly 5k when minified.<br />
<strong>ASAP: </strong> Roughly, yes I&#8217;m a few bytes larger than LABjs and a few k smaller than RequireJS, but when I talk k&#8217;s I&#8217;m only talking AFAIK k&#8217;s. OK?</p>
<p><strong>RM: </strong>Cool, whats next? Give us a taste of the real asap at work.<br />
<strong>ASAP: </strong>OK here&#8217;s a couple code samples :-)</p></blockquote>
<pre class="brush: jscript; title: ; notranslate">
		//simple array notation syntax...

		asap.require([
			&quot;js/libs/jquery-1.4.2.min.js&quot;,
			&quot;js/simple.js&quot;
		]).codeReady(function(){
			simple.init();
		});

		// object notation providing a local root

		asap.require({
			root: &quot;http://www.mysite.com/&quot;,
			files: [
				&quot;http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js&quot;,
				&quot;js/simple.js&quot;
			]
		}).codeReady(function(){
			simple.init();
		});
</pre>
<blockquote><p><strong>RM: </strong>Aren&#8217;t there problems with debugging code when its loaded with ajax, no line numbers?<br />
<strong>ASAP: </strong>Good point, that&#8217;s why there are three ways you can force asap to use the slower dynamic script attachment method when you want to debug and get nice line numbers in your debug console.</p>
<p>The first two require you to edit the file, you can:<br />
* pass a true boolian into the require call as the second parameter using any syntax or,<br />
* you can add a debug property with a value of true in the object notation form</p>
<p>but my favorite way to jump into debug mode:<br />
* add the param asap=debug to your url</p>
<p><strong>RM: </strong>Looks good asap! Now if only Dion and Ben would would give you the time of day you might be forced to create some serious tests.<br />
<strong>ASAP: </strong>Its true I need some robust tests to verify my code correctness and functionality across all platforms&#8230;. there is a reason I&#8217;m version 0.3.</p></blockquote>
<p>End of interview&#8230;</p>
<p>Aaaaand that wraps it up for this edition of readme.txt check back again when we review yet another thing we came with.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2010/04/09/introducing-the-asap-js-loader-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>making of the wax reduction voxelizer part 2: power transmission</title>
		<link>http://www.andrewluetgers.com/2010/02/15/making-of-the-wax-reduction-voxelizer-part-2-power-transmission/</link>
		<comments>http://www.andrewluetgers.com/2010/02/15/making-of-the-wax-reduction-voxelizer-part-2-power-transmission/#comments</comments>
		<pubDate>Tue, 16 Feb 2010 04:08:22 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/?p=148</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<div id="attachment_151" class="wp-caption alignleft" style="width: 235px"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0916.jpg"><img class="size-medium wp-image-151" title="CIMG0916" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0916-e1266292149250-225x300.jpg" alt="" width="225" height="300" /></a><p class="wp-caption-text">Added collars to hold the z-axis lead screws in proper alignment. Used hot glue for now.</p></div>
<div id="attachment_149" class="wp-caption alignleft" style="width: 310px"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0913.jpg"><img class="size-medium wp-image-149" title="CIMG0913" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0913-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">I was able to find six of these sweet sprockets for dirt cheap at none-other than AX-MAN. I cant believe how lucky I am to have an AX-MAN just a couple miles down the road from my house.</p></div>
<div id="attachment_150" class="wp-caption alignleft" style="width: 310px"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0914.jpg"><img class="size-medium wp-image-150" title="CIMG0914" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0914-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">I was able to get the y-axis linked up with my fancy new, very hard to find, ANSI 25 roller chain. Made a nice chain stabilizer out of the thick strip of plastic from some broken Sony headphones. Lesson learned... Its nice to buy locally but next time Ill just order the roller chain online from smallparts.com and save about 50% after shipping :-(</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2010/02/15/making-of-the-wax-reduction-voxelizer-part-2-power-transmission/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Complete noob&#8217;s guide for budding web developers</title>
		<link>http://www.andrewluetgers.com/2010/02/09/complete-noobs-guide-for-budding-web-developers/</link>
		<comments>http://www.andrewluetgers.com/2010/02/09/complete-noobs-guide-for-budding-web-developers/#comments</comments>
		<pubDate>Wed, 10 Feb 2010 05:44:32 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/?p=62</guid>
		<description><![CDATA[So you wanna make websites huh? Hmm that&#8217;s nice but web sites are soo over&#8230; its all about web applications these days. Whats the difference you ask? Well one is a program the other is a document. That said, its a great time to become a web developer, the skill set is becoming more valuable [...]]]></description>
			<content:encoded><![CDATA[<h2>So you wanna make websites huh?</h2>
<p style="text-align: left;">Hmm that&#8217;s nice but web sites are soo over&#8230; its all about web applications these days. Whats the difference you ask? Well one is a program the other is a document. That said, its a great time to become a web developer, the skill set is becoming more valuable and important every day and if you&#8217;re a self starter the education is completely free for the taking.  But before you dive in ask yourself why you want to jump into the world of the web as yet one more of its makers, of which there are legion&#8230;. is it Fame? Fortune? The perks? Dreams of changing the world? Lets break it down&#8230;</p>
<p>Money? Well the money can be great if you&#8217;re good and it can be equally pathetic if you don&#8217;t find a niche or you&#8217;re slow to pick up the material. Like anything I suppose I wouldn&#8217;t buy into any advice that says its better or worse than any other profession like lawyer, nurse, architect, sales rep etc. I would also advise staying away if you don&#8217;t like staring at a computer all day or think you&#8217;ll get rich working from home 4 hrs a day.</p>
<p>Fame? Its available to some degree&#8230; lets face it you are most likely not going to become the creator of the next Facebook (and how famous is that guy anyway?) but there are always innovators and productive creators gaining admiration of their peers. That could be you too! That kind of community recognition is fun to strive for and certainly not out of reach.</p>
<p>Perks? What perks? The work can be mentally stimulating if you have a the mind for it, and it provides great opportunity for pretty wide open creativity. On the down side it can be very monotonous, tedious and down right infuriating. If anything you&#8217;ll become the go-to person for anyone you know for their web-centric ambitions. This can be a burden&#8230; before you start taking on such work you&#8217;ll have to learn how to  properly price your services to fend off the people with big ideas and meager budgets, or you could be in for serious frustration.</p>
<p>Changing the world? Well here we finally get to dig in deep don&#8217;t we? The web is pervasive, it touches so many lives and its quickly becoming the basis for all modern software. The web has become the playground, testing grounds and proving-grounds of modern user interfaces and complex, networked, multi-user applications. It has been so successful that the world has certainly been and is still under swift change because of it. The web as a platform is fertile ground for innovation&#8230; That said many argue that the web has reached its plateau in terms of true innovation and that the rest of the change we see happen on the web will be incremental not transformative. I don&#8217;t dispute that, however I would argue that there are plenty of problems that lie in wait to be solved in a more effective and efficient way, the trick is to find the problems that need solving and that has little do with coding web pages.</p>
<p>OK so that&#8217;s a pathetic review of a pretty broad concept&#8230; &#8220;web developer&#8221; is a catchall term, it encompass a whole professional sector, but nonetheless it is an intro.  So what am I talking about if not a whole professional sector? Specifically client-side web application development. The stuff that actually gets sent over the inter-tubes, loaded into your web browser and seen and used by the end user. That leads to a bevy of technologies,  many with acronyms&#8230;. HTML, PNG, CSS, Flash, AJAX, JavaScript. &#8220;Client&#8221; refers to the Client in the traditional Client-Server architecture of the web and specifically the web browser software is generally the client we most often deal with. Other clients could for example be widget platforms that use the same technologies as web browsers to create their interface ie. HTML, CSS, JS. Sorry to say however, you won&#8217;t get off that easy, to really do the work you&#8217;ll most likely need to familiarize yourself with the server end of things which brings in more programming and databases as well.</p>
<p>So now it looks like you&#8217;ll basically need to be a jack of all trades, a graphic designer, a copy writer (often overlooked), a programmer, and a database manager. You&#8217;ll need to know many different applications, many languages of different flavors, markup, scripting and programming. That, for the most-part, is true but you&#8217;ll eventually find out what you&#8217;re really good at and specialize in that. There are generally a couple directions to go, I generally think of them as &#8220;the design guru&#8221;, &#8220;the engineer&#8221;, and &#8220;the coder&#8221;.</p>
<p>The design guru is basically a graphic arts nut that would be just as happy designing magazine spreads, drawing comics or designing web sites . This is someone who brings their unique creative flair to the process of designing for the web. That generally means they spend most of thier time producing mock-ups in Photoshop and or Illustrator and turning them into HTML + CSS. The more experienced become proficient with JavaScript or Flash and know enough about the server end of things to modify a WordPress or Drupal template.</p>
<p>The engineer is someone who has pursued Computer Science as a career path, learned Java in school, is well versed in Object Oriented Programming and has focused on developing the &#8220;backend&#8221; of  web applications, the account management, database queries, serving up the content and processing data submitted from forms. They understand HTML, CSS and JavaScript but tend to look at it with derision as its a loose and messy jumble of technologies as compared to &#8220;real&#8221; programming. Update: I just read this and honestly that is how it used to be but now with the advent of real applications in the browser the code for things like Google maps and Docs require serious engineering skills. Point is, weather on the client in the form of JavaScript or on the server in the form of some other language, most of the effort is directed at advanced Object Oriented Programming.</p>
<p>The coder is someone who has their feet firmly planted in both the design and programming worlds finding a zen-like balance in every aspect of their work, &#8220;I could program this awesome new feature or just fake it with Photoshop and a couple CSS tricks&#8230; hmm.&#8221; Here the coder would debate the immediate time-savings of an effect vs. the beauty of  a programmatic solution that could be re-used. These are often challenging decisions to the coder because they embrace the yin and the yang.  The coder is skilled with Photoshop but cares little for Illustrator, knows Javascript and PHP front-words and back but avoids the world of Java for the most-part. These preferences stem from the coders need for expedience. They cover so much territory and must economize by learning one server-side language so they learn the most common. They don&#8217;t have time to pick up Illustrator and since Photoshop is ideal for creating web graphics and site mock-ups why bother?</p>
<p>So what kind of web developer do you think you will become?</p>
<h2>Alright, enough chit-chat! Lets dive in and get prepared to start making this stuff.</h2>
<p>Here&#8217;s an overview of what you&#8217;ll need.</p>
<ul>
<li>A quick preview of what it is that were talking about</li>
<li>The confidence and ability to learn on your own</li>
<li>A firm grasp of the core concepts and all the software it implies</li>
<li>A collection of top notch resources</li>
<li>A good code editor</li>
<li>Photoshop</li>
<li>Familiarity with industry best practices</li>
<li>Knowledge of the pitfalls so you don&#8217;t fall into them</li>
</ul>
<p>I will provide some details for each of the above as a starting point with a mind toward the coders middle way approach, throwing all aspects of the process from back-end to front-end, from code to design, all roughly at the same time. Insane you say? No, this is just the reality of it, you will always need to grow your skills incrementally all at once. If you don&#8217;t learn how to do that now you&#8217;ll have a much harder time in the future learning whatever new combination of technologies it will take to get your job done 5, 10, 15 years from now. Learning many integrated technologies all at once is in itself a key skill for the web developer and is exemplified by the coder&#8217;s middle way. May the force be with you young padawan learner.</p>
<h2>First a quick preview</h2>
<p>Before we get into more conceptual bits lets take a quick look at the actual subject matter in light-form, so we are all on the same page. Lets say we have some text and a few pictures we want to turn into a basic web page.</p>
<p>This is the text:</p>
<blockquote><p>A view from above</p>
<p>Atlantis astronauts carried out five back-to-back spacewalks to fix and upgrade the 19-year-old Hubble Space Telescope, adding five to 10 years to Hubble&#8217;s the observatory&#8217;s lifetime. Scientists hope to begin beaming back the results by early September.</p></blockquote>
<p>Here are the pictures:</p>
<div>
<p><a style="float: left;" href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_1.jpg"><img title="090522_shuttle_large_1" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_1-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a style="float: left;" href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_2.jpg"><img title="090522_shuttle_large_2" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_2-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a style="float: left;" href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_4.jpg"><img title="090522_shuttle_large_4" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_4-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a style="float: left;" href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_5.jpg"><img title="090522_shuttle_large_5" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_5-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a style="float: left;" href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_7.jpg"><img title="090522_shuttle_large_7" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_7-150x150.jpg" alt="" width="150" height="150" /></a></p>
<p><a style="float: left;" href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_20.jpg"><img title="090522_shuttle_large_20" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_20-150x150.jpg" alt="" width="150" height="150" /></a><br />
<br style="clear: both;" /></p>
</div>
<p>Lets see what the html looks like.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;A view from above&lt;/title&gt;
	&lt;/head&gt;
	&lt;body&gt;
		&lt;h1&gt;A view from above&lt;/h1&gt;
		&lt;p&gt;Atlantis astronauts carried out five back-to-back spacewalks to fix and upgrade the 19-year-old Hubble Space Telescope, adding five to 10 years to Hubble's the observatory's lifetime. Scientists hope to begin beaming back the results by early September. &lt;a href=&quot;http://www.komonews.com/news/photos/45855337.html&quot;&gt;Full article&lt;/a&gt;&lt;/p&gt;
		&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_1-150x150.jpg&quot; /&gt;
		&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_2-150x150.jpg&quot; /&gt;
		&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_4-150x150.jpg&quot; /&gt;
		&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_5-150x150.jpg&quot; /&gt;
		&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_7-150x150.jpg&quot; /&gt;
		&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_20-150x150.jpg&quot; /&gt;
	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>now<strong> <a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/simplepage1.html" target="_blank">load up the page</a></strong> to see how it renders.</p>
<p>OK now lets style it up a bit with some simple CSS.</p>
<pre class="brush: css; title: ; notranslate">
/* remove browser default padding */
html, body, h1, p, img {
	padding: 0;
	margin: 0;
}

/* use a reversed color style with arial fonts */
body {
	background: #000;
	padding: 24px;
	font-family: arial, sans-serif;
	color: #ddd;
}

h1 {
	font-size: 24px;
	font-weight: bold;
	color: #fff;
	margin-bottom: 1em;
}

/* put the text in a box */
p {
	border: solid 1px #555;
	background: #333;
	padding: 1.5em;
	margin-bottom: 1.5em;
}

img {
	padding: 0;
	margin-right: 1.5em;
	margin-bottom: 1.5em;
	border: solid 1px #333;
}
</pre>
<p>The CSS can be written right into the page using a style tag but in this case I&#8217;ll save it as a separate file and add in a link to it by adding the following line to the head section of the HTML.</p>
<pre class="brush: xml; title: ; notranslate">

&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;simplepage2.css&quot;&gt;
</pre>
<p><strong><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/simplepage2.html" target="_blank">Take a look at the new page</a></strong> to see the CSS do its thing.</p>
<p>Lets make this page more interactive by adding in links to the high resolution versions. Ill do this by wrapping the images in &#8220;a&#8221; or anchor tags. These are the things we commonly call links. For this example we have to style the image links differently than the text links. To facilitate this we wrap the group of images in a div with an id, then in the CSS we can key off that id to style just those links.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;html&gt;
	&lt;head&gt;
		&lt;title&gt;this is the title&lt;/title&gt;
		&lt;link type=&quot;text/css&quot; rel=&quot;stylesheet&quot; href=&quot;simplepage3.css&quot;&gt;

	&lt;/head&gt;
	&lt;body&gt;
		&lt;h1&gt;A view from above&lt;/h1&gt;
		&lt;p&gt;Atlantis astronauts carried out five back-to-back spacewalks to fix and upgrade the 19-year-old Hubble Space Telescope, adding five to 10 years to Hubble's the observatory's lifetime. Scientists hope to begin beaming back the results by early September. &lt;a href=&quot;http://www.komonews.com/news/photos/45855337.html&quot;&gt;Full article.&lt;/a&gt;&lt;/p&gt;

		&lt;div id=&quot;imageLinks&quot;&gt;
			&lt;a href=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_1.jpg&quot; target=&quot;_blank&quot;&gt;
				&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_1-150x150.jpg&quot; /&gt;
			&lt;/a&gt;

			&lt;a href=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_2.jpg&quot; target=&quot;_blank&quot;&gt;
				&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_2-150x150.jpg&quot; /&gt;
			&lt;/a&gt;

			&lt;a href=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_4.jpg&quot; target=&quot;_blank&quot;&gt;
				&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_4-150x150.jpg&quot; /&gt;
			&lt;/a&gt;

			&lt;a href=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_5.jpg&quot; target=&quot;_blank&quot;&gt;
				&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_5-150x150.jpg&quot; /&gt;
			&lt;/a&gt;

			&lt;a href=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_7.jpg&quot; target=&quot;_blank&quot;&gt;
				&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_7-150x150.jpg&quot; /&gt;
			&lt;/a&gt;

			&lt;a href=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_20.jpg&quot; target=&quot;_blank&quot;&gt;
				&lt;img src=&quot;http://www.andrewluetgers.com/wp-content/uploads/2010/02/090522_shuttle_large_20-150x150.jpg&quot; /&gt;
			&lt;/a&gt;
		&lt;/div&gt;

	&lt;/body&gt;
&lt;/html&gt;
</pre>
<p>The css gets modified slightly the following code replaces the existing rule for img.</p>
<pre class="brush: css; title: ; notranslate">
/*================= rules for the imageLinks section ==================*/
/*
 now that we have the images wraped in a div with the &quot;imageLinks&quot; id
 we can easily style just the elements within.
*/

#imageLinks a {
	/*
	 &quot;a&quot; is an &quot;inline&quot; element (treated like text) by default and images
	 are &quot;block&quot; element so for proper rendering of images as links we tell
	 the a to be like an image, not text, this also solves some rendering
	 oddities but we also have to float the images left so they line up
	 like before rather than stack on top of each other in a single column.
	*/
	display: block;
	float: left;

	/*
	 moved the margin here to the a instead of the img becasue the margins on
	 the img became clickable which was odd.
	*/
	margin-right: 1.5em;
	margin-bottom: 1.5em;
}

#imageLinks img {
	border: solid 1px #333;
}
</pre>
<p><strong><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/simplepage3.html" target="_blank">Version three</a></strong> with links to high-res images.</p>
<p>This is a very simple web page but now you have an idea of what we&#8217;re dealing with.</p>
<h2><strong>The confidence and ability to learn on your own</strong></h2>
<p>Remember I said that the education was free&#8230; well that all depends on what type of learner you are and how good you are a finding the right materials. Trust me its out there and I&#8217;ll point you in the right directions but you&#8217;ll eventually have to be careful to avoid outdated or altogether bad advice<strong>. Buyer beware. </strong>Furthermore If you can&#8217;t thrive in this type of learning environment&#8230; by the seat of your pants, grab it off the web and try it right now&#8230; then I would question your interest in web development. The field changes so fast you have to learn new things this way, every day. Its key.</p>
<h2>A firm grasp of the concepts and software, Ok here we go&#8230;</h2>
<p>Think of the stack of technologies it takes to get a situation where a user can log into a site like Facebook. That stack begins with servers usually in a data-center managed remotely by Information Tech dudes. Those servers run some key software you&#8217;ll need to be familiar with, namely the Linux operating system running Apache HTTP server, MySQL server and PHP. This is the most common server configuration and it is often called the LAMP stack. Thankfully you can get the stack setup on your own computer for development and learning purposes with ease. On the mac go get <a href="http://www.mamp.info/en/index.html">MAMP </a>in Windows go get <a href="http://www.apachefriends.org/en/xampp.html">XAMP</a>. Note that I will not tell you how to set up software and configure it. RTFM. Look it up.</p>
<p>Get that installed and working and you have the server stuff done for now :-)</p>
<p>Next think about what you actually are looking at in a web browser, pictures, text, links, a page that has some sort of layout and design to it. It all gets sent over the internet as text files and image files. That&#8217;s it! human readable text files and pictures. Well I&#8217;m leaving out things like flash which is more complicated but for now that&#8217;s all you care about, readable text documents and pictures. The web is wide open for all to see that&#8217;s why its been so successful and that why its awesome. You could get by with notepad and a free image editor&#8230; you&#8217;d be better off with other software but it would suffice.</p>
<p>Right about now you&#8217;re thinking wow this is really simple&#8230; well hang on.</p>
<p>So the web browsers like Internet Explorer, Firefox or Safari for instance all follow the specs (more or less) of the <a href="http://www.w3.org/">W3C</a> which specifies how all this stuff works namely <a href="http://www.w3.org/standards/webdesign/htmlcss">HTML, CSS, </a>and <a href="http://en.wikipedia.org/wiki/ECMAScript">JavaScript is specd out by ECMA</a>. By the way don&#8217;t follow those links and expect to learn much, the W3C docs, just like any spec, are painful to read. So when a user clicks a link to a website from Google the server serves up just the HTML document, the browser reads that document and goes through an amazing series of file requests and contortions until plain text and some images turn into, Facebook, Flickr, Google Maps, CNN etc.</p>
<p>How all that happens is what books are written about, it takes many years to understand all the intricacies of it all but I believe I can explain the concepts concisely&#8230; lets see. Imagine four parts of a web site, the textual information or content, the pictures, the arrangement and design of the text and pictures and the interactive behavior of the site. The text/content is the HTML, think of that as the page. When you select &#8220;view -&gt; Page Source&#8221; in Firefox what you see is the HTML source code. The page requests resources it needs and the browser goes and gets those individual documents to help produce the final product. It will load images, and something called a Cascading Style Sheet. The CSS file defines how the page should look, it also can cause other images to get loaded. Finally external files that contain programmatic code, JavaScript, that defines interactive behavior of the page is loaded. Once loaded in the browser the JavaScript code is executed and it has access to everything, it can change the document by adjusting the style, changing content, adding in new content from other servers and much more. All of this happens within a couple seconds.</p>
<p>How does the HTML define such complex pages as are on the web, how does the CSS style the page, how does the JavaScript produce applications like Google maps&#8230;  Its all about the browser and the thing it turns all these files into, the DOM or Document Object Model. At this point you should Install <a href="http://www.mozilla.com/en-US/firefox/">Firefox </a>and the <a href="http://getfirebug.com/">Firebug plugin</a>. Familiarize yourself with Firebug and the DOM, use the Firebug debugger to browse the HTML CSS and JS, then look at it the way the browser looks at it, browse the DOM structure of the site in the DOM tab. Take a look at document -&gt; childNodes -&gt; 1 -&gt; childNodes -&gt;2 etc. Keep following childNodes deeper and deeper in. You&#8217;ll see it reflects the structure of the HTML. In the programmatic world of JavaScript everything you see in the DOM tab of Firebug  is available for use. Because the browser turns the text files into these objects, code can be written to modify the page and the attributes of its content. To get a <strong>really</strong> good handle on it take a look at the &#8220;Theory of the Dom&#8221; videos by Douglas Crockford over at the YUI Theater.</p>
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="512" height="322" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" value="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=992708&amp;vid=111582&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111582_320_240.jpeg&amp;embed=1" /><param name="src" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="flashvars" value="id=992708&amp;vid=111582&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111582_320_240.jpeg&amp;embed=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="512" height="322" src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" flashvars="id=992708&amp;vid=111582&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w326/111582_320_240.jpeg&amp;embed=1" bgcolor="#000000" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<a href="http://video.yahoo.com/watch/111582/992708">Douglas Crockford: &#8220;Theory of the DOM &#8221; (1 of 3)</a> @ <a href="http://video.yahoo.com">Yahoo! Video</a></div>
<p>That&#8217;s basically it for core concepts&#8230; what I have not covered are the bulk of what you will be learning and that is Object Oriented Programming (OOP), syntax and APIs. Object Oriented Programming is not so complex as you may think, especially since we&#8217;re dealing with JavaScript in the browser which is much simpler than say C++ or even Java on the server. Syntax is the rules for how to write a functional HTML, CSS or JavaScript document. Put a comma or an angle bracket or a quote in the wrong place and the page breaks, that&#8217;s Syntax. API stands for Application Programming Interface, this is arguably the most common day to day knowledge a coder can have and is often not fully retained but understood through documentation and convention. Everything has an API they are essentially the features available for use. The DOM provides a vast API for programming in JavaScript. Its important to make the distinction between the API and the language. JavaScript is the language, &#8220;document.childNodes&#8221; is part of the JavaScript DOM API exposed to the JavaScript code thanks to the browsers implementation of the W3C Spec that defines the DOM.</p>
<p>So how about we see some of this JavaScript I keep talking about? Getting back to our example code lets make the page more dynamic using JavaScript. How about loading the the high-res image into the page rather than redirecting the browser to the file. First we&#8217;ll modify how the links work by causing the browser to run our code and prevent the default link behavior. That new code will need to create a new image tag using href from the clicked link as the src arrtibute of the new image. We then put that new image into the page. The JavaScript is similar to the CSS in that you can put the code right into the html itself but again I will save it out to a separate file and load it in by adding the following line just before the closing body tag.</p>
<pre class="brush: xml; title: ; notranslate">
&lt;script language=&quot;javascript&quot; type=&quot;text/javascript&quot; src=&quot;simplepage4.js&quot;&gt;&lt;/script&gt;
</pre>
<p>First I&#8217;ll show you just the code without comments or log messages.  Then we&#8217;ll go through the actual file that gets run in the browser, it has lots of comments and several logging messages for firebug. If you don&#8217;t follow it completely that&#8217;s alright this is just a preview but the comments should explain things pretty well.</p>
<pre class="brush: jscript; title: ; notranslate">

var imageLinksLoader = {

	init: function(imageLinksDivID) {
		var imageLinksDiv = document.getElementById(imageLinksDivID);
		imageLinksDiv.onclick = function(event) {
			event = event || window.event;
			var target = event.target || event.srcElement;

			if(target.tagName == &quot;IMG&quot;) {
				imageLinksLoader.loadLargeImage(target.parentNode.href, imageLinksDivID);
			}

			return false;
		};
	},

	loadLargeImage: function(url, id) {
		var myImg = document.getElementById(&quot;largeImage&quot;);

		if(!myImg) {
			myImg = document.createElement(&quot;img&quot;);
			myImg.id = &quot;largeImage&quot;;
			myImg.src = url;
			document.getElementById(id).appendChild(myImg);
		} else {
			myImg.src = url;
		}
	}
};

imageLinksLoader.init(&quot;imageLinks&quot;);
</pre>
<p>Alright now lets go through it, below I&#8217;ve added in comments and logging messages for firebug so you can see how the code runs in the browser.</p>
<pre class="brush: jscript; title: ; notranslate">
/*
 I'll be placing several log messages throughout this code so that you can see how things happen by
 looking at the firebug console. If a user does not have firebug installed calling the console.log
 command will cause an error to prevent that from happening we will check to see if console exists,
 if not we will make a fake log function that does nothing.
*/
if(!window.console) {
	window.console = {
		log: function() {
			return false;
		}
	};
}

console.log(&quot;the javascript is being initially evaluated (run) by the browser&quot;);

/*
 grouping chunks of code:
 lets creat our &quot;namespace&quot;, thats a fancy name for saying the container for our code.
 This is not a requirement of the language just a good thing to do.
*/

var imageLinksLoader = {

	/*
	 init is the first bit of code we will run, it is a function that will make the links
	 (when clicked) run our code and will also prevent their default behavior.
	*/

	init: function(imageLinksDivID) {

		console.log('imageLinksLoader.init was called with the parameter &quot;' + imageLinksDivID + '&quot; passed in');

		// grab the item with the provided id, save it in a temporary variable
		var imageLinksDiv = document.getElementById(imageLinksDivID);

		/*
		 a note about assumptions:
		 our code will assume that there are only links that link to other images inside that div.
		 This is an important assumption and right now its obvious but at some point months later
		 you will be editing your html and forget, so document it. Its very important to document
		 your code. Its best to write code that is insulated from such assumptions but you can
		 never totally avoid them.
		*/

		/*
		 adding the event handler:
		 using a nice trick called event delegation we will attatch an event listener to the
		 div it will listen for click events that happen inside it, the oldschool way to do
		 this would be to attatch an event handler to each link, boo too mucch work.
		*/

		// the browser passes an event object as the first parameter we will call it &quot;event&quot;
		imageLinksDiv.onclick = function(event) {

			// with event delegation you can get at the thing that was clicked through event.target
			// that is true except for in Internet Explorer so first we jump thourgh a couple hoops

			// IE doesn't pass in the event object
			event = event || window.event;

			//IE uses srcElement as the target
			var target = event.target || event.srcElement;

			console.log(&quot;saw a click on &quot; + target.tagName);

			/*
			 if we clicked an image grab the href from its parent link then call our loadLargeImage
			 function passing it the value of the href which should be the lare image url and the id
			 of the div we want to put it in
			*/
			if(target.tagName == &quot;IMG&quot;) {
				console.log(&quot;imageLinksDiv.onclick fired&quot;);
				imageLinksLoader.loadLargeImage(target.parentNode.href, imageLinksDivID);
			}

			return false; // this line prevents the browser default click behavior
		};
	},

	/*
	 pass in the url of an image and the id of a div and it will get appended to that div
	*/
	loadLargeImage: function(url, id) {
		console.log(&quot;load large image from &quot; + url + &quot; into the div &quot; + id);

		// if we already have an image loaded that is the image to use if not create a new image object
		var myImg = document.getElementById(&quot;largeImage&quot;); // returns false if we have not loaded a large image yet

		if(!myImg) {
			// looks like no large image added yet creat it and add it to the DOM
			console.log(&quot;creating new image object&quot;);
			myImg = document.createElement(&quot;img&quot;);
			myImg.id = &quot;largeImage&quot;;

			// set the src of the image object... it will begin loading immediately
			myImg.src = url;

			// and append it to the div
			document.getElementById(id).appendChild(myImg);
		} else {
			console.log(&quot;loading a different large image&quot;);
			// looks like image was already created so just update its src
			myImg.src = url;
		}
	}
};

// little will happen until we call our init function and tell it what div to work with by passing in the id
console.log(&quot;calling the imageLinksLoader.init function to kick everything off&quot;);
imageLinksLoader.init(&quot;imageLinks&quot;);
</pre>
<p>Actually pretty simple but it encapsulates many principals that are fairly advanced. But enough talk <strong><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/simplepage4.html" target="_blank">go try it out</a></strong> and don&#8217;t forget to turn on firebug and pull up the console tab to see the logs.</p>
<h2>Now that I have you thoroughly scared</h2>
<p>Let me assure you this is insanely easy to get started with. You&#8217;re editing text files not calculating rocket trajectories. Remember the HTML and CSS examples, its pretty damn simple stuff. When it comes to syntax this is going to become obvious because you&#8217;ll be working from example and will quickly pick up how to write HTML, CSS and JS simply by looking at a few examples. Then once you get the syntactical pattern you have to know what you have available in your toolkit, the API. Great news on that front as well, it is all very clearly laid out in simple descriptions all over the web called &#8220;API Documentation&#8221; and I&#8217;ll provide several such resources. Finally when you use a proper code editor it holds your hand the entire time, helping you learn by telling you the instant your syntax gets messed up or showing you all the appropriate API features you could use at any given point. It is almost too easy to dive into web development. Lets not forget there have been so may that had to learn all this without the benefit of the now accumulated wisdom of the professional community, the amazingly helpful tools like Firebug and the Safari Inspector, real coding tools or the amazing panoply of educational resources or understanding of the bugs or the help of libraries like jQuery that simplify the JavaScript to an unbelievable level. You benefit from millions of man hours of hair pulling and painful development and documentation. Basically you&#8217;re standing on the shoulders of giants.</p>
<h2>Develop a collection of top-notch resources</h2>
<p>I&#8217;ll get you started but you should always be on the lookout for new sources of examples, tutorials, best practices, industry trends, reference material, inspiration and good ideas with a strong eye towards exceptional quality vs quantity. Finally there are tons of advanced tutorials and examples of new &#8220;better&#8221; ways to do this or that, you&#8217;re just starting out, stick to the basics to begin with and when you have a firm grasp on them then slowly branch out to try something more complex and interesting.</p>
<h3>The Basics</h3>
<ul>
<li><strong><a href="http://www.w3schools.com/" target="_blank">w3schools.com</a></strong> &#8211; &#8220;Because time is valuable, we deliver quick and easy learning. At W3Schools, you can study everything you need to learn, in an accessible and handy format.&#8221;</li>
<li><strong><a href="http://developer.mozilla.org/en/Web_Development" target="_blank">developer.mozilla.org/en/Web_Development</a></strong> &#8211; When it comes to reference material you can&#8217;t do any better than Mozilla&#8217;s Developer center. Got a question about a specific feature of html, css or javascript? Just Google it followed by MDC for quick access to Mozilla&#8217;s documentation. eg. &#8220;javascript array mdc&#8221;, &#8220;css background mdc&#8221;</li>
<li><strong><a href="http://www.csszengarden.com/" target="_blank">csszengarden.com</a></strong> &#8211; The  one and only, classic, learn by example, temple of &#8220;separation of content and design&#8221;. From the site: &#8220;There is clearly a need for <acronym title="Cascading Style Sheets">CSS</acronym> to be taken seriously by graphic artists. The Zen Garden aims to excite, inspire, and encourage participation. To begin, view some of the existing designs in the list. Clicking on any one will load the style sheet into this very page. The code remains the same, the only thing that has changed is the external .css file. Yes, really.&#8221;</li>
</ul>
<h3>JavaScript:</h3>
<ul>
<li><strong><a href="http://en.wikipedia.org/wiki/JSON">en.wikipedia.org/wiki/JSON</a></strong> &#8211; I can think of no better way of beginning to understand JavaScript than to first understand JSON.</li>
<li><strong><a href="http://www.amazon.com/exec/obidos/ASIN/0596517742/wrrrldwideweb">JavaScript: The Good Parts</a></strong> &#8211; If you get one book about JavaScript this is the one you want. Don&#8217;t want to spend the money?&#8230; see next item.</li>
<li><strong><a href="http://developer.yahoo.com/yui/theater/" target="_blank">developer.yahoo.com/yui/theater</a></strong> &#8211; watch all the videos from Douglas Crockford the official Yoda of JavaScript. The others are very good as well :-)
<div><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="512" height="322" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="AllowScriptAccess" value="always" /><param name="bgcolor" value="#000000" /><param name="flashVars" value="id=1710507&amp;vid=111593&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111593_320_240.jpeg&amp;embed=1" /><param name="src" value="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" /><param name="flashvars" value="id=1710507&amp;vid=111593&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111593_320_240.jpeg&amp;embed=1" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="512" height="322" src="http://d.yimg.com/static.video.yahoo.com/yep/YV_YEP.swf?ver=2.2.46" flashvars="id=1710507&amp;vid=111593&amp;lang=en-us&amp;intl=us&amp;thumbUrl=http%3A//l.yimg.com/a/i/us/sch/cn/v/v0/w327/111593_320_240.jpeg&amp;embed=1" bgcolor="#000000" allowscriptaccess="always" allowfullscreen="true"></embed></object><br />
<a href="http://video.yahoo.com/watch/111593/1710507">Douglas Crockford: &#8220;The JavaScript Programming Language&#8221;/1 of 4</a> @ <a href="http://video.yahoo.com">Yahoo! Video</a></div>
</li>
<li><strong><a href="http://www.jslint.com/" target="_blank">jslint.com</a></strong> &amp; <strong><a href="http://www.jsonlint.com/" target="_blank">jsonlint.com</a></strong> &#8211; Use this to check your code often and follow its guidelines.</li>
<li><strong><a href="http://docs.jquery.com/Main_Page" target="_blank">docs.jquery.com</a></strong> &#8211; you&#8217;ll probably end up using it sooner or later.</li>
</ul>
<h3>PHP:</h3>
<ul>
<li><a href="http://www.w3schools.com/php/php_forms.asp" target="_blank"><strong>w3schools.com/php</strong></a> &#8211; w3 schools also has very helpful information on PHP.</li>
<li><strong><a href="http://www.php.net/manual/en/index.php" target="_blank">php.net/manual</a></strong> &#8211; The official docs for PHP, an essential resource.</li>
<li><strong><a href="http://devzone.zend.com/article/627" target="_blank">PHP 101: PHP for the Absolute Beginner</a></strong> &#8211; A highly recommended set articles introducing the PHP language.</li>
</ul>
<h3>Photoshop:</h3>
<ul>
<li><strong><a href="http://ad1987.blogspot.com/2009/12/22-screencasts-to-teach-you-photoshop.html">22 Screencasts to Teach You Photoshop Basics</a></strong> &#8211; This is a great blog post I ran across that was better than wading through the pile of videos over at adobe tv.<br />
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/v/h8xcuT48QzA&amp;hl=en_US&amp;fs=1&amp;" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/h8xcuT48QzA&amp;hl=en_US&amp;fs=1&amp;" allowscriptaccess="always" allowfullscreen="true"></embed></object></li>
<li><strong><a href="http://www.adobetutorialz.com/categories/Adobe-Photoshop" target="_blank">adobetutorialz.com/categories/Adobe-Photoshop</a></strong> &#8211; a great collection of tutorials for Photoshop.</li>
</ul>
<h3>Becoming a Master:</h3>
<ul>
<li><strong><a href="http://www.alistapart.com/" target="_blank">alistapart.com</a></strong> &#8211; &#8220;A List Apart explores the design, development, and meaning of web content, with a special focus on web standards and best practices.&#8221;</li>
<li><strong><a href="http://boagworld.com/" target="_blank">boagworld.com</a></strong> &#8211; &#8220;Boagworld is the web design blog of Paul (the Wurzel) Boag who lives in the heart of rural Dorset. He produces a weekly podcast with Marcus (pop star) Lillington on all things relating to building and running websites. They also run web design agency- Headscape.&#8221;</li>
<li><strong><a href="http://net.tutsplus.com/" target="_blank">net.tutsplus.com</a></strong> &#8211; A great collection of tutorials, screencasts and articles covering a wide range of web development topics.<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="480" height="390" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://blip.tv/play/gcMV5qM0Ag%2Em4v" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="480" height="390" src="http://blip.tv/play/gcMV5qM0Ag%2Em4v" allowfullscreen="true"></embed></object></li>
<li><strong><a href="http://www.smashingmagazine.com/" target="_blank">smashingmagazine.com</a></strong> &#8211; Graphics, Inspiration, Coding, Design, Photoshop, WordPress, Tutorials, Wallpapers, Icons, CSS.</li>
<li><strong><a href="http://css-tricks.com/" target="_blank">css-tricks.com</a></strong> &#8211; Another excellent web design community, a great resource for, tutorials, screen-casts and code samples.</li>
<li><a href="http://ajaxian.com" target="_blank"><strong>ajaxian.com</strong></a> &#8211; keep up with the latest and greatest in web application development</li>
</ul>
<p>The above represents a minuscule cross section of the best resources available yet alone they open up a huge world. Keep looking and learning every day. It&#8217;s a good idea to set up a feed reader like Google Reader to more efficiently scan through all your resources every day.</p>
<h2>Your IDE is your best friend</h2>
<p>IDE stands for Integrated Development Environment. Why waste time learning an IDE that is not going to grow with you&#8230; Go ahead and dive into the real thing right away. Go get <strong><a href="http://www.aptana.org/" target="_blank">Aptana Studio</a></strong> which is based on the amazing Ecliplse IDE. Like it says, its &#8220;the leading IDE for web development&#8221; and its FREE! Once you have it installed get to know your new home, kick the tires, wade through all the preferences and menus. Then go watch some of the <a href="http://vimeo.com/channels/studio" target="_blank"><strong>training videos</strong></a> (avoid the ones about plugins.) Some day someone will tell you to switch to a different IDE for x, y and z reasons. This is fine but start out here with a real IDE and when that time comes around you&#8217;ll have a better idea of what features you care about.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="400" height="300" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="src" value="http://vimeo.com/moogaloop.swf?clip_id=6885985&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="400" height="300" src="http://vimeo.com/moogaloop.swf?clip_id=6885985&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=1&amp;show_portrait=0&amp;color=&amp;fullscreen=1" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p><a href="http://vimeo.com/6885985">Intro to Aptana Studio</a> from <a href="http://vimeo.com/aptana">Aptana, Inc.</a> on <a href="http://vimeo.com">Vimeo</a>.</p>
<h2>Photoshop, just get it already&#8230;</h2>
<p><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/photoshoplogo-e1266220764885.jpg"><img class="alignleft size-full wp-image-119" title="photoshoplogo" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/photoshoplogo-e1266221708395.jpg" alt="" width="240" height="234" /></a>One of the tools that you absolutely can not skimp on is Photoshop. Now there are proponents of GIMP and other free software, a search for &#8220;Photoshop alternative&#8221; will expose many such would-be replacements of this essential tool. But they don&#8217;t come close, not by a million miles. That applies especially to anything with Photoshop in its name that is not Photoshop CS or later, that means no Photoshop Elements, no Photoshop.com. By hook or by crook you gotta get the real thing. Some people are content to scour the web for hacked downloads through bittorrent. I&#8217;m sure you could find it but I&#8217;m sure you&#8217;ll probably contract a virus in the process&#8230; I suggest AVG for that (virus protection) but better yet get your hands on the real thing, yup just pony up, then there is no concern about viruses or breaking the law.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2010/02/09/complete-noobs-guide-for-budding-web-developers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>making of the wax reduction voxelizer part 1: the frame</title>
		<link>http://www.andrewluetgers.com/2010/02/08/making-of-the-wax-reduction-voxelizer-part-1-the-frame/</link>
		<comments>http://www.andrewluetgers.com/2010/02/08/making-of-the-wax-reduction-voxelizer-part-1-the-frame/#comments</comments>
		<pubDate>Mon, 08 Feb 2010 20:02:27 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/?p=37</guid>
		<description><![CDATA[Here are the results of my first weekend of working on my new invention a 3d scanner inspired by the Visible Human Project for its slicing approach to 3D scanning and the latest issue of MAKE Magazine featuring homebuilt CNC machines. screw drives for the z and y axis]]></description>
			<content:encoded><![CDATA[<p>Here are the results of my first weekend of working on my new invention a 3d scanner inspired by the <a href="http://en.wikipedia.org/wiki/Visible_Human_Project">Visible Human Project</a> for its slicing approach to 3D scanning and the latest issue of <a href="http://makezine.com/21/">MAKE Magazine</a> featuring <a href="http://buildyourcnc.com/">homebuilt CNC machines</a>.</p>
<div id="attachment_49" class="wp-caption alignleft" style="width: 310px"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0906.jpg"><img class="size-medium wp-image-49 " title="CIMG0906" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0906-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">the plan... it cant fail</p></div>
<div id="attachment_50" class="wp-caption alignleft" style="width: 310px"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0907.jpg"><img class="size-medium wp-image-50" title="CIMG0907" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0907-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">more drawings... oh yeah</p></div>
<div id="attachment_41" class="wp-caption alignleft" style="width: 310px"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/IMG_02441.jpg"><img class="size-medium wp-image-41" title="IMG_0244[1]" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/IMG_02441-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">the 1/2 fished z and y axis frame</p></div>
<div class="mceTemp"><div id="attachment_45" class="wp-caption alignleft" style="width: 310px"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/IMG_02391.jpg"><img class="size-medium wp-image-45" title="IMG_0239[1]" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/IMG_02391-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">the  truck glide and glide rail for the y axis</p></div></p>
<div id="attachment_53" class="wp-caption alignleft" style="width: 310px"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0899.jpg"><img class="size-medium wp-image-53" title="CIMG0899" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0899-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">truck glide attachment</p></div>
<dl id="attachment_54" class="wp-caption alignleft" style="width: 235px;">
<dt class="wp-caption-dt"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0902-e1265694002518.jpg"><img class="size-medium wp-image-54" title="CIMG0902" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0902-e1265694002518-225x300.jpg" alt="" width="225" height="300" /></a></dt>
<dd class="wp-caption-dd">screw drives for the z and y axis</dd>
</dl>
</div>
<div id="attachment_55" class="wp-caption alignleft" style="width: 310px"><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0900.jpg"><img class="size-medium wp-image-55" title="CIMG0900" src="http://www.andrewluetgers.com/wp-content/uploads/2010/02/CIMG0900-300x225.jpg" alt="" width="300" height="225" /></a><p class="wp-caption-text">truck drive attachment</p></div>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2010/02/08/making-of-the-wax-reduction-voxelizer-part-1-the-frame/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Smarter Things as Parasite, Host, Concubine and Slave-Master</title>
		<link>http://www.andrewluetgers.com/2009/12/20/smarter-things-as-parasite-host-concubine-and-slave-master/</link>
		<comments>http://www.andrewluetgers.com/2009/12/20/smarter-things-as-parasite-host-concubine-and-slave-master/#comments</comments>
		<pubDate>Sun, 20 Dec 2009 23:12:00 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[thinking out loud]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/blog/2009/12/smarter-things-as-parasite-host-concubine-and-slave-master/</guid>
		<description><![CDATA[Several ads from IBM have appeared lately declaring their intent and ability to help build smarter cities, smarter government, smarter health care, all in all a smarter world. The tag line &#8220;Lets build a smarter planet&#8221; makes the engineer, tinkerer and yes the Utopian in me sing! In one such ad we see an amazing [...]]]></description>
			<content:encoded><![CDATA[<p>Several ads from IBM have appeared lately declaring their intent and ability to help build smarter cities, smarter government, smarter health care, all in all a smarter world. The tag line &#8220;Lets build a smarter planet&#8221; makes the engineer, tinkerer and yes the Utopian in me sing! In one such ad we see an amazing traffic management system in Stockholm that can bill drivers automatically by reading all the cars license plates enabling the enforcement of a new &#8220;congestion tax.&#8221; Whenever someone leaves or enters the city this system knows about it. This new system has made traffic in Stockhom less congested but it gives one pause, it seems a little ominous. But then we are reminded of how many billions of hours we spend in traffic, how many billions we spend on wasted fuel, this is clearly a big savings and clearly a smart thing to do. I cant tell you how much I love the idea of smart technology. Its exactly what we need to do to solve our problems, but there is something deeply insidious about a train of thought like that of these ads. They have so many built in assumptions. After a little reflection I&#8217;m amazed at how many more ideas are packed into the silent assumptions of these ads, far more than their glossy, overt messages. I would argue the real power of propaganda is its ability to quietly instill in us these covert, logical basies all wrapped up in seemingly innocuous or unquestionable messages. All the more likely to take hold I suppose&#8230;</p>
<p><object height="344" width="425"><param name="movie" value="http://www.youtube.com/v/33T7VxT2O40&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999"><param name="allowFullScreen" value="true"><param name="allowscriptaccess" value="always"><embed src="http://www.youtube.com/v/33T7VxT2O40&amp;hl=en_US&amp;fs=1&amp;rel=0&amp;color1=0x3a3a3a&amp;color2=0x999999" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" height="344" width="425"></embed></object></p>
<p>More technology, smarter things, progress!! Obviously a good thing right? That perspective is valid but certainly not the whole story. What is it that the ad does not ask us to think about? Well&#8230; alot. In our technopheliatic daze we usher in the great new threats of the future. IBM is as good a case as any. Both historically and presently they prove to be at this nexus of technology where it can tilt the scales of fate in favor of society or just as easily provide other, less desirable, outcomes. In 2001 Edwin Black extolled of just such dangers in his book &#8220;IBM and the Holocost.&#8221; In a CNET interview he summarized the findings of his extensive research clearly&#8230;</p>
<div style="margin-left: 40px;"><i><span class="f">  &#8220;&#8230;I finally assembled this dark puzzle that had eluded the 15 million people who have seen this machine in the Holocaust museum. I finally connected the dots. And those dots are that IBM engineered a strategic business alliance and joint planning program with Nazi Germany from the very first moment in 1933 and extending right through the war that endowed the Hitler regime with the technology and the tools it needed to expedite and, in many ways, automate, all six phases of Hitler&#8217;s war against the Jews. Those six phases are identification, expulsion, confiscation, ghettoization, deportation and ultimately even extermination.&#8221;</span></i>
<div style="text-align: right;">- http://news.cnet.com/2009-1082-269157.html</div>
</div>
<p>But that is an extreme case, no? Even if IBM didn&#8217;t work with the Nazi regime Hitler&#8217;s minions may have been able to steal or develop a similar technology. This is not to point fingers at IBM nor let them off the hook but to point out this&#8230; Many people focus on the actors, the company, the leaders, the governments, the extremists, the consumers but it is not the actors that we should worry about, instead look at the stage itself. We needn&#8217;t fret that our technology will fall into the wrong hands, because of course it will. Furthermore negative consequences often arise from the best of intentions. Pay then more attention to the opportunities a new technology provides. Often, unbeknownst to us, new technologies enable whole new echelons of power and its abuse, new expanses of capability and deeper chasms of failure, collapse from even greater heights; at every stage enabling those who would bravely or brazenly create a yet newer world&#8230;</p>
<p>A brave newer world of what may be great progress for the state of humanity but perhaps equally as likely is a new scale of risk that our beloved progress is simply a more advanced form of devastation we yet fail to recognize. With ever increasing speed and ever broadening horizons we are always behind the steepening curve of the unpredictability wrought by &#8220;progress&#8221;. By the time we realize all the bounty this new fertile land could provide its too late, someone already planted the magic beans and climbed up into the clouds waking a giant. Any moment now it could come down and eat us all for dinner. The industrial revolution spurred on by fossil fuels presents a text-book example. By the time we realized the dangers of filling our atmosphere with millions of years worth of the sequestered carbon we had unlocked from the earths crust the planet had already been put into a positive feedback loop of global warming. What no one wants to talk about is that we do not know if we will be able stop it even if serious action is taken on a global scale. This essentially means all the &#8220;progress&#8221; for society brought on by the industrial revolution may have simply been a hastening of our demise. The industrial revolution happened and can not be reversed, so we are left to mange its outcomes. It is a matter of pride that we control and manage things, that we are not pushed around by them. but what looks looks like control from one perspective may look like a side effect from another. We now have multiple technological revolutions happening in sync. Information technology, bio-technology, nano-technology, each of which could individually transform our world in ways that are impossible to predict, but together they feed of each others technological capability growing like a tiny, artificial black-hole with an advancing event horizon which we may become enveloped by never again to look down upon and imagine our control there of.</p>
<p>Smarter things lead to what end? Ever more, smarter, things? Things may be the product but there are other by-products. Soon the people are unencumbered with toil, memory tasks, intellect, learning, creating, thinking&#8230;. they become dumber and the things become more important than the people that make and use them. Now so many people depend upon our techno-sphere that nobody really owns these things. The makers don&#8217;t have a product without the vast user base and community of third party service providers and integrators. Its a flourishing ecology but to serve what purpose? These systems are vast ontologies of interdependent electro-flora and digital fauna. They depend upon legions to keep them going. Whole swaths of the worlds people do nothing more than attend to theses systems&#8217; every need. We are immersed in and subsumed by an authentically new world of our own making. Now the products of our genius and labor are simply its accoutrema, to it perhaps, a utility service like electricity.</p>
<p>Lets not forget these things do not have souls. But notice how the more we live for our things the more we disembody ourselves and put us in them and the more we become hollow and robotic. Our guts in its guts, its brains taking over for ours all the waking hours of the day, leaving a more robotic yet living organism behind. Imagine if we took all the cloud computing hardware and all the PCs and Macs, all the television sets and Play Stations, purge them from society, put them on ships like the trash we used to dump in the oceans. God the massive barges of iPods and keyboards alone would boggle the mind&#8230; We could take them all and set them adrift off the southern coast of Japan. Dump em in, let them sink to the vast depths of the Marianas Trench and they would be just as content there at the bottom of the ocean. But not us&#8230; the effect of the purge on our sense of purpose, progress, identity, power, culture, history, our very existence, would be seismic. Technological progress, scientific progress&#8230; progress towards what? There is only an impenetrable fog before us there is no goal only a dream of what lies beyond. We put one foot in front of the other because our bodies were not made to stand still for too long and with each step we tell ourselves we are closer to the edge of that dark fog, each step another tick in the clockwork that will tell us at the zero hour weather all of this was either a noble journey or death-march.</p>
<p>There is no stopping this new progress only the illusion of managing it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2009/12/20/smarter-things-as-parasite-host-concubine-and-slave-master/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fresh Air from Three Plants</title>
		<link>http://www.andrewluetgers.com/2009/08/10/fresh-air-from-three-plants/</link>
		<comments>http://www.andrewluetgers.com/2009/08/10/fresh-air-from-three-plants/#comments</comments>
		<pubDate>Mon, 10 Aug 2009 01:55:00 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[Good Ideas]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/blog/2009/08/fresh-air-from-three-plants/</guid>
		<description><![CDATA[Source: Kamal Meattle on how to grow fresh air Areca Palm (Chrysalidocarpus lutescens) Removes c02 converts to oxygen need 4 shoulder high per person wipe leaves once a day in deli once a week in cleaner cities preferably grows in hydroponics take outdoors every 3-4 months Mother-in-law&#8217;s Tongue (Sansevieria trifasciata) converts co2 to oxygen at [...]]]></description>
			<content:encoded><![CDATA[<p>Source: <a href="http://www.ted.com/talks/kamal_meattle_on_how_to_grow_your_own_fresh_air.html">Kamal Meattle on how to grow fresh air</a></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="446" height="326" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/KamalMeattle_2009U-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/KamalMeattle-2009U.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=490&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=kamal_meattle_on_how_to_grow_your_own_fresh_air;year=2009;theme=speaking_at_ted2009;theme=inspired_by_nature;theme=ted_in_3_minutes;theme=a_greener_future;theme=tales_of_invention;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="446" height="326" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" flashvars="vu=http://video.ted.com/talks/dynamic/KamalMeattle_2009U-medium.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/KamalMeattle-2009U.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=490&amp;introDuration=16500&amp;adDuration=4000&amp;postAdDuration=2000&amp;adKeys=talk=kamal_meattle_on_how_to_grow_your_own_fresh_air;year=2009;theme=speaking_at_ted2009;theme=inspired_by_nature;theme=ted_in_3_minutes;theme=a_greener_future;theme=tales_of_invention;event=TED2009;&amp;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" bgcolor="#ffffff" wmode="transparent" allowfullscreen="true"></embed></object></p>
<p><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/01/fresh_air_from_three_plants.jpg"><img class="aligncenter size-full wp-image-20" title="fresh_air_from_three_plants" src="http://www.andrewluetgers.com/wp-content/uploads/2010/01/fresh_air_from_three_plants.jpg" alt="" width="537" height="303" /></a></p>
<p><strong>Areca Palm</strong> <em>(Chrysalidocarpus lutescens)</em><br />
Removes c02 converts to oxygen<br />
need 4 shoulder high per person<br />
wipe leaves once a day in deli once a week in cleaner cities</p>
<div>preferably grows in hydroponics<br />
take outdoors every 3-4 months</p>
<p><strong>Mother-in-law&#8217;s Tongue</strong> <em>(Sansevieria trifasciata)</em><br />
converts co2 to oxygen at night<br />
6-8 waist high per person</p>
<p><strong>Money Plant</strong> <em>(Epipremnum aureum)</em><br />
removes formaldehyde and other volatile chemicals<br />
preferably grows in hydroponics</p>
<p>In a 50000 sq ft building provides fresh air for 300 people using 1200 plants.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2009/08/10/fresh-air-from-three-plants/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Problems in Thinking</title>
		<link>http://www.andrewluetgers.com/2009/01/19/problems-in-thinking/</link>
		<comments>http://www.andrewluetgers.com/2009/01/19/problems-in-thinking/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 04:36:00 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[Good Ideas]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/blog/2009/01/problems-in-thinking/</guid>
		<description><![CDATA[Problems in Scientific Thinking. 1: Theory influences observations. 2: The observer changes the observed. 3: Observational tools or systems construct results. Problems in Pseudoscientific Thinking. 4: Anecdotes do not make science. 5: The use of scientific jargon does not make science. 6: Bold statements do not make claims true. The more extraordinary the claim, the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/01/sfo-brain-scan-final-2.jpg"><img class="alignleft size-medium wp-image-19" title="sfo-brain-scan-final-2" src="http://www.andrewluetgers.com/wp-content/uploads/2010/01/sfo-brain-scan-final-2-300x242.jpg" alt="" width="300" height="242" /></a><span style="font-weight: bold;">Problems in Scientific Thinking.</span></p>
<p>1: Theory influences observations.</p>
<p>2: The observer changes the observed.</p>
<p>3: Observational tools or systems construct results.</p>
<p><span style="font-weight: bold;">Problems in <span id="SPELLING_ERROR_0" class="blsp-spelling-error">Pseudoscientific</span> Thinking.</span></p>
<p>4: Anecdotes do not make science.</p>
<p>5: The use of scientific jargon does not make science.</p>
<p>6: Bold statements do not make claims true.<br />
The more extraordinary the claim, the more extraordinarily well tested it must be.</p>
<p>7: Heresy does not equal correctness.</p>
<p>8: Burden of Proof: Outsiders must prove their position; insiders take their facts as a given with no need to question their validity.</p>
<p>9: Rumors don’t equal reality.</p>
<p>10: The unexplained is not inexplicable.</p>
<p>11: Failures get rationalized.</p>
<p>12: After the fact reasoning, Correlation does not mean causation.</p>
<p>13: Coincidence does not prove something.<br />
Coincidence rarely takes into account the actual statistics or probability of the event happening nor does it relate how many times it <span id="SPELLING_ERROR_1" class="blsp-spelling-error">didn</span>&#8216;t happen before under the circumstances.</p>
<p>14: Representativeness: We must analyze and see unusual events in the larger context to see how well they represent their class of phenomena.</p>
<p><span style="font-weight: bold;">Problems in Logical Thinking.</span></p>
<p>15: Emotive words and fake analogies<br />
Words and false stories used to create an emotional response rather than one of logical thinking are tools of rhetoric.</p>
<p>16: Ad <span id="SPELLING_ERROR_2" class="blsp-spelling-error">Ignorantium</span><br />
The false notions that “if it can’t be proven it must be false” and “if it can’t be <span id="SPELLING_ERROR_3" class="blsp-spelling-error">disproven</span> it must be true.”</p>
<p>17: Ad <span id="SPELLING_ERROR_4" class="blsp-spelling-error">Hominem</span> and Tu <span id="SPELLING_ERROR_5" class="blsp-spelling-error">Quoque</span> literally “to the man” and “you also”<br />
These fallacies redirect thinking onto the person holding or presenting the idea. A judgment of the thinker is used to say something about the idea itself though this does not prove or disprove anything.</p>
<p>18: Hasty generalization<br />
Prejudice, conclusions are drawn before facts warrant it.</p>
<p>19: Over reliance on authorities<br />
We often automatically trust the judgments of someone who, for whatever reason, we feel are authorities. We must examine the evidence.</p>
<p>20: Either-or<br />
This is the creation of a dichotomy relationship. The false thinking is that if one is wrong the other must be right. Things are framed in a way so that your thinking is limited and black and white. With this kind of thinking, once one thing is <span id="SPELLING_ERROR_6" class="blsp-spelling-error">disproven</span> you are expected to come to the false conclusion that the other MUST be correct. The truth is that there must be <span id="SPELLING_ERROR_7" class="blsp-spelling-error">POSITVE</span> <span id="SPELLING_ERROR_8" class="blsp-spelling-error">EVEDENCE</span> for that which is proven, not just negative or disproving evidence against opposing theories.</p>
<p>21: Circular reasoning (Fallacy of redundancy, begging the question or tautology)<br />
A claim is merely a restatement of one of its premises. Here is a simple Example: “Is  there a God?”…. “Yes, because the Bible says so”….. “Is the Bible correct?”… “Yes because it was inspired by God.” So in this limited line of reasoning God is because God is.</p>
<p>22: <span id="SPELLING_ERROR_9" class="blsp-spelling-error">Reductis</span> ad <span id="SPELLING_ERROR_10" class="blsp-spelling-error">absurdum</span> and the slippery slope<br />
“<span id="SPELLING_ERROR_11" class="blsp-spelling-error">Reductis</span> ad <span id="SPELLING_ERROR_12" class="blsp-spelling-error">absurdum</span>” &#8211; carrying on an argument to it’s logical end, so reducing it to an absurd conclusion. We are then expected to be sure that if an arguments consequences are absurd it must be false, but this is not true. “The slippery slope” &#8211; The construction of a scenario that leads to an end to prove something about earlier events. Here is a simple example: “Ice-cream makes you fat, this leads to obesity, this can cause death.” Conclusion &#8211;  “Don’t eat Ice-cream, it kills.”</p>
<p><span style="font-weight: bold;">Psychological Problems in Thinking.</span></p>
<p>23: Effort, inadequacies, and the need for certainty, control and simplicity: Most of us, most of the time want nice, neat answers and control of our environment. This can radically oversimplify and interfere with critical thinking. We commonly, don’t accept things that discredit our vested interests and want to think we know how things are. This increases with traditional education.</p>
<p>24: Problem solving inadequacies: In tests when people must chose a right answer to a problem, after being told particular guesses are right or wrong they….<br />
A. Immediately form a hypothesis and look only for examples to conform to it.<br />
B. Do not seek evidence to disprove their hypothesis.<br />
C. Are very slow to change the hypothesis even when blatantly incorrect.<br />
D. adopt overly simplified hypotheses if the information is too complex<br />
E. If there is no solution, if the problem is a trick and right and wrong is given at random, they form hypotheses about coincidental relationships in the observed. Causality is always final.</p>
<p>We must make an effort to overcome these inadequacies in solving problems.</p>
<p>25: Ideological immunity or the Planck Problem: In science and in general life we all resist a paradigm shift of any kind. The more educated, the stronger the supposition that what and all that we know is correct. The lower the IQ, the less likely to welcome new ideas and to be open-to or accept them. The higher the IQ, the more we think we “know” the answer and are less likely to change our minds.</p>
<p>Note:</p>
<p>Spinoza’s Dictum “ I have made a ceaseless effort not to ridicule, not to bewail, not to scorn human actions but to understand them.”</p>
<p>Derived from the book <a href="http://www.amazon.com/People-Believe-Weird-Things-Pseudoscience/dp/0716733870" target="_blank">“Why People Believe Strange Things” by Michael <span id="SPELLING_ERROR_13" class="blsp-spelling-error">Schermer</span></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2009/01/19/problems-in-thinking/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A Monologue On Authorship, Motivation, Persuasion And The Meaning Of Life</title>
		<link>http://www.andrewluetgers.com/2009/01/19/a-monologue-on-authorship-motivation-persuasion-and-the-meaning-of-life-2/</link>
		<comments>http://www.andrewluetgers.com/2009/01/19/a-monologue-on-authorship-motivation-persuasion-and-the-meaning-of-life-2/#comments</comments>
		<pubDate>Mon, 19 Jan 2009 04:22:00 +0000</pubDate>
		<dc:creator>Andrew Luetgers</dc:creator>
				<category><![CDATA[thinking out loud]]></category>

		<guid isPermaLink="false">http://www.andrewluetgers.com/blog/2009/01/a-monologue-on-authorship-motivation-persuasion-and-the-meaning-of-life-2/</guid>
		<description><![CDATA[Do we all need a battle? Or should I state it the way I originally had thought, “we all need a battle.” First thought, best thought, but my inner skeptic won’t allow such blanket statements as they assuredly are as false for any individual as they are universal as singular statements. But alas this scantly [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.andrewluetgers.com/wp-content/uploads/2010/01/the-eye-of-sauron.jpg"><img class="aligncenter size-large wp-image-5" title="the-eye-of-sauron" src="http://www.andrewluetgers.com/wp-content/uploads/2010/01/the-eye-of-sauron-1024x768.jpg" alt="" width="574" height="337" /></a></p>
<p>Do we all need a battle? Or should I state it the way I originally had thought, “we all need a battle.” First thought, best thought, but my inner skeptic won’t allow such blanket statements as they assuredly are as false for any individual as they are universal as singular statements. But alas this scantly qualified idea now offers itself up to evaluation as being the stepping off point for this, my first official diatribe. Some may call it a lecture or a speech but I prefer diatribe so as not to conceal the single minded, selfishness even downright <span id="SPELLING_ERROR_0" class="blsp-spelling-error">slothenly</span> greed that is involved in such a spectacle as you see before you. A deserved description because of the amount of effort tendered to contrive and prepare for such a moment as I now successfully bring to fruition as well as the dialectical conscious/subconscious drive that kept it going as well as the final outcome the very sinister outcome.</p>
<p>If you don’t all know what I’m talking about let me be more plain. It is this position, the role I’m gladly playing and the suspension of disbelief that happens in the most poorly written and performed plays. IT is this, authority I speak of. The moment the pen clicks forth, out steps the shiny ball of flowing truth and as I roll this device across the page it mystically grants me powers beyond those of mortal men and women. Oh yes <span id="SPELLING_ERROR_1" class="blsp-spelling-error">Virginia</span> the pen is mightier than the sword. The truth shadowed by the truism is that it is rarely as honest a power. For the authority of the sword requires that its user affirm their own inevitability in risking ones life, thus skillful execution is the rule of the day. Hence the performance of such battle is one of reverence and respect, honesty. In battle authority is attributed to the one who has spilt the most blood. The pen though in many ways a close analog is certainly distinct in that one scarcely risks their existence, with the act of authorship, thus facing ones own mortality but rather inversely reinforces ones own egoistic drive for historical prominence as we wish to make our mark on the world. The metaphorical pen wields more power than the metaphorical sword but does it do it with any honor? There is only deceit and this is not to say we should all be killing each other because peace agreements are contrivances of authority that are deceitful and so on and such nonsense, but to say that there is relative honesty, truth yes even honor in a life and death battle as opposed to the hidden battles waged by the contrivances of the authoritative everywhere. And to be clear on this it is this authority that creates almost all the mass suffering and war that we all desperately protest. War and suffering are merely the hideous outcomes of already fought and won battles that happen behind the scenes yet right in front of us. And no the point is not to lament that we are a race of defrauded and exploited, ravaged by authority taken and authority granted but merely to point out that we are gladly unaware of this. The authority granted by my current position though most would dispute it is naturally granted to others, an issue of persona, I concede is at the forefront as <span id="SPELLING_ERROR_2" class="blsp-spelling-error">grantor</span> of power but what is a personage but a character in a performance. “all the world is a stage and we are but actors in upon it” The idea we want to create in the minds of others the very power we want to wield is dealt in blows of <span id="SPELLING_ERROR_3" class="blsp-spelling-error">contrivancy</span> and of utmost <span id="SPELLING_ERROR_4" class="blsp-spelling-error">contrivancy</span> is the projection of our characters the roles we take on to get what we want. We project them upon others and of course as the actor of all these various roles we contrive for ourselves the image of a performer.</p>
<p>What does all this with authority have to do with that questionable stepping off point, we all need a battle? Patience, patience your mind may be supple and like clay ready for the molding or hard and like a chunk of coal waiting in the dark to be set afire but the anxious may miss the truth that lies beneath. So for the moment a breather of sorts a meaningless waste of time to clear all that hot energy ready to shape or set afire, relaxing it just enough to let in the critical light.</p>
<p>A pizza delivery man, set forth on a mission of utmost importance speeds up to the first building on his list. He stops, takes a drink of water and puts on his, shades. Walking up to the door of the building with his large, red pizza box insulator he enters, finds the correct address and rings the apartment. In a moment a man comes down, they exchange food for money and just as they were about to part ways the delivery man bluntly asks of his pizza recipient “don’t you hate this boring meaningless existence?” and although there was already one glued to the top of the pizza box he hands him an extra coupon sheet. The man looks at him with an anxious, quizzical gaze, thanks him for the pizza and leaves to go eat, and maybe watch the rest of survivor.  Someone is almost giddy when handed their delightfully delicious pizza all they can think about is stuffing themselves, and here comes this almost morbid denial of not only that little joy but it all. It’s the same with all the rest of his stops. He delivers the pizza to young, old, men, women, joyful, depressed, they laugh at him as if it is a joke then see he is serious, they grimace, sometimes they think for a moment and berate him and rarely if ever respond with anything but a closer to such an awkward moment. But as rude and strange as it was there were people, many average everyday people that would hear about this and call Corner Pizza in hopes that they may get the mysterious delivery guy but it was the “extra coupons” that were actually the clincher of the whole deal, the coupons had the same deals on them but they also had one other thing, a number in the corner a special number that always changed. And if you were to call the number…? Well you would get an anonymous answering service and you could leave a message, for whom you don’t know, maybe the pizza guy, maybe god, who knows but there it was. And did they leave messages? If they did it was a test of initiation and a few were called back with a riddle to solve, solve the riddle and you get a free pizza, the pizza <span id="SPELLING_ERROR_5" class="blsp-spelling-error">isn</span>’t the motivation however it’s the chase, the mysterious game. Surely there is something else. The delivery guy gives you a new message and a new number asks you a question and you move to the next level something like that? Well there is nothing else just that, just enough to whet the appetite for the game to continue but it certainly <span id="SPELLING_ERROR_6" class="blsp-spelling-error">doesn</span>’t, it is just a meaningless waste of time, except for the few who get a free pizza. And if there were anything to it, I would lie to you about that anyway.</p>
<p>Now back to that matter of the battle we all need. It is a place in the mind of every person on earth that wonders cynically “is this it? Is this all there is to life?” what a rip off it is to them, to us. <span id="SPELLING_ERROR_7" class="blsp-spelling-error">Isn</span>’t it?  You realize there is no God there probably are no real ghosts or monsters, aliens or magic. No real deep dark secrets, it’s all the stuff of boring or otherwise tragic lives; and the ones we are so interested in, famous people, let’s face it that’s just our projection of a fairytale. They all have something much less than the perfect lives we all dream of. So this thing a great battle, something to die for, Nelson Mandela had it, Brave Heart had it, Jesus had it, and Ripley had it in Aliens. We need something to awaken that primordial vigor that gets totally dulled in our everyday lives. But do we really need such a thing?</p>
<p>To be a hero that is it, that is the ultimate. It’s the Walter Middy syndrome and I believe it affects every one of us disaffected disconnected people of our blind consumerism driven, work centered around the paycheck existence. I say yes,whole <span id="SPELLING_ERROR_8" class="blsp-spelling-error">heartedly</span>,we do need a real battle to fight, if life is worth dieing for then its worth living for. We have to have such a thing to validate the meaning and the dignity we are all together denied of in this age of <span id="SPELLING_ERROR_9" class="blsp-spelling-error">internet</span> and delivery pizza and hyper real special effects. I say take up the cause and take up arms with your fellow freedom fighters. But remember this, one mans freedom fighter is another mans terrorist, and surely all that stands against you will try to place you in the side of evil and call for your demise. If you dare take up the call and stand against them surely you will face the onslaught of the hordes of <span id="SPELLING_ERROR_10" class="blsp-spelling-error">goliath</span>-like infantry and god-like authorities and invisible forces to tear you down. I warn you now; it is the noblest of causes but the most staggering of odds the most trying of quests. But take up the call and you and your fellow warriors will see the day when truth triumphs over lies and good smashes the throne of evil. This will be the moment when long into the future men will still say “This was our finest hour!” Go forth now and remember that a dream is nothing if it is not acted upon and that your dream can change the world forever.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.andrewluetgers.com/2009/01/19/a-monologue-on-authorship-motivation-persuasion-and-the-meaning-of-life-2/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

