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

<channel>
	<title>Jare&#039;s blog</title>
	<atom:link href="http://www.iguanademos.com/Jare/wp/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.iguanademos.com/Jare/wp</link>
	<description>Stuff I write</description>
	<lastBuildDate>Wed, 16 May 2012 21:36:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Githubbed!</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2623</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2623#comments</comments>
		<pubDate>Tue, 15 May 2012 23:35:49 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[source code]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2623</guid>
		<description><![CDATA[A few months ago I created a Github account to see what it&#8217;s all about. Even if you use it yourself without all the nice features of a distributed version control system, it&#8217;s a great way to manage &#38; publish &#8230; <a href="http://www.iguanademos.com/Jare/wp/?p=2623">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>A few months ago I created a <a href="https://github.com/TheJarehttp://">Github account</a> to see what it&#8217;s all about. Even if you use it yourself without all the nice features of a <a href="http://en.wikipedia.org/wiki/Distributed_revision_control" target="_blank">distributed version control system</a>, it&#8217;s a great way to manage &amp; publish your open source projects!</p>
<p>I put up there some of my old C/C++ code, and a few experiments I&#8217;ve toyed with in my (now scarce) spare time, mostly related to JavaScript. Feel free to check them out!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2623</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GDC 2012</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2583</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2583#comments</comments>
		<pubDate>Thu, 08 Mar 2012 23:25:41 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[gdc]]></category>
		<category><![CDATA[slides]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2583</guid>
		<description><![CDATA[[Edit]: The GDC Vault is now open for business, with lots of slides and presentations. Meggan Scavio also had good news on Twitter about availability of free videos. Another Game Developers Conference I miss, but I&#8217;ll try to track as &#8230; <a href="http://www.iguanademos.com/Jare/wp/?p=2583">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>[Edit]: The <a href="http://www.gdcvault.com/free/gdc-12" target="_blank">GDC Vault is now open</a> for business, with lots of slides and presentations. Meggan Scavio also had <a href="https://twitter.com/#!/megganpez/status/185857804324712448" target="_blank">good news on Twitter</a> about availability of free videos.</p>
<p><span id="more-2583"></span></p>
<p>Another Game Developers Conference I miss, but I&#8217;ll try to track as many presentations as I can:</p>
<ul>
<li><a href="http://www.andrewwillmott.com/talks/inside-glassbox" target="_blank">GlassBox, the new SimCity simulation engine</a> and <a href="http://www.youtube.com/watch?v=CtZ7uDF48yY" target="_blank">some clips of the demos</a>, by  Ocean Quigley, Dan Moskowitz and Andrew Willmott</li>
<li><a href="http://www.raphkoster.com/2012/03/09/gdc2012-slides-for-good-bad-great-design/" target="_blank">Good, Bad, Great Design</a> by Raph Koster</li>
<li><a href="http://www.darklorde.com/2012/03/the-5-domains-of-play-slides/" target="_blank">The 5 Domains of Play</a> by Jason VandenBerghe</li>
<li><a href="http://www.scribd.com/fullscreen/84728657" target="_blank">Core Games, Real Numbers</a> by Kongregate</li>
<li><a href="http://www.dtecta.com/files/GDC2012_vandenBergen_Gino_Math_Tut.pdf" target="_blank">Math for Game Programmers: Dual Numbers</a> and <a href="http://www.dtecta.com/files/GDC2012_vandenBergen_Gino_Physics_Tut.pdf" target="_blank">Physics for Game Programmers: Collision Detection</a> by Gino van den Bergen</li>
<li><a href="http://chrishecker.com/The_Dysfunctional_Three-Way" target="_blank">The Dysfunctional Three-Way</a> rant by Chris Hecker</li>
<li><a href="http://www.bitsquid.se/technology.html#papers" target="_blank">Cutting the Pipe: Achieving Sub-Second Iteration Times</a> by Niklas Frykholm</li>
<li><a href="http://bitsquid.se/technology.html#papers" target="_blank">Flexible Rendering for Multiple Platforms and Practical Particle Lighting</a> by Tobias Persson</li>
<li><a href="http://engineroom.ubi.com/deferred-radiance-transfer-volumes/" target="_blank">Deferred Radiance Transfer Volumes: Global Illumination in Far Cry 3</a> by Mickael Gilabert and Nikolay Stefanov</li>
<li><a href="https://docs.google.com/file/d/0B0AdsFXmX1ORZEFJcVV2MDZRSGk4aEo4VmJzS01vUQ/edit?pli=1" target="_blank">Frames, Sparsity and Global Illumination</a> by Robin Green and Manny Ko</li>
<li><a href="http://www.youtube.com/watch?v=_adMEEAtDwE" target="_blank">The Bleeding Edge of Open Web Tech</a> by Vincent Scheibn (video)</li>
<li><a href="http://reedbeta.com/gdc/" target="_blank">Ambient Occlusion Fields and Decals in Infamous 2</a> by Nathan Reed</li>
<li><a href="http://mainroach.blogspot.com/2012/03/native-client-gdc.html" target="_blank">Porting your game to Native Client</a>, <a href="http://mainroach.blogspot.com/2012/03/native-client-gdc.html" target="_blank">Best practices in developing a web game</a> and <a href="http://mainroach.blogspot.com/2012/03/native-client-gdc.html" target="_blank">DXT is not enough! Advanced topics in texture compression</a> by Colt &#8220;MainRoach&#8221; McAnlis</li>
<li><a href="http://www.slideshare.net/bcousins/when-the-consoles-die-what-comes-next" target="_blank">When The Consoles Die, What Comes Next?</a> by Ben Cousins</li>
<li><a href="http://research.tri-ace.com/Data/GDC2012_PracticalPBRinRealtime.ppt" target="_blank">Practical Physically Based Rendering in Real-Time</a> by Yoshiharu Gotanda</li>
<li><a href="http://robert.cupisz.eu/2012/light-probe-interpolation/" target="_blank">Light probe interpolation</a> by Robert Cupisz</li>
<li><a href="http://publications.dice.se/" target="_blank">Terrain in Battlefield 3: A Modern, Complete and Scalable System</a> by Mattias Widmark</li>
<li><a href="http://publications.dice.se/" target="_blank">Stable SSAO in Battlefield 3 with Selective Temporal Filtering</a> by Louis Bavoil and Johan Andersson</li>
<li><a href="http://publications.dice.se/" target="_blank">Modular Rigging in Battlefield 3</a> by Johan Ramström</li>
<li><a href="http://www.youtube.com/watch?v=XAqIpGU8ZZk" target="_blank">From Console to Chrome</a> by Lilli Thompson (video)</li>
<li><a href="http://www.insomniacgames.com/gdc12-john-obrien-math-for-gameplay-and-ai/" target="_blank">Math for Gameplay and AI</a> by John O’Brien</li>
<li><a href="http://www.insomniacgames.com/gdc12-sean-ahern-it-stinks-and-i-dont-like-it-making-a-better-engine-experience-at-insomniac-games/" target="_blank">It Stinks and I Don’t Like It: Making a Better Engine Experience At Insomniac Games</a> by Sean Ahern</li>
<li><a href="http://www.insomniacgames.com/gdc12-drew-murray-culture-shock-user-research-on-resistance-3/" target="_blank">What You Don’t Know IS Hurting You: How Aggressive User Research Improved Resistance 3</a> by Drew Murray</li>
<li><a href="http://www.insomniacgames.com/gdc12-mike_acton-data-oriented-design-for-math/" target="_blank">Data-Oriented Design for Math</a> by Mike Acton</li>
<li><a href="http://www.essentialmath.com/GDC2012/GDC2012_JMV_Rotations.pdf">Understanding Rotations</a> and <a href="http://www.essentialmath.com/GDC2012/GDC2012_JMV_Fluids.pdf" target="_blank">Fluid Techniques</a> by Jim Van Verth, who also maintains an <a href="http://www.essentialmath.com/tutorial.htm" target="_blank">archive of math and physics materials</a> from this and past GDCs.</li>
<li><a href="http://www.essentialmath.com/GDC2012/GDC_2012_Computational_Geometry_Rhodes_FINAL.zip">Computational Geometry</a> by Graham Rhodes</li>
<li><a href="http://developer.nvidia.com/gdc-2012" target="_blank">Lots of stuff</a> from or sponsored by NVIDIA</li>
<li><a href="http://code.google.com/p/box2d/downloads/detail?name=GDC2012_ErinCatto_Ragdolls.pdf" target="_blank">Diablo 3 Ragdolls</a> by Erin Catto</li>
<li><a href="http://directtovideo.wordpress.com/2012/03/15/get-my-slides-from-gdc2012/" target="_blank">Advanced Procedural Rendering in DirectX 11</a> by Matt Swoboda</li>
<li><a href="http://www.stfj.net/text/2012/03/10/controls-you-can-feel-putting-tactility-back-into-touch-controls/" target="_blank">Controls You Can Feel</a> by Zach Gage</li>
<li><a href="http://www.confettispecialfx.com/slides-for-dynamic-global-illumination-system" target="_blank">Dynamic Global Illumination from many Lights</a> by Wolfgang Engel, Igor Lobanchikov and Timothy Martin</li>
<li><a href="http://www.terathon.com/gdc12_lengyel.pdf" target="_blank">Fundamentals of Grassman Algebra</a> by Eric Lengyel</li>
<li><a href="http://crashworks.org/gdc12/GDC2012_Ruskin_Elan_DynamicDialog.pdf" target="_blank">AI-driven dynamic dialogue</a> by Elan Ruskin</li>
<li><a href="http://tantalon.com/pete/files/fastercpp.zip" target="_blank">Faster C++: Move Constructors and Perfect Forwarding</a> by Pete Isensee</li>
<li><a href="http://developer.amd.com/documentation/presentations/GPUTechnicalPublications/Pages/default.aspx" target="_blank">A bunch of stuff</a> from AMD</li>
<li><a href="http://www.youtube.com/watch?v=OLqk4aqpXlQ" target="_blank">Portal 2 Postmortem</a> by Erik Wolpaw and Chet Faliszek (video)</li>
<li><a href="http://theinstructionlimit.com/cubes-all-the-way-down-igs-gdc" target="_blank">Fez Tech Postmortem</a> by Renaud Bédard</li>
<li><a href="http://struct.ca/share/fun/MattRix_LevelDesign_GDC2012.pdf" target="_blank">Trainyard: A level design post-mortem</a> by Matt Rix</li>
<li>&#8230;</li>
<li>plus many excellent writeups from <a href="http://www.gamasutra.com/gdc-2012/" target="_blank">Gamasutra</a> and <a href="http://www.sirlin.net/">Dave Sirlin</a></li>
<li><a href="http://adrianboeing.blogspot.com.es/2012/04/game-developers-conference-2012.html" target="_blank">Technical Summary</a> by Adrian Boeing</li>
<li>and hopefully soon, lots of this and much more will be available in the <a href="http://www.gdcvault.com/" target="_blank">GDC Vault</a></li>
</ul>
<p>This list is being updated all the time, so I&#8217;m not organizing the links yet, I just add them at the end to make it easier to find new additions since your last visit.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2583</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Unity3D 3.5 mobile is free&#8230;</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2581</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2581#comments</comments>
		<pubDate>Wed, 07 Mar 2012 01:37:03 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2581</guid>
		<description><![CDATA[..Until April 8th. It normally costs around $800, so get it even if you don&#8217;t have immediate plans to use it.]]></description>
			<content:encoded><![CDATA[<p>..Until April 8th. It normally costs around $800, so<a href="https://store.unity3d.com/index.html" target="_blank"> get it</a> even if you don&#8217;t have immediate plans to use it.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2581</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Metro and JavaScript</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2579</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2579#comments</comments>
		<pubDate>Wed, 07 Mar 2012 01:18:08 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2579</guid>
		<description><![CDATA[On Facebook I wrote a bunch of thoughts on the fact that Windows 8 treats JavaScript as a first-class citizen for native Metro apps. It was triggered by this and a few other related reads on WinJS. In general, there &#8230; <a href="http://www.iguanademos.com/Jare/wp/?p=2579">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On Facebook I wrote a bunch of thoughts on the fact that Windows 8 treats JavaScript as a first-class citizen for native Metro apps. It was triggered by <a title="Asynchronous programming in JavaScript using promises" href="http://msdn.microsoft.com/en-us/library/windows/apps/hh464930.aspx" target="_blank">this</a> and a few other related reads on WinJS.</p>
<p>In general, there is value in having a single language available for all your needs and platforms even if it&#8217;s not 100% portable (look at C/C++). JavaScript is the most widely available language today and, while ugly, the popularity of runtimes like NodeJS and the myriad HTML5 mobile app wrappers like PhoneGap prove that it is viable.</p>
<p>But what&#8217;s the value for Microsoft? Is this WinJS effort going to encourage devs to port their web apps easily into native Win versions? I think that&#8217;s just not very likely, most devs will settle with just a web app (e.g. Trello), and very successful web apps will get native versions regardless (e.g. Evernote).</p>
<p>I can&#8217;t help but think that the effort would have been better spent developing a hassle-free PhoneGap-for-Metro kind of wrapper rather than a close-but-not-quite web-like native environment that developers still need to treat like a port and a separate platform.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2579</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Facebook IPO and Mobile Social Games</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2571</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2571#comments</comments>
		<pubDate>Sat, 04 Feb 2012 00:45:34 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2571</guid>
		<description><![CDATA[Facebook&#8217;s IPO has been announced, and this means lots of details on Facebook financials have become public. The most interesting bits for social game developers (in VERY broad terms): Almost all revenue from Facebook Credits is generated by games. Zynga &#8230; <a href="http://www.iguanademos.com/Jare/wp/?p=2571">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Facebook&#8217;s IPO has been announced, and this means lots of details on Facebook financials have become public. The most interesting bits for social game developers (in VERY broad terms):</p>
<ul>
<li>Almost all revenue from Facebook Credits is generated by games.</li>
<li>Zynga makes up 80% of the total Facebook Credits revenue.</li>
<li>In broad numbers, on Facebook, Zynga has MAU equal to 1.5x all other game devs combined. But Zynga&#8217;s FB Credits revenue is 4x. That&#8217;s an idea of how much better Zynga is at getting players to pay.</li>
<li>Most of Facebook&#8217;s revenues come form advertising.</li>
<li>Facebook mobile gaming is in its infancy.</li>
<li>Half of Facebook users use the site via mobile, and this percentage is growing very quickly, but Facebook does not monetize them with games nor advertising.</li>
</ul>
<p><span id="more-2571"></span></p>
<p>This means that the first game developers to jump on board for Facebook mobile gaming have half of the entire Facebook userbase all for themselves, and Facebook will be more than willing to help them succeed. This was reflected in Zynga&#8217;s shares soaring after this information became public &#8211; it turns out that Zynga&#8217;s dependence on Facebook is matched by Facebook&#8217;s dependence on Zynga.</p>
<p>Of course, the problems associated with Facebook mobile as a gaming platform are huge:</p>
<ul>
<li>Screen real estate on a mobile platform is extremely limited, there&#8217;s just not much room to show ads or games inside Facebook mobile without severely reducing the amount of actual content the user can see.</li>
<li>Phones already have gaming (and app) and platform integrated</li>
<li>On-the-fly game downloads and persistent server connections are a staple of desktop Facebook games, but on mobile the connections will be less reliable, much slower, and capped.</li>
</ul>
<p>So, Facebook mobile gaming will be a very different beast from Facebook desktop gaming. Many lessons will carry over, but many established patterns like the neighbours bar, notification popups, crammed isometric views, and Flash programming will go away. The nature of social interactions, gameplay design and UI in Facebook mobile is still full of unknowns, and whoever solves it first has (for now) a big shot at a pretty large pot. The sooner you start, the better.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2571</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>node.js</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2561</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2561#comments</comments>
		<pubDate>Sat, 28 Jan 2012 01:47:06 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[System]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[node]]></category>
		<category><![CDATA[server]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2561</guid>
		<description><![CDATA[cdoral in another post mentions node.js. I have been following this project for a while so I thought I&#8217;d write a little blurb about it and include a few links for further and more in-depth information. Coincidentally, the Node Summit &#8230; <a href="http://www.iguanademos.com/Jare/wp/?p=2561">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>cdoral in <a href="http://www.iguanademos.com/Jare/wp/?p=2385#comment-3491">another post</a> mentions <a href="http://nodejs.org/" target="_blank">node.js</a>. I have been following this project for a while so I thought I&#8217;d write a little blurb about it and include a few links for further and more in-depth information. Coincidentally, the <a href="http://nodesummit.com/" target="_blank">Node Summit</a> was held this week in SF, so there may be interesting and fresh material coming from there soon.</p>
<p>First things first: I have played with node.js for little experiments but haven&#8217;t yet found an opportunity to put it to real, production use. Version 0.6 addressed some of my questions about its capabilities and performance, and it is already being used on production servers for many traffic-heavy sites like eBay or LinkedIn, so it&#8217;s clearly gone beyond the experimental stage. If you are building a web service today, node.js is a technology you should consider.</p>
<p>Node is a stand-alone executable that will run a JavaScript file passed on the command line:</p>
<blockquote><p>node app.js</p></blockquote>
<p>Your JavaScript program can use the standard JavaScript libraries (Math, etc) and a bunch of node-specific libraries. In most cases, your program will enter an infinite event loop and start receiving, processing and responding to network requests.</p>
<p><span id="more-2561"></span>Pros:</p>
<ul>
<li>Uses JavaScript, the same language you are likely using (in part or in full) on the client side of web sites and applications. This is a great opportunity to reuse code and expertise across both sides.</li>
<li>It&#8217;s based on Google&#8217;s <a href="http://code.google.com/p/v8/" target="_blank">V8 engine</a>, which is being actively developed and keeps getting better, faster and more robust with each release.</li>
<li>Its asynchronous, event-based nature makes it <strong>easy</strong> for node applications to support hundreds or thousands of simultaneous connections with great performance and low resource consumption, compared to thread- or process-based solutions. Many modern servers, both standalone servers (<a href="http://nginx.org/en/" target="_blank">nginx</a>) as well as server application frameworks (<a href="https://github.com/williame/hellepoll" target="_blank">Hellepoll</a>, <a href="http://www.tornadoweb.org/" target="_blank">Tornado</a>), have gone this route.</li>
<li>Node libraries and extensions use a standard distribution method called the <a href="http://npmjs.org/doc/README.html" target="_blank">node package manager</a>. It&#8217;s incredibly easy to use and makes managing your external dependencies a breeze.</li>
</ul>
<p>Cons:</p>
<ul>
<li>All I/O in node programs (files, databases, other servers, etc) is asynchronous and usually offered in <a href="http://en.wikipedia.org/wiki/Continuation-passing_style" target="_blank">continuation-passing style</a>. If you are not careful with the way you write your code, you may end up in callback hell. Some libraries like <a href="https://github.com/caolan/async" target="_blank">async</a> will help a lot there, but do not underestimate the cost of getting used to code with this paradigm.</li>
<li>node is event-based, and that&#8217;s it. It&#8217;s easy to get great performance, but sometimes you need huge performance or scaling even if it&#8217;s not easy (note &#8211; it never is!). If your concurrency or scaling needs change in the future and other approaches (multithreaded, distributed) would serve you better, you will have to engineer around node (balancers, proxies, routers, hybrid services), or entirely rewrite your code using another technology that allows other solutions (C++, Erlang).</li>
<li>Many classic hosting providers do not support node.js out of the box, and require renting a virtual server. Recent contenders in the platform-as-a-service space like <a href="http://devcenter.heroku.com/articles/node-js" target="_blank">heroku</a> do offer node.js support out of the box.</li>
</ul>
<p>Node.js really is an application platform, not a plain web server &#8211; you can use one of the popular node frameworks like <a href="http://expressjs.com/" target="_blank">express </a>to build a fully featured web server, and it will have almost the same throughput as dedicated servers like nginx or lighttpd. In broad terms, I look at them like this:</p>
<ul>
<li>Node.js if you&#8217;re developing a web application (and its pros/cons are ok for you). Node may also serve the client web site, but its strength is in handling the server-side logic.</li>
<li>Nginx if you are serving a single, custom web site that includes an application backend. Nginx configuration is simple but powerful for both static files and cgi modules, and it can also fill other roles (reverse proxy/load balancer or mail proxy) in your infrastructure.</li>
<li>Apache if you are serving multiple sites, each may be built using different technologies (PHP, uwsgi, etc), and/or each may be managed by different people or clients. <em>Everyone</em> and <em>everything</em> knows, understands and/or is compatible with Apache configuration files.</li>
</ul>
<p>I hope to be able to talk more about node.js in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2561</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Unity3D 3.5 Developer preview is out</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2538</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2538#comments</comments>
		<pubDate>Tue, 27 Dec 2011 22:09:45 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[stage3d]]></category>
		<category><![CDATA[unity]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2538</guid>
		<description><![CDATA[And it includes a fancy exporter to Flash11 / Stage3D. All of a sudden, the best way to author advanced Flash content is Unity, not Flash. Considering that Adobe makes their money from Flash tools rather than the plugin, it&#8217;s &#8230; <a href="http://www.iguanademos.com/Jare/wp/?p=2538">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>And it includes a fancy exporter to Flash11 / Stage3D. All of a sudden, the best way to author advanced Flash content is Unity, not Flash. Considering that Adobe makes their money from Flash tools rather than the plugin, it&#8217;s a really odd situation. With the current outlook of Flash after the &#8216;<a href="http://creativecodingpodcast.com/?p=140" target="_blank">Flashmageddon</a>&#8216;, it&#8217;s hard to say how relevant this will be in the long term, but it&#8217;s an impressive feature! And the obligatory cube to celebrate it:</p>
<p><span id="more-2538"></span></p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_testcube_694549422"
			class="flashmovie"
			width="480"
			height="320">
	<param name="movie" value="/Jare/files/Stage3D/testcube.swf" />
	<param name="wmode" value="direct" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="/Jare/files/Stage3D/testcube.swf"
			name="fm_testcube_694549422"
			width="480"
			height="320">
		<param name="wmode" value="direct" />
	<!--<![endif]-->
		
<p><a href="http://adobe.com/go/getflashplayer"><img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" /></a></p>

	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object>
<p>The good side is, Unity is incredibly easy to use (<a href="http://catlikecoding.com/unity/tutorials/" target="_blank">these tutorials</a> were my starting point). The bad side, the generated SWF takes a hefty 2Mb (the unity web player object is just 41Kb). Anyway, <a href="http://unity3d.com/" target="_blank">Grab Unity</a> and start playing!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2538</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Colors!</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2533</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2533#comments</comments>
		<pubDate>Mon, 26 Dec 2011 08:07:57 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[baby]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[mobile]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2533</guid>
		<description><![CDATA[Our little one loves to grab anything shiny, but is especially attracted to LCD screens of any type. He loves the netbook, the MacBook, my desktop&#8217;s dual monitors, and of course the big TV, but most of all he loves &#8230; <a href="http://www.iguanademos.com/Jare/wp/?p=2533">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Our little one loves to grab anything shiny, but is especially attracted to LCD screens of any type. He loves the netbook, the MacBook, my desktop&#8217;s dual monitors, and of course the big TV, but most of all he loves the iPhone. I often activate the camera in reverse mode and let him play with it, but there&#8217;s always been a problem: while he manipulates the phone, he will push some control or other and stop the camera, go to the desktop and start pushing random icons. I was wishing for some sort of &#8216;baby mode&#8217; where something neat would be happening on the screen, but controls would be disabled.</p>
<p>I decided to use the Sunday morning to dust off my Canvas, CSS and JavaScript skills to code, with Alba&#8217;s design input and feedback, a little BabySaver that could keep his attention with bright colors, and be impossible to quit for him. <a title="Colors BabySaver" href="http://www.iguanademos.com/Jare/temp/html5/BabySavers/Colors/" target="_blank">Click here</a> to see its current form. Click on the &#8220;Endless&#8221; button to enable interactions, otherwise any clicks will take you to my homepage.<span id="more-2533"></span></p>
<p>The conclusion? He is much more interested in the iPhone&#8217;s back, the plastic cover, and trying to eat them, than in watching the flying colors. And he still manages to open the iOS Notification Center pull-down, and from there go to the Message Center or some other app, in effect leaving the BabySaver. In typical <em>&#8220;we know better than you&#8221;</em> Apple style, the pull down can&#8217;t be disabled, not even inside native apps or as a global configuration setting.</p>
<p>As usual, getting the CSS and scaffolding to work properly across browsers (including mobile Safari) was much more time consuming than programming the actual effects. Particularly disturbing was when the iPhone didn&#8217;t like the &#8216;Style&#8217; button in the upper left corner: it worked fine in the beginning, but after adding the other buttons and the button style, it became unclickable (almost! With lots of trying, I could manage to click it). I have no idea why, and I couldn&#8217;t figure out how to revert this behaviour. This, along with the Notification Center issue, is the reason the buttons are at the bottom.</p>
<p>I haven&#8217;t tried it on any Androids or Windows Phones, but I have high hopes. Now that all the boring pieces are in place I&#8217;ll probably try to write more effects and sounds to see how he likes them.</p>
<p>Feedback is welcome!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2533</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Text Editors</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2519</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2519#comments</comments>
		<pubDate>Thu, 15 Dec 2011 06:48:58 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[System]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2519</guid>
		<description><![CDATA[Programmers spend most of our time in front of a text editor. Whether it is a standalone editor, or one integrated in an IDE, that&#8217;s just what we do. Back in MS-DOS days, my editor of choice was QEdit, later &#8230; <a href="http://www.iguanademos.com/Jare/wp/?p=2519">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Programmers spend most of our time in front of a text editor. Whether it is a standalone editor, or one integrated in an IDE, that&#8217;s just what we do.</p>
<p>Back in MS-DOS days, my editor of choice was <a title="QEdit" href="http://www.semware.com/" target="_blank">QEdit</a>, later renamed to The Semware Editor. I loved its configurability, and remapped pretty much everything in it to suit my preferences. Around that time I was also working on Unix systems and used vi there, although only for short editing sessions. I had been exposed to <a title="Emacs" href="http://www.gnu.org/s/emacs/" target="_blank">Emacs</a> multiple times (starting with MicroEmacs on the Atari ST), but I could never get comfortable with its crazy keyboard combos.</p>
<p>After Windows 95 came and became my regular environment, the best choice was <a title="Ultraedit" href="http://www.ultraedit.com/" target="_blank">Ultraedit</a>. Very soon, Microsoft Visual Studio became the compiler and IDE of choice for Win95 development, and its built-in editor proved quite powerful, so I would use Ultraedit for editing files that were not C++.<span id="more-2519"></span></p>
<p>The big annoyance with Ultraedit was that, being a paid product, it was not readily available everywhere I could go. At work, at someone else&#8217;s computer, etc. And it seemed to become more bloated with each version. I started looking for alternatives, and settled with <a title="SciTE" href="http://www.scintilla.org/SciTE.html" target="_blank">SciTE</a>. SciTE is the editor built around the Scintilla text-editing component / library. It&#8217;s a very powerful and extensible text editor, but the default installation is rather barebones and lacks many useful text manipulation tools. I was also bothered by the way it implemented rectangular block selections. So I started looking for alternatives again.</p>
<p>The next editor I used was <a title="Notepad++" href="http://notepad-plus-plus.org/" target="_blank">Notepad++</a>, another editor built around Scintilla. Free, lots of features, and lots of free and easy to install plugins. I was completely comfortable with it, no major complaints. Ok well, yeah, one major complaint actually: the &#8220;Find in Files&#8221; dialog box was fixed in size, and the space available for the listbox of folders to search in was rather short. It was annoying to work with long, descriptive paths. I changed the dialog size and recompiled the editor, but it sucked to do that for every new version of the editor. The other issue with Notepad++ was that I was using Linux (Ubuntu) both at work and on my netbook, and Notepad++ is 100% Windows-only. Oh, and some of the settings are really awkward to configure. Yeah, a great editor, but a number of annoyances.</p>
<p>In text-mode terminals on Ubuntu I had been using joe for quick edits, but for any significant amount of work I slowly started using (and getting used to) <a title="vim" href="http://www.vim.org/" target="_blank">vim</a> again. Since I was restless with Notepad++, I tried getting used to gvim on Windows, but despite its <a href="http://www.viemu.com/a-why-vi-vim.html" target="_blank">many good points</a>, I just could not stomach it. When working in a GUI, sorry but I need at least decent multi-file support with tabs, Ctrl-N to quickly create a scratch file, and of course my Ctrl-C and Ctrl-V and common GUI shortcuts; gvim&#8217;s UI is at odds with everything else in the GUI world.</p>
<p>Then someone pointed me to <a title="Sublime Text 2" href="http://www.sublimetext.com/" target="_blank">Sublime Text 2</a>. Great editor, lots of tools, features, and neat details. Works on Windows, Mac and Linux. Supports the notion of projects. Scriptable in Python, awesome! I have been using it on and off for a while to see if I really want to switch to it. It is a commercial product, and I suspect that some of the old ghosts with rectangular block selections and Find in Files will come back and deter me from ST2, but for now I&#8217;m enjoying it. I wrote a little plugin to add basic Perforce integration:<br />
<!--more--></p>
<pre># Simple Perforce plugin for Sublime Text 2
# (C) 2011 by Javier Arevalo
# Free for anyone to use, distribute and modify

# Copy this file to ST2's Data/Packages/User/perforce.py
# Add the functions to the Tools menu with the following in a file named
#   Data/Packages/User/Main.sublime-menu:
#[
#    {
#        "id": "tools",
#        "children":
#        [
#            { "caption": "-" },
#            { "command": "p4_edit", "caption": "P4 Edit" },
#            { "command": "p4_revert", "caption": "P4 Revert" },
#            { "command": "p4_add", "caption": "P4 Add" }
#        ]
#    }
#]
# And/or in Data/Packages/User/Context.sublime-menu:
#[
#    { "caption": "-" },
#    { "command": "p4_edit", "caption": "P4 Edit" },
#    { "command": "p4_revert", "caption": "P4 Revert" },
#    { "command": "p4_add", "caption": "P4 Add" }
#]

import sublime, sublime_plugin
import os, stat

def UpdateViewWriteability(view):
	if view.file_name():
		if os.access(view.file_name(), os.W_OK):
			view.set_read_only(False)
		else:
			view.set_read_only(True)

# Detect readonly / writable files
# These are both false for non-file buffers
def IsWriteable(view):
	return view.file_name() and os.access(view.file_name(), os.W_OK)

def IsWriteProtected(view):
	return view.file_name() and not os.access(view.file_name(), os.W_OK)

# Event to catch buffer activation and check readonly/writeable
# Note: Running the commands doesn't de- and re-activate the view focus,
# so the ReadOnlyCheck event doesn't fire. We call the function manually
# for each command.
class ReadOnlyCheck(sublime_plugin.EventListener):
	def on_activated(self, view):
		UpdateViewWriteability(view)

# Commands

class P4EditCommand(sublime_plugin.TextCommand):
	"""P4 Edit"""
	def run(self, edit):
		os.system("p4 edit \"" + self.view.file_name() + "\"")
		UpdateViewWriteability(self.view) 

	def is_enabled(self):
		return IsWriteProtected(self.view)

class P4RevertCommand(sublime_plugin.TextCommand):
	"""P4 Revert if unchanged"""
	def run(self, edit):
		os.system("p4 revert -a \"" + self.view.file_name() + "\"")
		UpdateViewWriteability(self.view)

	def is_enabled(self):
		return IsWriteable(self.view)

class P4AddCommand(sublime_plugin.TextCommand):
	"""P4 Add"""
	def run(self, edit):
		os.system("p4 add \"" + self.view.file_name() + "\"")
		UpdateViewWriteability(self.view)

	def is_enabled(self):
		return IsWriteable(self.view)</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2519</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>On Freemium, playstyles and evil game design</title>
		<link>http://www.iguanademos.com/Jare/wp/?p=2509</link>
		<comments>http://www.iguanademos.com/Jare/wp/?p=2509#comments</comments>
		<pubDate>Sat, 22 Oct 2011 07:08:14 +0000</pubDate>
		<dc:creator>Jare</dc:creator>
				<category><![CDATA[Development]]></category>

		<guid isPermaLink="false">http://www.iguanademos.com/Jare/wp/?p=2509</guid>
		<description><![CDATA[In a couple of Gamasutra blog posts, Adam Saltsman (of &#8216;Canabalt&#8217; fame) ranted against what he feels are &#8216;evil&#8217; game design systems. I characterized his arguments as &#8216;hysterical&#8217;, which is perhaps a bit unfair since rants are meant to be &#8230; <a href="http://www.iguanademos.com/Jare/wp/?p=2509">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>In a couple of Gamasutra <a href="http://www.gamasutra.com/blogs/AdamSaltsman/20111018/8685/Contrivance_and_Extortion_InApp_Purchases__Microtransactions.php" target="_blank">blog</a> <a href="http://www.gamasutra.com/blogs/AdamSaltsman/20111020/8703/Contrivance_and_Extortion_II_Clarifications_Feedback__Suggestions.php" target="_blank">posts</a>, Adam Saltsman (of &#8216;Canabalt&#8217; fame) ranted against what he feels are &#8216;evil&#8217; game design systems. I characterized his arguments as &#8216;hysterical&#8217;, which is perhaps a bit unfair since rants are meant to be hot. Anyway, at some point I felt compelled to write a long reply, and I&#8217;m reposting it here. I&#8217;ve edited it only slightly, so it&#8217;s possible that some of it is confusing outside of the context of the original discussion.</p>
<blockquote><p><em>My guidelines are not for gamers; they&#8217;re for humans. My guidelines are not about styles of game or difficulty of game; they&#8217;re about treating players with a modicum of respect.</em></p></blockquote>
<p>Now, we agree that all players and all humans should be treated with respect. But there is no inherent lack of respect in ensuring that your game encourages players to pay if they like the game and want to enjoy more of it. If anything, you are asking players to respect YOU as a creator by paying something for the enjoyment they derive from your work. Short of a pure donation model, this encouragement must affect the product you create in some ways. That doesn&#8217;t make the creator greedy, which seems to be Adam&#8217;s characterization of the monetization process.</p>
<p><span id="more-2509"></span></p>
<p>In the section &#8216;As Long As It&#8217;s Fun, It&#8217;s Ok,&#8217; Adam says:</p>
<blockquote><p><em>if the gameplay was more important and more compelling than the checklist, then it follows, I think, that no one would actually pay money in order to be able to achieve more checklist progress with less gameplay.</em></p></blockquote>
<p>Adam is talking about &#8216;the gameplay&#8217; as if it were a single, indivisible unit. Nothing could be further from the truth. Most modern games, and particularly most successful games, are not reduced to a single element of gameplay, but rather support and combine a wide array of experiences, mechanics and play styles.</p>
<p>Different players are interested in different mechanics and playstyles. Equally important, even the same player will be interested in different mechanics and playstyles at different points in time, depending on mood, available time and other factors external to the game.</p>
<p>Let&#8217;s take FarmVille, which I assume would be a good example of what Adam calls &#8216;predatory&#8217;. People play that game for different reasons and in different ways: to build and decorate a pretty farm (gardening without the dirt); to compete with others (without the stress of a direct confrontation); to relax with a mindless passtime (where you click things and nice stuff happens); to figure out the optimal strategies (and probably move on afterwards); as a collector / completionist (sometimes even obsessively so). I&#8217;m sure there&#8217;s more.</p>
<p>Most games mix and combine the mechanics that support all their different playstyles; a player can&#8217;t ONLY play the mechanics she is interested in and skip the rest. I can&#8217;t ignore the loot in Diablo and only play the combat game; I can&#8217;t skip boss battles in Bayonetta; I can&#8217;t skip the exploration in Shadow of the Colossus.</p>
<p>Freemium games by definition must embed their payment encouragement elements within regular gameplay. One of the ways they do this is by asking players to pay if they want to skip or ignore some of the aspects of the game that are not of interest to them. To characterize this as &#8216;the checklist is more important than the gameplay&#8217; is a terrible, terrible simplification.</p>
<p>Doing this embedding without ruining the integrity, value and fun of your game is a very delicate design and balancing process. Most games that try get it wrong, and among those that get it right, some can reap massive benefits if they are aimed at the right audience.</p>
<p>Player power curves, and defined goals, are age old mechanics in a designer&#8217;s toolbox. A common trend is for sophisticated players to mock the distilled versions of these (leveling up, and explicit lists of goals / quests) as simplistic. And I guess they ARE simple! That&#8217;s why they are so successful: because they work as mechanics that a less sophisticated player will enjoy, understand and want to work with.</p>
<p>Same goes for randomness: it&#8217;s an incredibly easy way to create uncertainty, variety, anticipation, and similar feelings that are pervasive to most play experiences.</p>
<p>An evil designer may try to create an evil skinner box using these mechanics, but that doesn&#8217;t make the mechanics themselves evil or unethical in any way (just like in the original skinner box the lights, the electricity or the cheese are not evil). And outside of gambling, I don&#8217;t know of a game that consist purely of a skinner box.</p>
<p>The fact that most successful freemium games derive their revenue from a small % of the playerbase to me means that these games must contain a lot of unadulterated, not-evil, absolutely ethical value for their players. If that were not the case, any players that evade the skinner mechanism that forces them to pay, would simply not play at all. Therefore, the evil skinner component that worries Adam so much must, in fact, do not exist or be minimally present, buried under all that value. Most designers will call this presence simply &#8216;understanding basic human behaviour&#8217;.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.iguanademos.com/Jare/wp/?feed=rss2&#038;p=2509</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

