<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7220281441485343407</id><updated>2012-02-17T04:36:29.190+11:00</updated><category term='mocks'/><category term='addiction'/><category term='introduction'/><category term='javascript'/><category term='art'/><category term='repetitivetaskisrepetitivebutfun'/><category term='censorship'/><category term='presentation'/><category term='protests'/><category term='rewrite'/><category term='ifwisheswerefishesIdwishforthesea'/><category term='psychology'/><category term='retcon'/><category term='agile'/><category term='coding-standard'/><category term='marketplace'/><category term='getridofretconlabelanduserewrite'/><category term='planning'/><category term='programmers'/><category term='internet'/><category term='portal'/><category term='tdd'/><category term='c++'/><category term='stephenvssteven'/><category term='science'/><category term='subjective'/><category term='emergent gameplay'/><category term='appstore'/><category term='smart-phones'/><category term='java'/><category term='php'/><category term='slow'/><category term='programming'/><category term='dontreinventthewheelbutreinventthebuggy'/><category term='youarenotagilewithouttdd'/><category term='games'/><category term='oop'/><category term='randomkeywords'/><category term='constructors'/><category term='idbuythatforadollar'/><category term='gaming'/><category term='decisions'/><category term='companies'/><category term='mvc'/><category term='rocket jump'/><category term='getoffmylawn'/><category term='quake'/><category term='multi-threading'/><category term='anesthesiologist'/><category term='languages'/><category term='history'/><category term='tribes'/><category term='fail'/><category term='zend'/><category term='skiing'/><category term='stupid'/><category term='compiler'/><category term='reuse'/><category term='estimation'/><category term='donthavetimeforgames'/><title type='text'>If life were a game...</title><subtitle type='html'>About stuff I like and you should like more</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>33</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-558939550574710892</id><published>2012-02-09T22:16:00.002+11:00</published><updated>2012-02-09T22:16:51.930+11:00</updated><title type='text'>TDD is good for you. But it's a hard habit to form</title><content type='html'>&lt;p&gt;I've been thinking a lot about TDD, agile training and the long term behaviour of teams after such training. I've met far more programmers who have had training in TDD than I know programmers who practice TDD. And I've heard all the excuses&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You can't do TDD with this language&lt;/li&gt;&lt;li&gt;You can't do TDD with this framework&lt;/li&gt;&lt;li&gt;You can't do TDD with this database&lt;/li&gt;&lt;li&gt;You can't do TDD with this hardware&lt;/li&gt;&lt;li&gt;You can't do TDD with this schedule&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All bullshit, believe me. I may have said some of those myself once&lt;/p&gt;&lt;p&gt;But once you get past all that you get programmers who will give you a lucid agreement that TDD is good and they should use it more. You train them and show them how it's done as well as push past the issues above.&lt;/p&gt;&lt;p&gt;And then they don't use it.&lt;/p&gt;&lt;p&gt;But why? They agreed it's a good idea and they should do more. We solved all the serious issues that were stopping them from trying. Why wont they even try and put it into their routine?&lt;/p&gt;&lt;p&gt;Routine. That's part of the problem. They still follow the old patterns all programmers learn. &amp;quot;I need to make something to do X. Not sure how to do it&amp;quot;... write write write &amp;quot;still not there&amp;quot;... write write write &amp;quot;okay it works. oh wait! I forgot to write any tests&amp;quot;&lt;/p&gt;&lt;p&gt;I want to delete that programmer's code and make him write it again. Seriously! You're so focused on writing code you forget how important it's function, adaptability and readability is. And the tools that help you get there are tests. Yes you solved X but I can't test it, can't easily change it and can't easily extend it. At least if I deleted his/her files that programmer would get some more practice at TDD.&lt;/p&gt;&lt;p&gt;Practice. That's part of it too. Do your TDD homework! Spend each working day after training with &amp;quot;what can I apply TDD to today?&amp;quot; Consider it incidental exercise to help improve your TDD muscles.&lt;/p&gt;&lt;p&gt;Is learning TDD like learning an exercise routine? Making part of it your daily routine. Setting achievable goals. Measuring your progress. And talk to others for encouragement and support. And if you get really stuck call in a personal trainer!&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-558939550574710892?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/558939550574710892/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2012/02/tdd-is-good-for-you-but-its-hard-habit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/558939550574710892'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/558939550574710892'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2012/02/tdd-is-good-for-you-but-its-hard-habit.html' title='TDD is good for you. But it&apos;s a hard habit to form'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-8021293837756251863</id><published>2011-12-23T21:47:00.000+11:00</published><updated>2011-12-23T21:47:16.897+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='companies'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='programmers'/><category scheme='http://www.blogger.com/atom/ns#' term='youarenotagilewithouttdd'/><title type='text'>You are NOT Agile if there's no Test Driven Development</title><content type='html'>Yes &lt;b&gt;YOU&lt;/b&gt;. Company, team, manager or programmer.&lt;br/&gt;&lt;br/&gt;You tried to tell me your job requires "Proven track record in delivering features in agile environment". You listed in your linked in profile that you have "Extensive experience with Agile projects". You describe your company as "Practising the latest Agile development techniques".&lt;br/&gt;&lt;br/&gt;Bullshit!&lt;br/&gt;&lt;br/&gt;If you're not doing Test Driven Development you're not agile. You're not Scrum. You're not XP. You're not Kanban. You'd be lucky to be classified as LEAN.&lt;br/&gt;&lt;br/&gt;Okay so TDD didn't make it into the &lt;a href="http://agilemanifesto.org/"&gt;Manifesto&lt;/a&gt; and maybe it should have. But all the ideas that built towards that manifesto included TDD as a key part of how programming should be done. You can argue about being 80% agile or that an agile technique for one company shouldn't be identical to the next. Fine! But you damn well better have TDD front and centre of that plan!&lt;br/&gt;&lt;br/&gt;Why is it so important? Because agile development isn't about changing management practises. It's about changing ALL your practises and that programmers are the most important part in developing software. Let me say that again because I think a lot of companies like to ignore it. &lt;b&gt;Programmers are the most important part in developing software.&lt;/b&gt; If your programmers are doing the same thing &lt;i&gt;before &lt;/i&gt;agile as they are &lt;i&gt;after&lt;/i&gt; except for a few meetings they go to then nothing of substance has really changed.&lt;br/&gt;&lt;br/&gt;So quit the bullshit. I don't care if you're not doing any agile techniques. Or if you like to call your regular meeting a "scrum" or a "standup". Just don't tell me you ARE practising agile and wonder why my jaw drops when you say "oh we sometimes write a few tests but we never to test driven development".&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-8021293837756251863?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/8021293837756251863/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/12/you-are-not-agile-if-theres-no-test.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8021293837756251863'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8021293837756251863'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/12/you-are-not-agile-if-theres-no-test.html' title='You are NOT Agile if there&apos;s no Test Driven Development'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-1299697908620281268</id><published>2011-11-04T16:01:00.000+11:00</published><updated>2012-01-04T09:15:10.681+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mvc'/><category scheme='http://www.blogger.com/atom/ns#' term='zend'/><category scheme='http://www.blogger.com/atom/ns#' term='php'/><title type='text'>Zend</title><content type='html'>&lt;p&gt;"But Zend Framework also provides an advanced Model-View-Controller (MVC) implementation that can be used to establish a basic structure for your Zend Framework applications" - &lt;a href="http://framework.zend.com/manual/en/learning.quickstart.intro.html"&gt;http://framework.zend.com/manual/en/learning.quickstart.intro.html&lt;/a&gt;&lt;/p&gt;&lt;p&gt;What a load of shit. Models are barely more than wrappers for database tables. Which would be okay except they have no connection to the view. And there's no easy way of having a model render out differently with different views. Zend Framework is shit and I wouldn't recommend it to anyone&lt;/p&gt;&lt;p&gt;&amp;lt/rant&amp;gt&lt;/p&gt;&lt;p&gt;&lt;b&gt;Update&lt;/b&gt;: For future reference Zend and most so called MVC web frameworks are actually &lt;a href="http://en.wikipedia.org/wiki/Model_2"&gt;Model 2&lt;/a&gt;. Zend is a pretty poor job of it but at least that puts it into the right category&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-1299697908620281268?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/1299697908620281268/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/11/zend.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/1299697908620281268'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/1299697908620281268'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/11/zend.html' title='Zend'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-6967846995447486281</id><published>2011-10-28T11:47:00.001+11:00</published><updated>2011-10-28T11:48:54.341+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='protests'/><category scheme='http://www.blogger.com/atom/ns#' term='smart-phones'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Everyone will have access to the internet in less than 10 years</title><content type='html'>&lt;p&gt;I'm making the call now. In 5-10 years everyone who wants access to the internet will have it. Already we're seeing tablets win over people who previously thought computers too complex to use and maintain. Cheap smart-phones are selling like hotcakes across Africa. Investment in mobile networks in the developing world has been very high for over a decade as it struggles to keep up with demand.&lt;/p&gt;&lt;p&gt;We've often talked about the internet being a tool for democracy. I'm not sure we ever really believed it until protests started across the arab world. But now that there are seemingly pointless protests across the world following the #occupy tags it seems the world is never going to be quite the same. Now protests (violent or otherwise) can be spawned by a hashtag with very little basis beyond that. Still not sure how I feel about that.&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-6967846995447486281?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/6967846995447486281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/10/everyone-will-have-access-to-internet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/6967846995447486281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/6967846995447486281'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/10/everyone-will-have-access-to-internet.html' title='Everyone will have access to the internet in less than 10 years'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-4447321155123345490</id><published>2011-09-19T11:01:00.000+10:00</published><updated>2011-09-19T11:01:10.585+10:00</updated><title type='text'>Games and Gamers can make the world a better place</title><content type='html'>&lt;a href="http://www.abc.net.au/news/2011-09-19/online-gamers-crack-enzyme-puzzle/2905314"&gt;Gamers crack the enzyme puzzle&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-4447321155123345490?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/4447321155123345490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/09/games-and-gamers-can-make-world-better.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/4447321155123345490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/4447321155123345490'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/09/games-and-gamers-can-make-world-better.html' title='Games and Gamers can make the world a better place'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-8507971782187468269</id><published>2011-09-11T16:07:00.000+10:00</published><updated>2011-09-11T16:07:29.226+10:00</updated><title type='text'>I'm enjoying some classic Uncle Bob on a Sunday</title><content type='html'>You can too&lt;br/&gt;&lt;br/&gt;&lt;a href="http://exposureroom.com/members/irascian/3a258e41ec2b4820bbc8a18b70ba7296/"&gt;Agile QA and using FitNesse&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-8507971782187468269?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/8507971782187468269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/09/im-enjoying-some-classic-uncle-bob-on.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8507971782187468269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8507971782187468269'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/09/im-enjoying-some-classic-uncle-bob-on.html' title='I&apos;m enjoying some classic Uncle Bob on a Sunday'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-543642131943968463</id><published>2011-09-07T21:45:00.000+10:00</published><updated>2011-09-07T21:46:28.006+10:00</updated><title type='text'>Battles facebook lost</title><content type='html'>Everyone knows Facebook is the massive presence on the internet and is fighting to get more user interaction on many fronts. Deals with bing and skype are still going strong but there are some battles they have backed off on.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.betabeat.com/2011/08/23/facebook-just-bowed-out-of-the-check-in-war-with-foursquare/"&gt;http://www.betabeat.com/2011/08/23/facebook-just-bowed-out-of-the-check-in-war-with-foursquare/&lt;/a&gt;&lt;br /&gt;To be fair they still have check-ins but it's now just part of a post. Not a key feature of announcing where you are. But still FourSquare use of gamification, deals and very good location database made this a battle facebook was certainly losing.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.complex.com/tech/2011/08/facebook-to-ax-deal-service"&gt;http://www.complex.com/tech/2011/08/facebook-to-ax-deal-service&lt;/a&gt;&lt;br /&gt;Everyone has had a go at the "group by" systems pioneered by groupon. Google and Facebook both trialled getting into it but Facebook has now given up. Will be curious to see if they pick one to partner with or just enjoy all the traffic they bring back into facebook and advertising revenue they hand over.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-543642131943968463?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/543642131943968463/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/09/battles-facebook-lost.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/543642131943968463'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/543642131943968463'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/09/battles-facebook-lost.html' title='Battles facebook lost'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-7505104056156601927</id><published>2011-08-31T09:05:00.004+10:00</published><updated>2011-08-31T09:20:05.930+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='quake'/><category scheme='http://www.blogger.com/atom/ns#' term='emergent gameplay'/><category scheme='http://www.blogger.com/atom/ns#' term='rocket jump'/><category scheme='http://www.blogger.com/atom/ns#' term='tribes'/><category scheme='http://www.blogger.com/atom/ns#' term='skiing'/><title type='text'>Emergent gameplay</title><content type='html'>I was watching some stuff on Tribes: Ascend and was reminded of something I haven't seen in years. Emergent gameplay. Where something completely unplanned by a game developer becomes the norm. Not some exploit which the developers quickly stamp down on but those rare occasions where they step back and encourage it.&lt;br /&gt;&lt;br /&gt;The Rocket Jump is the best known of these and emerged in Quake 1. Basically the rocket would create a lot of force throwing the player or enemy away from the blast. But the blast from a single rocket was not lethal. With armour and health boosts it could be reduced to a negligible level. So players found they could make their character jump, shoot a rocket at the ground underneath them, and fly up to a great height. The Quake series has stuck to allowing the rocket jump in all their games since as well as it persisting in Quake mods like Team Fortress which is now a standalone game with its sequel.&lt;br /&gt;&lt;br /&gt;Tribes Skiing is the other example of an exploited physics engine. Tribes already let players fly briefly using jetpacks but clever players found rapidly pressing jump would let their character build up speed going down hills. And the rapid jumping would let them slide up the next hill where they could use the jetpack to aim to fly over and hit the next down slope. In the sequel (and all tribes games since) skiing has become an accepted part of the game and reduced to just holding down space bar rather than the old rapid tapping.&lt;br /&gt;&lt;br /&gt;There's other old examples around but it's hard to find many that become the normal way of playing. You can't be considered a skilled player in Quake without mastering rocket jumping. And to play Tribes without skiing will earn abuse from your teammates. So scamming a MMO economy hardly compares.&lt;br /&gt;&lt;br /&gt;So I wonder why it's a thing of the past. Was it just a brief time of buggy physics in games? Are developers more vigilant against apparent exploits?&lt;br /&gt;&lt;br /&gt;&lt;iframe width="560" height="345" src="http://www.youtube.com/embed/_-51VZv8ZC4" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-7505104056156601927?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/7505104056156601927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/08/emergent-gameplay.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/7505104056156601927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/7505104056156601927'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/08/emergent-gameplay.html' title='Emergent gameplay'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://img.youtube.com/vi/_-51VZv8ZC4/default.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-8242813566706229709</id><published>2011-05-05T11:02:00.005+10:00</published><updated>2011-05-05T11:24:19.915+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='art'/><category scheme='http://www.blogger.com/atom/ns#' term='planning'/><category scheme='http://www.blogger.com/atom/ns#' term='estimation'/><category scheme='http://www.blogger.com/atom/ns#' term='science'/><category scheme='http://www.blogger.com/atom/ns#' term='anesthesiologist'/><title type='text'>It's always a Science even if it seems like it's not!</title><content type='html'>I'm sure you've heard the expression "It's an Art, not a Science". You may have even used some version of it yourself. I think I hate that statement.&lt;br /&gt;&lt;br /&gt;You may have been (or likely will one day) go to the hospital for an operation. And may expect to be put under a "general anaesthetic". But how does it work? You'll take something else to put you to sleep but how does this other drug stop you from feeling pain that would otherwise shock you right out of any deep sleep? They've been used in medicine for 150 years so this should be a simple question right?&lt;br /&gt;&lt;br /&gt;"Advances in cell biology, genetics and molecular biology have transformed anesthesiology into an active area of research. Scientists have largely abandoned the idea that anesthetics work by acting on fatty molecules in cell membranes. The bulk of the evidence now supports the idea that the drugs target specific protein molecules embedded in nerve cell membranes and interfere with neurotransmission. Researchers now believe that each anesthetic acts on a different set of molecules to bring about its characteristic effects." - &lt;a href="http://www.nigms.nih.gov/Education/factsheet_Anesthesia.htm"&gt;Anesthesia Fact Sheet&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;In other words: after nearly 200 years of research we still don't know exactly how they work. And yet it's used safely around the world on millions.&lt;br /&gt;&lt;br /&gt;But it's still a Science. Why? Because it's cause and effects are very well researched and measured. We know exactly what kind of dosage will have what kind of effect. They "why" isn't critical to that understanding. While any profession may have a level of artistry no one would say an anesthesiologist is more artist than scientist.&lt;br /&gt;&lt;br /&gt;So why do we use the term with business? Estimating, planning and building software all have known inputs and expected output. But why do we pretend there is no 'science' in these decisions and instead often rely on 'gut feeling' or personal experience.&lt;br /&gt;&lt;br /&gt;As far as I can see if there is a reasonable way to measure it (ROI, time, cost, man-hours, bugs, client satisfaction, employee satisfaction or whatever) then it can be treated as a science even if there's a large margin of error. What works and what doesn't. What has side effects and what doesn't. Did the business change you enacted have the effect you wanted? Are you comparing it to another group (a control if you will) that hasn't gone through the same changes. What studies are there on previous groups going through similar changes?&lt;br /&gt;&lt;br /&gt;Personal experience has value. But reproducible and measured results are science. The rest are BS artists.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-8242813566706229709?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/8242813566706229709/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/05/its-always-science-even-if-it-seems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8242813566706229709'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8242813566706229709'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/05/its-always-science-even-if-it-seems.html' title='It&apos;s always a Science even if it seems like it&apos;s not!'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-6434635707228950694</id><published>2011-02-05T13:46:00.002+11:00</published><updated>2011-02-05T13:48:18.674+11:00</updated><title type='text'>I was going to talk about story points</title><content type='html'>Inspired by a great comment from &lt;a href="http://blog.gdinwiddie.com/"&gt;George Dinwiddie&lt;/a&gt; a while ago. But then I got called in to work through the weekend :(&lt;br /&gt;&lt;br /&gt;So this is a reminder for myself as well as a brief plug for his great writings.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-6434635707228950694?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/6434635707228950694/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/02/i-was-going-to-talk-about-story-points.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/6434635707228950694'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/6434635707228950694'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/02/i-was-going-to-talk-about-story-points.html' title='I was going to talk about story points'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-4500605850567004793</id><published>2011-02-03T13:34:00.001+11:00</published><updated>2011-02-03T13:35:45.576+11:00</updated><title type='text'>10 years since Snowbird</title><content type='html'>A great read of comments by authors of the &lt;a href="http://agilemanifesto.org/"&gt;Agile Manifesto&lt;/a&gt; that was created 10 years ago:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.pragprog.com/magazines/2011-02/agile--"&gt;http://www.pragprog.com/magazines/2011-02/agile--&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-4500605850567004793?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/4500605850567004793/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2011/02/10-years-since-snowbird.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/4500605850567004793'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/4500605850567004793'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2011/02/10-years-since-snowbird.html' title='10 years since Snowbird'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-7436584130055249909</id><published>2010-10-06T20:49:00.000+11:00</published><updated>2010-10-06T20:49:57.040+11:00</updated><title type='text'>Why Google's Go is a Bore</title><content type='html'>&lt;a href="http://monoc.mo.funpic.de/go-rant/"&gt;Why Google';s Go is a Bore&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Great critic of Google's go language.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-7436584130055249909?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://monoc.mo.funpic.de/go-rant/' title='Why Google&apos;s Go is a Bore'/><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/7436584130055249909/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/10/why-googles-go-is-bore.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/7436584130055249909'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/7436584130055249909'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/10/why-googles-go-is-bore.html' title='Why Google&apos;s Go is a Bore'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-672786277906713703</id><published>2010-09-20T11:47:00.003+10:00</published><updated>2010-09-20T12:03:26.021+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='decisions'/><category scheme='http://www.blogger.com/atom/ns#' term='coding-standard'/><category scheme='http://www.blogger.com/atom/ns#' term='subjective'/><category scheme='http://www.blogger.com/atom/ns#' term='languages'/><title type='text'>Subjective technical decisions</title><content type='html'>Saw an interesting discussion today on what points to cover when evaluating what software language to use. I threw a few points in and it was pointed out that half of them were very subjective to measure. How would one get a team to agree on such points?&lt;br /&gt;&lt;br /&gt;This got my brain ticking as to all the subjective choices programmers make every day and the effects it has on others. We adopt 'standards' within a team to try and keep some sanity in it all. Coding standards is the most familiar to avoid future arguments about where a brace should be. And coding standards an a good example because they're defining all the small things. I'd love to see a coding standard that states: "Write tests first".&lt;br /&gt;&lt;br /&gt;We argue over decisions that don't have a large impact either way. It's very easy for me to say Java is annoying and I'd rather C#. But with very little experience in either language it'd be hard for me to defend that view against an experienced Java or C# developer who disagrees. Faced with such an argument my first instinct would be to dig in my heels and fight it out. But I have to suppress that feeling because I know in the end I could be productive in either language. And if the people I'm working with would be happier with one over another then that will add to our productivity too. There is a very strong human element in this decision that cannot be separated from all the technical and objective considerations.&lt;br /&gt;&lt;br /&gt;I think I'll come back and re-read this post next time I get drawn into a git vs mercurial debate.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-672786277906713703?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/672786277906713703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/09/subjective-technical-decisions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/672786277906713703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/672786277906713703'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/09/subjective-technical-decisions.html' title='Subjective technical decisions'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-2347625042322491232</id><published>2010-08-05T08:39:00.000+10:00</published><updated>2010-08-05T08:40:07.282+10:00</updated><title type='text'>Activision: Lose the chick</title><content type='html'>&lt;a href="http://www.gamasutra.com/view/news/29719/InDepth_No_Female_Heroes_At_Activision.php"&gt;http://www.gamasutra.com/view/news/29719/InDepth_No_Female_Heroes_At_Activision.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-2347625042322491232?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/2347625042322491232/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/08/activision-lose-chick.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/2347625042322491232'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/2347625042322491232'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/08/activision-lose-chick.html' title='Activision: Lose the chick'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-5317678091515444515</id><published>2010-07-27T16:37:00.002+10:00</published><updated>2010-07-27T16:40:42.862+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='presentation'/><title type='text'>Introduction to Agile Development</title><content type='html'>I'm doing a presentation for the &lt;a href="http://sydphp.org"&gt;Sydney PHP group&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As a sneak peak you can see my presentation as I write it&lt;br /&gt;&lt;br /&gt;&lt;iframe src="http://docs.google.com/present/embed?id=dhcfgkdt_29gns43hgs" frameborder="0" width="410" height="342"&gt;&lt;/iframe&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-5317678091515444515?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/5317678091515444515/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/07/introduction-to-agile-development.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5317678091515444515'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5317678091515444515'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/07/introduction-to-agile-development.html' title='Introduction to Agile Development'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-7736821099809835248</id><published>2010-06-01T18:43:00.005+10:00</published><updated>2010-06-01T19:58:33.329+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='marketplace'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='idbuythatforadollar'/><category scheme='http://www.blogger.com/atom/ns#' term='appstore'/><title type='text'>App stores are good for games</title><content type='html'>By now I think most gamers have bought something from an App-store. &lt;a href="http://store.steampowered.com/"&gt;Steam&lt;/a&gt;, &lt;a href="http://marketplace.xbox.com/en-US/default.htm"&gt;Xbox live Marketplace&lt;/a&gt;, &lt;a href="http://www.apple.com/iphone/apps-for-iphone/"&gt;iTunes&lt;/a&gt; or whatever.&lt;br /&gt;&lt;br /&gt;Furthermore I think a lot of people have bought games from places like Apple's app-store but do not consider themselves gamers. So app stores are all the rage now and with Steam now available on the mac it becomes the de-facto PC place to buy games. proprietary platforms all will come with their own. It's seen a boom in independent and low budget games going through a huge surge in market that hasn't been seen since the shareware days.&lt;br /&gt;&lt;br /&gt;But even more so for games than other software. Look at the &lt;a href="http://148apps.biz/app-store-metrics/?mpage=catcount"&gt;statistics &lt;/a&gt;from apple's apps and you find games are number 2 in size. Second only to books which may get kicked out now apple has their own iReader system. So all these app stores regardless of platform or format are a boon for games.&lt;br /&gt;&lt;br /&gt;But why games? Honestly I'd love to know myself. There's something about open source that has made it difficult for games to get traction but hasn't been a problem for lots of other software. So this paid model allows lots of wanna-be-game-developers to give it a try with minimal investment and risks. Combine that with the affordable luxury of buying a game for a few dollars instead of over a hundred and you have a thriving marketplace. And good on them! I look forward to seeing where this goes.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-7736821099809835248?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/7736821099809835248/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/06/app-stores-are-good-for-games.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/7736821099809835248'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/7736821099809835248'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/06/app-stores-are-good-for-games.html' title='App stores are good for games'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-3854702818059610029</id><published>2010-05-31T09:04:00.003+10:00</published><updated>2010-05-31T10:26:07.648+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='mocks'/><category scheme='http://www.blogger.com/atom/ns#' term='reuse'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='dontreinventthewheelbutreinventthebuggy'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Are mocks/fakes reusuable?</title><content type='html'>Programming 101 states:&lt;br /&gt;Don't copy and paste code. If you find yourself doing something repetitive then do it right so you can reuse the same code. Functions, classes and even separate files all serve this end.&lt;br /&gt;&lt;br /&gt;Now that I'm writing tests all the time I often find myself creating Mocks. Mocks are where you tell code to use a pretend version of some functionality instead of the real one. It could be because the real one does something you don't want in your tests (writes files, reads a database) or it could be that you've got some messy legacy code you can't to pull into your tests (yet). There's other reasons too but you get the idea.&lt;br /&gt;&lt;br /&gt;So if I make a Mock version of a class it makes sense to try and share that with everyone else that might be trying to test with that same class. Or does it?&lt;br /&gt;&lt;br /&gt;That assumption has some serious flaws that I'm only now starting to understand. And here's a few:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Behaviour you need to test may be completely different to the next guy&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;So I might be doing a mock file reader. And I might just want to send it some text just to get my code moving and doing stuff. But the next guy might be dealing with something far more critical and wants to simulate all the error conditions of a file being missing, failing to read, failing part way through a read, etc etc.&lt;br /&gt;&lt;br /&gt;So if we're both developing using the same mock and re-examine my code in a few weeks I'm going to find this horribly complex tool of which I'm only using the most simple part there of. Now no doubt there's some great work in this complex mock and it may be very useful for future testing work. But for my little class that just wants to read some text it's complete overkill and potentially makes my tests more complicated to understand than they need to be.&lt;br /&gt;&lt;br /&gt;All is not lost at this point. I could use inheritance to have my simple mock a parent of the advanced mock and break things down that way. But it's possibly I could very quickly write a brand new mock and ignore the advanced one in shared code. Since my mock may be no more than a handful of lines of code that may be the appropriate approach. To create a mock that is not shared with all the other tests.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;You may be writing a complex fake as a library interface&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Now even though it's complex it's still going to be limited and focused to what areas your code needs to be tested for. If it's shared with another project/executable that needs to talk to the same library there may be very little overlap. Again this can lend to an overly complex interface. It can get worse if your code is dealing with the 2.2 library and the other is still using the 1.8 library.&lt;br /&gt;&lt;br /&gt;But of course if there is significant overlap on complex interaction then it makes perfect sense to share that code. So there's no hard and fast rules here.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;You're mocking out legacy code&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;For me this is a common reason to mock. But may prove to be best reason not to share mocks. Essentially you need a long term goal of not mocking this code. It may not always work out. If the legacy code in question never changes then it may never end up being something you can pull into tests.&lt;br /&gt;&lt;br /&gt;So since the long term goal is to remove the need for mocks you're only encouraging tests to keep using the mocks by sharing them. If a mock is already a complex suite of interactions and fake behaviour and you need to add some new behaviour it's not going to occur to you that it may be easier to use the real production code. The mock will continue to grow and be implemented long after the production code it's mocking has changed and its true usefulness has expired.&lt;br /&gt;&lt;br /&gt;So after all this I'm still learning how to make mocks. Writing my own at least seems pretty quick and easy even without a mocking framework like gmock or cmock. But it's been a hard and slow lesson to learn that I shouldn't be aiming to put all this work into a kind of mock library.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-3854702818059610029?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/3854702818059610029/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/05/are-mocksfakes-reusuable.html#comment-form' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/3854702818059610029'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/3854702818059610029'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/05/are-mocksfakes-reusuable.html' title='Are mocks/fakes reusuable?'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-5320902551027313214</id><published>2010-05-21T21:30:00.001+10:00</published><updated>2010-05-21T22:33:09.322+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='repetitivetaskisrepetitivebutfun'/><category scheme='http://www.blogger.com/atom/ns#' term='psychology'/><category scheme='http://www.blogger.com/atom/ns#' term='stupid'/><title type='text'>Just one more X</title><content type='html'>What is it about human psychology that makes this such an effective way to keep people paying attention. It's the most obvious in games. There's always 3 or more short term goals you're aiming towards. Just this one fight. Just until the next save point. Just until I get 10 of this item.&lt;br /&gt;&lt;br /&gt;It works for other things. Tasks at work (go on, admit it!). Novels with short chapters.&lt;br /&gt;&lt;br /&gt;Is it possible to transfer this fantastic power to other things in life? Cleaning the house (just dust one more cupboard). Exercise (just one more lap). Often not. Why is this?&lt;br /&gt;&lt;br /&gt;The human brain is a stupid but fascinating thing&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-5320902551027313214?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/5320902551027313214/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/05/just-one-more-x.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5320902551027313214'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5320902551027313214'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/05/just-one-more-x.html' title='Just one more X'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-1350321050236850491</id><published>2010-05-14T22:41:00.000+10:00</published><updated>2010-05-14T22:41:06.058+10:00</updated><title type='text'>The Code Dump - Stop Apologizing for Your Code</title><content type='html'>&lt;a href="http://www.codelord.net/2010/05/13/stop-apologizing-for-your-code/"&gt;The Code Dump - Stop Apologizing for Your Code&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Heh heh... code dump... I think I'll have to return and read some more there.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-1350321050236850491?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.codelord.net/2010/05/13/stop-apologizing-for-your-code/' title='The Code Dump - Stop Apologizing for Your Code'/><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/1350321050236850491/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/05/code-dump-stop-apologizing-for-your.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/1350321050236850491'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/1350321050236850491'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/05/code-dump-stop-apologizing-for-your.html' title='The Code Dump - Stop Apologizing for Your Code'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-1365098062395528353</id><published>2010-04-27T08:35:00.002+10:00</published><updated>2010-04-27T08:36:14.916+10:00</updated><title type='text'>Test your password strength</title><content type='html'>&lt;a href="http://www.passwordmeter.com/"&gt;http://www.passwordmeter.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;A great use of Javascript&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-1365098062395528353?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/1365098062395528353/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/test-your-password-strength.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/1365098062395528353'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/1365098062395528353'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/test-your-password-strength.html' title='Test your password strength'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-3422720492488997441</id><published>2010-04-19T10:21:00.000+10:00</published><updated>2010-04-19T10:21:23.942+10:00</updated><title type='text'>As journalism turns cheap</title><content type='html'>Cheap journalist turn to the "social media" for stories&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.abc.net.au/unleashed/stories/s2875093.htm"&gt;ABC The Drum Unleashed - Stand by your tweets&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-3422720492488997441?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.abc.net.au/unleashed/stories/s2875093.htm' title='As journalism turns cheap'/><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/3422720492488997441/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/as-journalism-turns-cheap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/3422720492488997441'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/3422720492488997441'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/as-journalism-turns-cheap.html' title='As journalism turns cheap'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-8572315318481612442</id><published>2010-04-15T22:10:00.006+10:00</published><updated>2010-04-17T08:30:58.341+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='getoffmylawn'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='history'/><title type='text'>A brief history of Javascript</title><content type='html'>Javascript is the ugly duckling that is now ruling the internet. It's now a fully grown ugly arse duck! But you'll respect it because it got a lot right where corporations have failed.&lt;br /&gt;&lt;br /&gt;Back in 1996 I heard how Netscape was coming out with a new version 2.0 that would include Javascript. Apparently in a deal with &lt;a href="http://www.oracle.com"&gt;Sun Microsystems&lt;/a&gt; they renamed it from Livescript and it would allow programming to be embedded into HTML and run in the browser instead of on the server.&lt;br /&gt;&lt;br /&gt;At this time Netscape defined the web. If you browsed webpages you used netscape. Sure it crashed a lot. Yes it ran out of memory when some punk decided a page with 12 frames would be cool. But if you used anything else you were missing out on the full glory of the web. So when Netscape said they were doing something cool for the internet you listened with equal interest, excitement and doubt.&lt;br /&gt;&lt;br /&gt;Sounded like a toy. Netscape already messed up websites with the damn &amp;lt;BLINK&amp;gt; tag. Sure you could have some nice effects like a live clock or a image changing on a timer. But they'd just be gimmicks that no one would care about in time. Java would let us all write &lt;em&gt;proper&lt;/em&gt; applications for browsers. How wrong we were...&lt;br /&gt;&lt;br /&gt;The next 5 years was a mess. Java proved to be a dog. Never lived up to it's promise as it ate up memory and cpu like a glutton and never did anything fantastic. Sure you can get some nice Java programs &lt;em&gt;no&lt;/em&gt; but in the late '90s there was two camps. Newly trained Java engineers getting high salaries from companies who believed the shit Sun was putting out promoting the language like the second coming. And people like me waiting for it to die in a fire because it was frankly crap.&lt;br /&gt;&lt;br /&gt;And in that time where was Javascript? It was a toy. Used more by adverts trying to get in your face than any serious programmer. Microsoft's IE and it's half arsed 'jscript' as well as Netscape's own sporadic support for Javascript made it useless for any serious programming. There was nothing you could do to get it to run consistently across browsers.&lt;br /&gt;&lt;br /&gt;Then over the last decade a push for web standards finally got a hold. The DOM interface became a standard and there was something javascript programmers could latch onto. Suddenly you could manipulate the page in real time in a way that worked across all modern browsers. It was taken more seriously but still didn't get much traction. Until some smart people realised you could use it to make asynchronous requests.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;Ajax&lt;/strong&gt; was a word thrown around for a while. It took some digging to find out what it meant. And even then it wasn't clear why it was useful. Then like an explosion on the internet it all became clear in one app. It was 2005 and the internet changed thanks to &lt;a href="http://maps.google.com"&gt;Google Maps&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Rarely does one website change the entire direction of internet growth and development. Suddenly everyone wanted Ajax style programming and that meant they had to learn Javascript. With that one hit it became clear you could now write &lt;em&gt;applications&lt;/em&gt; not just websites.&lt;br /&gt;&lt;br /&gt;Now it's taken for granted. If you try and create an interactive website without the application style interfaces Javascript can bring you'll be considered slow and clunky. Thanks to browser improvements Javascript is running faster than ever and can be more secure than flash. Javascript is running on mobile phones! To think it used to crash my computer 10 years ago.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-8572315318481612442?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/8572315318481612442/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/brief-history-of-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8572315318481612442'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8572315318481612442'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/brief-history-of-javascript.html' title='A brief history of Javascript'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-2225115094071812382</id><published>2010-04-13T21:51:00.001+10:00</published><updated>2010-04-13T21:52:17.629+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='javascript'/><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='tdd'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler'/><title type='text'>Move over Java, I have fallen in love with JavaScript</title><content type='html'>&lt;a href="http://misko.hevery.com/2010/04/07/move-over-java-i-have-fallen-in-love-with-javascript/"&gt;Move over Java, I have fallen in love with JavaScript&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Or as I would say: Move over strictly typed languages with slow compilers. But that doesn't have the same ring to it.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-2225115094071812382?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/2225115094071812382/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/move-over-java-i-have-fallen-in-love.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/2225115094071812382'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/2225115094071812382'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/move-over-java-i-have-fallen-in-love.html' title='Move over Java, I have fallen in love with JavaScript'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-3776986026466754574</id><published>2010-04-06T09:28:00.001+10:00</published><updated>2010-04-06T21:09:24.506+10:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='multi-threading'/><category scheme='http://www.blogger.com/atom/ns#' term='slow'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>C++ sucks part two</title><content type='html'>&lt;strong&gt;You like speed? C++ will not get any faster&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Because C++ support for multi-threading is lackluster. You've pretty much got to roll your own carefully constructed tools to avoid even the most common mistakes multi-threading can introduce.&lt;br /&gt;&lt;br /&gt;"What about &lt;a href="http://www2.research.att.com/~bs/C++0xFAQ.html"&gt;C++0x&lt;/a&gt;?" I hear you say. Screw that! Sure a lot of the stuff being proposed is a huge improvement. But it's been sitting around since 98. When am I going to see this in a compiler? When can I use it? I'm slowly dying here as processors get more and more cores.&lt;br /&gt;&lt;br /&gt;To write a program in C++ today is to write code that will never run faster. Or will probably crash trying.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;You like speed? C++ build times will feel like riding the bus&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Builds are &lt;em&gt;sooo&lt;/em&gt; slow. While trivial programs can build from scratch in seconds. Typical programs can take minutes to build from scratch. Complex programs can take so long to build it's usually farmed off to servers to do a 'nightly build'.&lt;br /&gt;&lt;br /&gt;Let's do some math. Assume a program takes 2 minutes to build and maybe due to crappy makefile handling the programmer does 10 clean rebuilds a day (on average). If programmer is paid $40 an hour then he's paid about $300 a year just to run "make".&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;You like clean code? Good luck because header files suck&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Why in C++ do we have to define all our class functions twice? Because if we try and inline them we just make the builds take forever. Every change to a header file can trigger scores of files to rebuild. If you've got a key file like a render it can chain hundreds of files to rebuild just from adding a comment.&lt;br /&gt;&lt;br /&gt;So we carefully construct our header files. Fill them with &lt;a href="http://www.learncpp.com/cpp-tutorial/17-forward-declarations/"&gt;forward declarations&lt;/a&gt; and carefully define our class interfaces in the hope we wont ever have to touch the header file again.&lt;br /&gt;&lt;br /&gt;But of course interfaces change all the time. We're constantly adjusting things and kicking off painfully slow builds. Or in a rush to get things working including other header files only to chain up even more slow builds in the future.&lt;br /&gt;&lt;br /&gt;But frankly we don't even want header files. A computer could figure out the interfaces for a class. But why doesn't the compiler do this for us in C++? It's just a dumb language that wants you to hand hold it through the build process.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-3776986026466754574?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/3776986026466754574/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/c-sucks-part-two.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/3776986026466754574'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/3776986026466754574'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/c-sucks-part-two.html' title='C++ sucks part two'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-3619293288323581402</id><published>2010-04-01T22:35:00.000+11:00</published><updated>2010-04-01T22:35:56.601+11:00</updated><title type='text'>I love a good car crash</title><content type='html'>&lt;a href="http://www.smh.com.au/technology/technology-news/internets-not-special-says-communications-minister-20100401-rg7h.html?autostart=1"&gt;Internet&amp;#39;s not special, says communications minister&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;The screech of tires. The smashing glass.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-3619293288323581402?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='related' href='http://www.smh.com.au/technology/technology-news/internets-not-special-says-communications-minister-20100401-rg7h.html?autostart=1' title='I love a good car crash'/><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/3619293288323581402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/i-love-good-car-crash.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/3619293288323581402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/3619293288323581402'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/i-love-good-car-crash.html' title='I love a good car crash'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-5215262191475680412</id><published>2010-04-01T15:16:00.003+11:00</published><updated>2010-04-03T20:18:36.242+11:00</updated><title type='text'>Great. Now I have to be certified.</title><content type='html'>&lt;a href="http://blog.coryfoy.com/2010/03/the-proverbial-train-has-left-the-station/"&gt;http://blog.coryfoy.com/2010/03/the-proverbial-train-has-left-the-station/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Thanks to you bastards who went out to become certified scrum/xp/agile dicks. Do I need to go so far as putting CSP after my name?&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-5215262191475680412?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/5215262191475680412/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/great-now-i-have-to-be-certified.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5215262191475680412'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5215262191475680412'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/04/great-now-i-have-to-be-certified.html' title='Great. Now I have to be certified.'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-1729012242388541560</id><published>2010-03-31T21:55:00.000+11:00</published><updated>2010-03-31T08:22:05.221+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='c++'/><category scheme='http://www.blogger.com/atom/ns#' term='constructors'/><category scheme='http://www.blogger.com/atom/ns#' term='ifwisheswerefishesIdwishforthesea'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='oop'/><title type='text'>C++ sucks part one</title><content type='html'>This is going to be too much to fit in one post. So lets start with the most provocative.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;I'm over Constructors and Deconstructors&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;It's such a staple of &lt;a href="http://en.wikipedia.org/wiki/Object-oriented_programming"&gt;OOP&lt;/a&gt; and yet I could seriously do without them now. If you're like me you learned these are great places to create/delete required objects, open/close files and all that stuff. But it just causes trouble.&lt;br /&gt;&lt;br /&gt;Here's a typical example:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;MyObject()&lt;br /&gt;{&lt;br /&gt;anotherObject = new AnotherObject();&lt;br /&gt;fileHandle = open("configfile.xml");&lt;br /&gt;}&lt;br /&gt;~MyObject()&lt;br /&gt;{&lt;br /&gt;close(fileHandle);&lt;br /&gt;delete anotherObject;&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;Great! What could be wrong with that? We'll there's two things.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. You want to customise things in a child class&lt;/strong&gt;&lt;br /&gt;Ideally you shouldn't need to mess with the parent. Maybe due to some rules on shared code you can't change the parent (easily). But if you want anotherObject to be CustomObject and use a different filename you end up with this crap:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;MyObjectChild() : MyObject()&lt;br /&gt;{&lt;br /&gt;delete anotherObject;&lt;br /&gt;anotherObject = new CustomObject();&lt;br /&gt;close(fileHandle);&lt;br /&gt;fileHandle = open("myfile.xml");&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;Ugh. It's terrible! You'd never do this on a normal 'virtual' function. You'd just not call the parent. But with a constructor and deconstructor you don't have a choice.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. You're running unit tests&lt;/strong&gt;&lt;br /&gt;&lt;a href="http://iflifewereagame.blogspot.com/2010/03/embrace-change-or-fail-and-wonder-why.html"&gt;Don't tell me you're not writing tests!&lt;/a&gt; But you don't want the object opening a file. That means you have to mess with a file just to run a test case. And perhaps CustomObject does stuff you don't want too. But you can't change it to never construct. Both will happen no matter what you try and do with a child class. So you're in the shit now.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;So what can you do?&lt;/strong&gt;&lt;br /&gt;I'm half tempted to replace my constructors with a macro (&lt;a href="http://www.parashift.com/c++-faq-lite/inline-functions.html#faq-9.5"&gt;except they're evil&lt;/a&gt;) as they are all starting to look like this:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;MyObject(AnotherObject * _anotherObject, int _fileHandle) :&lt;br /&gt;anotherObject(_anotherObject),&lt;br /&gt;fileHandle(_fileHandle)&lt;br /&gt;{&lt;br /&gt;}&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;There's times when the construction order wont let you do that. But then you have to pass in a factory object and that can open a whole new can of worms.&lt;br /&gt;&lt;br /&gt;Most of these problems are common to OO languages. But it's just one reason why C++ sucks.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-1729012242388541560?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/1729012242388541560/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/c-sucks-part-one.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/1729012242388541560'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/1729012242388541560'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/c-sucks-part-one.html' title='C++ sucks part one'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-2013175449796636034</id><published>2010-03-30T12:02:00.000+11:00</published><updated>2010-03-30T12:03:53.575+11:00</updated><title type='text'>Train Wreck in 3... 2....</title><content type='html'>&lt;a href="http://www.smh.com.au/technology/technology-news/government-goes-to-war-with-google-over-net-censorship-20100330-r9bp.html"&gt;http://www.smh.com.au/technology/technology-news/government-goes-to-war-with-google-over-net-censorship-20100330-r9bp.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-2013175449796636034?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/2013175449796636034/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/train-wreck-in-3-2.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/2013175449796636034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/2013175449796636034'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/train-wreck-in-3-2.html' title='Train Wreck in 3... 2....'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-8797877002880251205</id><published>2010-03-27T12:14:00.004+11:00</published><updated>2010-03-27T12:43:32.266+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='rewrite'/><category scheme='http://www.blogger.com/atom/ns#' term='retcon'/><category scheme='http://www.blogger.com/atom/ns#' term='getridofretconlabelanduserewrite'/><category scheme='http://www.blogger.com/atom/ns#' term='portal'/><title type='text'>I'm sick of ret-cons</title><content type='html'>Blah blah Han shot first blah blah.&lt;br /&gt;&lt;br /&gt;This was brought to my attention yesterday!&lt;br /&gt;&lt;a href="http://kotaku.com/5485075/valve-updates-portal-again-now-with-new-ending"&gt;http://kotaku.com/5485075/valve-updates-portal-again-now-with-new-ending&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Like WTF!? The ending was pretty vague anyway. You get to the surface with things blowing up. Cut to music. Why is there even a need to change to and re-capture?&lt;br /&gt;&lt;br /&gt;Why is there this growing trend of writers going back and reworking their story? It's not like there's a Homer's Odyssey (revised edition). I'm sick of it. Let it sit. Write a NEW story.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-8797877002880251205?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/8797877002880251205/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/im-sick-of-ret-cons.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8797877002880251205'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/8797877002880251205'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/im-sick-of-ret-cons.html' title='I&apos;m sick of ret-cons'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-7056844696905932014</id><published>2010-03-25T21:17:00.000+11:00</published><updated>2010-03-25T21:40:33.242+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='agile'/><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><title type='text'>Embrace change or fail and wonder why you wasted your time</title><content type='html'>Ok so I mentioned how I've been getting my head around TDD and Agile recently. I'm kinda late to the game since I only discovered it 2 years ago with a presentation by &lt;a href="http://twitter.com/unclebobmartin"&gt;Uncle Bob&lt;/a&gt; in Chicago. So it's taken a lot of reading and talking to get to the point where I am now. But I'm also carefully watching trials others are doing and making notes about those who succeed and those who fail.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So time to talk about the interesting one. The failures. Let's break them down to some common archetypes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;I'll keep coding the same way and make some token effort with planning cards.&lt;/b&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;img src="http://icanhascheezburger.files.wordpress.com/2009/08/funny-pictures-cat-plays-poker.jpg" /&gt;&lt;/div&gt;&lt;br /&gt;Yeah you suck. You've got to change your ways! The order you do things isn't going to be the order you always did it. You've got to talk to the customer/designer/whatever and let them talk about what's most important. That's your new order! Don't spend for ever building some backend database bullshit. You may not even need it by the end. The whole design may change and become something unrecognisable. You're building yourself waste. Stop wasting time and money! That's the customer's job.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Waaah! TDD is hard! Why can't I just write my code. This is taking too long.&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;Yes it's hard. Especially if you've never done it before. So is programming. Just deal with it! You'll get better just like you've gotten better at every other programming thing you've had to learn. At least I hope you get better, otherwise is this the right job for you? And don't kind yourself you're writing some trivial bit that doesn't need tests. All big systems started as a small trivial system. You want to be able to change that big system with confidence right? Then write tests. Unless you're stuck for an hour trying to figure out &lt;i&gt;how&lt;/i&gt; to test it then you've got no real excuse.&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;LOL. We're agile. Except for the TDD part.&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;No you're not! That's the most important part! Having to deal with changes all the time is not what makes you "agile".&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;Screw all this shit. I've been doing this for years! Don't tell me how to do my job.&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;span class="Apple-style-span" style="font-weight: normal;"&gt;&lt;b&gt;&lt;/b&gt;Screw you! Everything can be done better. Everyone can learn. There is no such thing as perfection and you're just being an arrogant prick by even suggesting you are. I'm the only perfect one!&lt;br /&gt;&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-7056844696905932014?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/7056844696905932014/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/embrace-change-or-fail-and-wonder-why.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/7056844696905932014'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/7056844696905932014'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/embrace-change-or-fail-and-wonder-why.html' title='Embrace change or fail and wonder why you wasted your time'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-2845983593196637429</id><published>2010-03-24T18:42:00.001+11:00</published><updated>2010-03-24T20:56:01.666+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='donthavetimeforgames'/><category scheme='http://www.blogger.com/atom/ns#' term='games'/><category scheme='http://www.blogger.com/atom/ns#' term='addiction'/><title type='text'>Should video games be addictive?</title><content type='html'>Now keep in mind I don't think games are &lt;i&gt;addictive&lt;/i&gt; like drugs are. That's a rant for another time perhaps. But they are designed to keep you &lt;a href="http://www.popcap.com/games/free/bejeweled2"&gt;playing &lt;/a&gt;and &lt;a href="http://www.civilization.com/"&gt;playing &lt;/a&gt;and &lt;a href="http://www.worldofwarcraft.com/"&gt;playing&lt;/a&gt;. Now for most people this is not a problem. You choose when to play and when not too. It's something you enjoy in moderation.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;But some weak minded fools will &lt;a href="http://community.livejournal.com/wowwidows"&gt;ignore their significant other&lt;/a&gt;, stop showing up to work (&lt;a href="http://www.kotaku.com.au/2010/03/shocking-study-finds-video-games-interfere-with-schoolwork/"&gt;or whatever&lt;/a&gt;) and allow personal hygiene to lapse.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Now you have never done that. I have never done that. But perhaps like me you've played a game just a little bit more. Just one more level. Just one more fight. Just let me hand in this gopher. Next thing you know the morning sun is streaming in the window. What happened?&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;You just had a damn good time! That's what happened. Stop freaking out. We've done it with that extended edition of Lord of the Rings. We've done it with a good novel and short chapters (just one more!) And we've done it drinking too much with friends. Get over it. Enjoy it. And wear sunglasses to work/school!&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Will games get more additive? I sure hope so! I want games to get better. Games have been pretty good for a long time. If anything they're less addictive because it's easier to get a short burst of play out of them. People just don't have that much time to spend.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-2845983593196637429?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/2845983593196637429/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/should-video-games-be-addictive.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/2845983593196637429'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/2845983593196637429'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/should-video-games-be-addictive.html' title='Should video games be addictive?'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-5143435437957900217</id><published>2010-03-23T21:24:00.000+11:00</published><updated>2010-03-24T18:40:26.766+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='censorship'/><category scheme='http://www.blogger.com/atom/ns#' term='stephenvssteven'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><title type='text'>Stephen Conroy is not Satan</title><content type='html'>That statement is probably getting two types of reactions.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;a) Who is &lt;a href="http://www.minister.dbcde.gov.au/"&gt;Stephen Conroy&lt;/a&gt;? Well if you live in Australia then all your internets belong to him. But otherwise you may as well stop reading.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;b) &lt;a href="http://stephen-conroy.com/"&gt;He is too&lt;/a&gt;! Okay you're the ones I want to talk to. You're wrong and you're wasting your time getting upset about Internet censorship.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;Let me lay out the facts as I see them (read: opinion and opinion cannot be wrong no matter how much you disagree).&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;He's not evil he's just stupid&lt;/b&gt;&lt;/div&gt;&lt;div&gt;There's nothing really wrong with that. Lots of politicians are stupid. Some of the best have been morons! I'm very fond of the saying &lt;a href="http://en.wikipedia.org/wiki/Hanlon's_razor"&gt;"Never assume malice that which can be adequately explained by stupidity"&lt;/a&gt; so I'm applying it here. He thinks he's doing a great service to Australia. Finally we'll be protected from all that nasty stuff that we were not supposed to be seeing anyway. Finally the internet has reached maturity where such things are possible. Or at least that's his thinking. But there's no point making personal attacks while the other side are &lt;a href="http://web.archive.org/web/20080718190309/http://netalert.gov.au/"&gt;no better&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;The plan is doomed anyway&lt;/b&gt;&lt;/div&gt;&lt;div&gt;So you may as well let it play out. &lt;i&gt;If&lt;/i&gt; it gets implemented several things will happen:&lt;/div&gt;&lt;div&gt;&lt;ol&gt;&lt;li&gt;Telstra will increase charges by $2 a month&lt;/li&gt;&lt;li&gt;Important people will find their favourite porn site blocked&lt;/li&gt;&lt;li&gt;Some insignificant but controversial (euthanasia? people smuggling?) site will be blocked and cause an uproar in the papers&lt;/li&gt;&lt;li&gt;Polling will show great disapproval with the plan (now that the public knows what it &lt;i&gt;really&lt;/i&gt; means to them)&lt;/li&gt;&lt;/ol&gt;All this may happen within days of the filter being put in place. And like other things the government of the day will pull out the system before the opposition can make it a policy and win some votes.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;So don't worry about it. It'll all fall apart like every other attempt to "control" the internet. Australian governments don't have the conviction of China or Iran.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-5143435437957900217?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/5143435437957900217/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/stephen-conroy-is-not-satan.html#comment-form' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5143435437957900217'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5143435437957900217'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/stephen-conroy-is-not-satan.html' title='Stephen Conroy is not Satan'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7220281441485343407.post-5722955109608157933</id><published>2010-03-23T21:07:00.000+11:00</published><updated>2010-03-24T18:40:54.444+11:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='introduction'/><category scheme='http://www.blogger.com/atom/ns#' term='randomkeywords'/><category scheme='http://www.blogger.com/atom/ns#' term='internet'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='gaming'/><title type='text'>A brief introduction</title><content type='html'>And then I'll get into my first rant.&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;I'm some guy who thinks about stuff. Stuff you probably don't care about but I'm going to tell you anyway! Now I don't think I'm going to cure cancer or create world peace but it'd be nice if I could make the world a &lt;i&gt;little&lt;/i&gt; better. Stuff I'd like to talk about will focus on:&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Games&lt;/b&gt;&lt;/div&gt;&lt;div&gt;I've always been a game player and am fascinated in how one designs a game. Yes it's mostly computer games these days and even then it's mostly consumed by &lt;a href="http://www.worldofwarcraft.com/"&gt;World of Warcraft&lt;/a&gt;.&lt;/div&gt;&lt;div&gt;Shut-up you in the back! We all have our vices and I'll avoid sniggering at your hentai collection if you leave my level 80 mage alone.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Programming&lt;/b&gt;&lt;/div&gt;&lt;div&gt;Only 2 years ago I was introduced to this weird concept of &lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test Driven Developmen&lt;/a&gt;t and the broader concept of &lt;a href="http://agilemanifesto.org/"&gt;Agile&lt;/a&gt;. Programming has been part of my life since I was eight. When I haven't been doing it professionally I've found myself doing it more in my free time. So it's nice that after 20+ years to suddenly learn something very new.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;b&gt;Internet&lt;/b&gt;&lt;/div&gt;&lt;div&gt;To me you are all young whipper-snappers that don't know a good thing when you've got it. Yes I've been lectured by people who used the internet back when you had to use computers with out screens (or whatever they called them back then). So I'm in turn going to lecture you about the time when the web was young. And why it's such a horrible mess now that fills your inbox with spam. And why I love it and would have it no other way.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7220281441485343407-5722955109608157933?l=iflifewereagame.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://iflifewereagame.blogspot.com/feeds/5722955109608157933/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/brief-introduction.html#comment-form' title='4 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5722955109608157933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7220281441485343407/posts/default/5722955109608157933'/><link rel='alternate' type='text/html' href='http://iflifewereagame.blogspot.com/2010/03/brief-introduction.html' title='A brief introduction'/><author><name>Geoffrey Dunn</name><uri>https://profiles.google.com/108784265735983376859</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='32' src='//lh6.googleusercontent.com/-nfOm6utzwzk/AAAAAAAAAAI/AAAAAAAABAs/qRixXpCqHQ8/s512-c/photo.jpg'/></author><thr:total>4</thr:total></entry></feed>
