<?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>Craig Wright</title>
	<atom:link href="http://www.craig-wright.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.craig-wright.com</link>
	<description>Keeping track of my life.</description>
	<lastBuildDate>Thu, 13 Oct 2011 06:38:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Gamification Links to Get You Started</title>
		<link>http://www.craig-wright.com/2011/10/12/gamification-links-to-get-you-started/</link>
		<comments>http://www.craig-wright.com/2011/10/12/gamification-links-to-get-you-started/#comments</comments>
		<pubDate>Thu, 13 Oct 2011 06:07:18 +0000</pubDate>
		<dc:creator>Craig</dc:creator>
				<category><![CDATA[Gaming]]></category>

		<guid isPermaLink="false">http://www.craig-wright.com/?p=4</guid>
		<description><![CDATA[At the September 2011 GLP conference, I promised people some links on Gamification. These will hopefully get you headed in the right direction. Jane McGonigal &#8211; Reality is Broken at Amazon &#8211; This is the book mentioned by Bob at the conference. Jane McGonigal: Gaming can make a better world &#8211; TED Talk on the [...]]]></description>
			<content:encoded><![CDATA[<p>At the September 2011 GLP conference, I promised people some links on Gamification. These will hopefully get you headed in the right direction.</p>
<p><a href="http://www.amazon.com/Reality-Broken-Games-Better-Change/dp/1594202850">Jane McGonigal &#8211; Reality is Broken</a> at Amazon &#8211; This is the book mentioned by Bob at the conference.</p>
<p><a href="http://www.ted.com/talks/jane_mcgonigal_gaming_can_make_a_better_world.html">Jane McGonigal: Gaming can make a better world</a> &#8211; TED Talk on the concepts from her book. You can also check out <a href="http://janemcgonigal.com/">Jane McGonigal&#8217;s blog</a> which has many more videos.</p>
<p><a href="http://gamification.co/gabe-zichermann/">Gabe Zichermann | Gamification Blog</a> &#8211; trying to become the face of gamification, but he has great links and&#8230;</p>
<p><a href="http://www.youtube.com/watch?v=HFZr4JgYBm0">OSCON 2011: Gabe Zichermann, &#8220;Designing for Engagement with Gamification in Open Source&#8221;</a> &#8211; this talk was excellent! I was in the audience. Again, exploring very similar concepts from <em>Drive</em> and <em>Reality is Broken</em>.</p>
<p><a href="http://www.g4tv.com/videos/44277/dice-2010-design-outside-the-box-presentation/">Jesse Schell &#8220;Design Outside the Box&#8221;</a> &#8211; this talk is what opened my mind to the world of gaming outside of gaming. Schell&#8217;s style is a bit abrasive at times, although it appeals to me. He brings together some interesting successful anecdotes and metrics to drive home his final point. For context, DICE is an annual professional game developers conference, so he is speaking directly to the game design industry in this talk.</p>
<p>The following are not directly related to gamification, but just in case you have not seen these yet, I think it is worth checking out <a href="http://www.amazon.com/Drive-Surprising-Truth-About-Motivates/dp/1594488843"><em>Drive</em></a> by Daniel Pink (<a href="http://www.ted.com/talks/dan_pink_on_motivation.html">related TED Talk</a>) but especially:</p>
<p><a href="http://www.youtube.com/watch?v=VZv--sm9XXU">Authors@Google: Dan Ariely</a> &#8211; Dan Ariely talks about his research in decision-making, it is fascinating stuff. </p>
<p>I feel all of these speakers are in the same mode of research: how do we design better games. The domains differ, but the core principles are starting to converge. </p>
<p>Finally, there is an emerging style of games journalism called <a href="http://en.wikipedia.org/wiki/New_Games_Journalism#New_Games_Journalism">new games journalism</a>, started by the UK website <a href="http://www.rockpapershotgun.com/">Rock, Paper, Shotgun</a>. The concept is that the journalist documents the experience or cultural significance of playing the game, and not just about the details of the game itself. Rock, Paper, Shotgun can be tough to parse on a daily basis, however for stellar examples of the technique check out the articles linked from <a href="http://www.rockpapershotgun.com/2011/07/04/announcing-quindependence-day/">writer Quintin Smith&#8217;s last post</a>. This may be a bit too close to the player perspective to be helpful for gamification but I loved these articles. The value for me, beyond nostalgia, is to see how different games can shape the way in which gamers view the real world. The impact these games can have outside of the game. </p>
<p>Much more accessible is the real-world quarterly magazine <a href="http://shop.killscreendaily.com/">Kill Screen</a>. This magazine attempts to bring a New Yorker style to articles on video gaming. Some of the articles are phenomenal, but are not published on the web so I cannot link to them for you. I have tried to make copies of articles to share with Bob and Phillip, but could not get the pages to scan very well. In any case, highly recommended, would be happy to bring copies for people to peruse to the next conference. You can also browse their <a href="http://killscreendaily.com/">daily blog</a>, but the content is not as good as in the published magazine. </p>
<p>I hope these have some value for your in-the-real-world game-making!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.craig-wright.com/2011/10/12/gamification-links-to-get-you-started/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Blogging OSCon Day 2: Node Day</title>
		<link>http://www.craig-wright.com/2011/07/31/blogging-oscon-day-2-node-day/</link>
		<comments>http://www.craig-wright.com/2011/07/31/blogging-oscon-day-2-node-day/#comments</comments>
		<pubDate>Mon, 01 Aug 2011 01:38:47 +0000</pubDate>
		<dc:creator>Craig</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[OSCon 2011]]></category>
		<category><![CDATA[Webdev]]></category>

		<guid isPermaLink="false">http://www.craig-wright.com/?p=13</guid>
		<description><![CDATA[In which I learned to stop worrying and love the Node.js. During Node Day I was able to connect with real-world examples of people running Node in production, talking about why they chose Node, and how it was working out for them. As a by-product, I started to grok the things I had learned the [...]]]></description>
			<content:encoded><![CDATA[<p>In which I learned to stop worrying and love the Node.js. During Node Day I was able to connect with real-world examples of people running Node in production, talking about why they chose Node, and how it was working out for them. As a by-product, I started to grok the things I had learned the previous day in the Node Tutorial. To sum up the talks of the day:</p>
<p><a href="http://twitter.com/creationix">Tim Caswell</a> talked about translating the SDL Library into a Node.js extension. He claimed to not be a strong C programmer, and he accomplished quite a bit despite that limitation. This gives me hope, for if we were to similarly port Contacts to Node.js, there would be some heavy lifting in the C world to accomplish first. <a href="http://twitter.com/rauchg">Guillermo Rauch</a> live-coded an HTML messenger client from scratch, demonstrating the steps it would take to do so as well as showing of <a href="http://socket.io/">socket.io</a>. The most impressive bit was Guillermo&#8217;s almost flawless, fast typing. It was also neat to see how little code was required to make this happen, he got it done in 20 minutes or so.</p>
<p><a href="http://twitter.com/ryah">Ryan Dahl</a> gave a talk on porting Node.js to Windows. Apparently there has not been a release of Node.js in some time as they have been doing all of the porting work for the past few months. The new system framework is being built alongside the old Node.js system framework. If you are running the unstable branch of Node, you can try out the new code by using the <code>--use-uv</code> command line flag. It sounds like these guys are going through the same work the <a href="http://www.iis.net/download/FastCGI">FastCGI for IIS</a> project had to go through to port to windows (the same discussion of threads vs forks came up, at least.) Another interesting tidbit: the 3.4 version of V8 cause a 10% performance drop in Node. They feel bound to stay with the latest V8 version, and are working with the V8 team on the issue. Dahl also expects there will be a stable 0.6.0 version of Node.js in about a month.</p>
<p><a href="http://twitter.com/sh1mmer/">Tom Hughes-Coucher</a> did not talk about scaling, as the talk description might have led one to believe, but more on overall performance and benchmarking Node. For the most part he was responding to <a href="http://www.ostinelli.net/a-comparison-between-misultin-mochiweb-cowboy-nodejs-and-tornadoweb/">this article on Node vs Erlang performance</a>. The really interesting thing here for me was to reduce my ignorance of the technological landscape in which Node exists. Otherwise Tom&#8217;s basic point was benchmarks are often flawed, tough to do right, and would like to see real-world use case benchmarks rather than artificial stress tests. He also stressed looking for the hot-path perf blocker for your use case. All pretty common-sense but worth-repeating type of stuff.</p>
<p>The next few talks had similar themes, mainly running Node.js with a real application in production. These were great to hear first-person perspectives on running and deploying Node to production. <a href="http://twitter.com/pquerna">Paul Querna</a> from Rackspace had the <a href="http://paul.querna.org/slides/node-at-rax-oscon2011.pdf">most detail on tools and process</a>. They have created their own Node package repository for pushing in-house patches to public packages. It is an extension of <a href="http://npmjs.org/">npm</a> which checks their package repository before hitting the public package repository.  The other interesting bit from his talk was the discussion of Node.js and SSL&#8230; apparently all is not yet right in the world between these two, <a href="http://journal.paul.querna.org/articles/2011/04/05/openssl-memory-use/">regarding performance</a>. He recommended running stunnel+haproxy or <a href="http://github.com/bumptech/stud">stud</a>+haproxy as a solution to Node&#8217;s SSL woes.</p>
<p>The final talk was <a href="http://twitter.com/#!/tmpvar">Elijah Insua</a> discussing the design and development process for <a href="https://github.com/tmpvar/jsdom">JSDom</a>. This is a module that aims to be a faithful replication of the DOM per the w3c spec. This is what both jQeury and YUI use to run server-side in Node. It currently supports Dom Level 1+2, and they are actively working on the DOM Window global object (which is not covered by a spec but is a collection of vendor conventions), and DOM Level 3. Caveat, there is a memory leak (I believe it was in using setInterval/setTimeout, the context is not being released) which they are aware of and working on.</p>
<p>The session ended with a roundtable Q&amp;A with the speakers. An interesting question came up regarding sharing code logic between the client and the server. The surprising answer was none of the speakers thought this was a good idea, or could see a use case. One of the justifications I hear frequently for Node.js is that you could potentially share code between client and server. This was a good confirmation of what I had come to on my own after this day of examples. Node.js code needs certain extensions that are not compatible with client-side code. Node.js server-side code is not portable in that way without some effort. You need to use the &#8220;require&#8221; keyword to include other modules, and the syntax for creating a module is a bit odd and not useful outside of the Node.js context (it is from a standard called &#8220;<a href="http://www.commonjs.org/">CommonJS</a>&#8221; but insofar as a browser is concerned, not helpful.)</p>
<h4>Final Thoughts</h4>
<p>This day of Node left me feeling excited about the technology. These guys made programming for Node seem fun and cutting-edge. The attitude was DIY, a few talks mentioned not relying on other libraries that you could write yourself in a few days. Much was made of the simplicity of the platform and how few lines of code many of the demonstrations required (not counting whatever code went into the modules being used as middleware.) After seeing the support Node has in its modules, it no longer seemed like such a problem that you have to re-create basic functionality like listening for HTTP connections or doing basic server access logging.</p>
<p>However! For a company like Yahoo!, the migration will be non-trivial. Our basic apache comes with a lot of pre-configuration that will be a hassle to re-create. Using Node.js in that context will require a bit of heavy lifting by a variety of parties. For the short-term, we may be able to find use-cases where Node can fit, but we will have to proceed very carefully. For the long-term, Yahoo! as a company would need to decide whether it wants to support Node for the long-haul and put together a package covers the areas that apache currently covers. (Note that the relevant folks at Yahoo! are already aware of this, however now I have a deeper understanding of what is missing for us to go full-bore Node.)</p>
<p>So work-related use cases aside, I am looking forward to mucking about with Node on personal projects!</p>
<h4>Links Round-up</h4>
<p>More tools and modules were discussed than I could possibly cover. The following is a rough round-up of all of the links that made it into my notes.</p>
<h5>Logging</h5>
<p><a href="https://github.com/indexzero/winston"> winston</a>  <a href="http://thechangelog.com/post/2844869169/winston-a-multi-transport-async-logging-library-for-node">more</a><br />
<a href="http://github/pquerna/node-logmagic"> log magic</a></p>
<h5>Testing</h5>
<p><a href="http://github.com/cloudkick/whiskey"> whiskey</a> <a href="http://cast-project.org/test-coverage/">Example coverage report</a></p>
<h5>Deployment</h5>
<p><a href="https://github.com/nodejitsu/haibu"> haibu</a></p>
<h5>JS Lint</h5>
<p><a href="http://code.google.com/closure/utilities/"> Closure Linter</a><br />
<a href="https://github.com/jshint/node-jshint"> node-jshint</a></p>
<h5>Templates</h5>
<p><a href="http://jade-lang.com/"> jade</a><br />
<a href="https://github.com/hij1nx/weld"> weld</a>  <a href="http://blog.nodejitsu.com/micro-templates-are-dead">more</a></p>
<h5>Other</h5>
<p><a href="http://socket.io/"> socket.io</a><br />
<a href="http://github.com/hookio/">hook.io</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.craig-wright.com/2011/07/31/blogging-oscon-day-2-node-day/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Blogging OSCon 2011: Day 1 Tutorials</title>
		<link>http://www.craig-wright.com/2011/07/26/blogging-oscon-2011-day-1-tutorials/</link>
		<comments>http://www.craig-wright.com/2011/07/26/blogging-oscon-2011-day-1-tutorials/#comments</comments>
		<pubDate>Wed, 27 Jul 2011 04:18:56 +0000</pubDate>
		<dc:creator>Craig</dc:creator>
				<category><![CDATA[Conference]]></category>
		<category><![CDATA[OSCon 2011]]></category>
		<category><![CDATA[Webdev]]></category>

		<guid isPermaLink="false">http://www.craig-wright.com/?p=5</guid>
		<description><![CDATA[It is 2011 and I have decided to start a blog. That is a term coined by my friend Peter Merholz which means a &#8220;web log&#8221; or &#8220;online journal.&#8221; As you can see, Peter has been blogging perhaps since the beginning of time, or at least since the beginning of Swatch Internet Time. Whereas I [...]]]></description>
			<content:encoded><![CDATA[<p>It is 2011 and I have decided to start a <strong>blog</strong>. That is a term coined by my friend <a title="Peter Merholz" href="http://www.peterme.com/" target="_blank">Peter Merholz</a> which means a &#8220;web log&#8221; or &#8220;online journal.&#8221; As you can see, Peter has been blogging perhaps since the beginning of time, or at least since the beginning of Swatch Internet Time. Whereas I have forsaken this flash-in-the-pan trend until now. I thought perhaps this would be a great way to ease into using Twitter, and also as a means to justify the cost to my company of dispatching me to Portland to attend OSCon. With that in mind, my first post shall concern the topic of OSCon 2011 and What Was Learned Therein.</p>
<h3>OSCon Day -1 &amp; 0: Community Leadership Summit</h3>
<p>Before OSCon starts, a bunch of very friendly, talkative people get together to discuss the ins and outs of community management. These are evangelists, marketing folks, product managers, generally good people persons. They get together to discuss the craft of people person-ing; when by &#8220;people&#8221; you mean &#8220;many geographically diverse people gathered around a particular open source project or other product.&#8221; I only attended one session, but my partner who is in developer marketing attended both days and got a lot out of it. I found it interesting but did not connect it to a direct relevancy to the art of software engineering management. That said, being on the forefront of user input and feedback for Contacts, I could probably spend more time thinking and acting on the topics discussed in this forum.</p>
<h3>OSCon Day 1: A Battle of Old and New</h3>
<p>The morning was spent learning the latest thinking on the PHP framework front, the afternoon in a session on the new hotness that is Node.JS.</p>
<p><a title="Top Shelf PHP" href="http://www.oscon.com/oscon2011/public/schedule/detail/18980" target="_blank">Top Shelf PHP</a> <em>(Kris Wallsmith, Jeremy Mikola, Dustin Whittle)</em>: I was impressed with the problems these guys are tackling, very relevant to the challenges we face on the Yahoo! Contacts team. To summarize:</p>
<ul>
<li><a href="http://symfony.com/" target="_blank">Symfony 2</a>: Influential application framework, I later saw ideas from Symfony re-implemented in some of the Node.JS middleware. I am interested in Symfony as I have personal projects written in version 1 of this framework, however this is less relevant in the work context.</li>
<li><a href="https://github.com/kriswallsmith/assetic" target="_blank">Assetic</a>: Asset management for symfony / php. Solves some problems we run into in an elegant way, by allowing runtime, configurable transformations of your static assets as developer runtime, which you can also integrate in your build process for simple CDN deployment. Uses a decorator-like &#8220;filter&#8221; system to apply various transformation steps to your assets, and is easy to configure for dev vs. production environments. As we are currently investigating our build process with regards to assets and speed, this might be work a look.</li>
<li><a href="http://behat.org/" target="_blank">Behat and Mink</a>: BDD test creation and driving system. Allows you to write natural language behavioral tests in the same format as a user story, turn that to code, or with Mink, turn it into something that can automatically test your app. The simple case demoed was fairly impressive. The Contacts team is moving to a more lean development methodology and we need all the help we can get in the QA automation space. This tool has promise. Very similar to <a href="https://github.com/heynemann/pyccuracy/wiki/" target="_blank">Pyccuracy</a>, a tool written by our friends in the meme.com team in Brazil.</li>
</ul>
<div><a href="http://www.oscon.com/oscon2011/public/schedule/detail/20168" target="_blank">Introduction to Node.js</a> <em>(Tom Hughes-Coucher)</em>: This was a great heads-first dive into Node.js. I admit to knowing nothing practical about Node before this session. So I was shocked to learn you are expected to write your own web server before you can start writing your web app. I was stunned, frankly, at the impracticality of that concept. I was so stunned that after three hours of struggling through installation and the example exercises, I cornered Tom after the tutorial and had the &#8220;I don&#8217;t get it&#8221; talk with him. Being a very recently ex-Yahoo!, he was able to bring the business case in a more relatable way for me. This session was very necessary for me to be able to appreciate the presentations at Day 2: Node Day. Having thought through it a bit, and seen some examples, and heard the discussion, it no longer seems so unreasonable to have to spin up your own http/https server, logging infrastructure, and web application framework from scratch. More on that in Day 2: Node Day. A few tool-related notes I jotted on this day:</div>
<div>
<ul>
<li><a href="https://github.com/dannycoates/node-inspector" target="_blank">node-inspector</a>: in-browser Node.js debugging tool</li>
<li>The Chrome team has an <a href="https://github.com/joyent/node/wiki/Using-Eclipse-as-Node-Applications-Debugger" target="_blank">Eclipse-based Node.js debugger</a> as well, it looked very impressive on the big screen.</li>
<li><a href="http://npmjs.org/" target="_blank">npm</a>: Node Package Manager, developed by ex-Yahoo! <a href="http://twitter.com/#!/izs" target="_blank">Isaac Shlueter</a> (who also lives in Oakland, woot!) is a necessity (but does not install if you followed the instructions to install node from the ubuntu package. I spent the second half of the tutorial re-installing node from source so I could install npm. Very irritating!)</li>
</ul>
<div>The slides for this talk should be available on-line and have a great series of problems to help learn the basics of Node. I recommend trying them out if you are looking for an introduction to the concepts behind Node.</div>
</div>
<div>Time to hit the Puppet Labs Party before heading to bed. Will try to catch up with the bloggin&#8217; tomorrow with OSCon Day 2: Node Day. In which more things of a Nodeish nature are revealed. Perhaps I will even try live-blogging the keynotes! Ha! Who am I kidding! I am just getting started with this blogging thing. I am pretty sure you have to have a podcast before you can live-blog.</div>
]]></content:encoded>
			<wfw:commentRss>http://www.craig-wright.com/2011/07/26/blogging-oscon-2011-day-1-tutorials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

