<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Terminally Incoherent</title>
	<atom:link href="http://www.terminally-incoherent.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.terminally-incoherent.com/blog</link>
	<description>I will not fix your computer.</description>
	<lastBuildDate>Wed, 16 May 2012 15:43:32 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Avengers</title>
		<link>http://www.terminally-incoherent.com/blog/2012/05/16/avengers/</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>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/16/avengers/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Scripting Windows the Unix Way</title>
		<link>http://www.terminally-incoherent.com/blog/2012/05/14/scripting-windows-the-unix-way/</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>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/14/scripting-windows-the-unix-way/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Chronicle</title>
		<link>http://www.terminally-incoherent.com/blog/2012/05/11/chronicle/</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>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/11/chronicle/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Phone Games</title>
		<link>http://www.terminally-incoherent.com/blog/2012/05/09/phone-games/</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>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/09/phone-games/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>The Plight of a Git Newb</title>
		<link>http://www.terminally-incoherent.com/blog/2012/05/07/the-plight-of-a-git-newb/</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>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/07/the-plight-of-a-git-newb/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Inverted World by Christopher Priest</title>
		<link>http://www.terminally-incoherent.com/blog/2012/05/04/inverted-world-by-christopher-priest/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/04/inverted-world-by-christopher-priest/#comments</comments>
		<pubDate>Fri, 04 May 2012 14:34:34 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[literature]]></category>
		<category><![CDATA[review]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=11950</guid>
		<description><![CDATA[As much as I love hard SF, I must admit that it often does not age well. If you pick up a 20-30 year old science fiction book, you will often find it full of outdated notions, discredited scientific theories &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/04/inverted-world-by-christopher-priest/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As much as I love hard SF, I must admit that it often <a href="http://www.terminally-incoherent.com/blog/2011/12/26/timeless-books/" class="liinternal">does not age well</a>. If you pick up a 20-30 year old science fiction book, you will often find it full of outdated notions, discredited scientific theories sitting snugly along side thinly veiled racism, sexism or other -ism that might have once been but no longer is an accepted social norm. As opposed to fantasy, SF books often loose their value over time.</p>
<p>Inverted World by Christopher Priest is one of the books that has aged very well. It was written in 1974 but you wouldn&#8217;t really be able to tell this from the context. Why? Because the author chose to set the book in an odd, alternate and unfamiliar reality.</p>
<p>Picture a large mobile city, traveling on rails throughout some untamed wilderness. The inhabitants of the city spend most of their lives inside, and the only people allowed to leave are members of the five guilds that oversee the laying of the traction, track laying, surveying the surrounding terrain, bridge building and security. The guildsmen are sworn to secrecy upon the pain of death, and are not permitted to discuss the nature of the outside world with those who live within the city.</p>
<div id="attachment_11961" class="wp-caption aligncenter" style="width: 325px"><a href="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/04/inverted-world.jpg" class="liimagelink"><img src="http://www.terminally-incoherent.com/blog/wp-content/uploads/2012/04/inverted-world.jpg" alt="Inverted World: book cover" title="Inverted World: book cover" width="315" height="475" class="size-full wp-image-11961" /></a><p class="wp-caption-text">Inverted World: book cover</p></div>
<p>Why aren&#8217;t they allowed to talk about it? Well, perhaps it is because the outside world is strange. While the people of the city hail from Earth, the place where they currently live is elsewhere. And by elsewhere, I don&#8217;t actually mean another planet. By elsewhere I mean a completely different place that does not conform to the same laws of physics as our universe. Which is also the reason why the city must remain in constant motion. If it was ever to stop, and fall behind the schedule something terrible would happen.</p>
<p>The protagonist, Hellward Mann is a young guild apprentice who upon reaching adulthood has elected to join the Future Surveyors guild, in order to re-connect with his mysteriously aloof father before he succumbs to whatever lays ahead of the city and causes premature aging in all surveyors.</p>
<p>The novel is essentially Hellwards account of his apprenticeship. To become a full guild member he must work a period of time in each of the guilds and learn the inner workings of the city, and also the true nature of the world which is hidden from the other citizens. The guildsmen are not very big on &#8220;explaining&#8221; or &#8220;educating&#8221; but rather believe in learning from personal experiences. And so young Hellward is exposed to strange and unfamiliar world, full of things he does not understand. When he asks questions, he is told to be patient and wait which only makes him more and more frustrated.</p>
<p>He is not the only one. The inhabitants of the city are also tired of the secrecy. There is a movement that wants to abolish the guilds, and stop the city dead in its tracks, in the most literal way of that phrase. Hellward sympathizes with these notions, until he is sent with a mission &#8220;down past&#8221;. He is to travel 40 miles south of the city as one of the final stages of his training. Of course he never makes it that far, because it is physically impossible. He understands why the city must keep moving, why the guilds are structured the way they are, why the secrecy is needed.</p>
<p>When he returns to the city, he finds it besieged by hostile local tribes, on the brink of an internal revolt and the guild navigators mostly ignoring the internal and external strife preoccupied with something very, very worrisome the surveyors found ahead of the city. </p>
<p>The core concept around which the story is built is quite clever. Priest unveils it very slowly throughout the book, always dangling a promise of a reveal in front of the reader. The protagonist, bound by his responsibilities and his oaths is not very inquisitive himself. He patiently waits to learn more, confident all will be revealed to him eventually. He is not keen on stepping out of the line. It wars remarkably well at pulling the reader along. You know that the guildsmen know the secrets of their world, so if you stick with Hellward Mann long enough, you will learn them too. </p>
<p>The final twist in the third act of the story is not much of a twist really. By that time you already have 90% of the information you need to piece things together. The techno babble on the last few pages that intends to justify some of the phenomenons is a bit redundant. But it doesn&#8217;t really spoil the book. While it sticks out a bit, it is not out of place. </p>
<p>It is one of these books that are better read cold. The more you know about it, the better. I think I already spoiled a few things in this very review, though probably not much more than what you would read on the back of the book blurb. It is really hard to review things like this &#8211; where the main mystery is also the main hook. </p>
<p>Inverted World is an old school hard SF, built around a cool idea. The book doesn&#8217;t really delve that much into the human condition, does not develop secondary characters or their relationships. It is mostly about Helward Mann being exposed to an odd, strange environment and trying to make sense of it without any foreknowledge or education about it. And as such it works &#8211; the setting is interesting, and bizarre enough to carry the novel.</p>
<p>The writing is semi-decent, but the narration is a bit inconsistent. The first few chapters have a first person, unreliable narrator, then the book jumps to a third person for a few chapters, then back to a first person. Then after focusing on Hellward Man for 90% of the story it jumps to a different point of view character near the end, only to come back to Mann shortly after. These narration changes are a bit jarring.</p>
<p>Apparently the author stitched this novel out of two short stories but did not bother to actually re-write them in order to achieve a consistent tone. This is never a good thing. I know I raged about this sort of thing quite hard when reviewing <a href="http://www.terminally-incoherent.com/blog/2011/11/18/tatja-grimms-world-by-vernor-vinge/" class="liinternal">Taja Grimm&#8217;s World</a> but in this book I&#8217;m actually willing to overlook it. Vinge really didn&#8217;t have much going for him in Taja, while Priest at the very least has a really intriguing SF idea.</p>
<p>If you like old school &#8220;let me build a story around this science idea I have&#8221; type stories, this is definitely a cool book to read. Personally I enjoyed it quite a bit. The style and tone has some problems, the characters are paper thin, and the ending is a bit weak, but overall it is quite interesting. If you can find it, definitely pick it up. I got mine used via Amazon. While it was in a good shape, the book did show it&#8217;s age &#8211; the pages were a bit yellowed and the book jacket was slightly worn. Which I guess added to the experience.</p>
<p>This is why I like dead trees as a medium. Old books have character. Reading a paper novel is a tactile experience. E-books to me seem less substantial, if that makes sense. Not that I hate E-books. Not at all. Hell, I was reading books on electronic devices before most of you youngsters even knew that books can come in an E variety. I think my <a href="http://www.terminally-incoherent.com/blog/2006/07/14/fixing-your-dell-axim-x5-pocket-pc/" class="liinternal">Dell Axim X5 Pocket PC</a> still has Starship Troopers, Ender&#8217;s Game and a whole collection of Cory Doctorow&#8217;s creative commons books in it&#8217;s memory.. Or maybe not &#8211; I actually haven&#8217;t used that device in years and it may no longer be operational. The point is, I do like E-books, I do see their value, and I actually wouldn&#8217;t mind owning a Kindle. It&#8217;s that there is something to be said for paper books.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/04/inverted-world-by-christopher-priest/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Is your teen browsing the pr0n?</title>
		<link>http://www.terminally-incoherent.com/blog/2012/05/02/is-your-teen-browsing-the-pr0n/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/05/02/is-your-teen-browsing-the-pr0n/#comments</comments>
		<pubDate>Wed, 02 May 2012 14:01:45 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=11980</guid>
		<description><![CDATA[An article by Matt Ryan titled How to Tell if Your Teen is Browsing Adult Sites popped up in my Google Plus stream the other day. I believe it was posted by Chris Perillo, and I found it to be &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/05/02/is-your-teen-browsing-the-pr0n/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>An article by Matt Ryan titled <a href="http://www.lockergnome.com/net/2012/05/01/how-to-tell-your-teen-is-browsing-adult-sites/" class="liexternal">How to Tell if Your Teen is Browsing Adult Sites</a> popped up in my Google Plus stream the other day. I believe it was posted by Chris Perillo, and I found it to be especially hilarious considering the content and the approach to the topic. Locker Gnome is usually a semi decent source of various technology tips and discussions and to see this sort of an article there gave me a pause. I would have more expected to see it in a more conservative publication such as &#8220;Prudish Prudence&#8217;s Properly Backwards Parenting Tips&#8221; or something like that.</p>
<p>I ask myself, who was this article targeted at? Was it aimed at the regular, more or less tech savvy, and fairly young readership of the site? Because the reaction from the readers was mostly cold. I saw bunch of rather articulate teens talking about parent-child relationship, the importance of trust and two sided dialog and various other mature arguments why interne spying on your teenage child is generally a lousy idea. The Google Plus comments on the other hand, mostly from older readers revolved around simple ways a tech-savvy teen could circumvent all the mentioned measures with little to no effort.</p>
<p>If the article was aimed at less tech savvy, older audiences then it is both too technical, and also full of bad advice. I wanted to take a few minutes of your time and poke at the holes in this article.</p>
<p>First off, let&#8217;s look at the title: how do you know if your teenage kids are browsing teh pornz? Well, there are easy steps to find out:</p>
<ol>
<li>Step the first: they are. Period. Full stop. End of list.</li>
</ol>
<p>There are no other steps. If your teenage kid has no interest in p0rn then you should probably pay attention, because it probably means they either are having a ridiculous amounts of awkward and likely unprotected sex in real life or have some sort of hormonal imbalance. I don&#8217;t know how old is Matt Ryan but it seems to me he has forgotten how it is to be a teenager. All of us were sailing the troubled rivers of puberty at one point or the other. When I was that age, I did not have free adult content available on the internet. I had to pay for my dirty magazines. Hell, I actually had to walk up to a store clerk, and brazenly ask for these magazines in person. Do you know how fucking difficult that is for a shy, introverted, socially awkward kid? But you know what, I still did it. If guilt, shame and lack of any kind of fake ID did not stop me from obtaining access to &#8220;age inappropriate materials&#8221;, then do you really think that a modern teenager is not going to take advantage from the wealth of free and easily accessible online adult content given half a chance?</p>
<p>Next Matt outlines signs and symptoms that your teenager might be up to something no good:</p>
<blockquote><p>Do They Browse the Web with the Door Closed? Closing the door provides a barrier that allows for plenty of warning before the contents of a computer screen might be discovered by parents or guardians. If the door can’t be locked, the mere act of closing it gives someone an extra second or two to react, switch or close windows, and situate ones self to avoid suspicion.</p></blockquote>
<p>I am not a parent, so maybe I am not being realistic here, however whenever parents ask me for tips on how to control their kids internet use the best advice I can give them is <em>&#8220;don&#8217;t give your kid a personal computer unless you think they can handle the internet&#8221;</em>. I usually recommend setting up a study area with one or two shared desktops the kids will have access to. This is where they will be doing their homeworks, online research, and recreational web browsing. Having them work in an area that is not their bedroom provides a structured environment and can help to create good study/work habits. I highly dislike the concept of a child doing homework curled up on their bed while watching Jersey Shore on TV, blasting loud music and texting friends. I&#8217;d prefer them to have a designated study area with proper computer desks. Granted, not everyone has space for this, but if you do &#8211; this is the way to go. You can arrange it in such a way that a parent, guardian or babysitter can always monitor online usage. It&#8217;s even better if you use the same study area to do your own work in the evenings &#8211; so you both monitor their usage, and also reinforce the purpose of the study area as the proper place to use a computer. Not only that, but it also lets you put definite boundaries on how much your kid spends online or on the computer in general.</p>
<p>The point is that if you have custom in your household that you don&#8217;t use computers in the bedrooms then, and you have designated quiet working area shared by all family members, your kids may not even consider asking for a private bedroom computer until they are much older.</p>
<p>This way you can safely let them close their bedroom doors sometimes so they can masturbate in peace. Cause they do that, you know. And you should talk to them about it too. And while you are at it, explain a thing or two about pr0n, objectification, and etc. You know, put it context. Also mention make sure they know about malware pr0n scams. I know, I know &#8211; this is America, kids are supposed to learn this from Uncle TV and Aunt Public Education &#8211; but I personally think that healthy dialog is the way to go. But I digress.</p>
<p>The point is that a teen desiring privacy in their bedroom is not necessarily a sign of nefarious conduct. It is natural to for kids to want and need more privacy and autonomy as they grow up. I think it is good idea to empower older teens by giving them a sense of control and a degree privacy &#8211; but that of course requires trust, and ongoing dialog.</p>
<blockquote><p>Have they Rearranged their Room so the Monitor Faces Away from the Door? If you decide to allow your teen to have an Internet connection in their room, have they arranged it so what they see can’t be seen by someone passing by? This is a common action taken by teens that don’t want their parents prying into their personal life, but it could also be a sign that they’re doing something that they might not want you to know about.</p></blockquote>
<p>This paragraph is so 90&#8242;s I&#8217;m getting prangs of nostalgia for the good old times. Once upon a time, teenagers had desktop computers in their room. These days the only teens that might still be using desktops are gamers, but most kids these days (and parents too) prefer cheaper consoles over super expensive gaming rigs. So here is a newsflash Matt: teens use laptops now. No need to re-arange the room. They can re-arange the computer instead.</p>
<blockquote><p>Do They Get Nervous and Uncomfortable When You Use Their Computer? (&#8230;) If you suspect that they are doing something they shouldn’t, but don’t want to outright accuse them, you could take a moment to “show them something” on their computer. Perhaps find a viral video or perhaps an informational website that you think might interest them. Go to their computer, while they are in their room, and pull that site up for them. Do they object to you using their system to pull up a website? If so, there might be more going on than they want you to know about.</p></blockquote>
<p>The problem with this point is that there are a lot of reasons why a teenager could be nervous about someone using their computer. If you don&#8217;t recall, when you are a teenager pretty much everything that happens in your life is serious fucking business. For a modern teenager their computer is their personal diary, the repository of their super secret love letters and incriminating, suggestive chat logs. A kid may not as much be concerned that you find some porn sites in their browser history, but that you might stumble onto the embarrassing love poem in their Gmail outbox. </p>
<p>I&#8217;m really not sure if Mr. Ryan has ever witnessed teenage girls sharing gossip on the phone, and how big of a deal it is for them if someone even appears to be eavesdropping on their &#8220;oh, so private&#8221; and so pedestrian, boring and infantile secrets.</p>
<p>Also, here is why I always hated when people used my computer: greasy fucking hands. It&#8217;s quite rude to demand that someone washes their hands before using your computer, but I personally never handle my computers (or any electronics) with unwashed paws. I never eat at my desk, and I never use hand lotions when I know I will be typing. Greasy keys are my is my pet peeve &#8211; I just can&#8217;t help it. So when someone is using y machine, all I can usually think about is how they did not wash their hands after dinner, or how I saw them applying that hand cream five minutes ago. So yeah &#8211; take that into account.</p>
<blockquote><p>Is Your Browser History Periodically Erased? Perhaps the most obvious sign that someone is using the computer to look at something unapproved is that your browser history is suddenly gone. Perhaps not entirely wiped out, but you know the teen has been on the computer for the last several hours and yet there is nothing in the history to indicate they’ve been anywhere at all.</p></blockquote>
<p>Here is the thing: there is no good reason not to browse the web in incognito mode. In fact, this is what I often teach my users: separate your social and casual browsing across multiple independent browser instances. Use one browser for all the tracking cookie happy social networks such as Facebook and Google, and then another separate browser in locked down privacy mode for casual and more adventurous browsing that you don&#8217;t want to be tracked. I would definitely want my kids to be privacy and security conscious. So for anyone who cares about online privacy, gaps or even a complete lack of browser history is not a red flag, but rather an indication that the kids are &#8220;doing it right&#8221; and have proper, privacy preserving browsing habits.</p>
<blockquote><p>Google Search History: Your teen probably has an account of their own, but there are times when Google search might be initiated through the browser without realizing that your account is still enabled. Take a moment to check your Google search history against what you actually search for. If you see some suspicious searches, it might raise an alarm for you.</p></blockquote>
<p>There is absolutely no good reason to ever have Google Search History enabled on any account. This should always be the first thing you disable when creating a new account, and also the first thing you teach your kids when you help them set up their Gmail. Because you as a parent are supposed to do that kind of things. You are also supposed to secure a domain name for your family so that your kids can have proper firsname@lastname.whatever emails so that they don&#8217;t look like idiots when they send out their first resumes to potential companies. It&#8217;s called thinking ahead.</p>
<blockquote><p>Keyloggers and Network Monitoring: I’m not a fan of keyloggers, but there are some applications out in the wild that will allow you to keep tabs on what your teen is typing into the keyboard. This could tell you where they are going without alerting them to your tracking.</p></blockquote>
<p>This is possibly the worst advice in the history of bad advice. Most of Lockergnome readers are probably knowledgeable enough to stay away from shady keylogger software. But the article seems to be a link-bait, posing as a general parenting resource. When you mention keylogging as a potential parental control avenue, but do not provide concrete links to &#8220;safe&#8221; and reputable software you are risking pointing clueless readers in the wrong direction. Saying &#8220;do your own research on keyloggers&#8221; is the absolutely wrong thing to do, because that&#8217;s what people will do. And then they will end up with bunch of trojan ridden, creadit card stealing malware on their systems. That&#8217;s more or less what you are going to get when you google for &#8220;keyloggers&#8221;. </p>
<p>If you didn&#8217;t bother doing any research on safe, secure and effective software in this category then I would recommend skipping it altogether. I tend to steer users that are really determined on monitoring unsupervised online usage towards more overt methods. Parental control products such as Norton Online Family have flexible content filters that can block or merely report usage based on url&#8217;s, search keywords and etc. Since these tools are not transparent to the end user, they also force the parent to have a conversation with their child with regards to why the monitoring software is installed, and what content it is reporting or blocking &#8211; which is definitely a good thing. Open conversation is always better than covert spying and springing accusations on unsuspecting teen.</p>
<p>If you use a covert keylogger, you have exactly one chance to catch your teen red handed. Once you spring your trap, they will know you are spying, and will take measures to counteract it. It is not a very effective way to handle things.</p>
<p>None of the advice given in the article clues in the unsuspecting parents onto the existence of live OS&#8217;s that can be booted from a CD or a thumb drive that allow bypassing any and all local software restrictions, and all local tracking. Nothing mentions filtering or tracking at the gateway rather than at the client. It also does not mention how difficult it would be to actually lock down a PC in such a way that a teenager would have to spend a considerable amount of time to crack it.</p>
<p>It also completely fails to mention that most teenagers &#8211; especially late teens tend to own smart phones these days. These devices give them uninhibited access to all the adult materials they can find online, and are much harder to control and monitor. Most parents don&#8217;t even realize how much porn can be watched on a simple internet enabled phone, or even on a wifi enabled iPad or iPod Touch. The fact that Apple prohibits adult apps from being sold in the App Store does not have any effect on thousands of html5 streaming sites that can be accessed via Safari.</p>
<p>In summary: Lockergnome &#8211; I am dissapoint.</p>
<p>The article is lazy, poorly researched, and full of outdated, and sometimes even misguiding advice. It steers people toward covert invigilation and baind-aid resolutions rather than opening communication channels, and working towards instilling responsible browsing habits in young children. Parenting in the information age is a very complex subject, and one that most parent centered publications tend to either avoid like plague, or to cover poorly. It is sad to see a somewhat reputable technology blog serve up advice that is not much better, and in places much worse than that. </p>
<p>The sad truth is that if you are a parent of a teenager, and you are just now realizing the need to monitor their browsing habits, you have likely missed the boat. Your kid is likely a seasoned pr0n connoisseur by now. This is not something you can download a patch for. Proper computer and internet usage instruction should be started early on. As they are beginning to learn to write, they should also be learning to touch type under your supervision. That&#8217;s also a good time to start educating them about dangers of the internet. It is also a good time to create a space in which they can explore and experiment with technology and the internet your personal supervision. It&#8217;s not just about monitoring, but about having control over how and when your kids can access technology and within what environment. I don&#8217;t think I am qualified enough to give credible advice here, but I know enough to point out bad advice when I see it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/05/02/is-your-teen-browsing-the-pr0n/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Future of the Desktop Market</title>
		<link>http://www.terminally-incoherent.com/blog/2012/04/30/future-of-the-desktop-market/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/04/30/future-of-the-desktop-market/#comments</comments>
		<pubDate>Mon, 30 Apr 2012 14:01:46 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[technology]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=11953</guid>
		<description><![CDATA[I mentioned this before: desktop computers are quickly becoming an endangered species seen only on corporate campuses. Laptops, which are still the mainstay of the industry are slowly losing ground to ultra-portable tablet devices. Everyone seems to agree that future &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/04/30/future-of-the-desktop-market/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I mentioned this before: desktop computers are quickly becoming an endangered species seen only on corporate campuses. Laptops, which are still the mainstay of the industry are slowly losing ground to ultra-portable tablet devices. Everyone seems to agree that future is mobile computing. We are boldly moving into a new era where consumer facing devices are portable, wearable and touch controlled &#8211; and era that some started to call &#8220;post-PC&#8221;.</p>
<p>Most of the big technology companies and movements see which way the wind blows and it is interesting to see how they are working to adapt to this new environment.</p>
<p>Apple, formerly always at the forefront of the revolutionary, paradigm breaking design (though now headless without Jobs at the helm) seems to have taken a measured approach. Their strategy is astonishingly simple and solid &#8211; they are going for slow, iterative convergence of all their product lines.</p>
<p>Basically, the folks working on the Apple laptops are basically making them thinner, more portable and more touch friendly. People working on tablets and phones are making them more powerful and more suited to real work (the new high-resolution displays on the new iPad are a step in that direction). The OSX is borrowing features from iOS and vice versa, but neither one is poised to lose stability, functionality or features because of this. The aim is to nudge all these products towards a shared set of common UI paradigms, but without making OSX into a tablet OS.</p>
<p>This is a conservative approach, but also an elegant and safe one. In a different climate you could perhaps fault apple for playing it too safe, but consider their competition.</p>
<p>Microsoft, in their typical manner went overboard. Most critics agree that Windows 8, in it&#8217;s current preview release state is a complete train wreck. In an attempt to build a competitive tablet OS Microsoft has completely broken the desktop. Most of the folks in the IT field I have spoken with say they won&#8217;t be rolling out this version. People are already joking about skipping Windows 8 completely, and waiting till Windows 9 comes around without the Metro nonsense baked into the core UI.</p>
<p>Regardless of what the Metro touch interface may do for home users, it is basically a nightmare for corporate clients. For decades now, Windows was essentially just a framework that allowed business customers to run Microsoft Office. Office is the life blood of the corporate world. I don&#8217;t know if you have ever tried getting in between an accountant and his Excel spreadsheet &#8211; my advice is: don&#8217;t.</p>
<p>Unfortunately, Microsoft Office can&#8217;t run in the new Metro interface. Upon launching Excel, users are unceremoniously dumped into the classic desktop mode. To launch new apps, or do other basic system maintenance tasks they must go back into Metro UI forcing them to make needless, uncomfortable, productivity killing and confusing context switches every couple of minutes. Not to mention that the Metro control paradigm that Windows 8 uses for everything (file browsing, app launching, configuration, web browsing) was never designed to be used with a mouse and keyboard.</p>
<p>You can probably see why IT departments view this as a huge usability problem. They are not the only ones either. A second huge demographics of traditional Windows users &#8211; PC gamers, are also concerned about the future of their preferred OS, and for the very same reason. Windows 8 UI was designed to directly compete with iOS in the tablet market, but ends up treating it&#8217;s core audiences as an afterthought.</p>
<p>Microsoft is shooting themselves in the foot by alienating their most loyal user base and industry insiders begin to feel this. Gabe Newell of Valve for example seems to be very critical of Windows 8, and his company is currently working to port <a href="http://www.phoronix.com/scan.php?page=article&#038;item=valve_linux_dampfnudeln" class="liexternal">Steam (their content delivery system) and Left 4 Dead 2 (one of their very popular games) to Linux</a>, just like they ported them to Mac before. </p>
<p>Valve is quite unique in their interest of alternate PC gaming platforms and the rest of the gaming industry seems to be firmly entrenched in the Windows camp. Still, it is quite interesting to see this development &#8211; a major company very seriously embracing an underdog OS is big news on the OS market. </p>
<p>There is <a href="http://www.extremetech.com/gaming/127475-valve-confirms-steam-and-source-for-linux-signals-low-confidence-for-windows-8" class="liexternal">some speculation</a> that Valve&#8217;s interest in Linux is related to their efforts to launch their own gaming platform. This makes a lot of sense &#8211; Valve is an incredibly successful at releasing and delivering PC games, but as I mentioned earlier we are in the waning years of the PC. So building a post-PC gaming platform makes sense &#8211; and using Linux as the core OS for said platform seems reasonable. If Valve could release a post-PC gaming platform that could run on open, extensible commodity hardware, use a free OS (with proprietary extensions) it could position itself quite well in the gaming market which right now is populated mostly by closed, stagnant gaming consoles and under-powered tablets that don&#8217;t support dedicated gaming controllers. </p>
<p>To me, the future of the desktop market looks very interesting. Microsoft is on the downward spiral. It has made a lot of bad choices in the recent years, and while Windows 8 is not going to sink them, it will probably give Apple a big boost in the desktop market. If I was Apple I would aggressively market OSX to all the users that will undoubtedly get burned by Windows 8 &#8211; and use the ability to run Microsoft Office without pain in the ass Metro context switching as a selling point.</p>
<p>Linux is poised to gain ground as well. And no, I don&#8217;t have illusions about it taking over the desktop market. But the amount of interest given to it by companies like Valve will certainly help. The great thing about Linux is that it does not need to pick a strategy. Linux will do what it has always done &#8211; grown and evolve in all directions at once. It will be all the things that people need it to be &#8211; desktop alternative, possibly a new gaming platform, and as always a rock solid sever OS.</p>
<p>What do you think? What are your predictions about the laptop/desktop market in the next few years?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/04/30/future-of-the-desktop-market/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>This is why we can&#8217;t have nice things &#8211; a response to Jeffrey McManus</title>
		<link>http://www.terminally-incoherent.com/blog/2012/04/27/this-is-why-we-cant-have-nice-things-a-response-to-jeffrey-mcmanus/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/04/27/this-is-why-we-cant-have-nice-things-a-response-to-jeffrey-mcmanus/#comments</comments>
		<pubDate>Fri, 27 Apr 2012 14:09:32 +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=11931</guid>
		<description><![CDATA[Some of you have probably heard about the University of Florida scandal by now. If not, here is a quick recap: they axed their Computer Science Department, fired everyone they could, publicly humiliated the tenured professors they couldn&#8217;t fire and &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/04/27/this-is-why-we-cant-have-nice-things-a-response-to-jeffrey-mcmanus/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Some of you have probably heard about the University of Florida scandal by now. If not, here is a quick recap: they axed their Computer Science Department, fired everyone they could, publicly humiliated the tenured professors they couldn&#8217;t fire and then transferred all the money that used to fund the department into their Football program. No, I am not exaggerating. I wish I was, but <a href="http://www.forbes.com/sites/stevensalzberg/2012/04/22/university-of-florida-eliminates-computer-science-department-increases-athletic-budgets-hmm/" class="liexternal">that&#8217;s exactly what happened</a>. As you can imagine, we were all really busy hating the U of F for this decision, and then a wild Jeffrey McManus appeared.</p>
<p>Jeffrey McManus is a Pokemon of the <em>Troll CEO</em> variety and he runs some sort of online learning program that bootstraps young programmers with some basic functional programming skills so that they can go into the corporate world and piss everyone off by using bubble sort for everything. Or something like that. I don&#8217;t really know, nor do I care. The point is that in order to promote his ventuee he made a delicious and relevant troll bait titled: <a href="http://blog.jeffreymcmanus.com/1924/more-universities-should-shut-down-their-computer-science-programs/" rel="nofollow" class="liexternal">More Universities Should Shut Down Their Computer Science Programs</a>.</p>
<p>Oh yes, he went there. And you know what? It worked. I bit the bait hard &#8211; I swallowed it hook, line and sinker. This is more or less an epic Dvorak style trolling and I fell for it and it&#8217;s too late to stop now. I started writing a response in his comment thread, but then realized it was long enough to be an entire blog post.</p>
<p>So here is my response. I know you shouldn&#8217;t feed the trolls but I just couldn&#8217;t resist. I put rel=nofollow on the link above, and I&#8217;m going to quote parts of his article below so you don&#8217;t even have to click on it, in an attempt to minimize the amount of Google juice he can get from me.</p>
<p>Let&#8217;s start at the top, and see what this guy has to say to support his outrageous claim:</p>
<blockquote><p>Most undergraduates and professionals actually want to learn applied software engineering, not “computer science”. Most companies want to hire college graduates who know applied software engineering. But most university CS programs don’t actually teach applied software engineering. This isn’t to say that CS isn’t useful or valuable (even to someone who goes on to become an applied software engineer). But the majority of university CS programs are oriented to training undergraduates to become either systems programmers or academic computer scientists. I’m going to go out on a limb and say this isn’t what most 18-year-olds who enter undergraduate CS programs actually want to do&#8230;</p></blockquote>
<p>I am going to go out on a limb and say that most 18-year-olds who enter undergraduate programs don&#8217;t actually want to learn calculus either. Or science for that matter. If I had a dime for every student I heard complaining about having to take &#8220;stupid math and science&#8221; classes I would have like a big jar of dimes.</p>
<p>By that logic, Math departments should not teach students calculus, differential equations and theory but instead focus on accounting and financial statistics. Actually, let&#8217;s close Math departments too, because Business School already does all that applied stuff. And then we can funnel all that money into Football (cause that&#8217;s what University of Florida did)!</p>
<p>I think Mr. McManus is mistaking what the purpose of a university is. If you want to learn a trade, you should go to a trade school. There are plenty of programs out there that teach applied software engineering and they don&#8217;t take 4 years, and do not come with a set of liberal arts requirements. The purpose of a liberal arts college education is to take an uncouth rube, and forcefully impart eye opening knowledge and culture into his or her frontal lobes. Once they are <em>knowledged up</em> and cultured enough, you help them focus their interest on one area of academic excellence. Or if you fail, and the <em>knowledging up</em> and culturing does not take root, you put them in the Business department which functions as a kidney of every university &#8211; it gather the academic refuse and salvages what it can before evacuating them into the world.</p>
<p>I&#8217;m not saying that universities should not offer courses that may help students find jobs in the industry. They should, and most are. It&#8217;s just that this is not a primary role of a university. Almost no BS or BA degree (other than Busness School degree &#8211; because, you know &#8211; kidney) guarantees you a job in your field. BS in Chemistry does not mean you are trained to be industrial chemist. A BS in Physics does not make you a rocket scientist. It only stands to reason not to expect a BS in Computer Science to make you a Software Engineer.</p>
<p>What a BS or BA really means is &#8220;you are certified to have a broad theoretical knowledge in this field&#8221;. You know a lot of theory, now you need to be trained to do a job. Why do companies hire students with CS for programming jobs? Because in theory, they ought to be easier to train to your specific purposes.</p>
<p>If someone goes to a trade school and learns to program in Java, he only knows how to program in Java. If someone gets a BS in Computer Science the expectation is that they not only know how to program, but also how to teach themselves a new language and possibly even how to write a domain specific language to resolve an particular issue. Not that this is often a good solution. The point is that when you hire a kid with CS degree the expectation is that they can grasp non trivial things easier than someone who just learned a trade.</p>
<p>For example, a CS graduate should be able to figure out that the proper way to sort products in the web store he is building for you is not by average rating, but by <a href="http://evanmiller.org/how-not-to-sort-by-average-rating.html" class="liexternal">Lower bound of Wilson score confidence interval for a Bernoulli parameter</a>. This is why CS is a science and why we make CS students take so much math. Because regardless of what people in the industry might say, that stuff is <strong>crucial</strong>.</p>
<blockquote><p>It should not be necessary for two universities located within commuting distance of each other to have the same academic department (this goes for any department, including English Literature as well as CS). To put this another way, wouldn’t it make more sense for UCLA and Cal State LA to have a single, combined computer science program that’s among the best in the country, instead of two mediocre computer science programs?</p></blockquote>
<p>And how do you propose to do that? How do we share resources between two competing universities? Who gets research grants? Who gets the prestige? How is that shared department managed? Which dean decides what curriculum is going to be taught? When a student takes a course, which university gets paid for it? Do they split it down the middle? How is grading handled?</p>
<p>Also, how do you expect students get from one campus to the other if they don&#8217;t have a car? Do you set up a shuttle service? Which university pays for the maintenance? Do you maybe have the professors drive between campuses instead?</p>
<p>Honestly, this is a logistics nightmare. This is one of those awesome ideas that sounds great until you spend 5 minutes to actually thing about it, only to realize it is not feasible without complete overhaul of the way both universities would be managed.</p>
<p>Unless of course Mr. McManus means it should be done the U of F way &#8211; fire or humiliate all the profs at university A, and force them to seek employment at university B thus &#8220;merging&#8221; the departments. But then you just funnel students to another university&#8230;</p>
<blockquote><p>Most university computer courses simply aren’t that good if your goal is to get a job doing applied software engineering. This is because the Ph.Ds who are teaching in these programs generally got their degrees from five to ten years ago at a minimum, when the tools and tactics for software engineering were very different. The industry simply changes faster than academia. Most (not all, but most) universities just can’t keep up with this pace of change using the standard administrative playbook. This isn’t a criticism of the smart, hard-working folks who work in our CS departments; it’s a criticism of the way their departments are organized.</p></blockquote>
<p>While this might be true, it does not mean we should start shutting down CS programs. Here is a newsflash: most universities have shitty departments. If you go to a university which does not focus, fund or care about CS then you will likely not get the best CS education. This is mostly common sense. Most universities have small, under-funded physics departments too. Should they close them as well? Oh wait, never mind. Physics degree does not teach you a trade, so of course it is useless in McManus&#8217; eyes.</p>
<p>You could of course ask what is the point of having a bunch of shitty departments instead of a few good ones. After all, no one who wants to study computer science would purposefully pick a university with a small, underfunded and poorly performing department, right? They would go to a reputable school that invests in CS.</p>
<p>See, the problem with this is that a lot of students don&#8217;t know what they want to study when they apply to colleges. Did you know what you wanted to do for the rest of your life when you were 17? I know I didn&#8217;t. I did not declare my major till the second semester of my junior year. I knew I liked technology, but I also liked science. I had as much fun in my Bio/Chem classes as I had in my programming ones. I also loved to write, and read. So my first two years in college I wavered between Biology, Computer Science and flirting with humanities. I could have went either of these ways.</p>
<p>That&#8217;s really the point of liberal arts education &#8211; your first few semesters you do an in-depth exploration of all the subjects that interest you and figure out what do you want to do for the rest of your life. And if you find something you really love, and your university has a shitty department in that field, you can always transfer to a different university with a stronger program in that direction after two years.</p>
<blockquote><p>University academic departments in general should have limited charters and should be reorganized frequently. (Again, not just CS departments, but all departments.) I spent nearly all of my undergraduate career working in academic administration, and I can say that academic departments exist mostly to protect resources (mostly money and people). They don’t really exist to serve students. One good example is cited in an awesome book on educational reform called Crisis on Campus by Columbia professor Mark Taylor: one of the most pressing problems that humanity has today is obtaining clean drinking water. Yet no university has a Department of Water. Why is this? Because campuses are an endless successions of zero-sum games: the formation of a new department necessarily means that resources must be taken away from existing departments, so existing departments viciously defend the status quo, even when that doesn’t align with reality. Computer science education has not been in alignment with reality in a long, long time.</p></blockquote>
<p>I&#8217;m sorry but &#8220;Department of Water&#8221; is one of the stupidest things I have ever heard in my life. Should we also have the Department of Soap? What is being proposed in this paragraph is a trade guild system, not an academic reform. McManus is essentially saying that we should identify external environmental issues and structure our education around them. So people would have degrees in Water Reclamation, Industrial Pollution Management, Food Shortages, Overpopulation, Solar Energy and Rodent Extermination. What a splendid idea.</p>
<p>Fuck math, science, arts and humanities &#8211; they haven&#8217;t been aligned with reality since Pythagorean times. From now on, we don&#8217;t teach Computer Science &#8211; we are the &#8220;Making Enterprise Server Side Applications using Java&#8221; department. Give me a break.</p>
<p>Once again, this was never, ever supposed to be a purpose of universities. Universities teach you liberal arts and the big picture stuff. They are not supposed to teach you how to solve specific existing problems, but how to identify, classify and approach problems and how to teach yourself new things in order to resolve them. Problems we see in the world right now, may no longer be problems in 4 years when the current batch of college graduates leaves the university seeking jobs. If we teach them only the things that are useful and relevant right now, then they will leave our establishment with a body of knowledge that is at least 4 years stale, if not more. This is silly. What you are supposed to learn at a university are the things that are timeless &#8211; principles, ideas, philosophies, paradigms, the scientific method. Big picture stuff. Universities are designed to produce educated, cultured and knowledgeable citizens who can apply their education in many different domains and to many different problems.</p>
<p>Besides, the department of Water has the same problem as the department of Computer Science &#8211; it does not give graduates a clear career path. What kind of job training would Dept. of Water provide? I could go out on a limb and argue that graduates from department of water don&#8217;t really need the broad theoretical background in water shortage related issues. Instead they should be taught applied salt water reclamation because that&#8217;s what most of them will probably end up doing.</p>
<blockquote><p>You need to have a good basis in algorithms and higher math to be successful as a software engineer, and computer science provides that. That’s probably true for systems programmers. It’s not really true for the remaining 99% of software engineers, the vast majority of which will never do pointer arithmetic and shouldn’t really have to. (If you accept this argument, then you must also accept the notion that all plumbers must have the ability to smelt copper and forge their own pipes, because how could you possibly lay pipes effectively without having ever created one with your bare hands from elemental materials?) Otherwise, you’re just enforcing the priesthood of the technologist, which is not a good thing for the profession or for society.</p></blockquote>
<p>Wow&#8230; Really? You are going to compare programmers to plumbers now? What happened to &#8220;Software Engineers&#8221;? </p>
<p>Throughout the entire article McManus uses the phrase &#8220;Software Engineering&#8221;. When see that label, I think about designing, and building very complex systems. You know &#8211; engineering stuff. Plumbers don&#8217;t build complex systems &#8211; they screw pipes together &#8211; usually use a blueprint given to them by someone with a degree in hydroelectric engineering. I&#8217;m sure most students who take CS at a university level have higher aspirations than making GUI buttons in Visual Studio &#8211; which is a comparable type of work to that of a plumber. To design these complex systems however they will need knowledge of algorithms.</p>
<p>Also, pointer arithmetic? Where did that come from? Pointer arithmetic is plumber work. You can teach an orangutan to do pointer arithmetic. That is not computer science at all.</p>
<p><strong>To Summarize</strong></p>
<p>McManus is dead wrong because he either does not understand what computer science is, or pretends that he doesn&#8217;t for the sake of the argument. He is either quite good at trolling, or he is ignorant accidentally created something twice as inflammatory as he intended to because his complete lack of understanding of the subject.</p>
<p>Computer Science is an academic subject. It is a very expansive field of study that extends above and beyond what McManus seems to deem practical &#8220;applied software engineering&#8221;. In my CS career I have worked on a quite diverse set of projects:</p>
<ul>
<li>Protein molecule folding (biochemistry)</li>
<li>Genome analysis (biology and bioinfomatics)</li>
<li>Unattended automatic database integration (database theory)</li>
<li>Simulating excitable media using cellular automata (medical field &#038; cardiology)</li>
<li>Feature extraction and hyperspectral image processing (aeronautics and military applications)</li>
<li>Online Commerce Applications (shopping cart, product ratings, etc)</li>
<li>Practical Steganography applications (we devised a way to embed lyrics directly into mp3 files)</li>
</ul>
<p>A friend of mind did a thesis on intelligent text parsing and built a system capable to auto-magically grade homeworks to a certain degree of accuracy. Bunch of kids I knew designed a galactic collision simulator for the physics department. I don&#8217;t know &#8211; maybe I was just lucky to end up in a cool, agile and flexible department run by a lot of passionate people. But you know what &#8211; I got to work on a lot of interesting projects from various fields. And as I was working on these projects I was thankful that the university and the department had the foresight to make me take all the prerequisite science and mathematics classes, because they were fucking useful and relevant to just about everything I was doing.</p>
<p>My department also forced me to learn not just Java but C++, Perl, and Lisp. And because I was already multi-lingual I went ahead and learned Python and Ruby for fun, and LaTex to write my Masters Thesis.</p>
<p>The degree opened my eyes and taught me that I could use my skills in many different ways. I could actually do science wit it. I could work with other scientist and solve really interesting problems. I could work for the military&#8230; Or NASA. Or I could go into medical infomatics and work with healthcare providers. I did not have to sit in a cubicle and write Java back end applications for a bank or financial company.</p>
<p>And sure, I actually had 3 semesters worth of Software Engineering instruction which was actually very, very useful. But it was not the focus of the program. Especially since I did not exactly end up being a software engineer. I ended up becoming an IT Admin and PHP hacker, but it was mostly circumstantial and random. Thanks to my education however I was able to quickly pick up the new skills and adapt. And I could do it again, and dive into a drastically different technology niche if I had to.</p>
<p>McManus however seems to think that the only thing we should be teaching kids is how to build enterprise level web applications using, I don&#8217;t know, Java and Agile methodology. That&#8217;s dangerously short sighted.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/04/27/this-is-why-we-cant-have-nice-things-a-response-to-jeffrey-mcmanus/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>How to think like an Orc</title>
		<link>http://www.terminally-incoherent.com/blog/2012/04/25/how-to-think-like-an-orc/</link>
		<comments>http://www.terminally-incoherent.com/blog/2012/04/25/how-to-think-like-an-orc/#comments</comments>
		<pubDate>Wed, 25 Apr 2012 14:08:59 +0000</pubDate>
		<dc:creator>Luke Maciak</dc:creator>
				<category><![CDATA[rpg and tabletop]]></category>

		<guid isPermaLink="false">http://www.terminally-incoherent.com/blog/?p=10564</guid>
		<description><![CDATA[I often rag on Fantasy for being a genre populated solely by novels derived almost directly from either the writings of Tolkien, Robert E. Howard or hybridized from both. The fact that I am critical of it, does not mean &#8230; <a href="http://www.terminally-incoherent.com/blog/2012/04/25/how-to-think-like-an-orc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I often rag on Fantasy for being a genre populated solely by novels derived almost directly from either the writings of Tolkien, Robert E. Howard or hybridized from both. The fact that I am critical of it, does not mean I don&#8217;t love the genre. There is something to be said for immersing oneself in the familiar pseudo-medieval world full of magic of mythical creatures. I guess part of my slight disdain for Fantasy literature is my gaming background. I played lots of fantasy themed campaigns in various settings, under various systems &#8211; from Warhammer FRP to GURPS Fantasy and everything in between. I played fantasy themed tabletop games, Tolkien based collectible card games and etc. I inhabited these worlds, and I know them inside out. I can write essays about the similarities and differences of Elves in various D&#038;D based settings as compared to say Warhammer Fantasy Elves or Tolkien Elves. So when I pick up a book, and see a writer try to treat me to his version of Elves/Dwarves/Orcs I can read between the lines, and usually trace his inspirations to particular novel series, or game franchise.</p>
<p>I really do appreciate when authors diverge from the common fantasy archetypes and build non-Tolkienesque bestiaries. Great example of this is <a href="http://www.terminally-incoherent.com/blog/2011/03/16/perdido-street-station-by-china-mieville/" class="liinternal">Perdido Street Station</a> which comes with completely unique menagerie of sentient races, and original mythology. That&#8217;s the sort of thing I enjoy &#8211; stories that break the mold and try something different. Either that, or shake up and subvert the established archetypes.</p>
<p>I touched upon this subject before when I wrote about the <a href="http://www.terminally-incoherent.com/blog/2008/08/18/the-familly-life-of-orcs/" class="liinternal">Family Life of Orcs</a>. Orcs are the ubiquitous fantasy antagonists that die by the dozens at the hands of the noble heroes &#8211; so my idea was to invert this dynamic. Portray Orcs not as bloodthirsty monsters, but as territorial tribal people just trying to live their lives, raise their children and expand their influence. They are not inherently evil, but simply different &#8211; they don&#8217;t speak the common tongue, they do not understand human culture and customs. It was an interesting thought exercise, so I figured we could do this again. </p>
<p>This time though, I want to go further and play around with their biological and psychological makeup. Let&#8217;s say that you don&#8217;t want to make them more likable or easy to empathize with. Perhaps you want them to be bloodthirsty, remorseless monsters. How do you sell that though? I mean yes &#8211; the rulebook, bestiary or whatever supplementary lore you are using will probably tell you that Orcs are evil by nature. I don&#8217;t like that assumption. I think that the whole idea of &#8220;evil aligned races&#8221; is a storytelling crutch. A person can be evil &#8211; I buy that. But a whole race? How do chaotic evil creatures even form a stable society?</p>
<p>There are way around this conceptual issue. For example you could claim that <a href="http://bankuei.wordpress.com/2008/07/14/five-blades-of-bahamut-monsters/" class="liexternal">Orcs have magical origin</a> and blame their alignment on some evil deity or sorcerer. But then you are just trading off one tired trope for another (wizard did it). So I don&#8217;t like this approach either.</p>
<p>You could also do what Warhammer universe did and simply claim that Orcs are not as much evil, as they are stupid and infantile. Warhammer Orcs are actually sentient fungi (no, I&#8217;m not shitting you &#8211; look it up) and they don&#8217;t really have much going on in the brain department. They don&#8217;t have much of a society as they have a horde, that accomplishes things mostly thanks to inertia and forward momentum of mob mentality. The brighter individuals can wind up the horde and direct it&#8217;s energy toward a target. Without a leader, their society fractures and falls apart due to a never ending maelstrom of in-fighting. I&#8217;m actually somewhat fond of this interpretation. </p>
<p>But let&#8217;s say you want to do something else. You want the super-competent Tolkienesque Uruk-hai rather than comic relief Orcs of Warhammer universe. Let&#8217;s play around with this concept and come up with way to justify their behavior without simply saying &#8220;they are evil&#8221;.</p>
<p>Our new Orcs are going to be a humanoid race that has evolved alongside (or apart of) us, but initially filled a different ecological niche. They spent their formative generations in different environment, responding to different outside pressures and thus have different adaptations. It stands to reason that Orcs would be morphologicaly and neurologically different from us. Their minds would very possibly work quite differently from ours.</p>
<p>Here is a real world example &#8211; chimpanzees are often considered the intellectuals of the animal kingdom. They are our fastest and brightest students, learning to resolve logical puzzles and matching patterns faster than any other of our Great Apes cousins. But there is one area where they do worse than, for example, orangutans: self awareness. Chimps often fail to recognize themselves in the mirrors, and fail tests that require counter-intuitive logic. Orangutans are less logically inclined and slower learners, but have more developed self awareness. They are more like us in that aspect &#8211; they understand mirrors, they are able to empathize and figure out puzzles that baffle chimps. They seem to have more developed higher brain functions, but since these are slow costly (from purely biological standpoint) to run, they under-perform on pure pattern matching intelligence tests, than the animals that devote more circuitry to just stimulus processing rather than implementation. There is a difference between raw intelligence and self awareness.</p>
<p>This concept is actually one of the core themes in <a href="http://www.terminally-incoherent.com/blog/2011/12/02/blindsight-by-peter-watts/" class="liinternal">Blindsight</a> by Peter Watts. He really sells the idea in the novel, and has lots of support for it in the footnotes. The basic idea is that our self awareness is an evolutionary fluke. We got it for free because it was dragged into our genome, linked to some other trait that was heavily selected for back in Pleistocene, and it is mostly baggage that holds us back in terms of raw intelligence and performance metrics. And as evidenced by experiments with Chimps intelligence and self awareness are not as closely linked as we usually assume. Honestly, read Blindsight for a long form explanation &#8211; it is a fascinating book either way.</p>
<p>Here is how all of this applies to Orcs. Let&#8217;s imagine a race which evolved high functioning intelligence, but very little self awareness. They can use tools and build shelters but create no art. They form social groups, effectively hunt in packs and perhaps even have a functional language but never develop a culture. They are not introspective. They do not attach importance to the concept of self. They are driven mostly by instinct. They are fast and very adaptive &#8211; their agile minds driven in large part by the animalistic, reptilian brain that we buried under lots of gray matter. Think about how your brain acts during a fight-or-flight reflex &#8211; your body moves on its own, without cognition, without conscious thought. That&#8217;s how Orcs are all the time. Driven, motivated but not aware. Completely free of existential issues and high concepts such as love, loyalty, freedom. But blessed with an over-abundance of purely functional intellect that can be used for developing better weapons, better hunting strategies and etc&#8230; Unlike animals they are extremely adaptive &#8211; they invent new tools and alter their behavior and lifestyles in response to changes in their environment.</p>
<p>Does this sound like Orcs yet? It sounds like them to me. And they are not evil at all &#8211; they are just wired differently. Perfect antagonists who can be complete and utter bastards, without actually needing to have some convoluted motivation or alignment related excuse.</p>
<p>Imagine this race of intelligent but instinct driven monsters stumbling upon human settlements. They would be dumbfounded by our art, by the our useless, functionless things we surround ourselves with, by our flowery language full of useless gibberish. They would probably recognize our intellect, but see us as slow, vapid, amorphous space wasters busy processing meaningless cognitive garbage. They would be faster than us &#8211; their whole lives are one fluid motion. No thought but action. No reflection, just forward movement. They work faster, breed faster, build faster and react faster to environmental changes. They are better in every way except one &#8211; they have no culture, no concept of beauty, and no empathy. They have no need for such things. On the surface they would appear to us as barbaric, inhuman beasts organized into some military society. </p>
<p>They would probably be aggressive, expansive and completely uninterested in trade or peaceful coexistence. We would not get along at all. In fact, they would flood us in waves that coincide with their breeding seasons. Each year they would pump out more and more babies that would reach maturity in record time, quickly exhaust food resources and be forced to move in huge armed throngs to richer and more fertile lands &#8211; those controlled by humans. </p>
<p>You could build a whole campaign around exploring this idea. Have players learn the ecological dangers of allowing Orcs to breed freely without inhibitions. Or how their brutal raids on human lands are essentially their instinctive solution to overpopulation. Their armies either get wiped out, or conquer enough territory to support the next generation resolving the food and space shortage issues one way or the other.</p>
<p>What do you think?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terminally-incoherent.com/blog/2012/04/25/how-to-think-like-an-orc/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
	</channel>
</rss>

