<?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>Entertaining Code &#187; Communication</title>
	<atom:link href="http://www.entertainingcode.com/tags/communication/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.entertainingcode.com</link>
	<description>Coding and the games industry</description>
	<lastBuildDate>Mon, 28 Jun 2010 16:56:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Web Form Verification for Dummies</title>
		<link>http://www.entertainingcode.com/archives/web-form-verification-for-dummies/</link>
		<comments>http://www.entertainingcode.com/archives/web-form-verification-for-dummies/#comments</comments>
		<pubDate>Mon, 21 Dec 2009 22:42:17 +0000</pubDate>
		<dc:creator>slicedlime</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Passwords]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://www.entertainingcode.com/?p=870</guid>
		<description><![CDATA[The standard method for interaction with computer appli [...]]]></description>
			<content:encoded><![CDATA[<p>The standard method for interaction with computer applications has gone from being the command line to being the native GUI, to being the web form. We were awesome at verifying input when it came from the command line &#8212; that was simple. Then we were kind of ok verifying input in the native GUI, although quality varied a lot more.</p>
<p><strong>Now we suck at verifying user input from web forms. The current state of code that verifies user input has both managed to take us back to the kindness of the command line when it comes to freedom of input and manages to check all the wrong kinds of things. </strong>Why is it so hard to write these checks? I suspect because people don&#8217;t really think much about them, and I bet there are more interesting things out there than to write user input verification.</p>
<p>These problems aren&#8217;t some beginner coder errors either &#8212; they&#8217;re rampant on even the biggest sites out there like paypal.</p>
<p>The most common field to get me snared is the phone number field. In 99% of all cases, the site assumes that all phone numbers in the entire world are formatted like US phone numbers. Not, as one could imagine, because I&#8217;m claiming to live in America &#8212; I clearly just told the site that I live in a European country. So anyway, inputting my actual phone number causes an &#8220;invalid phone number&#8221; error. Not that there is any mention whatsoever on the site about what the correct format of a phone number is (there are, in fact, even several ways of writing a US phone number).</p>
<p>This sets off a wildly unamusing guessing game of how to &#8220;convert&#8221; my phone number into a format the site will accept. This practice often costs the sites money as I end up giving up and going somewhere else, frustrated and unable to make a simple online purchase that didn&#8217;t <em><strong>really</strong></em> require that phone number anyway, did it?</p>
<h3>Passwords</h3>
<p>Another highly amusing game is the one where web sites try to force users to choose &#8220;secure&#8221; passwords by enforcing the formats of passwords. &#8220;You must have at least 6 characters, with at least one letter and one number&#8221;. Sounds good, except in general these passwords are restricted to only contain letters and numbers. <strong>Hold on, isn&#8217;t it common wisdom to include at least one non-alphanumeric character in a secure password?</strong></p>
<p>As such, out of my set of passwords, the only password which tends to pass most password verifications is my least secure one. The idea that you could fix a social problem through technology is somewhat funny anyway &#8212; &#8220;password1&#8243; is not more secure than &#8220;password&#8221; in any way that really matters.</p>
<p><a href="http://www.entertainingcode.com/wp-content/uploads/2009/12/errormsg.jpg"><img class="aligncenter size-full wp-image-994" title="Error" src="http://www.entertainingcode.com/wp-content/uploads/2009/12/errormsg.jpg" alt="Error" width="500" height="157" /></a>The same thing applies to the old trick of forcing your users to change passwords every month. This can have two potential outcomes &#8212; users append a counter to the end of their password, and increment it every time they are forced to switch, or they keep a post-it note taped to their monitor with their current password. Neither outcome is a net gain in terms of security.</p>
<p>Some sites even let the user set a password which is then considered invalid when the user tries to log in (ebay, for instance,  has done this) &#8212; causing a prompt for a new password and much annoyance.</p>
<h3>Format wars</h3>
<p>Parsing stuff is what computers are good at. So forcing me to input something in a strict format is always a loss. Either separate the fields and force me to select the individual parts of a date separately or <strong>actually use all that computing power at your disposal to do your user a favor</strong>. Telling me you have no idea what I mean by &#8220;2009-12-21&#8243; because you expected &#8220;20091221&#8243; is annoying the user for no good reason, even if you told me to not include dashes.</p>
<p>If you find yourself in a situation where you need to verify input  from the web, take an extra minute to consider how you could make things as convenient as possible for the user, which ones of your assumptions only hold true for the region you live in&#8230; and when you&#8217;re done, whatever you do <strong>make sure you tell the user exactly what the expected format is</strong>.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-2919823884810618";
/* Links */
google_ad_slot = "5892302561";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.entertainingcode.com/archives/web-form-verification-for-dummies/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Be an Open Source Douchebag</title>
		<link>http://www.entertainingcode.com/archives/dont-be-an-open-source-douchebag/</link>
		<comments>http://www.entertainingcode.com/archives/dont-be-an-open-source-douchebag/#comments</comments>
		<pubDate>Sat, 22 Aug 2009 21:28:48 +0000</pubDate>
		<dc:creator>slicedlime</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Asshole]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.entertainingcode.com/?p=879</guid>
		<description><![CDATA[I love open source software. It provides both a neat tr [...]]]></description>
			<content:encoded><![CDATA[<p>I love open source software. It provides both a neat training ground for programmers, a good place to go <a href="http://www.entertainingcode.com/archives/go-tinker/">scratch that itch</a>. On the other side of things, it provides awesome software for people, including some software that would never come out of a big development house.</p>
<p>Still, there are some issues with free software that don&#8217;t really show up to the same degree with commercial software. One such thing is documentation. It&#8217;s painfully obvious that documentation is written by people who:</p>
<ol>
<li>Already know the software in and out.</li>
<li>Don&#8217;t like writing documentation.</li>
<li>Know nothing about how people learn.</li>
</ol>
<p>For instance, when I started a side project a few months back, I was looking for a build system. After settling on <a href="http://www.cmake.org/">CMake</a>, I set about trying to make sense of it. There&#8217;s the ever-present <a href="http://www.cmake.org/cmake/help/examples.html">getting started example</a>, of course. And then there&#8217;s the <a href="http://www.cmake.org/cmake/help/cmake2.6docs.html">full reference</a> of everything you could possibly want (almost).</p>
<p>But in between those, there&#8217;s nothing. Well, nothing except a book, which just goes to show you that there&#8217;s something missing &#8212; a professional writer could obviously make some money out of explaining things in a reasonable way.</p>
<p>The problem with this is that it <strong>doesn&#8217;t match how people learn</strong>. Getting started is a good step, but a relatively small one. Most of the time will be spent incrementally expanding the knowledge, moving from beginner to expert. Most time will thus be spend in some kind of zone in between the &#8220;getting started&#8221; and &#8220;reference of everything&#8221; levels.</p>
<p>Worse than that, some open source programmers have a tendency to view their full reference documentation as an appropriate resource for everyone. &#8220;It&#8217;s all in there,&#8221; right? But pointing a beginner at a 40-page document detailing all the options of some application when all they want is to run it properly isn&#8217;t very helpful. I&#8217;m sure you know what I&#8217;m talking about if you&#8217;ve ever used an open source command line tool.</p>
<p>That ends us up with the really dark side of free software culture. The true douchebags out there will not only be extremely smartass in their RTFM comments, they&#8217;ll also be incredibly sensitive and defensive about the software they&#8217;re working on.</p>
<p>I ran into a problem with cygwin&#8217;s SSHD implementation last week. In searching for the solution, I found <a href="http://www.mail-archive.com/cygwin@cygwin.com/msg99637.html">this mail list answer</a>:</p>
<blockquote>
<pre>  Wrong.  That is uninformed speculation and guesswork.  Stop
spreading misinformation.

  Cygwin SSHD has had the support for fully logging in as any
user since 1.7, as you have already been told and completely
ignored.  Go and read the manual.  The link was in the previous
email I sent in this thread.

  freesshd works exactly as Cygwin *used* to before it got
subauth support: when you log in with a key, rather than a
password, you just end up as an admin user.</pre>
</blockquote>
<p>Wow. This kind of answer is wrong on so many levels. First of all, while he makes it seem like the functionality has been there forever, cygwin 1.7 is still not even out of beta. The chance that an end user has it is about 0. So, with the current version (1.5),  supposedly cygwin sshd works just like freesshd. This is clearly false, because the original poster reports one working and the other not (which is, by the way, exactly the same results that I had).</p>
<p>So, a user reporting a problem about logging in gets pointed to a long documentation about security settings in a beta version, doesn&#8217;t understand a word from that document (no surprise there), and as a result gets told to &#8220;stop spreading misinformation&#8221;. Truth is, simply installed like any normal user installs applications, one works and the other doesn&#8217;t, something made quite clear by an answer from the original poster in a <a href="http://www.mail-archive.com/cygwin@cygwin.com/msg99616.html">different place</a> in the thread:</p>
<blockquote>
<pre>&gt; Are you talking about password or public key authentication?
&gt; If the latter, Have you tried the LSA authentication package
&gt; in Cygwin 1.7?</pre>
<pre>I don't know. I'll try to deciper that. Sounds complicated. In
the meantime, friend is using freesshd.</pre>
</blockquote>
<p>The essence of what he&#8217;s saying (which has been completely missed by the cygwin developers) is that the effort required to get cygwin to work like one would reasonably expect of it is much higher than the effort required to just google for something that <a href="http://www.codinghorror.com/blog/archives/000290.html">just works out of the box</a>. The fact that you could potentially make it work is irrelevant, because he&#8217;s not getting any help <em>actually making it work</em>.</p>
<p>He might as well just have said, &#8220;I don&#8217;t care about making it work for you. It works for me.&#8221;</p>
<p>Software companies usually compensate for their complete lack of useful technical support with a good (or at least reasonably decent) amount of help documentation. Free software usually has neither.</p>
<p>I encourage any programmer to practice their technical skills on an open source project. But while you do so, take the opportunity to practice your people skills a bit as well, or why not your writing skills? Don&#8217;t be an open source douchebag &#8212; someone reporting your software&#8217;s flaws is not attacking you personally.</p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.11';
var flattr_uid = '409';
var flattr_url = 'http://www.entertainingcode.com';
var flattr_lng = 'en_GB';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Entertaining Code';
var flattr_dsc = 'Coding and the games industry';
</script>
<script src="http://api.flattr.com/button/load.js?v=0.2" type="text/javascript"></script>]]></content:encoded>
			<wfw:commentRss>http://www.entertainingcode.com/archives/dont-be-an-open-source-douchebag/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>News Flash: Griefing People Makes Them Angry</title>
		<link>http://www.entertainingcode.com/archives/news-flash-griefing-people-makes-them-angry/</link>
		<comments>http://www.entertainingcode.com/archives/news-flash-griefing-people-makes-them-angry/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 10:49:59 +0000</pubDate>
		<dc:creator>slicedlime</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[Asshole]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Fuckwad Theory]]></category>
		<category><![CDATA[MMO]]></category>
		<category><![CDATA[Society]]></category>
		<category><![CDATA[Study]]></category>

		<guid isPermaLink="false">http://www.entertainingcode.com/?p=744</guid>
		<description><![CDATA[I read with some surprise about the professor who joine [...]]]></description>
			<content:encoded><![CDATA[<p>I read with some surprise about the professor who <a href="http://www.nola.com/news/index.ssf/2009/07/loyola_university_professor_be.html">joined an MMO only to grief people</a> to no end, and observe how they reacted to it. Fine, cruel way to treat people I guess since they had no choice of opting out of his &#8220;experiment&#8221;, but I&#8217;d accept that if he had some kind of point to make&#8230; so that&#8217;s not the worst of it. The worst of it is the conclusions he comes to from this &#8220;work&#8221;.</p>
<p>Taste these:</p>
<blockquote><p>&#8220;He believes it proved that, even in a 21st century digital fantasyland, an ugly side of real-world human nature pervades, a side that oppresses strangers whose behavior strays from that of the mainstream.&#8221;</p>
<p>&#8220;Myers was stunned by the reaction, since he obeyed the game&#8217;s rules.&#8221;</p>
<p>&#8220;It started to not be fun,&#8221; said Myers, a video game aficionado. &#8220;I became the most hated, most reviled player.&#8221;</p>
<p>&#8220;He said his experience demonstrated that modern-day social groups making use of modern-day technology can revert to &#8220;medieval and crude&#8221; methods in trying to manipulate and control others.&#8221;</p></blockquote>
<p><a href="http://www.penny-arcade.com/comic/2004/03/19/"><img class="alignnone size-full wp-image-749" title="fuckwad_theory" src="http://www.entertainingcode.com/wp-content/uploads/2009/07/fuckwad_theory.jpg" alt="fuckwad_theory" width="479" height="243" /></a></p>
<p>Someone actually grants funds for this nutcase? Hell, I could have told you all of those things at once, without the need to be a total dick to people for two years: There are social systems in any context that go above and beyond that of the rules and laws of the context. Yes, this goes for online communities as well. No, you wouldn&#8217;t be stupid enough to do that to someone if you weren&#8217;t online and anonymous.</p>
<p>I&#8217;d urge Mr. Myers to <a href="http://www.threepanelsoul.com/view.php?date=2008-02-04">try it out AFK sometime</a>. A subway train could be a good place, for instance (though I&#8217;m certainly open for other suggestions, these things are common). Place yourself in the middle of the doorway. Stand in the way of peolpe trying to enter or exit the train. If they move to sidestep you, follow to block the movement.</p>
<p><strong>This is not illegal or against subway rules, but it will still make people really fucking angry. The social context tells you &#8220;don&#8217;t do that&#8221;, not because it causes people to become &#8220;medieval and crude&#8221; when they force their way past you violently, but because you&#8217;re being a real dick to people if you do.<br />
</strong></p>
<p>People started out by asking kindly, but then stepped up their efforts to change his behavior as he ignored them. Like people under threat from abuse AFK, they first tried all the normal, appropriate ways of dealing with normal, reasonably sane people, but then had to go to extremes when this didn&#8217;t work.</p>
<p>This has nothing to do with him being a &#8220;stranger&#8221; (hint: everyone&#8217;s a stranger in an MMO), but with the fact that he was making their lives miserable to the best of his abilities.</p>
<p>In any game there will be things that are possible according to game rules, but forbidden due to social context. In Battlefield and other shooters, it&#8217;s spawn camping. <a href="http://www.content4reprint.com/recreation-and-leisure/sports/golf/golf-etiquette-the-unwritten-rules.htm">In golf</a>, it&#8217;s crossing another player&#8217;s line of putt on the green. In World of Warcraft, it&#8217;s <a href="http://en.wikipedia.org/wiki/Looting_%28gaming%29">ninjaing</a> a target or piece of loot from other players. I could go on for a long time.</p>
<p>In the end, we come down to the simple fact that this guy gets paid for being a twat to people for two years, and tries to interpret it scientifically as some sort of bullying <strong><em>on their behalf</em></strong>.</p>
<p>There are plenty of interesting areas to research when it comes to games&#8230; games are still a young medium, and especially the social effects and interactions of MMOs are fascinating. So picking an area with slightly more relevance could be nice. Better teach this guy the basics of human psychology before letting him near another study, though.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-2919823884810618";
/* Links */
google_ad_slot = "5892302561";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
]]></content:encoded>
			<wfw:commentRss>http://www.entertainingcode.com/archives/news-flash-griefing-people-makes-them-angry/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Taking a Step Back</title>
		<link>http://www.entertainingcode.com/archives/taking-a-step-back/</link>
		<comments>http://www.entertainingcode.com/archives/taking-a-step-back/#comments</comments>
		<pubDate>Tue, 24 Mar 2009 09:34:44 +0000</pubDate>
		<dc:creator>slicedlime</dc:creator>
				<category><![CDATA[Followup]]></category>
		<category><![CDATA[Communication]]></category>
		<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://www.entertainingcode.com/?p=384</guid>
		<description><![CDATA[I've been doing quite some thinking about things, and c [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been doing quite some thinking about things, and considering the interpretations my post from the other day has got, and some of the speculations going on I&#8217;ve decided to take it and the followup post offline. I&#8217;ve tried explaining my viewpoint on it, but it hasn&#8217;t seemed to make much of a difference.</p>
<p>I love being able to communicate with fans of the games I make, and I certainly won’t stop communicating on how to make the best games possible for all of you guys.</p>
<p><script type="text/javascript"><!--
google_ad_client = "pub-2919823884810618";
/* Links */
google_ad_slot = "5892302561";
google_ad_width = 468;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script></p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.11';
var flattr_uid = '409';
var flattr_url = 'http://www.entertainingcode.com';
var flattr_lng = 'en_GB';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Entertaining Code';
var flattr_dsc = 'Coding and the games industry';
</script>
<script src="http://api.flattr.com/button/load.js?v=0.2" type="text/javascript"></script>]]></content:encoded>
			<wfw:commentRss>http://www.entertainingcode.com/archives/taking-a-step-back/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>The Fine Art of Being an Asshole in All the Right Ways</title>
		<link>http://www.entertainingcode.com/archives/the-fine-art-of-being-an-asshole/</link>
		<comments>http://www.entertainingcode.com/archives/the-fine-art-of-being-an-asshole/#comments</comments>
		<pubDate>Thu, 12 Mar 2009 20:39:15 +0000</pubDate>
		<dc:creator>slicedlime</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Communication]]></category>

		<guid isPermaLink="false">http://www.entertainingcode.com/?p=224</guid>
		<description><![CDATA[

We do code reviews of all code that's about to be c [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.entertainingcode.com/wp-content/uploads/2009/03/wtfs_per_minute.jpg"><img class="size-medium wp-image-306 alignright" title="Wtf?" src="http://www.entertainingcode.com/wp-content/uploads/2009/03/wtfs_per_minute-300x282.jpg" alt="Wtf?" width="300" height="282" /></a></p>
<p>We do code reviews of all code that&#8217;s about to be checked in. It&#8217;s interesting to see the different approaches to code reviews different coders have. Many (especially junior) programmers tend to lack the self confidence required to go about a code review in an effective manner.</p>
<p>Let me explain that &#8212; why would a code review require self confidence? Well, a code review will go over a large amount of code at times, and your job as the reviewer is to find any question marks that might possibly cause any kind of trouble. This is, apparently, a problem for many programmers when they review the code of another (usually more senior) programmer, since pointing out potential errors or problems is seen as somewhat sensitive. I know <strong>many coders get very emotionally attached to their code</strong>.</p>
<p>You would think this should be something which happens only to junior programmers, but I&#8217;ve seen this happen with relatively senior programmers as well. It&#8217;s more about character than it is about experience I guess. The reasoning is &#8220;I don&#8217;t understand this, but this guy&#8217;s smart so it&#8217;s fine&#8221; or something similar, sometimes connected to how much code there is to go through and how long that would take.</p>
<p>However, the quality of a code review is directly proportional to how much you can disconnect your own respect for others. Your task is to understand everything you get shown, and to <strong>be the most nitpicking, hard-to-please obsessive-compulsive asshole the earth has ever seen </strong>for as long as the code review lasts.</p>
<p>Sound like something you don&#8217;t want to do? I hope so. But remember, you&#8217;re doing a service here&#8230; if there are bugs, someone is going to find them. We have QA people who specialize in finding bugs and piling them up on your desk, producers with a great attention to detail, and if nothing else you can bet <strong>someone will find it </strong>and it&#8217;ll<strong> </strong><a href="http://www.youtube.com/watch?v=XNYEq3bIuGU">end up on youtube</a>. I don&#8217;t know about you, but at least I&#8217;d want to see my errors pointed out to me <strong>before I check them in</strong>.</p>
<p>So here are my tips for doing a code review:</p>
<ul>
<li><strong>Understand everything</strong>. If you don&#8217;t understand something, make the reviewee explain it again in a different way. Chances are, you aren&#8217;t understanding because there&#8217;s something strange going on, or because what&#8217;s been done is unnecessarily complicated. Either way, if you don&#8217;t understand something you can&#8217;t guarantee that it&#8217;s right. Part of the purpose of a code review is for the reviewee to explain his thinking, and while doing so make for a possibility that he or she discovers errors as well.</li>
<li><strong>Be picky</strong>. Point out all details, from naming convention errors to coding standard misses to comment spelling errors. Whenever something gets checked in, the cost of changing it is a lot higher. Often the details may be the things that are wrong, and being picky forces you to notice such things.</li>
<li><strong>Look at everything</strong>. Resist the temptation to skip files where only small things have changed, but like I mentioned above, the details can often be what&#8217;s wrong. I can&#8217;t begin to count the amount of code reviews I&#8217;ve done where we&#8217;ve found inverted if conditions and equally dangerous things. The relevant code is simply a missing exclamation mark, but the consequences are far reaching, and if you had skipped the file because it had almost no changes in it, then you would have missed it.</li>
<li><strong>Endure</strong>. If you feel like you&#8217;re being a pain in the ass, think of it as a great favor since the amount of potential bugs you&#8217;re stopping is high. It&#8217;ll also act as an incentive for the reviewee to focus more on code quality for next time.</li>
</ul>
<p>Think of yourself as the guardian of quality, personally responsible for the quality of the code you&#8217;re reviewing. Imagine that you&#8217;ll be the one yelled at if the code is broken, or the one who&#8217;ll be put to fix it.</p>
<p>The end result will be much higher quality code.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.entertainingcode.com/archives/the-fine-art-of-being-an-asshole/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Let It Slide</title>
		<link>http://www.entertainingcode.com/archives/let-it-slide/</link>
		<comments>http://www.entertainingcode.com/archives/let-it-slide/#comments</comments>
		<pubDate>Sun, 01 Feb 2009 12:05:25 +0000</pubDate>
		<dc:creator>slicedlime</dc:creator>
				<category><![CDATA[Communication]]></category>
		<category><![CDATA[Presentation]]></category>

		<guid isPermaLink="false">http://www.entertainingcode.com/?p=84</guid>
		<description><![CDATA[How to hold a presentation and survive to tell the tale [...]]]></description>
			<content:encoded><![CDATA[<p><em>How to hold a presentation and survive to tell the tale.</em></p>
<p>I went to Vancouver about a month ago, to visit EA Canada and among other things hold a presentation on part of our work. Quite a trip, I can tell you, considering that most of the time was spent travelling there and then back. I can also tell you that a sufficiently large family of which none speak English on a transatlantic flight is quite an adventure, but that&#8217;s a different story.</p>
<p>This story is about the presentation &#8212; and about what it taught me. Not because I&#8217;m the best presenter out there and I want to teach you all my secrets, but because the big secret is that most people holding presentations are just like you and me, they also lack the experience, and <strong>they&#8217;re just as terrified</strong> when they step up there to say the first word. My presentation went by pretty decently. I did many things right from the start, but I also learned quite a few of new things from it, and it&#8217;d be rather silly of me to not share that with you.</p>
<p>On a grand scale, people tend to be bunched up between the center notch of &#8220;uncomfortable&#8221; and the high extreme of &#8220;about to throw up&#8221; &#8212; most people just absolutely hate or fear presentations. There must be some deep hidden feature of the human psyche that makes any gathering of more than, say, 10 of your colleagues turn into something as intimidating as an invasion army. And knowing how silly this is does absolutely nothing to prevent it from affecting you.</p>
<p>Fortunately for me, Sweden, where I grew up, has understood this, and puts an incredible focus on presentations in public schools. Unfortunately for me, a very core part of holding a good presentation is to be extremely confident of what the hell it is you&#8217;re trying to tell people. You need to be seen as an authority to be believable and feel somewhat comfortable in what you&#8217;re saying. And while the exporting stats for <a href="http://en.wikipedia.org/wiki/Economy_of_Bolivia#Exports">Bolivia</a>, the dates of <a href="http://en.wikipedia.org/wiki/Military_history_of_France">historic battles in France</a> and the thoughts and motives of <a href="http://en.wikipedia.org/wiki/Jonathan_Swift">Jonathan Swift</a> may all be fascinating subjects, they&#8217;re not my area of expertize just because I just read my homework about it 7 times in a row.</p>
<p>My gut feeling is that the education just cements the students&#8217; fears, by putting them in a position where it&#8217;s essentially utterly impossible to hold a good presentation. Maybe that&#8217;s a good thing in a way, because no matter how badly you perform when the time comes to hold a presentation on a subject you know about, <strong>there&#8217;s just no way it&#8217;ll ever be as bad as it was in school</strong>.</p>
<p>Anyway, where was I? Oh, yes, somewhere heading to Canada. So, several repetitions of putting all your belongings in a plastic box (your shoes as well please, sir) only to put them back on again (don&#8217;t forget your belt sir), I found myself in Vancouver about to deliver a presentation on a subject I actually knew and cared about. That&#8217;s quite a different beast, and in the whole process I became aware of a whole lot of things I&#8217;d otherwise ignored.</p>
<p>My company for the trip was one of the programmers from the Mirror&#8217;s Edge team, who was also about to hold a presentation, and who was nervous to the point of breaking down. My own nervousness has been somewhat masked by playing in a band on stage, practicing acting for a while and by a few years of talking to groups of people trying to coordinate them to slay the next big beast or a new set of opponents in various computer games, but it&#8217;s definitely still there. The key difference in this case was the fact that he was completely convinced that he didn&#8217;t have interesting content.</p>
<p>The first thing you need to realize when you step up there to deliver a presentation is that your audience, for one reason or another, are <strong>actually interested in hearing what you have to say</strong>. You always start out with a grand chance, as the audience will always assume the best of you before you start. That&#8217;s probably not what you wanted to hear as you stand there thinking you&#8217;re going to make everyone disappointed, but it also does mean that as long as you tell them new stuff, they&#8217;ll happily listen.</p>
<p>The next thing to do is prepare. Prepare so you know everything you could possibly be expected to say. <strong>Prepare so nothing but you matters</strong>, prepare for any problems that could possibly occur. This doesn&#8217;t mean learn a sequence of words by heart and then just speak them in sequence as you hold the presentation &#8212; it means be confident in all the material you have, and be ready to deliver it in any way and form.</p>
<p>For instance, the number one most common error I&#8217;d say is the reliance on technology &#8212; especially slides. Reading from your slides is always a really bad idea for a number of reasons, but there&#8217;s a different kind of slide addiction as well. If something goes wrong with your slides, <strong>make sure you have a way around it</strong>. I&#8217;ve seen presentations completely stall because of a video not playing, when the video wasn&#8217;t essential to the topic at all. Sure, it was a good visualisation of the subject at hand, but as someone in the audience I&#8217;m much more interested in the rest of the presentation than I am in someone trying to make PowerPoint perform a specific move.</p>
<p>Prepare for your slides being broken an unusable &#8212; have your vital images and videos in free form as a backup. And have some form of plan for what to do when that fails, as well. Think of how you&#8217;d present if the electricity failed and you were forced to hold your presentation in a circle of candle light. Will it impact on what you can show? Of course it does! But it should (almost) never stop you from holding a good presentation.</p>
<p>Even if everything goes the way it should, preparation is entirely vital. What I do when I finish writing a presentation is to <strong>boil it down to a few words per sentence or paragraph</strong>, and write those down on a separate piece of paper. Then I&#8217;ll hold the entire presentation alone using only those words as a memory. You&#8217;ll find that you remember a bit more, and some of the words are not really needed &#8212; so strike them out, write a new set of words. Hold the presentation again.</p>
<p>Sound like a painful procedure? Think it&#8217;s hard to hold a presentation only to yourself, listening to your own voice? Damn right it is. That doesn&#8217;t make it less vital. And if that sounded like a pain, check this out: Now <strong>continue repeating the process until you need no words at all</strong>. Hold the presentation without papers, and without ever turning to look at your slides. Practice this many times more &#8212; because when you step up there  to deliver the presentation for real, your mind turns everything which isn&#8217;t very deep in there to blank.</p>
<p>This is where I made my biggest mistake&#8230; I just simply didn&#8217;t have the time (or <strong>take the time</strong>) to do this, but ended up with some words on a few papers. Not many, but still this ties you to the place where your words happen to be&#8230; for me, it turned out to be a big problem because there was nowhere good for me to place the papers. The result was that I got stuck several times, and didn&#8217;t have the mental chart I needed to keep going without the words&#8230; had I practiced more, I&#8217;d definitely been able to do a  more free version of it, not being tied up to my papers awkwardly balanced somewhere.</p>
<p>The next thing to do is to listen to yourself (ouch). Nearly everyone hates this, and it can really put you in a state of total despair. Don&#8217;t let it &#8212; you need to listen to yourself hold the presentation, so you need to record it. It&#8217;s going to sound horrible, but that&#8217;s because most people don&#8217;t like the sound of their own voice as recorded. What you need to listen for is the words you get stuck on, the points where you go &#8220;ummmm&#8230; and then, ahh, well, you know&#8230;&#8221;</p>
<p>Everyone has those moments, but no one  knows about all of them. Now that you&#8217;ve identified them, practice on getting rid of them. Remember &#8212; being silent is fine. Remaining silent for a bit is a good punctuation, lets people ponder what you&#8217;ve just said for a bit. <strong>The only person in the room feeling awkward about it is you </strong>&#8211; so gather your thoughts for a bit, make sure what you&#8217;re going to say and then say it all in a flow.</p>
<p>Sound like a lot of practice and preparation? It is. Holding a presentation and making it good <strong>takes its time</strong>, and you need to be ready to invest that time if you&#8217;d like to hold a really good presentation. In a way, you&#8217;ll need to keep practicing in front of actual audiences to gain the experience that, in time. can give you that almost super-human ability to deliver good presentations displayed by people that end up on <a href="http://www.ted.org/">TED</a>.</p>
<p>There&#8217;s so much more to say about this subject, but this post is already long enough. I&#8217;m sure I will return to it again, but for now I&#8217;ll leave you with some very good links with presentation wisdom.</p>
<p>Rands has written two pieces on holding and writing presentations that delve a bit deeper into some parts than I did here. The first one is called &#8220;<a title="Rands in Repose: Hot To Not Throw Up" href="http://www.randsinrepose.com/archives/2007/04/30/how_to_not_throw_up.html">How To Not Throw Up</a>&#8221; and the second one is called &#8220;<a title="Rands in Repose: Out Loud" href="http://www.randsinrepose.com/archives/2008/02/03/out_loud.html">Out Loud</a>&#8220;, and both are very interesting reads.</p>
<p>Scott Hanselman has posted his <a title="Scott Hanselman's Computer Zen - 11 Top Tips for a Successful Technical Presentation" href="http://www.hanselman.com/blog/11TopTipsForASuccessfulTechnicalPresentation.aspx">11 Top Tips for a Successful Technical Presentation</a>. Some of his tips are somewhat hard to think of for beginners, when your brain is panicking and all you can hear in your mind is &#8220;gahhhhhh&#8221;, but if you strive to become a great presenter, it&#8217;s a must-read.</p>
<p></p>
<script type="text/javascript">
var flattr_wp_ver = '0.9.11';
var flattr_uid = '409';
var flattr_url = 'http://www.entertainingcode.com';
var flattr_lng = 'en_GB';
var flattr_cat = 'text';
var flattr_tag = 'blog,wordpress,rss,feed';
var flattr_btn = 'large';
var flattr_tle = 'Entertaining Code';
var flattr_dsc = 'Coding and the games industry';
</script>
<script src="http://api.flattr.com/button/load.js?v=0.2" type="text/javascript"></script>]]></content:encoded>
			<wfw:commentRss>http://www.entertainingcode.com/archives/let-it-slide/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
