<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Terminally Incoherent</title>
	
	<link>http://www.terminally-incoherent.com/blog</link>
	<description>I will not fix your computer.</description>
	<lastBuildDate>Mon, 28 May 2012 14:33:30 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TerminallyIncoherent" /><feedburner:info uri="terminallyincoherent" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly>Here, I feedburned by blog for your convinience. Happy agregating!</feedburner:browserFriendly><item>
		<title>Fluency With Technology</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/6IL6VqsCHU0/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/28/fluency-with-technology/#comments</comments>
		<pubDate>Mon, 28 May 2012 14:33:30 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=12134</guid>
		<description><![CDATA[I teach a course called &#8220;Fluency With Technology&#8221;. I did not come up with that designation &#8211; it came from up above, and the first time I saw it, I considered it silly. Over the years however I grew to &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/28/fluency-with-technology/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I teach a course called &#8220;Fluency With Technology&#8221;. I did not come up with that designation &#8211; it came from up above, and the first time I saw it, I considered it silly. Over the years however I grew to appreciate it and like it. It is a wise course name &#8211; a poignant one. For we must be fluent with technology the way we are fluent with languages to function in modern society. </p>
<p>Technology surrounds us, and permeates every aspect of our existence. It is a conduit through which we do business, conduct our social affairs, trade, maintain our health and even meet potential soul mates. If you don&#8217;t speak the language &#8211; if you can&#8217;t produce electronic data on your own you are like a foreigner in your own country. Like a stranger in your own home land you need a translator and a guide to help you fill out forms, order goods online or do any kind of business. You are helpless and dependent on the good will of other &#8211; a digital invalid. </p>
<p>Our society is quite open minded and forgiving of the differences of it&#8217;s individual members. Those who are physically or mentally challenged usually receive aid and assistance. We make accommodations for them, we go out of our way to meet their needs and make things accessible to them. Granted we don&#8217;t always to enough, but we try. Technologically challenged individuals however receive no such assistance. There is no aid, pity or accommodations for those we cannot exist in digital age. If you can&#8217;t navigate the information highways, it is by your own choice and nothing else. </p>
<p>We already make our user interfaces as accessible and as easy to use as possible. We study usability, we observe how people use electronic devices and make them bend to their needs. But we can&#8217;t make things that use themselves. We build tools, not electronic, mind reading butlers. There is a degree of fluency that is required to operate them. Most people will agree that cars are not difficult machines to figure out. The concepts and principles upon which they are built are fairly intuitive and straightforward to understand. The user interface is quite simplistic. And yet, no one expects a car to &#8220;just work&#8221;. Mastering the machine takes some practice. But somehow, somewhere we got this silly notion that computers (which are infinitely more complex than cars) should &#8220;just work&#8221; without any effort or learning involved. People see an electronic computing device and immediately switch their brain off.</p>
<p><em>&#8220;I am not a technology person, and therefore I don&#8217;t need to learn this!&#8221;</em> &#8211; where did this attitude come from? Why do people behave like this around electronics, but understand that everything else requires learning and effort to master? Is it a holdover from a bygone era when computers were still considered a fad? Or is it our fault? Have we coddled our users too much? Is our constant struggle to make user interfaces simpler and more accessible hurting the average users in the long run?</p>
<p>It can&#8217;t be the latter, because improved usability is intrinsically a good thing. It helps everyone &#8211; both power users and novices alike. So it must be the former. People cling to the past that no longer exists &#8211; analog era. The great the slowness of the pre-information age. They cling to it, and instill the old values in their children. They hobble their impressionable minds by hammering in Luddite philosophies and installing learning barriers. </p>
<p><em>&#8220;You can learn anything if you put your mind to it son, except electronics &#8211; that&#8217;s black magic not to be trifled with.&#8221;</em></p>
<p>It is a defeatist attitude. It is harmful. It produces adults with crippled minds, and only partially able to participate in the collective mind share of planet Earth. Consuming some, but not contributing much to the ever growing body of human knowledge. Only able to dip one finger in the ocean of the information (or maybe wade in up to their ankles if they are lucky), whereas those fluent swim and dive in it every day. Granted, you don&#8217;t need to be a diver &#8211; but you ought to be a swimmer, least you want to drown.</p>
<p>Non swimmers get easily overwhelmed. They burn out under constant flow of information. They have to disconnect, take vacations from the internet. Those of us who swim daily have learned to effectively filter such things. We are infovores, but we do not usually consume more than we can chew. We let the information flow over us, past us and carry us along it&#8217;s current. We let it trickle through our fingers, as we sieve for things of importance. We know how to flow with the current, and when to get out. We have intuition, and gut instincts about these things. But you can&#8217;t develop these if you are barely able to use the tools that connect you to the turbulent seas of data. You need these to survive the relentless tsunami of irrelevant data that is on the horizon. Information overload is not something you avoid &#8211; it is something you learn to surf, to navigate, else you burn out quickly.</p>
<p>Recently, something changed. There was a paradigm shift. Smart phones are cool now &#8211; everyone has one. People use them with joy and unprecedented glee. Being good with your iPhone for some reason does not bear the &#8220;computer nerd&#8221; stigma. Everyone partakes in the joy of discovery as they share new apps, new games and new social network gimmicks on their mobile devices. This is good. This is brilliant. This is game changing. Information age is sneaking up on people who swore it off long ago &#8211; who were raised and taught to distrust and despise it. They are becoming subverted. The hip and cool smart phones are a bridge to the new era. As we slowly transition away from traditional desktop and laptop computers to mobile wearable devices, and as those devices become more powerful we will not be leaving these folks behind. Maybe not fluent, but conversational. No longer strangers in the digital realm.</p>
<p>Few people realize how much power they are holding in their hands right now, and how that power is incrementally growing with every year. For your phone is not a toy. It&#8217;s not a phone either. That little black rectangle is your exo-cortex. It&#8217;s your mind outside of your mind. It is a brain without neurons. It is your in-silico memory. It allows you to record your memories at any time and anywhere. It connects you to the entirety of human knowledge and achievement from anywhere and at any time. It connects you to your loved ones, your acquittances and your clients. It is your mobile computing platform, data storage and communication hub. So is your laptop for that matter, but you don&#8217;t always have a laptop, and even if you do, you don&#8217;t always have it connected to the internet. Your phone however is online 90% of the time &#8211; the connectivity is it&#8217;s main function and the main selling point.</p>
<p>If you fancy yourself a &#8220;computer illiterate&#8221; person, please realize you are someones burden. There is a person in your life &#8211; maybe a relative, significant other, or your IT guy at work, who is doing all the heavy lifting for you. You are like a child &#8211; you must be held by hand, and walked places. You do not speak the native tongue of the land &#8211; you need a constant aid of a translator. You crawl on your belly, whereas everyone around you has learned how to walk and run upright. You are a blast from the past, and you are dragging everyone around you down. You should feel bad. You should be ashamed.</p>
<p>Become a productive member of society. Take responsibility and learn the tools you need to use in order to succeed in the modern world. They were not made to confound you. They just require time and effort to master &#8211; just like everything else in this world. You can start by getting yourself a bridge &#8211; iPad is a good choice because of the large screen, but phones are good too. Walk it daily. Learn every inch of it. Make it your primary computing tool. It&#8217;s your ticket to the future.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/8bcJ4HoagakMXrDoXVhiJJWkrIk/0/da"><img src="http://feedads.g.doubleclick.net/~a/8bcJ4HoagakMXrDoXVhiJJWkrIk/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/8bcJ4HoagakMXrDoXVhiJJWkrIk/1/da"><img src="http://feedads.g.doubleclick.net/~a/8bcJ4HoagakMXrDoXVhiJJWkrIk/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=6IL6VqsCHU0:NS_Yc1EmzeM:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=6IL6VqsCHU0:NS_Yc1EmzeM:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=6IL6VqsCHU0:NS_Yc1EmzeM:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=6IL6VqsCHU0:NS_Yc1EmzeM:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=6IL6VqsCHU0:NS_Yc1EmzeM:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=6IL6VqsCHU0:NS_Yc1EmzeM:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=6IL6VqsCHU0:NS_Yc1EmzeM:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=6IL6VqsCHU0:NS_Yc1EmzeM:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=6IL6VqsCHU0:NS_Yc1EmzeM:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=6IL6VqsCHU0:NS_Yc1EmzeM:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=6IL6VqsCHU0:NS_Yc1EmzeM:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=6IL6VqsCHU0:NS_Yc1EmzeM:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/6IL6VqsCHU0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/28/fluency-with-technology/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/28/fluency-with-technology/</feedburner:origLink></item>
		<item>
		<title>Markdown for Muggles</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/Zbc-7NNQb2w/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/25/markdown-for-muggles/#comments</comments>
		<pubDate>Fri, 25 May 2012 14:05:45 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[markdown]]></category>
		<category><![CDATA[wysiwyg]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=11896</guid>
		<description><![CDATA[This post goes out to all the creative critters toiling in the depths of the information web-way known as the Internet. Yes, I&#8217;m talking to you aspiring writers, critics, bloggers and word smiths. Talk to me about your tool of &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/25/markdown-for-muggles/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>This post goes out to all the creative critters toiling in the depths of the information web-way known as the Internet. Yes, I&#8217;m talking to you aspiring writers, critics, bloggers and word smiths. Talk to me about your tool of the trade. What do you use to do your craft? What tool to you employ to record your thoughts in the form of character strings written into computer memory? How do you put your minds toil into silicone repository trapped inside your external thinking box people call a computer, but which long ago became a part of your brain?</p>
<p>You use Microsoft Word, don&#8217;t you? Not only that, you hate the damn thing.</p>
<p>How do I know? Well, this is a two part question. How do I know you use Microsoft Word? Because that&#8217;s what everyone uses. It&#8217;s what everyone knows how to use. And not because it is a good tool for the task. Microsoft word&#8217;s popularity is in large part due to memetic inception. I&#8217;m not talking about an internet meme in the form of an image with macro text. I&#8217;m talking about meme as a concept that predates the internet &#8211; a brain bug, a virally spreading datum that infects minds and takes hold. Every marketing specialist out there is currently working to create one of these &#8211; and if they are not, or don&#8217;t know about memes then they are simply horrible at their jobs.</p>
<p>Let me give you an example of a marketing meme: have you heard that Macs are better for graphic design? I&#8217;m sure you did. Can you explain to me how they are better? I&#8217;m sure you can&#8217;t. No one can. Hell, I own both Mac and PC machines and I&#8217;m fairly interested in how they work, how they differ and how they can be tweaked, and I could not tell you how the hell my MacBook Pro would be any better at running Photoshop than my Windows PC. There is just no empirical difference in how these machines handle visual editing software &#8211; mac has neither a hardware edge, nor does it have exclusive software that could make it a better platform. They are just about the same. But people still assume&#8230; No, they know &#8211; they are convinced &#8211; that Macs are better at graphics. It is a meme. It is a brain bug. It is a thing that people repeat, without understanding and reinforce via repetition. </p>
<p>Microsoft has launched a similar meme at some point in the past. They somehow convinced everyone that you can&#8217;t write anything without Microsoft word. Students need it for homeworks and creative people need it to write their stuff. But, just like the mac fable, this is also not true. Just think about it. How much of the text you consume on a daily basis is in Microsoft Word format? Everything you read on the web is HTML &#8211; a variety of plain text. Most documents you download from the web are in PDF. If you publish anything for the web, you know that most bloging or content management systems actually dislike word, and prefer you to type into (or paste into) a plain text input box.</p>
<p>As a internet society, as an electronic mind share we are collectively moving away from Word as the main data carrier format. And yet, the meme persists. A lot of people still assume that you need Word. That storing plain text files on your hard drive is somehow not kosher, that it is somehow not correct. So even if their notes contain no formatting, and nothing but plain text, they still wrap them in a proprietary .DOCX package, just to be safe. Why? Because that&#8217;s what you do. That&#8217;s what everyone does. That&#8217;s the way. There is no reason behind it. No logic. No deeper understanding. You just word it up, because you do.</p>
<p>How do I know you hate it? Well, everyone does. There is not a single person in the world that loves Microsoft Office. There are people out there that tolerate it &#8211; who are willing to put up with it and forgive it&#8217;s flaws. But they don&#8217;t love it. There is not a single person in this universe who loves Word the way some folks out there love Vim or Emacs. All you have to do to verify this is to hang out around forums and communities devoted to these particular programs. Just not the tone of most of the posts. In Microsoft Office forums the general tone is more or less:</p>
<p><em>&#8220;Guys, I need help to make this POS software do what I need it to do before I chuck this computer out the window.&#8221;</em></p>
<p>The general tone of most posts on Vim/Emacs forum is more along the lines of:</p>
<p><em>&#8220;OMG, look what I just figured out! This is like the best thing ever! I&#8217;ll be so productive with this. This editor rules!&#8221;</em></p>
<p>Attitude towards Word range between seething hate, and begrudging tolerance. There is no love there though. Not by a long shot. If you think you love word, you are mistaken. Do you love it as much as you would love a favorite pet? Do you truly enjoy working in it? Has it never failed you, never frustrated you and never let you down? Cause that&#8217;s my personal relationship with Vim &#8211; it&#8217;s lime my own personal Rick Astley. I know it&#8217;s never gonna let me down.</p>
<p>So now that we established that you hate your main work tool, let&#8217;s talk about a better way. Yes, there is a better way. There is a light at the end of the tunnel. I mentioned this in my <a href="http://www.terminally-incoherent.com/blog/2012/04/18/pitfalls-of-wysiwig-self-publishing-hell/" class="liinternal">self publishing</a> article: ditch Word, learn Markdown.</p>
<p>Markdown is astonishingly simple to learn. I could teach it to you in five minutes. Hell, I will teach it to you now. Ready?</p>

<div class="wp_syntax"><div class="code"><pre class="markdown" style="font-family:monospace;">This is a heading
=================
&nbsp;
This is how you **bold** and *italicize* text.
&nbsp;
This is how you make lists:
&nbsp;
	- Item the first
	- Item the second
		1. Enumerated item
		1. Another item
	- Item the third
&nbsp;
Smaller heading
---------------
&nbsp;
Quoting is easy:
&nbsp;
&gt; To be or not to be...
&nbsp;
And here is how you [make links][1]. You put all the links at the end.
&nbsp;
[1]: http://example.com</pre></div></div>

<p>Woha, you just learned Markdown faster than Keanu Reves learned Kung-Fu in that one movie. There is a little bit more to it, but not much. The rules are so simple, and so intuitive you pretty much can&#8217;t mess it up. </p>
<p>Next, you ditch that bulky, sluggish and finicky old MS Word and pick a plain text editor you like. You are writer and not a geek, so I will not push Vim or Emacs on you. There is this new fad amongst your people though &#8211; writers, creatives and the like: distraction free writing environments. There are dozens full screen editors out there that can deliver a powerful dose of creative zen to your cranium. Just to name a few:</p>
<ol>
<li><a href="http://they.misled.us/dark-room" class="liexternal">Dark Room</a></li>
<li><a href="http://writemonkey.com/" class="liexternal">Write Monkey</a></li>
<li><a href="http://www.creawriter.com/" class="liexternal">Crea Writer</a></li>
</ol>
<p>Or you could go for something more traditional &#8211; like for example <a href="http://www.sublimetext.com/" class="liexternal">Sublime Text</a>. At the end of the day, it doesn&#8217;t matter. Once you wean yourself of MS Word you will discover a new found freedom: your writing and your data will no longer depend on one editor from a single software vendor. Your writing will be liberated from the oppressive tyranny of Microsoft. This means you will be able to experiment with a lot of different editors, and pick your favorite one. Or change them every other day. Or have an editor rotation. Or whatever. Freedom is great, you should try it.</p>
<p>You will now save your documents as .txt or .mkd or .markdown &#8211; it doesn&#8217;t really matter. They will be neat, human readable and perfectly suitable for conversion to other formats. By default markdown was designed to be converted to HTML, but fear not &#8211; there are tools that let you turn your files into word documents of PDF files just as easily. You basically need just one tool:</p>
<ul>
<li><a href="http://johnmacfarlane.net/pandoc/installing.html" class="liexternal">Pandoc</a></li>
</ul>
<p>Grab it, install it. I&#8217;ll wait.</p>
<p>What is that? Why are you crying? Stop being a little bitch. I said I will hook you up, what is the problem now?</p>
<p><em>&#8220;But Luke, this panda thing is all command line and shit! I thought it will have a GUI. Command line is scary, ugly and it smells. I&#8217;m gonna go back to Word now. This is stupid!&#8221;</em></p>
<p>Fine, go back to Word which you hate. Crawl back to the thing that hurt you and beg it to take you back. Command line scares you that much? Fine. I will make it go away. But we are keeping Pandoc.</p>
<p>Pandoc is a really great tool, sadly it&#8217;s not what I would call User Friendly. It was made by geeks and for geeks so you have to excuse the lack of UI. We generally don&#8217;t have any use for such thing. But I know that in the land of the End User, GUI is king. So I will make you one:</p>
<ul>
<li><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/markdown-menus.zip" class="lizip"><strong>Markdown Menu</strong></a></li>
</ul>
<p>Download that zip file, extract it and double click on the .reg file inside. In case you are interested how it works, here is the contents of that file:</p>

<div class="wp_syntax"><div class="code"><pre class="reg" style="font-family:monospace;"><span style="color: #0000FF;">Windows Registry Editor Version 5.00</span>
&nbsp;
<span style="color: #000000;">&#91;</span><span style="color: #800000;">HKEY_CLASSES_ROOT</span>\*\shell\mkd2doc<span style="color: #000000;">&#93;</span>
<span style="color: #000000;">&#91;</span><span style="color: #800000;">HKEY_CLASSES_ROOT</span>\*\shell\mkd2doc\command<span style="color: #000000;">&#93;</span>
<span style="">@</span><span style="color: #000000;">=</span><span style="">&quot;\&quot;C:\\Program Files <span style="color: #000000;">&#40;</span>x86<span style="color: #000000;">&#41;</span>\\Pandoc\\bin\\pandoc.exe\&quot; -s -S \&quot;%1\&quot; -o \&quot;%1.docx\&quot;&quot;</span>
&nbsp;
<span style="color: #000000;">&#91;</span><span style="color: #800000;">HKEY_CLASSES_ROOT</span>\*\shell\mkd2pdf<span style="color: #000000;">&#93;</span>
<span style="color: #000000;">&#91;</span><span style="color: #800000;">HKEY_CLASSES_ROOT</span>\*\shell\mkd2pdf\command<span style="color: #000000;">&#93;</span>
<span style="">@</span><span style="color: #000000;">=</span><span style="">&quot;\&quot;C:\\Program Files <span style="color: #000000;">&#40;</span>x86<span style="color: #000000;">&#41;</span>\\Pandoc\\bin\\pandoc.exe\&quot; \&quot;%1\&quot; -o \&quot;%1.pdf\&quot;&quot;</span></pre></div></div>

<p>If you can&#8217;t read Windows Registry merge files, here is what it will do: it will add two new items to your right click context menu. From now on, when you right click on a file, you will see something like this:</p>
<div id="attachment_12114" class="wp-caption aligncenter" style="width: 602px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/mkdmenus.jpg" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/mkdmenus.jpg" alt="Markdown Menus" title="Markdown Menus" width="592" height="302" class="size-full wp-image-12114" /></a><p class="wp-caption-text">Markdown Menus</p></div>
<p>These buttons do exactly what you suspect they will do:</p>
<ul>
<li><strong>mkd2doc</strong> will convert the file to a Word doc</li>
<li><strong>mkd2pdf</strong> will convert the file to a PDF</li>
</ul>
<p>The new file will be placed in the same directory like this:</p>
<div id="attachment_12117" class="wp-caption aligncenter" style="width: 650px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/mkd2doc.png" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/mkd2doc-640x400.png" alt="Markdown to Doc" title="Markdown to Doc" width="640" height="400" class="size-medium wp-image-12117" /></a><p class="wp-caption-text">Markdown to Doc</p></div>
<p>The registry script assumes two things:</p>
<ol>
<li>That you have PanDoc installed</li>
<li>That you are running a 64 bit Vista or Win7</li>
</ol>
<p>Other than that, it should work. I chose DOC and PDF because those are the two most popular, most requested file formats that your editor and/or publisher may want to see your files in. PanDoc can convert Markdown to dozens of other formats but I did not want to clutter your context menu with too much garbage you will never use. I figured Doc and PDF were safe choices.</p>
<p>Now, dear creative soul you should be armed with enough knowledge and enough software tools to wean yourself away from Word. I highly recommend you try it. Download Pandoc, install my registry script and join the ranks of plain text enthusiasts. Mark it down like a pro.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/j-CVecuY_O95DqFpxMO_xq023Hg/0/da"><img src="http://feedads.g.doubleclick.net/~a/j-CVecuY_O95DqFpxMO_xq023Hg/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/j-CVecuY_O95DqFpxMO_xq023Hg/1/da"><img src="http://feedads.g.doubleclick.net/~a/j-CVecuY_O95DqFpxMO_xq023Hg/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=Zbc-7NNQb2w:2pJEywpb9tE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=Zbc-7NNQb2w:2pJEywpb9tE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=Zbc-7NNQb2w:2pJEywpb9tE:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=Zbc-7NNQb2w:2pJEywpb9tE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=Zbc-7NNQb2w:2pJEywpb9tE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=Zbc-7NNQb2w:2pJEywpb9tE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=Zbc-7NNQb2w:2pJEywpb9tE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=Zbc-7NNQb2w:2pJEywpb9tE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=Zbc-7NNQb2w:2pJEywpb9tE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=Zbc-7NNQb2w:2pJEywpb9tE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=Zbc-7NNQb2w:2pJEywpb9tE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=Zbc-7NNQb2w:2pJEywpb9tE:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/Zbc-7NNQb2w" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/25/markdown-for-muggles/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/25/markdown-for-muggles/</feedburner:origLink></item>
		<item>
		<title>Science vs Humanities</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/rICWE2yZeBQ/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/23/science-vs-humanities/#comments</comments>
		<pubDate>Wed, 23 May 2012 14:05:30 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[school and teaching]]></category>
		<category><![CDATA[rant]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=12073</guid>
		<description><![CDATA[I found this gem on Reddit the other day and I saved it to share with you guys because it is a clusterfuck of horrible. According to the story that came attached to the picture, it was a print add &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/23/science-vs-humanities/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I found this gem on Reddit the other day and I saved it to share with you guys because it is a clusterfuck of horrible. According to the story that came attached to the picture, it was a print add in either a university promotional catalog or the campus newspaper &#8211; I can&#8217;t recall which. Either way it was an ad for Humanities department, which was clearly written by an idiot.</p>
<p>Wait, hold on &#8211; before you scold me for being a science geek elitist, please take into account that I have great respect for folks in humanities. I read a lot of books and I sometimes fancy myself a literary critic of certain genre works, so believe me &#8211; I have nothing against the good folks with Literature degrees. I thing they are not only good people, but also productive members of society &#8211; we need folks who are well read &#8211; if nothing else just to point me towards good things to read, so that I can inject condensed knowledge and beauty into my cranium by the way of well written prose and/or poetry.</p>
<p>I mock business majors, and people with fake degrees (communications anyone?) but I don&#8217;t think I have ever said a bad word about writers, poets, literary scholars and philosophers. I am constantly humbled by their knowledge and consider them to be a fellow species of nerd, even if they wont admit it. So it actually pains me to see shit like this being used to advertise humanities:</p>
<div id="attachment_12074" class="wp-caption aligncenter" style="width: 190px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/science.png" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/science.png" alt="Science vs Humanities" title="Science vs Humanities" width="180" height="633" class="size-full wp-image-12074" /></a><p class="wp-caption-text">Science vs Humanities</p></div>
<p>Let&#8217;s count all the things that are wrong with this picture:</p>
<ol>
<li>Blatant anti-intellectualism and disregard for the sciences &#8211; check</li>
<li>Lack of understanding of what scientists actually do &#8211; check</li>
<li>Implication that science does not concern itself with ethics &#8211; check</li>
<li>Lack of understanding what cloning is &#8211; check</li>
<li>Finally, what&#8217;s most baffling &#8211; and indication that the author of said avert does not understand what Humanities do either &#8211; also check</li>
</ol>
<p>The first point is especially annoying, because they should have known better. The whole &#8220;what has science done?&#8221; cliché is old and tired and needs to go die in a ditch. Hollywood loves this damn trope, but university professors should know better. Shouldn&#8217;t universities foster a culture of appreciation of knowledge in all shapes and forms? Isn&#8217;t the point of liberal arts education to give student a broad understanding of all different fields of knowledge? Isn&#8217;t science education just as important as education in literature, philosophy and arts? Apparently not, according to whoever make this advert. It strikes me as childish.</p>
<p>I would love to hear why is it not a good idea to clone a damn dinosaur. I read Michale Crichton&#8217;s book, you know &#8211; the one with a park full of Jurasic period critters, and the main thing I got out of it was that greedy assholes will always ruin a good thing. That was the main message &#8211; don&#8217;t be a greedy fuck, and don&#8217;t underestimate mother nature, because that bitch is fucking awesome. The rest was pretty much &#8220;OMG, dinosaurs are soooo rad, and I know Unix!&#8221;. Or something like that. I don&#8217;t actually remember a big speech about playing god being in there, though I think they added one in the movie adaptation. I thought that Jeff Goldbloom talking shit about science was a bit out of place, seeing how the entire breakdown of security in park was basically the fault of Newman from Sinefield. But I digress.</p>
<p>My point is that there is no compelling reason not to clone a dinosaur. If we could do it, it would be an awesome experiment, and we would learn a lot from it. Hell, we are <a href="http://newsfeed.time.com/2012/03/14/the-woolly-mammoths-return-scientists-plan-to-clone-extinct-creature/" class="liexternal">already cloning Woolly Mammoths</a> so I really don&#8217;t see a problem here. What is the ethical conundrum here? How could an embryonic Jurassic lizard fuck things up for everyone?</p>
<p>I mean, maybe if you let it gestate, be born, then feed it for a few years, let it grow to full size, then piss it off and let it loose in a major city &#8211; yeah, that could be a problem. Not a problem with science itself mind you, just a problem with your stupid brain not comprehending the fact that it is not actually legal to release large wild carnivorous animals in cities.</p>
<p>Do you know what you call a scientist who clones a T-Rex, and lets him grow to full size without putting in appropriate safeguards? A fucking idiot who deserves to be eaten. Here is a little anecdote about elephants you might have seen on a motivational poster somewhere: allegedly circus animal trainers tie a baby elephant&#8217;s leg to a wooden post to prevent them from wandering off. Over the years the animal learns that tugging on the rope is fairly useless, and by the time they are fully grown they actually stop trying. So when the trainer ties a mature elephant to a tiny wooden stake, with a flimsy rope that would never hold it, the animal stays put because it remembers the rope being unbreakable.</p>
<p>While this story is likely bullshit, it illustrates an important concepts: we know how to deal with big animals. The reason why we don&#8217;t have elephants, lions, tigers and dragons rampaging though the cities every other day is that we have devised methods to tame and subdue them. Also, dragons don&#8217;t exist but that&#8217;s besides the point. While a Tyrannosaurus might be big and scary, it is an animal just like an elephant. Put it in an elephant pen with a huge ass reinforced fence (you reinforce the fence by weighing the damn thing, cross comparing with elephant weight and adding shit to the fence until it can withstand that much weight) and it will stay put. Unless it can &#8220;Hulk jump&#8221; like a boss, of course. But that&#8217;s not really something the animal can keep hidden. If it never jumps while it&#8217;s a baby, it likely won&#8217;t jump when it&#8217;s mature. And if it does jump like a motherfucker, then you put a roof over the pen. </p>
<p>In fact, you don&#8217;t even need to build all of this in advance. You will have plenty of time to incrementally improve your new pets habitat as it grows. A baby dino can probably be kept in check with a piece of rope, and a rubber band around it&#8217;s snout. If you are worried about it rampaging across the city, you can humanely put it down long before it becomes larger than a horse.</p>
<p>Unless of course you happen to be an idiot who thinks that cloning means &#8220;to make an exact copy, like on a xerox machine&#8221; which it does not. And being a humanities major does not exempt you from this little thing called &#8220;research&#8221;, which I affectionately call &#8220;five fucking minutes with Google&#8221;. I would hope that any aspiring literary genius wanting to write a story about the dangers of cloning would take at least 5 minutes to make sure they know what they are talking about. I mean, it&#8217;s not Hollywood kids &#8211; if you want to make literature, then you need to at least try to make sense. Unless of course you want to write the next Twilight or 50 Shades, in which case college education is the worst thing you could do to your brain. If you have ever taken a single literature or creative writing course, you know way to much about story structure, plot, character development and literary devices to write like Stephanie Meyer or E. L. James.</p>
<p>What I would really like to know is the reason why the creator of this image thought that the job of a humanities major is to teach scientists about ethics. Last time I checked, morality fables were kinda low brow. A story titled &#8220;A scientist made a dinosaur, and then got eaten because hubris is bad&#8221; ain&#8217;t exactly something to aspire to, isn&#8217;t it? It&#8217;s very much an old and tired cliché. I&#8217;d hope you would encourage students to write something more ambitious than that. To say something new and interesting about the human condition. </p>
<p>A wise man once said that a picture is worth a thousand words, and I think I just proved that. I created well of a thousand word shaped knowledge bearing data objects, ranting about a very dumb image from the internet. I ought to have better things to do with my life than that, but I do not, and that&#8217;s why you love me. If I wasn&#8217;t around to tell you about all the insignificant stupidities that really grind my gears, who would. I provide a valuable public service here, damn it!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/bCvULHYAZIqR7VBWuRUy_JsZIww/0/da"><img src="http://feedads.g.doubleclick.net/~a/bCvULHYAZIqR7VBWuRUy_JsZIww/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/bCvULHYAZIqR7VBWuRUy_JsZIww/1/da"><img src="http://feedads.g.doubleclick.net/~a/bCvULHYAZIqR7VBWuRUy_JsZIww/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=rICWE2yZeBQ:1rrwwthGWXE:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=rICWE2yZeBQ:1rrwwthGWXE:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=rICWE2yZeBQ:1rrwwthGWXE:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=rICWE2yZeBQ:1rrwwthGWXE:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=rICWE2yZeBQ:1rrwwthGWXE:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=rICWE2yZeBQ:1rrwwthGWXE:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=rICWE2yZeBQ:1rrwwthGWXE:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=rICWE2yZeBQ:1rrwwthGWXE:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=rICWE2yZeBQ:1rrwwthGWXE:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=rICWE2yZeBQ:1rrwwthGWXE:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=rICWE2yZeBQ:1rrwwthGWXE:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=rICWE2yZeBQ:1rrwwthGWXE:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/rICWE2yZeBQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/23/science-vs-humanities/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/23/science-vs-humanities/</feedburner:origLink></item>
		<item>
		<title>Why Plain Text</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/a2h7v5Fwt8Y/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/21/why-plain-text/#comments</comments>
		<pubDate>Mon, 21 May 2012 14:02:12 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[technology]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[wysiwyg]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=12033</guid>
		<description><![CDATA[Recently Chris Wellons shared some an really interesting thoughts on why a lot of programmers tend to flock to certain kinds of tools &#8211; powerful text editors, plain text formats, markup over WYSIWYG and etc.. Here is what he said &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/21/why-plain-text/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Recently Chris Wellons shared some an really interesting thoughts on why a lot of programmers tend to flock to certain kinds of tools &#8211; powerful text editors, plain text formats, markup over WYSIWYG and etc.. Here is what he said on the topic:</p>
<blockquote><p>In my experience, software developers generally prefer some flavor of programmer’s tools when it comes to getting things done. We like plain text, text editors, command line programs, source control, markup, and shells. In contrast, non-developer computer users generally prefer WYSIWYG word processors and GUIs. Developers often have somewhere between a distaste and a revulsion to WYSIWYG editors.</p>
<p>Why is this? What are programmers looking for that other users aren’t? What I believe it really comes down to is one simple idea: clean state transformations. I’m talking about modifying data, text or binary, in a precise manner with the possibility of verifying the modification for correctness in the future.</p></blockquote>
<p>File formats generated by WYSIWYG word processors tend to be opaque to source control tools &#8211; they like to store data in binary format, or lumps of compressed XML soup &#8211; where each edit introduces perturbations throughout the file. Tools to that allow to search and compare such files are few and far in between &#8211; most are built into the bloated text editors and come burdened with finicky, crippled GUI&#8217;s. There is nothing as elegant and flexible as the Unix <samp>diff</samp> command that would work for Microsoft Word or ODT documents. Changes in plain text files on the other hand are easily tracked &#8211; be it manually or via source control. They produce clean, human readable diffs. I agree with Chris on this &#8211; clean state transformations are a killer feature, but they are not the only reason why many of us are repulsed by WYSIWYG. </p>
<p>Rich text formats actually have many disadvantages compared to plain text, whereas they offer only a single advantage: a promise of user friendliness (a promise which they fail to deliver, but more on that later). Overall, the choice of plain text over rich text is a pragmatic one &#8211; it boils down to handling and maintenance. Plain text files are simply much easier and straightforward to work with &#8211; especially when it comes to collaboration or maintaining a large set of data over a long period of time.</p>
<ul>
<li>
<p>		<strong>Size</strong> &#8211; Plain text files are typically much smaller in size. WYSIWYG formats are complex and store a lot more than just your data &#8211; they also store garbage, and endlessly compounding collections of metadata that can&#8217;t be easily pruned from the file. Yes, we currently live in a day and age when Terabyte drives are quite affordable, so storing few extra megabytes here and there is not a problem. The problem is moving these things around.</p>
<p>I have seen Excel files ballooning to over 30MB in size. Such monstrous files are virtually <a href="http://www.terminally-incoherent.com/blog/2007/02/28/file-transfer-problem/" class="liinternal">impossible to transfer</a> over standard email connections. Modern businesses bravely move towards paperless workflows only to realize their network infrastructure <a href="http://www.terminally-incoherent.com/blog/2011/05/16/file-transfer-problem-2/" class="liinternal">cannot support their multi-Gigabyte zip files</a>. Granted this is a problem that would have existed without Office and WYSIWYG formats, but they exacerbate the issue. </p>
<p>How does this affect me personally? Well, I prefer my data to be backed up on a regular basis. Storing a lot of my writing in plain text helps to make backups faster and more space efficient. I&#8217;m sure someone will scoff at these meager space savings, but hey &#8211; I&#8217;ll take what I&#8217;ve got &#8211; especially since size savings are not the only benefit of using plain text.</p>
</li>
<li>
<p>		<strong>Compression</strong> &#8211; plain text files compress well. MS Office OOXML files on the other hand don&#8217;t compress at all &#8211; <a href="http://www.terminally-incoherent.com/blog/2008/02/07/file-format-overhead-for-data-storage/" class="liinternal">they are already compressed and still huge</a>. This is almost directly linked to previous point and it is worrisome of the same reasons. Large data dumps from accounting systems can be compressed quite well, but users want these dumps in Excel. A lot of times simply converting such files to a CSV and re-saving them in XLSX format causes 200-300% increase in size, without ability to compress. Many of such files become impossible to email after the conversion.</p>
</li>
<li>
<p>		<strong>Parsing</strong> &#8211; Plain text files are easy to work with programatically. Reading from and writing to text files is very easy in most programming languages. Most of the time all you need is 2-3 lines of code, unless you are working with Java (in which case you need about 200 lines of boilerplate and class declarations). Doing the same with MS Office or ODF files is a complex task that usually requires third party libraries or plugins. Thankfully, these are <a href="http://www.terminally-incoherent.com/blog/2007/06/27/parsing-excel-files-with-perl/" class="liinternal">readily available</a> but they do create dependencies in your code. Not to mention that many of such libraries slide out of compatibility as Microsoft always tweaks their file formats between Office versions, and not all maintainers can keep up with these changes. </p>
<p>		Why would a geek and a weekend hacker like me want a programatic access to notes and text documents? Duh, think about it. I hope you can figure this out on your own.</p>
</li>
<li>
		<strong>Search</strong> &#8211; plain text files can be easily searched using simple tools such as Unix command line utilities grep and find. Windows people don&#8217;t usually realize this but these tiny applications can iterate over hundreds of text files in mere seconds. Searching within rich text documents is a much more complex issue and there are few built in OS level search tools that could accomplish this task. Those which can, are unable to do it very fast because the process of opening and scanning these files for relevant strings is a complex task. Modern desktop users often utilize powerful indexing engines (such as Google Desktop Search or Windows Search) to get around this problem. These are usually custom tailored to the task of parsing specific rich text formats and they slowly scan your drives in the background.</p>
<p>		I&#8217;m not saying that desktop search is bad &#8211; I&#8217;m saying that it is an overkill if all you want is a quick way to search your notes for specific keywords or sentences. And even if you do desire a database driven search index of your files, generating one for plain text documents takes almost no time, whereas indexing large collections of Word and Excel files will take many hours.</p>
<p>		A lot of my old notes (from ancient times) are still locked up in proprietary WYSIWYG formats. Sometimes I want to search through them but I quickly realize I can&#8217;t grep that far into the past. A constant reminder of the mistakes of my youth I guess.</p>
</li>
<li>
		<strong>Resilience</strong> &#8211; Plain text files are fairly resistant to damage. Even if they become corrupted, large amounts of data can still be recovered. Word and Excel documents become corrupted quite often, to the point where there exists an entire software industry branch for &#8220;Microsoft Office File Repair tools&#8221; that provide data recovery services to the business sector. And I&#8217;m not just talking about actual data corruption &#8211; due to disk failure or bad network transfer. I&#8217;m talking about corruption that stems from the internal implementation of these files &#8211; like for example <a href="http://www.terminally-incoherent.com/blog/2008/04/02/excel-too-many-different-cell-formats/" class="liinternal">the &#8220;too many formats&#8221; Excel issue</a>.</p>
</li>
<li>
		<strong>Privacy</strong> &#8211; Microsoft Office products sometimes inadvertently include sensitive information in their files. There are methods to remove that information, but the default is to preserve it. A lot of people have been burned by this &#8220;feature&#8221;, including <a href="http://www.computerbytesman.com/privacy/blair.htm" class="liexternal">high profile British politicians</a></p>
<p>		It&#8217;s astounding that this is even a problem, but somehow, someone down the line made a decision that rich text formats ought to carry a lot of meta-data with them, and it became a de-facto standard. While I&#8217;m not against meta-data on principle (it is beneficial when you want to index and categorize content for fast searching &#8211; which as I mention is a problem in the rich text world), I am very much for privacy. I always wonder how much information business organizations leak out by simply emailing each other word documents.</p>
<p>		It is even better when two security conscious companies exchange AES encrypted zip files, via PGP encrypted emails, while at the same time shedding<br />
all kinds of confidential metadata, because the file they exchanged was previously used on 16 other unrelated projects.</p>
</li>
<li>
		<strong>Future Compatibility</strong> &#8211; plain text is the safest way to preserve data. Software companies go out of business, file formats fall into disuse (real player videos, lotus notes files, etc..) and standards change. Microsoft may seem an indestructible corporate powerhouse today, but 20 years from now they may no longer exist. And if they do exist, you can bet your sweet ass that they won&#8217;t support Office 2003 format anymore. Locking up your data in proprietary formats is foolish and most people outside the intellectually stunted corporate ghetto of business school graduates realize this. </p>
<p>		Open standards are great, and open standards that use plain text file formats are even greater. Why? Because even if the spec is lost, plain text is relatively easy to figure out. Future digital archaeologists will only need to stumble upon or figure out the concept of an ASCII table to be able to decode most of plain text documents just by examining their contents in a hex editor.</p>
<p>		And yes, I do understand that there are many encodings, and the world of plain text is far from uniform. Still, figuring out the few dozen encodings and their quirks ought to be easier than trying to work out how is data stored in the binary .doc file, without access to a copy of Microsoft Word to reverse engineer the damn thing. Or figuring out the &#8220;a thousand zipped XML files&#8221; format of OOXML.</p>
<p>		I suspect that few centuries from now, historians will assume that majority of the people living in this day and age were Linux nerds because open source software, open standards and plain text files will all that will remain after us. Scholars will continuously argue about what our people might have been hiding in the Terabytes of inaccessible binary data they can&#8217;t decode.</p>
<p>		We don&#8217;t have to go that far into the future to see the effects of this though. There are ancient folders on my drive, that survived my youthful nonchalance towards backup. They contain notes and short stories saved in Corel Word Perfect format &#8211; software I no longer own, use or need. Back then I used it, because that&#8217;s what was available. I did not know enough to make an educated decision. I could not have known that many years later I will be sitting there, staring at incomprehensible files that I cannot open without downloading some sort of viewer tool from the vendors website. Fortunately Corel still exists, and still supports their product. But that did not necessarily had to be the case.</p>
</li>
<li>
		<strong>Clarity</strong> &#8211; if you want to have &#8220;formating&#8221; in plain text files you need to use explicit markup. Whether you are using HTML, Markdown or LaTex you essentially type in your formating commands as textual blocks. Whoever is working on your file next, can probably figure out what you intended to do from the markup even if you messed it up, or if parts were deleted while reformatting. You can easily tweak, or clean up said formating code by hand.</p>
<p>		WYSIWYG rich text documents purposefully hide that stuff from the user. The claim it is for clarity and user friendliness but this is really a matter of perspective. When you are typing up a paper, you may not want to deal with markup. When you are editing and proofreading something for release however, you want to have full control over the document. You want to be able to tweak and correct every aspect of it. WYSIWYG tools wrestle that control away from you, and abstract it into a series of useless toolbars and context items.</p>
<p>		If you have ever wrote a serious paper in Word you know the frustration of trying to make it behave &#8211; especially if you are trying to make it do some very specific things: for example, to place a figure just so, to lay out tables or images side by side, to have some pages in different orientation to accommodate large charts. The more you try to do, the harder it becomes to keep it all together and a small change on one page, may have catastrophic effects on everything below. What&#8217;s worse, there is usually no way to predict these issues. Editing documents in Word is a game of chance &#8211; every time you make a change you have to inspect the entire document for problems, and keep your Undo button ready to back-track.</p>
<p>		I have some really neat examples of how the transparency of markup improves the user experience in my <a href="http://www.terminally-incoherent.com/blog/2007/07/16/why-latex-is-superior-to-office/" class="liinternal">LaTex vs Office</a> post. Please check it out to see animated examples of some of the WYSIWYG issues I mentioned above. This is the failed promise of user friendliness I mentioned. Yes, typing up a Word document is pretty user friendly. Opening said document later, deleting a single character and seeing the entire document collapse upon itself and contort into an unimaginable mess is not friendly at all. Tools like Microsoft Word are only user friendly up to a point.</p>
</li>
</ul>
<p>That last point especially is very, very important. I would say it is more important than clear state transformations. I would say that hidden markup is the root of about 70% of issues you will run into when working with Word and Excel. I just made that number up, so feel free to substitute another one if you are so inclined. But trust me &#8211; a lot of the things you see Word users complain about stems from their inability to comprehend and anticipate WYSIWYG paradigm concepts such as invisible control characters. You simply can&#8217;t comprehend why Word does certain things until you understand markup language &#8211; especially opening/closing tags, and what happens when you leave them open.</p>
<p>Here is an interesting thing I discovered: learning markup makes people better at Word. I teach kids HTML. Very basic stuff, mind you &#8211; no CSS or anything like that. The most complex thing they create is a table, and for the sake of simplicity I show them the font tag (I know it&#8217;s wrong, but it makes more sense than shoe-horning inlne CSS there). Then I go back to Microsoft word and explain to them how it puts these invisible tags in the documents. And it is pretty good at keeping them matched up, but sometimes it fails. So that&#8217;s why once in a blue moon you delete something, and it causes the rest of the document barf up upon itself. I swear to you, you can usually see a little light bulb appear over the heads of like one or two students in the class. The rest of them remains ignorant, but that&#8217;s just par for the course. You can&#8217;t win them all but seeing a few select individuals have this world view shattering epiphany is what teaching is all about. All of a sudden these few students instantly understand why Word sucks, and are armed with knowledge on how to battle and tame that software beast. They are no longer baffled by mysterious &#8220;computer doing stupid things&#8221; but instead realize the society sold them a $300 piece of shit, and requires them to use it.</p>
<p>So there you have it. I&#8217;m pretty sure there are more compelling reasons why use plain text over rich than that, but this is all that I can think of right now. On the other hand I can&#8217;t think of a single argument for the reverse side of the argument, other than the old and tired &#8220;end users won&#8217;t understand plain text in notepad&#8221; mantra. I honestly don&#8217;t know a single logical reason why a self respecting geek would subject himself to a WYSIWIG purgatory. Other than ignorance of course. And there are a lot of ignorant geeks out there.</p>
<p>These guys are almost worse than your common garden variety of a luser (technophobus ignoramus luserati if you want to use fake latin). Lusers simply don&#8217;t know any better, and they don&#8217;t understand logic. I have learned to accept that &#8211; them creatures are slaves to the emotion, and impervious to facts and empirical evidence. We geeks operate a little bit differently &#8211; we like to think of ourselves as rational beings. But alas, we don&#8217;t always behave that way. There are otherwise wonderfully clever individuals out there who know that MS Word sucks, and love to complain about it but won&#8217;t take the plunge and peel themselves away from WYSIWIG. You show them LaTex and they scoff at the syntax. You give them Markdown, and they go &#8220;Yea, but no.&#8221; Then they go and rant for hours about how no one can make a Word processing tool that works. They see the problem, and yet they refuse the accept the solution. WYSIWIG simply does not work.</p>
<p>Over the years I have learned that smart people do stupid things all the time. Once can be an expert in one field and a complete idiot in a related one. The most valuable traits in a human being are an open mind, willingness to try new things and an ability to admit and learn from mistakes. If you find a person who exhibits all these three traits, hire them immediately. Or marry them &#8211; whichever seems more appropriate at the moment. </p>
<p>Chris &#8211; this is not refutation of your claim. I do agree that clear state transforms are important, beneficial and definitely a factor. They are just one of many factors why WYSIWIG sucks. Maybe one day we will have a better way of editing documents that is neither like WYSIWIG, nor like markup. If it&#8217;s indeed superior to both, then I&#8217;ll switch. But until then, I&#8217;m going plain.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/YFhsoTbMpMpO73lblbtBKxudQPs/0/da"><img src="http://feedads.g.doubleclick.net/~a/YFhsoTbMpMpO73lblbtBKxudQPs/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/YFhsoTbMpMpO73lblbtBKxudQPs/1/da"><img src="http://feedads.g.doubleclick.net/~a/YFhsoTbMpMpO73lblbtBKxudQPs/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=a2h7v5Fwt8Y:XpvbybXcwoI:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=a2h7v5Fwt8Y:XpvbybXcwoI:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=a2h7v5Fwt8Y:XpvbybXcwoI:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=a2h7v5Fwt8Y:XpvbybXcwoI:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=a2h7v5Fwt8Y:XpvbybXcwoI:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=a2h7v5Fwt8Y:XpvbybXcwoI:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=a2h7v5Fwt8Y:XpvbybXcwoI:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=a2h7v5Fwt8Y:XpvbybXcwoI:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=a2h7v5Fwt8Y:XpvbybXcwoI:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=a2h7v5Fwt8Y:XpvbybXcwoI:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=a2h7v5Fwt8Y:XpvbybXcwoI:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=a2h7v5Fwt8Y:XpvbybXcwoI:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/a2h7v5Fwt8Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/21/why-plain-text/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/21/why-plain-text/</feedburner:origLink></item>
		<item>
		<title>Show Me Your Desktop</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/y8Hf0KIyxsM/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/18/show-me-your-desktop-4/#comments</comments>
		<pubDate>Fri, 18 May 2012 14:08:55 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=12089</guid>
		<description><![CDATA[Guess what time is it? It&#8217;s time to share your desktop wallpaper screenshots! Yes, it is a time honored tradition here at Terminally Incoherent. Every once in a while we all take screenshots of our desktop and share them with &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/18/show-me-your-desktop-4/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Guess what time is it? It&#8217;s time to share your desktop wallpaper screenshots! Yes, it is a time honored tradition here at Terminally Incoherent. Every once in a while we all take screenshots of our desktop and share them with the internet to see who has the coolest one. You might win, but I think I have pretty strong entries in this competition.</p>
<p>Once again, I don&#8217;t have an unifying theme across all my machines. I only managed to get that sort of coordination back in 2007 when I decided that I will have <a href="http://www.terminally-incoherent.com/blog/2007/01/10/show-me-your-desktop/" class="liinternal">Eva themed wallpapers on all machines</a>. In <a href="http://www.terminally-incoherent.com/blog/2008/06/12/show-me-your-desktop-2/" class="liinternal">2008</a> and <a href="http://www.terminally-incoherent.com/blog/2010/02/16/show-me-your-desktop-3/" class="liinternal">2010</a> my backgrounds had no connections.</p>
<p>First up is my Windows box on which I&#8217;m sort of continuing tradition of female robot backgrounds:</p>
<div class="wp-caption aligncenter" style="width: 650px"><a href="http://www.flickr.com/photos/maciak/7218627378/in/photostream/lightbox/" class="liimagelink"><img alt="Windows Wallpaper" src="http://farm8.staticflickr.com/7232/7218627378_3733bc5016_z.jpg" title="Windows Wallpaper" width="640" height="360" /></a><p class="wp-caption-text">Windows Wallpaper</p></div>
<p>The fact that you don&#8217;t see a lot of video game shortcuts on the desktop is because 90% of my games now launch via Steam. I even added my non-steam games there, so that I can have access to Steam overlay as I play. No seriously, Steam overlay is probably the best thing about PC gaming &#8211; a built in clock, a web browser, and quick screenshots with F12. I can&#8217;t play games without that shit anymore. But I digress.</p>
<p>Here is my Mac wallpaper:</p>
<div class="wp-caption aligncenter" style="width: 650px"><a href="http://www.flickr.com/photos/maciak/7218569314/in/photostream/lightbox/" class="liimagelink"><img alt="MBP Wallpaper" src="http://farm6.staticflickr.com/5460/7218569314_3a5e2316f6_z.jpg" title="MBP Wallpaper" width="640" height="400" /></a><p class="wp-caption-text">MBP Wallpaper</p></div>
<p>Nice, anime themed background &#8211; I have the same one on all desktops to keep it simple. I have no clue if this is from some movie, and I don&#8217;t particularly care. I randomly found it one day while browsing the web and it became my wallpaper.</p>
<p>Next up, my work laptop:</p>
<div class="wp-caption aligncenter" style="width: 650px"><a href="http://www.flickr.com/photos/maciak/7218679844/in/photostream/lightbox/" class="liimagelink"><img alt="Kubuntu Wallpaper" src="http://farm6.staticflickr.com/5462/7218679844_a123dcf809_z.jpg" title="Kubuntu Wallpaper" width="640" height="400" /></a><p class="wp-caption-text">Kubuntu Wallpaper</p></div>
<p>I tried to keep it neutral and work safe on this one &#8211; plain backgrounds, tame landscapes or fractal / abstract CGI art are my usual go-to backgrounds. But one day I found these two guys, and they have been my wallpaper ever since. Everyone at work seems to love them.</p>
<p>Finally, iPhone because it is also a computer:</p>
<div class="wp-caption aligncenter" style="width: 343px"><a href="http://www.flickr.com/photos/maciak/7218741722/in/photostream/lightbox/" class="liimagelink"><img alt="iPhone Wallpaper" src="http://farm6.staticflickr.com/5032/7218741722_1d8ef42489.jpg" title="iPhone Wallpaper" width="333" height="500" /></a><p class="wp-caption-text">iPhone Wallpaper</p></div>
<p>Orange, paint splash Half Life symbol. How can you go wrong with that?</p>
<p>Now it&#8217;s your turn. Take a screenshot of your desktop, or phone lock screen/wallpaper, upload it to <a href="http://imgur.com/" class="liexternal">Imgur</a> and post it in the comments. Note that comments with more than 3 links usually are automatically held for moderation, so if that happens to you don&#8217;t get annoyed.</p>
<p>Show me your desktop!</p>

<p><a href="http://feedads.g.doubleclick.net/~a/rzMnRqY0C-ncPPH5IRKyH_a-V2o/0/da"><img src="http://feedads.g.doubleclick.net/~a/rzMnRqY0C-ncPPH5IRKyH_a-V2o/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/rzMnRqY0C-ncPPH5IRKyH_a-V2o/1/da"><img src="http://feedads.g.doubleclick.net/~a/rzMnRqY0C-ncPPH5IRKyH_a-V2o/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=y8Hf0KIyxsM:29dvfwWWKBA:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=y8Hf0KIyxsM:29dvfwWWKBA:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=y8Hf0KIyxsM:29dvfwWWKBA:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=y8Hf0KIyxsM:29dvfwWWKBA:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=y8Hf0KIyxsM:29dvfwWWKBA:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=y8Hf0KIyxsM:29dvfwWWKBA:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=y8Hf0KIyxsM:29dvfwWWKBA:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=y8Hf0KIyxsM:29dvfwWWKBA:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=y8Hf0KIyxsM:29dvfwWWKBA:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=y8Hf0KIyxsM:29dvfwWWKBA:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=y8Hf0KIyxsM:29dvfwWWKBA:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=y8Hf0KIyxsM:29dvfwWWKBA:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/y8Hf0KIyxsM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/18/show-me-your-desktop-4/feed/</wfw:commentRss>
		<slash:comments>32</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/18/show-me-your-desktop-4/</feedburner:origLink></item>
		<item>
		<title>Avengers</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/jfR9May8Q84/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/16/avengers/#comments</comments>
		<pubDate>Wed, 16 May 2012 14:29:11 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[movies]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=12077</guid>
		<description><![CDATA[I have been waiting for this movie since 2009. Actually, scratch that &#8211; since 2007 and it was worth it. I don&#8217;t have to tell you that Marvel&#8217;s grand experiment in bringing the comic book shared continuity concept to the &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/16/avengers/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I have been waiting for this movie <a href="http://www.terminally-incoherent.com/blog/2009/10/22/solitary-superhero-syndrome/" class="liinternal">since 2009</a>. Actually, scratch that &#8211; <a href="http://www.terminally-incoherent.com/blog/2007/11/13/how-to-make-a-good-super-hero-movie/" class="liinternal">since 2007</a> and it was worth it. I don&#8217;t have to tell you that Marvel&#8217;s grand experiment in bringing the comic book shared continuity concept to the silver screen was an astounding success. The box office figures speak for themselves: it was the biggest opening weekend since forever. Not only that, the movie continues earning barrels of cash nearly two weeks after release. I went to see it last Saturday and luckily got ticked long in advance, because by the time we got to the theater all Avengers time slots were already sold out. This movie was a tremendous risk &#8211; if it bombed it could prematurely end the great superhero boom we are currently experiencing. Fortunately, the exact opposite happened: Avengers is a living proof that shared continuity superhero team-ups can, and do work. Not only that &#8211; they are the golden meal ticket that studios have been waiting for: a long running franchises that can be milked indefinitely, and which can amortize weaker movies by incorporating them into a grander over-arcing plots. It&#8217;s a magical formula for printing money &#8211; and good news for comic book nerds all over.</p>
<p>When Joss Whedon was announced as the mastermind behind this project, many people wondered if he can handle something of this magnitude. Can a guy mostly known for creating beloved, but unfortunately short lived TV shows carry the biggest and most important summer blockbuster in recent years? The answer is yes. Weedon was the best choice. The only choice. Having watched the movie, I do not think anyone else could have directed this film. Not only because he understands the genre &#8211; because he really does. When I was watching Avengers, I felt as if Whedon took <a href="http://www.terminally-incoherent.com/blog/2007/11/13/how-to-make-a-good-super-hero-movie/" class="liinternal">that itemized list I made in 2007</a> and nailed every single point on it. Hell, he did things I did not even think about back then. He clearly studied all the Marvel movie ventures to this date, and drew conclusions from their mistakes, electing not to repeat any of them. But that&#8217;s not the only reason why he was the best person to make this film.</p>
<p>Unlike most screen writers and directors that work on summer-time popcorn flicks, Joss understands characters. Avengers had to be about characters &#8211; the heroes had to have chemistry and work well together for this entire venture to work. You can&#8217;t just say they are a team &#8211; the audience has to see them become a team, and believe it. This is something Whedon does very well &#8211; all his creations to date had really great ensemble casts of characters, and most of them were telling character driven stories.</p>
<p>Most of the movies that led up to the Avengers were plot driven. Thor, Captain America and Hulk were all concerned with telling compelling stories. The heroes were there, mostly just tagging along for a ride &#8211; tugged along here or there as the plot demanded. Iron Man movies were a notable exception, mostly because they were Robert Downey Junior driven productions &#8211; half improvised, half adlibbed mess that was carried by the undeniable charm and personality of the leading man. The Avengers movie was different. Joss Whedon did not start with a plot &#8211; he started with characters.</p>
<div id="attachment_12081" class="wp-caption aligncenter" style="width: 442px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/the-avengers-poster.jpg" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/the-avengers-poster-432x640.jpg" alt="The Avengers" title="The Avengers" width="432" height="640" class="size-medium wp-image-12081" /></a><p class="wp-caption-text">The Avengers</p></div>
<p>All the members of the team are introduced, fleshed out, given motivation and the plot is more or less the function of the sum of their goals, motivations and personal agendas which collide and intersect with each other. Even though this is a movie about super-hero team-up, for most of the movie there is no team &#8211; just bunch of guys with bigger-than-life egos bickering about nonsense. But when they finally work out their differences and start working together, it does not feel forced or rushed.</p>
<p>Whedon understands the source material, and he seems to have a great feel for what the characters should be, and how they fit into the story. He carefully cherry picked what worked from each characters respective movie and dropped what did not. For example, Iron Man and Captain America are mostly intact &#8211; their characterization is consistent with what we had seen before. Thor and Hulk however have been revamped. </p>
<p>The former is no longer the brash, foolish, naive spoiled brat &#8211; he is more mature, wiser and more balanced and more responsible as you would expect from a god of thunder. This is a very welcome change &#8211; the child-like, infantile Thor was rather annoying, albeit necessary to tell the morality tale / coming of age story of his own movie. Now he is sent back to Earth as an adult, and a powerful agent and ambassador of his people. He is still proud and short tempered but no longer a fish out of water. Whedon gives him a new niche, as he chose to have the time-displaced Steve Rogers to play the &#8220;stranger in strange land&#8221; fiddle this time around.</p>
<p>Going into Avengers I was really expecting to see Thor and Tony Stark get in a pissing match, because the movie seemed to be only big enough for one dude with grossly overblown ego. But such a petty squabble turns out the be beneath Whedon&#8217;s much improved Thor. Instead Stark&#8217;s rampant individualism and egoism crashes with Steve Roger&#8217;s patriotic ideals and military discipline &#8211; a much more interesting conflict to watch.</p>
<p>The Hulk was rebuilt from ground up &#8211; it had to be, since Ed Norton did not come back to reprise his role as Bruce Banner. This actually turns out the be a good thing, as Mark Ruffalo&#8217;s interpretation is much more interesting. His Banner is much geekier and much more nuanced character. Norton&#8217;s character had a deer-in-headlights quality to him &#8211; he mostly reacted to plot cues, and came off a bit whiny. Ruffalo&#8217;s character is sharper and more confident. He is passive aggressive, manipulative, resentful &#8211; a polar opposite of Tony Stark, but at the same time his intellectual equal. What I liked the most about this character is that Ruffalo is able to play a laid back, goofy Banner while at the same time giving him this quiet undercurrent of soft boiling rage. He is a man balancing on the knife edge and fighting real hard to maintain his mellow demeanor against all odds.</p>
<p>When he turns into Hulk, he becomes an unstoppable force of nature. The big green guy has starred in several movies and TV shows up until now, but Whedon is the first director who has absolutely nailed the essence of this beast. The way he moves, the effortless way in which he smashes and dominates even the strongest opponents &#8211; this is the Hulk we have been waiting to see for years.</p>
<p>The difference between Joss Whedon and other directors who handled Marvel Properties is that he can take such non-characters as Scarlett Johanson&#8217;s Black Widow, and Jeremy Renner&#8217;s Hawkeye and turn them into fully fleshed out members of the team. Despite considerable amount of screen time in Iron Man 2, Johanson&#8217;s character was nothing more than eye candy. Whedon needs exactly 5 minutes to establish and build her up as a devious, manipulating super-spy with strong work ethic and personal goals and motivations. Her subplot non-pairing with fellow agent hawk-eye is refreshing, but at the same time very Whedonesque &#8211; they owe each other their lives, and they obviously have some history and some pent-up sexual tension but they do not immediately fall into each others arms, but instead opt for professional camaraderie.</p>
<p>Finally, Whedon has a knack for writing and directing villains that are goofy and bad-ass at the same time. Loki was a complete wuss, and a push-over on Thor. I just did not believe he could make a compelling villain in Avengers, but Joss pulled it off. He builds upon his characterization from the previous movie, but not without giving him a moment to shine. When Loki first appears, he instantly wipes out an entire room full of armed Shield agents without breaking a sweat, just to establish him as a credible threat. Next we see him take few pages from the Joker&#8217;s notebook, establishing himself as a complete and utter bastard who likes to play mind games with his victims. By the time the heroes get to fight him, the audiences already managed to forget how much of a pussy he was in Thor.</p>
<p>Whedon did an absolutely amazing job on this movie, and his cast delivered great performances each. Does this mean Avengers is a perfect movie? No, it&#8217;s not. At the end of the day, it is a silly summer popcorn flick. It is not high brow entertainment, but it is damn entertaining. In my honest opinion this is the best installment in the entire series. Better than The Incredible Hulk, better than Thor, better than Captain America and better than both Iron Man movies. This is how summer blockbusters ought to be done.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/AhxFKLnNoubRs9Gemoo0HHY5NeY/0/da"><img src="http://feedads.g.doubleclick.net/~a/AhxFKLnNoubRs9Gemoo0HHY5NeY/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/AhxFKLnNoubRs9Gemoo0HHY5NeY/1/da"><img src="http://feedads.g.doubleclick.net/~a/AhxFKLnNoubRs9Gemoo0HHY5NeY/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=jfR9May8Q84:ZUj0DUMvHI4:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=jfR9May8Q84:ZUj0DUMvHI4:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=jfR9May8Q84:ZUj0DUMvHI4:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=jfR9May8Q84:ZUj0DUMvHI4:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=jfR9May8Q84:ZUj0DUMvHI4:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=jfR9May8Q84:ZUj0DUMvHI4:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=jfR9May8Q84:ZUj0DUMvHI4:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=jfR9May8Q84:ZUj0DUMvHI4:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=jfR9May8Q84:ZUj0DUMvHI4:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=jfR9May8Q84:ZUj0DUMvHI4:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=jfR9May8Q84:ZUj0DUMvHI4:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=jfR9May8Q84:ZUj0DUMvHI4:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/jfR9May8Q84" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/16/avengers/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/16/avengers/</feedburner:origLink></item>
		<item>
		<title>Scripting Windows the Unix Way</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/_vOS2Xua8_g/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/14/scripting-windows-the-unix-way/#comments</comments>
		<pubDate>Mon, 14 May 2012 14:30:27 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[sysadmin notes]]></category>
		<category><![CDATA[windows]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=12050</guid>
		<description><![CDATA[Sometimes you gots to script windows. If it&#8217;s my personal rig I usually just use Cygwin because that&#8217;s where all the tools I need reside on Windows boxen. Either that or I just hack in Python which became my replacement &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/14/scripting-windows-the-unix-way/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Sometimes you <em>gots</em> to script windows. If it&#8217;s my personal rig I usually just use Cygwin because that&#8217;s where all the tools I need reside on Windows boxen. Either that or I just hack in Python which became my replacement for Perl after I went back and tried to read a 3 year old Perl script that broke. I know that code clarity depends on a programmer &#8211; and I&#8217;m very good at being sloppy in every language I know, but my shitty Python code is marginally more readable than my shitty Perl from that period in my life when I decided I&#8217;m really good at regular expressions.</p>
<p>But this is not about scripting for myself. This is about writing scripts that could possibly work on some limited range of machines that won&#8217;t have Perl, Python or Cygwin installed because they are operated by functional halfwits. More or less, the typical use case works like this &#8211; and end user walks in with a computer in tow and goes:</p>
<p><em>&#8220;Yo, my shit is all retarded.&#8221;</em></p>
<p>At that point your job is to un-retard his shit, whatever that might mean. Actually, what it usually means is that they changed, deleted or misplaced something. The usual procedure is to make them download and run bunch of installers, reset their home pages and re-jiggle their thingymabobs. This could be done by hand, but it is usually tedious. I have already <a href="http://sa.maciak.net/" class="liexternal">created a tool</a> that does a lot of such tedious work for me. While said tool became an indispensable asset for me, I try to keep it a generalized, all purpose tool &#8211; a Swiss Army Knife of sorts. I needed a set of specialized scripts that would parse, change, delete, download and run files to do some very specific tasks. Tasks that may periodically change &#8211; where periodically is defined as &#8220;more often than I would want to compile the damn code&#8221;. </p>
<p>Most of the time, you would probably do this sort of shit in VBScript. Before Powershell was a thing, VBScript was the go-to scripting language on Windows. It still is, seeing how it is not installed by default on Windows XP which is still on roughly half of the machines I have to deal with. The problem with VBScript is that it is a shitty language &#8211; and a verbose one too.</p>
<p>Let me give you an example &#8211; when I&#8217;m on Linux, Unix, Cygwin or a Mac, and I need to download a file from the interwebs, all I need to do is:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">wget</span> http:<span style="color: #000000; font-weight: bold;">//</span>example.com<span style="color: #000000; font-weight: bold;">/</span>somefile.zip</pre></div></div>

<p>In VBScript this is slightly more complicated:</p>

<div class="wp_syntax"><div class="code"><pre class="vb" style="font-family:monospace;">URL=<span style="color: #800000;">&quot;http://example.com/somefile.zip&quot;</span>
saveTo = <span style="color: #800000;">&quot;c:\some\folder\somefile.zip&quot;</span>
&nbsp;
<span style="color: #151B8D; font-weight: bold;">Set</span> objXMLHTTP = <span style="color: #E56717; font-weight: bold;">CreateObject</span>(<span style="color: #800000;">&quot;MSXML2.XMLHTTP&quot;</span>)
objXMLHTTP.<span style="color: #151B8D; font-weight: bold;">open</span> <span style="color: #800000;">&quot;GET&quot;</span>, URL, <span style="color: #00C2FF; font-weight: bold;">false</span>
objXMLHTTP.send()
&nbsp;
<span style="color: #8D38C9; font-weight: bold;">If</span> objXMLHTTP.Status = 200 <span style="color: #8D38C9; font-weight: bold;">Then</span>
   <span style="color: #151B8D; font-weight: bold;">Set</span> objADOStream = <span style="color: #E56717; font-weight: bold;">CreateObject</span>(<span style="color: #800000;">&quot;ADODB.Stream&quot;</span>)
   objADOStream.<span style="color: #151B8D; font-weight: bold;">Open</span>
   objADOStream.<span style="color: #151B8D; font-weight: bold;">Type</span> = 1 <span style="color: #008000;">'adTypeBinary
</span>
   objADOStream.Write objXMLHTTP.ResponseBody
   objADOStream.Position = 0 <span style="color: #008000;">'Set the stream position to the start
</span>
   <span style="color: #151B8D; font-weight: bold;">Set</span> objFSO = <span style="color: #E56717; font-weight: bold;">Createobject</span>(<span style="color: #800000;">&quot;Scripting.FileSystemObject&quot;</span>)
   <span style="color: #8D38C9; font-weight: bold;">If</span> objFSO.Fileexists(saveTo) <span style="color: #8D38C9; font-weight: bold;">Then</span> objFSO.DeleteFile saveTo
   <span style="color: #151B8D; font-weight: bold;">Set</span> objFSO = <span style="color: #00C2FF; font-weight: bold;">Nothing</span>
&nbsp;
   objADOStream.SaveToFile saveTo
   objADOStream.<span style="color: #8D38C9; font-weight: bold;">Close</span>
   <span style="color: #151B8D; font-weight: bold;">Set</span> objADOStream = <span style="color: #00C2FF; font-weight: bold;">Nothing</span>
<span style="color: #8D38C9; font-weight: bold;">End</span> <span style="color: #8D38C9; font-weight: bold;">if</span></pre></div></div>

<p>Or something along these lines. I actually did not test this &#8211; I shamelessly <a href="https://gist.github.com/2053179" class="liexternal">lifted the code from here</a>. I just don&#8217;t care enough to actually make sure it&#8217;s correct &#8211; if it&#8217;s wrong, then it&#8217;s wrong. Don&#8217;t use that code. I guess what I&#8217;m saying here is that VBS is a shitty general purpose programming language that can be used for scripting, but it ain&#8217;t pretty. It was designed by people and for people who thought that Visual Basic was a good idea and it shows. Unix shell on the other hand is an elegant command line environment with a smorgasbord of nifty tools that work beautifully out of the box. Tools that are self contained, mature, tested and follow the unix philosophy of doing just one thing, but doing it well. </p>
<p>While the script above may poorly imitate a fraction of functionality of wget, but is flimsy, ugly and pain in the ass to maintain. It may solve one problem (downloading files from the internet) but wget is not the only tool I would like to use on a daily basis. There is abut a dozen of other GNU utilities that I wold like to have on Windows: sed, grep, diff, patch, head, tail, touch &#8211; just to name a few. All extremely useful, all nontrivial to re-create functionality-wise in VBScript.</p>
<p>For example &#8211; why spend an hour fiddling with VBS string processing functions and end up with about a 100 lines of unspeakably ugly code (90% of which is boilerplate and padding) if you could write 4 regular expressions and feed them to sed to accomplish the same thing. Granted, regexps are unspeakably ugly in themselves most of the time, but it&#8217;s still 90% less ugly per volume if you think about it.</p>
<p>The standard windows scripting environment (cmd.exe) is less verbose and more like unix shell in some aspects. It&#8217;s unfortunate that it is hampered by it&#8217;s syntax, and a very limited set of utilites. Powershell is much better in this aspect, but it is both more verbose and vb like and not as ubiquitous.</p>
<p>If you could only somehow &#8220;borrow&#8221; bunch of GNU shell utilities and bundle them with your standard Windows batch scripts, you could actually have quite a powerful tool at your heads. And I&#8217;m not talking about Cygwin. Yes, it is nice but often you don&#8217;t want the whole kit and caboodle &#8211; a separate shell with it&#8217;s own set of environmental variables, it&#8217;s own filesystem hierarchy is an overkill for a lot of task. Ideally you&#8217;d just want cherry pick select utilities &#8211; for example, if your script only needs sed and wget, then you would only include these.</p>
<p>Some time ago, I have discovered an old, but still somewhat relevant project called <a href="http://unxutils.sourceforge.net/" class="liexternal">Unix Utils</a>. It&#8217;s aim is basically to create dependency free Windows ports of all the core Unix utilities. The package ships with a rudimentary shell (<samp>sh.exe</samp>) but the tools in the <samp>usr/local/wbin</samp> are actually completely portable. You can extract the entire package, take out <samp>wget.exe</samp>, drop it in the same directory as your batch script and it will work. </p>
<p>The downside of this method is that it creates dependencies for your script. If you distribute it via email, you need to include all the external GNU executables with it. This is a problem, since your average office drone can&#8217;t be trusted to properly extract a zip file. I tried &#8211; on average my users failed to unpack such a bundle 13 times out of 10. No it&#8217;s not a typo &#8211; that&#8217;s just how hard they failed.</p>
<p>Alas, there is a tool that can help with that. It&#8217;s called WinRar and everyone loves it. I know, because I once made a poll and <a href="http://www.terminally-incoherent.com/blog/2007/09/14/your-favorite-file-compression-tool-on-windows/" class="liinternal">WinRar kinda won</a>. WinRar is a neat compression tool, but it also has the ability to build so called SFX archives &#8211; self extracting bundles that can be instructed to run a program when they unravel themselves. You can do that directly from a GUI but it is tedious &#8211; a lot of clicking is involved. If you will be building and re-building your batch scripts a lot (and you will) you want something you can automate. Fortunately everything you need is in the WinRar program directory:</p>
<ul>
<li><samp>rar.exe</samp> &#8211; is a stand alone command line version of WinRar</li>
<li><samp>Default.SFX</samp> &#8211; is a binary header that gets appended to the self extracting archives</li>
</ul>
<p>You can grab those two files from the WinRar program directory and put them wherever. As long as both are in the same directory you don&#8217;t even need WinRar installed on the machine where you will be building the SFX bundle.</p>
<p>Next step is to create a config file <samp>sfx.conf</samp> where you specify where and how the bundle is to self extract. Here is an example:</p>

<div class="wp_syntax"><div class="code"><pre class="winbatch" style="font-family:monospace;">Path=<span style="color: #66cc66;">%</span>TEMP<span style="color: #66cc66;">%</span>
Setup=<span style="color: #66cc66;">%</span>TEMP<span style="color: #66cc66;">%</span>\somedir\batchscript.cmd
Silent=<span style="color: #cc66cc;">1</span>
Overwrite=<span style="color: #cc66cc;">1</span></pre></div></div>

<p>Quick explanations:</p>
<ul>
<li><samp>Path</samp> &#8211; is the directory where you want to extract your shit. I&#8217;m using the temp directory.</li>
<li><samp>Setup</samp> &#8211; is the program to be run after successful extraction. Note that I&#8217;m assuming that the bundle will extract to a sub-directory called somedir. </li>
<li><samp>Silent</samp> &#8211; setting this to 1 suppresses the GUI extraction dialog</li>
<li><samp>Overwrite</samp> &#8211; ensures that old files get overwritten as they are extracted</li>
</ul>
<p>Now, you put you batch script and all the things you want to bundle with it in <samp>somedir\</samp>. Outside you put <samp>rar.exe</samp>, <samp>Default.sfx</samp> and <samp>sfx.conf</samp>. Once everything is in place, you run this command (or, you know &#8211; make it a script):</p>

<div class="wp_syntax"><div class="code"><pre class="winbatch" style="font-family:monospace;">rar a <span style="color: #66cc66;">-</span>r <span style="color: #66cc66;">-</span>sfx <span style="color: #66cc66;">-</span>z<span style="color: #ff0000;">&quot;sfx.conf&quot;</span> setup.exe somedir\</pre></div></div>

<p>Boom, now you have an executable called <samp>setup.exe</samp> which will quietly self-extract to temp dir, and run your batch script allowing it to call any and all binaries you included with it.</p>
<p>You want a practical example where this might be useful? Here is a script that changes the home page in Chrome. Changing IE homepage is somewhat trivial &#8211; it requires a simple registry hack. Changing it in Chrome, after it was already installed and configured is a tiny bit more complex. Essentially you need to parse the users&#8217; <samp>Preferences</samp> file and change two values in it. This can be done in a number of ways, but being a unix geek I opted for something like this:</p>

<div class="wp_syntax"><div class="code"><pre class="winbatch" style="font-family:monospace;"><span style="color: #66cc66;">@</span>echo <span style="color: #0080FF; font-weight: bold;">off</span>
set ppath=<span style="color: #66cc66;">%</span>USERPROFILE<span style="color: #66cc66;">%</span>\Local Settings\Application Data\Google\Chrome\User Data\<span style="color: #0080FF; font-weight: bold;">Default</span>
sed <span style="color: #66cc66;">-</span>n <span style="color: #66cc66;">-</span>f chrome_homepage.sed <span style="color: #ff0000;">&quot;ppath%\Preferences&quot;</span> <span style="color: #66cc66;">&gt;</span> <span style="color: #ff0000;">&quot;%ppath%\Preferences.txt&quot;</span>
del <span style="color: #ff0000;">&quot;%ppath%\Preferences&quot;</span>
move <span style="color: #ff0000;">&quot;%ppath%\Preferences.txt&quot;</span> <span style="color: #ff0000;">&quot;%ffile%\Preferences&quot;</span></pre></div></div>

<p>Here is the Sed script that does the actual work:</p>

<div class="wp_syntax"><div class="code"><pre class="sed" style="font-family:monospace;">s#homepage\&quot;: \&quot;[^\&quot;]*#homepage\&quot;: \&quot;http://example.com#
s#homepage_is_newtabpage\&quot;: true#homepage_is_newtabpage\&quot;: false#</pre></div></div>

<p>If you are having trouble reading it it&#8217;s because I&#8217;m using hash-marks (#) instead of forward slashers as regexp delimiters to avoid the zigzagging pattern of escaped slashes that usually accompanies regexps that deal with URL&#8217;s. </p>
<p>My SFX archive then includes 3 files &#8211; the batch script, the sed script, and the sed.exe executable from UnixUtils project. The user gets a bundled executable that will briefly flash a command line window for a split second, and his home page will be auto-magically reset to the proper value.</p>
<p>Is this the best possible way of doing this? No, probably not. It&#8217;s rather unorthodox, and old time Windows admins will probably yell at me for doing this. But it works, and it does let me accomplish a lot of complex tasks using good old Unix functionality without having to bang my head against the wall debugging VBS code, or forcefully install Powershell on WinXP machines.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/9KHz9RAwtOhkgIodVSCXAJYnMKw/0/da"><img src="http://feedads.g.doubleclick.net/~a/9KHz9RAwtOhkgIodVSCXAJYnMKw/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/9KHz9RAwtOhkgIodVSCXAJYnMKw/1/da"><img src="http://feedads.g.doubleclick.net/~a/9KHz9RAwtOhkgIodVSCXAJYnMKw/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_vOS2Xua8_g:7Sd3zqPJAls:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=_vOS2Xua8_g:7Sd3zqPJAls:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_vOS2Xua8_g:7Sd3zqPJAls:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_vOS2Xua8_g:7Sd3zqPJAls:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_vOS2Xua8_g:7Sd3zqPJAls:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_vOS2Xua8_g:7Sd3zqPJAls:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=_vOS2Xua8_g:7Sd3zqPJAls:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_vOS2Xua8_g:7Sd3zqPJAls:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=_vOS2Xua8_g:7Sd3zqPJAls:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_vOS2Xua8_g:7Sd3zqPJAls:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_vOS2Xua8_g:7Sd3zqPJAls:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=_vOS2Xua8_g:7Sd3zqPJAls:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/_vOS2Xua8_g" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/14/scripting-windows-the-unix-way/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/14/scripting-windows-the-unix-way/</feedburner:origLink></item>
		<item>
		<title>Chronicle</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/_5h2SnuReaE/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/11/chronicle/#comments</comments>
		<pubDate>Fri, 11 May 2012 14:07:59 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[movies]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=11926</guid>
		<description><![CDATA[Over the last few years the phrase &#8220;found footage&#8221; became synonymous with &#8220;not very good at all&#8221; &#8211; especially in Hollywood. While there are some amateur projects framed around this paradigm that are surprisingly decent, big budget productions using it &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/11/chronicle/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Over the last few years the phrase &#8220;found footage&#8221; became synonymous with &#8220;not very good at all&#8221; &#8211; especially in Hollywood. While there are some amateur projects framed around this paradigm that are surprisingly decent, big budget productions using it tend to be miserable failures. Limiting yourself to a single camera and POV perspective is very limiting, too much shaky cam makes the audience sick, and directors too often rely on it as a crutch rather than an interesting storytelling device. </p>
<p>Chronicle does something unique with the medium. It steps away from the &#8220;single camera&#8221; approach and incorporates multiple points of view into their narrative. While they still maintain the &#8220;found footage&#8221; format, they sort of imply the footage was edited and spliced from many sources. So there are two camera toting characters, multiple shots taken from various security cameras, footage taken by by-standers and random passers by on their phones and iPads. Thus the title &#8211; the film you end up watching is essentially a chronicle of events that led to the rise of the downfall of the protagonists. This is a move in the right direction, and an I hope other people making find footage type features will take cue and incorporate this methodology into their work.</p>
<p>But Chronicle does more than that. Since it is a movie about bunch of kids who inexplicably gain awesome telekinetic powers, the camera does not need to be hand-held all the time. One of the three protagonists quickly learns to control his camera with his mind, giving it a very wide range of movement. Sometimes it floats over his shoulder, sometimes it moves away for wide panning shots, sometimes he floats it into the sky and shoots from above. In the incredible, action-packed finale he actually &#8220;force pulls&#8221; phones of bunch of bystanders in order to replace his lost camera. It is on of the first movies in quite a while that uses the find footage methodology in a clever and innovative way.</p>
<div id="attachment_11970" class="wp-caption aligncenter" style="width: 441px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/04/chronicleposter02.jpg" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/04/chronicleposter02-431x640.jpg" alt="Chronicle Movie Poster" title="Chronicle Movie Poster" width="431" height="640" class="size-medium wp-image-11970" /></a><p class="wp-caption-text">Chronicle Movie Poster</p></div>
<p>The story itself is quite decent. I have heard it described as a western take on Akira, minus the creepy progeria babies and the infamous human amoeba scene. And you know what? I would agree. It is a coming of age story about three high school kids that are suddenly transformed in some unknown, unexplained way into superheroes of sorts. At first they use their powers mostly for fun and mischief, but their strength and potential grows every day until it becomes too much to bear. Eventually one of the kids cracks under the pressure, and you get a finale very similar to that in Akira, prior to the transformation into the bloated, city consuming monstrosity.</p>
<p>The characters are likable, though a bit stereotypical. You got a star football player, an aloof cool kid and a nerd with an abusive father and a dying mother bonding together over a shared secret. You can figure out which one of them is going to do a face-heel-turn quite early on, but the journey there is still pretty well handled. The transformation of the subdued, shy introvert into an &#8220;apex predator&#8221;, force of nature grade super-villain is pretty fluid, and doesn&#8217;t seem forced or hammed in. It just works.</p>
<p>The film has some very good action scenes. The finale is possibly the most awesome super-powered battle I have seen on the silver screen yet, and Avengers will have to bend over backwards to top it. The found footage angle gives the movie a very intimate feel, which works very well considering the subject matter. When watching it, you feel that you are &#8220;in on the secret&#8221; and that you are really given a window into their private lives. It is one of the few features where this method of filming seems justified. It is a storytelling device rather than a gimmick or a crutch. Granted, it probably could have been shot in a more traditional way without sacrificing much of the story, the mood or the tone, but whatever. They used the medium well.</p>
<p>Is is worth watching? Yes it is. It is by no means a masterpiece, but it is a really cool take on the popular superhero genre. The premise is very close to the core concepts in Akira, and therefore the movie has a very solid backbone on which it builds an interesting story about three young men who gained powers they don&#8217;t know how to handle. Definitely check it out when you get a chance.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/7k2bleWX56cNM09t6H5lhpB0wbE/0/da"><img src="http://feedads.g.doubleclick.net/~a/7k2bleWX56cNM09t6H5lhpB0wbE/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/7k2bleWX56cNM09t6H5lhpB0wbE/1/da"><img src="http://feedads.g.doubleclick.net/~a/7k2bleWX56cNM09t6H5lhpB0wbE/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_5h2SnuReaE:MOME8PVL8OU:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=_5h2SnuReaE:MOME8PVL8OU:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_5h2SnuReaE:MOME8PVL8OU:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_5h2SnuReaE:MOME8PVL8OU:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_5h2SnuReaE:MOME8PVL8OU:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_5h2SnuReaE:MOME8PVL8OU:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=_5h2SnuReaE:MOME8PVL8OU:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_5h2SnuReaE:MOME8PVL8OU:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=_5h2SnuReaE:MOME8PVL8OU:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_5h2SnuReaE:MOME8PVL8OU:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=_5h2SnuReaE:MOME8PVL8OU:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=_5h2SnuReaE:MOME8PVL8OU:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/_5h2SnuReaE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/11/chronicle/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/11/chronicle/</feedburner:origLink></item>
		<item>
		<title>Phone Games</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/2UlCb2MOORI/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/09/phone-games/#comments</comments>
		<pubDate>Wed, 09 May 2012 14:05:04 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[video games]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=12000</guid>
		<description><![CDATA[I&#8217;m being a bit lazy today, so let&#8217;s talk about lazy time entertainment: cell phone games. I happen to own an iPhone so I will be discussing some of my favorite titles for that platform, but I don&#8217;t want to &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/09/phone-games/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m being a bit lazy today, so let&#8217;s talk about lazy time entertainment: cell phone games. I happen to own an iPhone so I will be discussing some of my favorite titles for that platform, but I don&#8217;t want to narrow the discussion just to iOS games. Android has a lot to offer in the gaming department too so if you would like to mention some &#8216;droid exclusive stuff in the comments please go ahead.</p>
<p>When discussing phone games, it is probably a good idea to keep in mind that these things are played differently than the PC or console equivalents. When I launch a game on my PC I usually expect to spend at least 2-3 hours playing it &#8211; sometimes even longer. Regular video games are played in long, uninterrupted sessions and are designed to hold the users attention for a while. This is not how I play games on the phone though. My phone is my distraction when I&#8217;m on the go. I don&#8217;t sit down to play a game on it &#8211; I play games on it when I&#8217;m bored, and I don&#8217;t have access to a real gaming machine &#8211; for example on a train, in a waiting room of some sort, etc. Phone games are played in short bursts &#8211; 10-15 minutes at a time. It is quite rare for me to waste more than 30 minutes on these things in a single sitting.</p>
<p>As a result, I find that iOS ports of PC style games don&#8217;t really appeal to me as much as they should. I downloaded a number old school, turn based RPG titles. I believe one of them was called Undercroft and looked quite promissing. Too bad, I never really got much further than the character creation screen. The gameplay was just too involved an I had no patience to put that much attention into a phone game. Same thing happened with a port of Sim City &#8211; I thought it would have been a fun distraction, but I hardly ever play it. It requires too much of a time investment to actually get a city going and I usually only have a few minutes to spare. </p>
<p>Even ports of games that can be played in bursts, like the new Street Fighter don&#8217;t do that well on the platform. While I love old school fighting games, I find it really difficult to play them with the fuzzy and inexact touch controls that offer no tactile feedback. Part of the joy of these games is nailing down the exact combo moves, and that&#8217;s more or less impossible on the iPhone &#8211; the controls were just never built for that kind of precision.</p>
<p>The platform lends itself more to puzzles and arcade style games with simple control schemes &#8211; time wasters, that were previously the exclusive domain of the Flash gaming scene. It&#8217;s sad but true.</p>
<p>Here are some of the games that do capture my attention and have held my interest for an extended period of time:</p>
<p><strong><a href="http://itunes.apple.com/us/app/dungeon-raid/id403090531?mt=8" class="liexternal">Dungeon Raid</a></strong></p>
<div id="attachment_12018" class="wp-caption alignleft" style="width: 330px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/dungeon_raid.jpg" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/dungeon_raid.jpg" alt="Dungeon Raid" title="Dungeon Raid" width="320" height="480" class="size-full wp-image-12018" /></a><p class="wp-caption-text">Dungeon Raid</p></div>
<p>On the surface Dungeon Raid is just a simple grid based connect puzzle. You basically match up items of the same type, and if you can draw an nu-interrupted line through them (like shown on the screenshot here) you eliminate these items and more tiles slide down from up above. This game however has an RPG twist. You have a hit point bar, and some tiles are monsters (skulls) that deal damage as long as they are on the board. They can be damaged themselves by matching them with sword tiles (more swords, more damage). The health potion tiles replenish your hit points, and coins can be used to purchase upgrades (progressively better armor, more damage, regeneration, etc..). Killing monsters also earns you experience points which can be used to purchase skills that let you do interesting stuff to the tiles (like damage all monsters at once, turn all swords to coins, etc..).</p>
<p>While the game play is really simple, the replay value is great since the skills that become available for purchase are randomized and you rarely end up with the same set forcing you to adopt different strategies on each run. The game also has unlockable classes that come with advantages and disadvantages that subtly influence game play.</p>
<p><strong><a href="http://itunes.apple.com/us/app/plants-vs.-zombies/id350642635?mt=8" class="liexternal">Plants vs Zombies</a></strong></p>
<p>Plants vs Zombies is a port of the popular console title that swept the world few years ago. I think it exists on just about every platform out there, and seems to provide the same amount of entertainment regardless of the control scheme or screen size.</p>
<div id="attachment_12022" class="wp-caption aligncenter" style="width: 490px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/plants_vs_zombies.jpg" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/plants_vs_zombies.jpg" alt="Plants vs Zombies" title="Plants vs Zombies" width="480" height="320" class="size-full wp-image-12022" /></a><p class="wp-caption-text">Plants vs Zombies</p></div>
<p>At the code it is a classic tower defense game. You plant different types of flowers and vegetables that shoot seeds, explode or block incoming waves of Zombies. Your mission is to prevent them from reaching the house on the far left side of the screen. The interesting part is that every few missions the game breaks up the flow by introducing a new game mode. So unlike say &#8220;Angry Birds&#8221; where you just launch birds all the times, in PvZ sometimes you play whack a mole round, a bowling round or a tower defense variant with added rules or restrictions. It keeps the game play fresh and makes you wonder what&#8217;s next.</p>
<p><strong><a href="http://itunes.apple.com/us/app/jetpack-joyride/id457446957?mt=8" class="liexternal">Jetpack Joyride</a></strong></p>
<p>Jetpack Joyride is one of the many &#8220;endless runner&#8221; titles. Your character simply runs to the right, and your job is to avoid obstacles by tapping the screen to jump (or in this case activate the jet pack). I usually hate these sort of games, because they get old very quickly. Since there is no way to save progress and the game is designed to make you die and start over a lot, you end up running through the same beginning section of the game all the time &#8211; it becomes tedious and pointless after a while.</p>
<p>Jetpack Joyride creators were aware of this, and they built their game around this concept. The backdrops for your runs and obstacle/powerup placements are randomized so that no two runs look or feel the same. Furthermore, the game does not focus on how far can you get but what you do as you run. The game basically gives you achievement style challenges &#8211; like high fiving scientists, surviving set amount of time inside a vehicle, dying at a predefined spot, flying really close to obstacles and etc. You get actual rewards for these tasks, whereas there is no rewards for distance (it&#8217;s just good for bragging rights). As a result, 90% of the time you don&#8217;t care about your distance, or the fact you just died because you are trying to achieve one of these goals &#8211; alleviating a lot of frustration involved with these sort of games.</p>
<p>This video does a good job showing off the gameplay:</p>
<p><iframe width="640" height="360" src="http://www.youtube.com/embed/ZGxIpzzLo4k" frameborder="0" allowfullscreen></iframe></p>
<p>As you can see there is more to it than just running. The coins you collect can be spent in the in-game store to purchase items such as new jetpacks, or power-ups (like Air-Barrys sneakers that give you a jump ability which lifts you into the air faster than the jetpack). It also involves a slot machine mechanic that makes it possible to win extra power-ups, coins, or even bring you back to life and let you continue running.</p>
<p>The sheer amount of available items, bonuses and power-ups, combined with the fun and varied challenge system gives this game an incredible re-play value. Even though you keep doing the same things, it does not get old for a while. Another nice thing is that while the game is a freemium title, it really does not try to force you to purchase anything. All the rewards can be earned through game-play and while you can buy coins for real world money, the game does not try to force that option on you.</p>
<p><strong><a href="http://itunes.apple.com/us/app/draw-something-free/id488628250?mt=8" class="liexternal">Draw Something</a></strong></p>
<p>Draw Something is just about the only one of the &#8220;social&#8221; type games I enjoy these days. I guess it&#8217;s because it fosters creativity. It is essentially a variant on pictionary &#8211; you draw something, and the other person must guess it. It is really best played against someone you know so you can both laugh at the crude stick figure drawings you make, or give each other props when you come up with a clever way to draw some difficult word. It also helps that both players share the same frame of reference, know the same memes and like similar things. It is a great fun little way to share inside jokes and such. Playing with strangers (while possible through the in-game player matching feature) does not have the same appeal.</p>
<div id="attachment_12024" class="wp-caption aligncenter" style="width: 410px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/draw_something.jpg" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/draw_something.jpg" alt="Draw Something" title="Draw Something" width="400" height="533" class="size-full wp-image-12024" /></a><p class="wp-caption-text">Draw Something</p></div>
<p>Guessing correctly earns you coins which can be redeemed for additional colors for your color palette, or bombs that let you swap out words, or destroy letters making your guessing easier. Its not much, but I think the replay value stems from the social interaction between you and the other players rather than from the built in reward system. I like that the game is quite open ended and gives a lot of control to the player. It is entirely possible to cheat by simply just spelling out the words, but hardly anyone ever does. And I guess that says something.</p>
<h3>In Conclusion</h3>
<p>It seems that all the games I seem to enjoy have a few things in common:</p>
<ol>
<li>They can be played in short bursts</li>
<li>They have varied game play that breaks up the monotony by changing things up</li>
<li>There is some sort of progression (power-ups, items, upgrades) that does not require real-world buy-in</li>
<li>Offer great replay value</li>
</ol>
<p>I think these are the key design items for phone games. What sort of games do you like? Am I missing some really good games? Is your list of things you look for in a phone game different from mine? Let me know in the comments.</p>

<p><a href="http://feedads.g.doubleclick.net/~a/qUORLOxBaxbosYzqetOcWd91s6E/0/da"><img src="http://feedads.g.doubleclick.net/~a/qUORLOxBaxbosYzqetOcWd91s6E/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/qUORLOxBaxbosYzqetOcWd91s6E/1/da"><img src="http://feedads.g.doubleclick.net/~a/qUORLOxBaxbosYzqetOcWd91s6E/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=2UlCb2MOORI:3npTSEGrino:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=2UlCb2MOORI:3npTSEGrino:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=2UlCb2MOORI:3npTSEGrino:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=2UlCb2MOORI:3npTSEGrino:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=2UlCb2MOORI:3npTSEGrino:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=2UlCb2MOORI:3npTSEGrino:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=2UlCb2MOORI:3npTSEGrino:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=2UlCb2MOORI:3npTSEGrino:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=2UlCb2MOORI:3npTSEGrino:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=2UlCb2MOORI:3npTSEGrino:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=2UlCb2MOORI:3npTSEGrino:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=2UlCb2MOORI:3npTSEGrino:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/2UlCb2MOORI" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/09/phone-games/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/09/phone-games/</feedburner:origLink></item>
		<item>
		<title>The Plight of a Git Newb</title>
		<link>http://feedproxy.google.com/~r/TerminallyIncoherent/~3/4v79HJO3jsM/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/07/the-plight-of-a-git-newb/#comments</comments>
		<pubDate>Mon, 07 May 2012 14:04:14 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[git]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=11991</guid>
		<description><![CDATA[Last week Shamus Young has decided to open source his excellent proof of concept, procedural world generation project codenamed &#8220;Frontier&#8221;. This is actually quite exciting as there is a possibility that someone will clean it up, and manage to tweak &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/07/the-plight-of-a-git-newb/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Last week Shamus Young has <a href="http://www.shamusyoung.com/twentysidedtale/?p=15808" class="liexternal">decided to open source</a> his excellent proof of concept, procedural world generation project codenamed &#8220;Frontier&#8221;. This is actually quite exciting as there is a possibility that someone will clean it up, and manage to tweak it into something with actual game-play. This is not what I wanted to talk about though &#8211; I wanted to talk about <a href="http://www.shamusyoung.com/twentysidedtale/?p=15796" class="liexternal">what happened immediately before this event</a>.</p>
<p>Shamus asked the community where they would like the project to be hosted. The answer was a no-brainer &#8211; everyone in the comments agreed that Gitghub was beyond a shadow of doubt the best place to put it. And so, Shamus downloaded git and attempted to get the project under source control and out on the web. And then this happened:</p>
<blockquote><p>Created an account. Created a repository. Installed Git locally. Followed the directions to set up git locally, which includes typing stuff into a Linux shell, which is trivial if you know what you’re doing and utterly, utterly mysterious if you don’t. Created ssh key. Set up a local repository. Added files meticulously one at a time from a list of hundreds of files because the Git GUI just lists all files and I don’t see how to filter for JUST source files. I hit commit and… nothing showed up.</p></blockquote>
<p>His mounting frustration very apparent, and I know exactly what he is experiencing. This was more or less my first encounter with git too. It is not straightforward. Github is not helping either, because it does not tell you that you can bypass the ssh key requirements by simply using <samp>https://</samp> instead of <samp>git://</samp> when setting up the remote repository. If you plan to be using git and github a lot, then generating and uploading the ssh key is definitely a good idea. But for a one-off project like this, it is a lot of unnecessary hassle and a significant hurdle for new users to overcome.</p>
<p>There is another significant issue at play here &#8211; Shamus, like many users new to distributed source control sees familiar words like &#8220;commit&#8221; and assumes they work the same as in centralized repositories. Naturally they do not, but it is sometimes difficult to ascertain that by glancing at the official docs. Because, you know that&#8217;s exactly what we all do when trying to get a new tool working. We glance at the docs, we we use them at all.</p>
<p>I remember my own confusion &#8211; when I was starting with Git, I wanted a quick and easy, one sentence explanation of what the fuck is the distributed thing all about, and how will it make my life difficult. </p>
<blockquote><p>This was supposed to be a quick &#038; easy thing, and I’m now 40 mins in, I’ve got Git infrastructure spewed all over my computer and I can’t get it to do this very simple thing. I’ve used source code control before, and it was always pretty straightforward. Even thirteen years ago, I never had to type crap into a console window to perform simple tasks. Is Git only for people who understand Linux? (The front end is all friendly and Windows-like, which is what led me to believe I’d be able to do this. If it started with a console window I would have realized this was for someone with a different skill set and looked elsewhere.)</p></blockquote>
<p>I can relate to this too. When I first installed Git on Windows I tried to use the default GUI. I say tried, because I have never actually managed to get anywhere with it. The UI is so obtuse, confusing and convoluted I could not wrap my head around it. Forget user-friendly &#8211; Git GUI is downright user-hostile.</p>
<p>Fortunately, I discovered <a href="http://code.google.com/p/tortoisegit/" class="liexternal">Tortoise Git</a> which works more or less the same as the SVN equivalent. So I was able to hobble along and sort-of use git (but not really) until I realized that it is much easier to use the command line version. Shamus was not so lucky &#8211; the UI defeated him. This was a complete usability failure.</p>
<p>Granted, part of the problem lies on the side of the user. Git was a tool made by Linux geeks, to solve an array of very complex issues involved in massive collaboration projects such as Linux kernel development. It was not made to be user friendly, forgiving and nice. It is a tool deeply rooted in the Unix philosophy and designed to be what a high end power tool is for a craftsman &#8211; a precise, powerful and flexible instrument that nevertheless requires some skill to use.</p>
<p>The lack of training wheels is more or less by design. You would not put training wheels and streamers on a racing bicycle, would you? It would defeat the purpose. For a tool such as git, the user is expected to put in some time and effort up-front to understand the tool, and then recoup that time in productivity later.</p>
<blockquote><p>I have no idea what Git wants or how it works. I don’t see ANYTHING that tells me how to push changes to the remote repository. If doing simple things like “submit changes” means using a terminal window, then… damn. What year is it? I know you Linux coders have a high tolerance for this sort of thing, but damn – there are better ways of using a computer these days. Case in point: If I had a menu, I would be able to work this out for myself.</p></blockquote>
<p>I have tremendous amount of respect for Shamus. His projects such as the Procedural City or Frontier are a standing body of evidence that he is a highly skilled, apt and capable individual. He failed not because of ignorance, but because he has mistaken a steep learning curve for bad design and called it quits early on. This is usually a good strategy &#8211; investing time and effort in learning a tedious, broken tool makes little or no sense. You spend a lot of time learning it up front, and then a lot of time fighting with it every time you need it to do something. It is a waste. </p>
<p>But, git is actually well designed and finely tuned tool. The crudeness of the Windows GUI is not really a problem with Git itself, but with the implementation of the Windows port. It does not condemn Git or Github. Unfortunately Shamus failed to look past that.</p>
<p>I agree that the default GUI in MySysGit is really atrocious. It also doesn&#8217;t help that a lot of official Git and Github documentation is overly dense and needlessly complex. Here is my attempt at an easy <em>from zero to github</em> primer for someone who just wants to set up a repository, push their project online and forget about it.</p>
<h3>Why Command Line</h3>
<p>Believe it or not, the command line is the most efficient way to communicate with your computer. It is the closest thing we have to actually talking with the machine, in the way that is exact and precise (and not fuzzy pattern matching like Siri does with speech). </p>
<p>When you are working on a command line, you issue precise directives, whereas a GUI is like a big menu board from which you pick your options. That board has to be designed for each application, and feature every possible option, for every circumstances. If the GUI designer hides advanced options for the sake of simplicity, power users will loose productivity clicking extra things or opening extra dialogs impacting their productivity. If they show too many options, the interface might become to dense and to difficult to navigate and use efficiently. Command line programs usually have sane defaults and then use arguments for extra stuff. So if you need more options, you just type more &#8211; and you only include as many as you need. You work at your own comfort level.</p>
<p>With Git, you will need to memorize about five basic commands which will cover 90% of the things you will be doing on a daily basis. The remaining 10% comes into play when you want better organization, when you mess up, or when you try to merge things that were not designed to be merged. In those situations things get hairy and ugly whether you use a GUI or CLI so it really makes no difference. In my experience GUI&#8217;s tend to exacerbate and obfuscate these sort of issues more than they help.</p>
<p>If you don&#8217;t believe me, go download <a href="http://code.google.com/p/tortoisegit/" class="liexternal">Tortoise Git</a> and use that. It&#8217;s much better than the default GUI of MySysGit. But keep in mind it is a crutch.</p>
<h3>How Git Works</h3>
<p>If you have ever used a centralized source control such as Subversion, you are probably used to something like this:</p>
<div id="attachment_11996" class="wp-caption aligncenter" style="width: 583px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/repository-standard.png" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/repository-standard.png" alt="Centralized Source Control" title="Centralized Source Control" width="573" height="419" class="size-full wp-image-11996" /></a><p class="wp-caption-text">Centralized Source Control</p></div>
<p>Everyone shares the same central remote repository. People check out code, modify it on their computer, an then check it back in. When you are working alone, this usually works quite well. If you work with bunch of other people, the code they check in, may conflict with your changes. When that happens things get hairy and you (or the project maintainer) will need to massage the code from both sides to make it fit before it can be committed and saved. </p>
<p>This is a big issue on large open source projects where a ugly merge can prevent everyone from checking code in. While it can be alleviated to a degree by use of tags and branches it never really goes away.</p>
<p>Git (as well as Mercurial and other distributed source control tools) were designed to resolve this issue by designing the system like this:</p>
<div id="attachment_11997" class="wp-caption aligncenter" style="width: 650px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/repository-git.png" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/05/repository-git-640x459.png" alt="Distributed Source Control" title="Distributed Source Control" width="640" height="459" class="size-medium wp-image-11997" /></a><p class="wp-caption-text">Distributed Source Control</p></div>
<p>This is sort of how Github works. Everyone has their own public repository on Github. If you want to collaborate on a project, you &#8220;fork&#8221; it and you get your own, personal copy. But you don&#8217;t usually check code into the online public repository like in centralized systems.</p>
<p>Instead you make another private repository locally on your computer which is an exact clone of the public GitHub one. Then you modify and check in your code into that one. Then at the end of the day you can sync the changes to your public one by issuing a &#8220;push&#8221; command. Your work does not touch the original repository that you forked. But the owner of that repository can &#8220;pull&#8221; in your changes at any time. Then it is up to them to deal with merge disasters.</p>
<p>This is the beauty of distributed source control &#8211; you never need to worry about conflicts, unless you want to, and said conflicts will never prevent other people from working.</p>
<h3>From Zero to Github in 5 Steps</h3>
<p>Earlier I mentioned that there are 5 git commands you need to learn to get your project onto Github. I was not joking. Let me put my money where my mouth is and prove this:</p>
<p><strong>Step 1: Create a Local Repository</strong></p>
<p>You start by opening the shell and navigating to your project folder. On Windows you can just right-click on that folder and choose <em>&#8220;Git Bash Here&#8221;</em>. Then you type in:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> init</pre></div></div>

<p>Boom, now your folder is a git repository. Yes, it&#8217;s that easy.</p>
<p><strong>Step 2: Add Files</strong></p>
<p>Next thing is to tell git what files you want to be committed:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> add .</pre></div></div>

<p>This will put <em>all</em> the files in the folder under source control. You can also add files one at a time (by replacing the dot with a file name) or use wildcards (eg. *.cpp, or *.py). </p>
<p><strong>Step 3: Commit Added Files</strong></p>
<p>Now we commit our changes into the local repository:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;First commit&quot;</span></pre></div></div>

<p>Note that Nothing goes to Github yet. Your changes can&#8217;t be seen by others. But you just made a snapshot of your code. You can easily roll back to this state at a later point and etc. </p>
<p><strong>Step 4: Add a Remote Repository</strong></p>
<p>This is the point where you go to Github and create yourself a project. then you do this:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> remote add origin https:<span style="color: #000000; font-weight: bold;">//</span>GitHubUsername<span style="color: #000000; font-weight: bold;">@</span>github.com<span style="color: #000000; font-weight: bold;">/</span>GithubUsername<span style="color: #000000; font-weight: bold;">/</span>Your-Project-Name.git</pre></div></div>

<p>This basically telling git <em>“Yo, git – I want you to become aware of a remote repository on Github, which I will from now on refer to as &#8216;origin&#8217; and it’s located at this address”</em>. You notice I used the https rather than git: or ssh: address. Why? Because this is easier – you don’t have to mess around with keys this way. Git will simply ask you for a password when you “push” to github.</p>
<p>Note that I used <samp>https://</samp> and not <samp>git://</samp> like Github recommends. Why? Because this lets you bypass all the ssh key steps. What ssh key steps? Don&#8217;t worry about them. That&#8217;s my point &#8211; for now you don&#8217;t have to. Git will just prompt you for your GitHub password when it needs to authenticate and it is good enough for now.</p>
<p><strong>Step 5: Push</strong></p>
<p>Now, lets actually upload (or &#8220;push&#8221;) your code to Github:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> push origin master</pre></div></div>

<p>Master is the name of the branch – the default one is always master, unless you have changed it. Origin is the nickname we gave to your repository in the last command. If everything worked correctly, you should see your files show up on Github. </p>
<p>Good news: we are done. Yep, that&#8217;s it. All it took was five commands and your code is under source control, and published on Github. You can usually accomplish this entire sequence in about a minute. </p>
<p>If you make changes to your code, and want to update the GitHub repository at a later time you just go back and re-use 3 of the commands you already know:</p>

<div class="wp_syntax"><div class="code"><pre class="bash" style="font-family:monospace;"><span style="color: #c20cb9; font-weight: bold;">git</span> add .
<span style="color: #c20cb9; font-weight: bold;">git</span> commit <span style="color: #660033;">-m</span> <span style="color: #ff0000;">&quot;I made changes&quot;</span>
<span style="color: #c20cb9; font-weight: bold;">git</span> push origin master</pre></div></div>

<p>That&#8217;s it. That&#8217;s all you need to know to get started. Of course there is much more to Git than this &#8211; but you can pick up all the other useful commands later on (or not, if you don&#8217;t plan to use git often). Here is my <a href="https://gist.github.com/1584387" class="liexternal">personal cheat-sheet</a> that includes the stuff I tend to use often.</p>
<h3>In Conclusion</h3>
<p>Command line is not scary. It only looks scary and intimidating because it is empty, and you can&#8217;t just intuit your way around it and wing. Source control is probably one of these things you don&#8217;t necessarily want to &#8220;wing&#8221; though. So perhaps it is for the best. Still, once you overcome the fear of the shell, you can create a repository and get it deployed in about a minute or two with five easy commands. It is not difficult &#8211; it&#8217;s just not trivial.</p>
<p>Seasoned git users &#8211; would you add anything to my list? What would be the sixth command you need to know right away? Remember to keep it simple for newbs. And don&#8217;t say rebase, because I don&#8217;t think someone like Shamus would have any need for it at first.</p>
<p>Do you sympathize with Shamus and his Git issues? Did you go through a similar phase when you first started using git? How did you overcome it? What made it all click and fall into place for you? Do you use a GUI, and if so, which one?</p>

<p><a href="http://feedads.g.doubleclick.net/~a/cFDQ9YdYwCowmwQ18iR1qjZr7zQ/0/da"><img src="http://feedads.g.doubleclick.net/~a/cFDQ9YdYwCowmwQ18iR1qjZr7zQ/0/di" border="0" ismap="true"></img></a><br/>
<a href="http://feedads.g.doubleclick.net/~a/cFDQ9YdYwCowmwQ18iR1qjZr7zQ/1/da"><img src="http://feedads.g.doubleclick.net/~a/cFDQ9YdYwCowmwQ18iR1qjZr7zQ/1/di" border="0" ismap="true"></img></a></p><div class="feedflare">
<a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=4v79HJO3jsM:wAowZXK-f8Q:D7DqB2pKExk"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=4v79HJO3jsM:wAowZXK-f8Q:D7DqB2pKExk" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=4v79HJO3jsM:wAowZXK-f8Q:ANkz6nJbUoM"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=ANkz6nJbUoM" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=4v79HJO3jsM:wAowZXK-f8Q:dnMXMwOfBR0"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=dnMXMwOfBR0" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=4v79HJO3jsM:wAowZXK-f8Q:yIl2AUoC8zA"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=yIl2AUoC8zA" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=4v79HJO3jsM:wAowZXK-f8Q:F7zBnMyn0Lo"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=4v79HJO3jsM:wAowZXK-f8Q:F7zBnMyn0Lo" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=4v79HJO3jsM:wAowZXK-f8Q:V_sGLiPBpWU"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=4v79HJO3jsM:wAowZXK-f8Q:V_sGLiPBpWU" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=4v79HJO3jsM:wAowZXK-f8Q:qj6IDK7rITs"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?d=qj6IDK7rITs" border="0"></img></a> <a href="http://feeds.feedburner.com/~ff/TerminallyIncoherent?a=4v79HJO3jsM:wAowZXK-f8Q:gIN9vFwOqvQ"><img src="http://feeds.feedburner.com/~ff/TerminallyIncoherent?i=4v79HJO3jsM:wAowZXK-f8Q:gIN9vFwOqvQ" border="0"></img></a>
</div><img src="http://feeds.feedburner.com/~r/TerminallyIncoherent/~4/4v79HJO3jsM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/07/the-plight-of-a-git-newb/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://www.terminally-incoherent.com/blog/2012/05/07/the-plight-of-a-git-newb/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 2.220 seconds. --><!-- Cached page generated by WP-Super-Cache on 2012-05-28 11:27:24 --><!-- Compression = gzip -->

