<?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>Stephen Belanger &#187; Uncategorized</title>
	<atom:link href="http://stephenbelanger.com/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://stephenbelanger.com</link>
	<description>Just another coder making the web a better place.</description>
	<lastBuildDate>Fri, 18 Nov 2011 20:46:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>You are not lean, stop pretending.</title>
		<link>http://stephenbelanger.com/2011/11/11/you-are-not-lean-stop-pretending/</link>
		<comments>http://stephenbelanger.com/2011/11/11/you-are-not-lean-stop-pretending/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 13:06:00 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://stephenbelanger.tumblr.com/post/12654898155</guid>
		<description><![CDATA[I promised a post on my views of the &#8220;Lean Religion&#8221;, as I refer to it. Here it is. Don&#8217;t get me wrong; I agree with the intent, just not with the execution. The Origin IMVU built a religion to market their product and the Cult of Lean did the footwork. The question is; how [...]]]></description>
			<content:encoded><![CDATA[<p>I promised a post on my views of the &#8220;Lean Religion&#8221;, as I refer to it. Here it is. Don&#8217;t get me wrong; I agree with the intent, just not with the execution.<!-- more --></p>
<p><strong>The Origin</strong></p>
<p>IMVU built a religion to market their product and the Cult of Lean did the footwork. The question is; how many subscribers of the lean religion actually <em>use</em> the product that IMVU is pushing? No one? Yeah, that&#8217;s what I thought.</p>
<p>They followed the tried and true method of getting as many eyeballs on them as possible. In a way you could say it worked, they are still in business after all. But with that many eyeballs on them, why are they not competitive with Zynga?</p>
<p>Because their product sucks. They focused so much on structuring their work that they forgot they need to <em>feel</em> it too. That&#8217;s the lean curse, and even <em>they</em> fell into that trap. Without feeling, you have a bland product and you can&#8217;t structure feeling. You need to just let it flow. If you have a brilliant idea, let it out. If you don&#8217;t, you can&#8217;t force it.</p>
<p><strong>You think you are lean?</strong></p>
<p>A third of your employees are managers? You are not lean. Cut the managers and get heads-down coding. Your coders don&#8217;t need babysitters, and if they do; fire them.</p>
<p>Regular brief meetings to determine direction and discuss targets? You are not lean. Dump your shit in a todo list. If it really needs to be fleshed out, just group chat between deploys.</p>
<p>Carefully structured release cycles? You are not lean. Release it when it works; not a moment sooner, nor later.</p>
<p>Screw your lean, screw your scrum, screw your kanban. To put it bluntly; just fucking do it. I do not subscribe to the lean religion, I just get shit done. A one man team can make a scalable service just as well as a hundred man team. The hundred man team just sounds more impressive.</p>
<p><strong>Hack and slash, break and smash</strong></p>
<p>If you find that your product requires more programmers than you have fingers, it is too complex. Break it up. Smash it to pieces. Spin off the pieces into totally separate projects, worked on by totally different teams.</p>
<p>If they need to interact regularly, you haven&#8217;t isolated the components well enough. Think of the platform. The platform rant that Steve Yegge posted on Google+ had it absolutely right; If your internal interfaces aren&#8217;t generic and boring, or are in any way different than public-facing interfaces, you are doing it wrong.</p>
<p><strong>Do what works for you</strong></p>
<p>I&#8217;ve seen many companies actually <em>add</em> complexity to fit within the lean paradigm. Few seem to recognize that the lean methodology are merely <em>guidelines</em> not <em>rules</em>. The lean approach is not a one-size-fits-all business model. Such a thing does not exist. Just do your work and the methods ideal to your specific situation will surface organically.</p>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=201&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2011/11/11/you-are-not-lean-stop-pretending/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Today I went to a job interview.</title>
		<link>http://stephenbelanger.com/2011/11/02/today-i-went-to-a-job-interview/</link>
		<comments>http://stephenbelanger.com/2011/11/02/today-i-went-to-a-job-interview/#comments</comments>
		<pubDate>Wed, 02 Nov 2011 23:15:00 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://stephenbelanger.tumblr.com/post/12276346285</guid>
		<description><![CDATA[I went to a job interview today. Admittedly, I went in knowing little about the company beforehand. But with the intent of getting a feel for their workplace and to see if it is somewhere I might actually enjoy working. I didn&#8217;t expect much, but I gave it a go anyway. As I sat by [...]]]></description>
			<content:encoded><![CDATA[<p>I went to a job interview today. Admittedly, I went in knowing little about the company beforehand. But with the intent of getting a feel for their workplace and to see if it is somewhere I might actually enjoy working. I didn&#8217;t expect much, but I gave it a go anyway.<!-- more --></p>
<p>As I sat by the entrance, waiting for the HR person to prepare for the interview, I was passed by a total of 22 people. Only one of them took the extra breath to simply say &#8220;hello&#8221; as they briskly walked past. Now that&#8217;s certainly not a point of enormous consequence, but it does give one a bleak view of their passion for what they do. Happy people are social people.</p>
<p><strong>The Interview</strong></p>
<p>Eventually the interview began. They bandied about Microsoft Certifications and Partner Programs, as if those actually meant something. And there was the usual questions about &#8220;Why do you want to work here?&#8221; and &#8220;What are your career goals?&#8221;, but for the first question I had no answer yet. I didn&#8217;t really know yet what they did, so they explained it to me. Or rather, they tried to.</p>
<p>After a ten minute long pitch of their product/service/whatever-the-heck-it-is, I still had little idea what <em>they</em> as an entity actually did. I knew what the end result was, but was it <em>their</em> product? Was it partial work <em>contracted</em> by some external entity? What were they doing that they could actually put their name on?</p>
<p>I couldn&#8217;t figure out what exactly it was they did. But I got the distinct feeling that they were basically a glorified contract-based development shop. I hope they can dispute that.</p>
<p><strong>The Conflict</strong></p>
<p>They also asked me what my criteria was for an ideal workplace. I talked to them about my history of open source contributions and my development style. They seemed visibly at-odds with my views, which I was expecting, but not to such an extent.</p>
<p>They openly condemned the idea of open source simply on the grounds that &#8220;Enterprise clients don&#8217;t like that.&#8221; First; that sort of submissive attitude is what encourages stagnation of technologies. Second; No, enterprise does not inherently hate open source. Were that the case, Linux and the various Apache Foundation projects would not be so prolific. What they don&#8217;t like is half-assed use of open source technologies simply to save money. If you use open source code, you better understand what code it&#8217;s replacing.</p>
<p>On the note of development style. They, like many, have hopped aboard the lean bandwagon, following the Scrum variety in particular. I&#8217;ll leave my opinions on the &#8220;Lean Religion&#8221; for another post, but to put it bluntly; I&#8217;m more a follower of the <a href="http://programming-motherfucker.com">&#8220;programming, motherfucker&#8221;</a> methodology. I don&#8217;t think they liked that.</p>
<p><strong>The Epic Conclusion</strong></p>
<p>It was becoming obvious to me that this was not a place I wanted to work. I respect that they have built this company and kept it running for so long. That&#8217;s not yet something I can say I&#8217;ve outdone, so it&#8217;s only fair that I recognize their accomplishment.</p>
<p>But our views on what is the &#8220;right&#8221; way to run a tech business are so radically different. Some people just aren&#8217;t meant to work together, and this was one of those cases. I have politely chosen not to name the company. Though they will probably read this and know who I am referring to. I hope they have a compelling counter-argument to my views on their methods.</p>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=202&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2011/11/02/today-i-went-to-a-job-interview/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Games don&#8217;t need to be social</title>
		<link>http://stephenbelanger.com/2011/10/28/games-dont-need-to-be-social/</link>
		<comments>http://stephenbelanger.com/2011/10/28/games-dont-need-to-be-social/#comments</comments>
		<pubDate>Sat, 29 Oct 2011 02:30:00 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://stephenbelanger.tumblr.com/post/12066866828</guid>
		<description><![CDATA[Social games have been a big trend in recent years. Zynga struck it big and now everyone else is trying to emulate them. Unfortunately, the first thing that pops into anyones head when a Zynga game is mentioned is Facebook. Facebook is the platform upon which their success stories like FarmVille were built, but it&#8217;s [...]]]></description>
			<content:encoded><![CDATA[<p>Social games have been a big trend in recent years. Zynga struck it big and now everyone else is trying to emulate them. Unfortunately, the first thing that pops into anyones head when a Zynga game is mentioned is Facebook. Facebook is the platform upon which their success stories like FarmVille were built, but it&#8217;s not the <em>reason</em> for their success.<!-- more --></p>
<p>Zyngas games work because they are fun. The social connectivity is merely a mechanism to share your enjoyment of the game with others. It becomes utterly useless if there <em>is</em> no enjoyment to share.</p>
<p>Sadly, many focus on social connectivity out of some misguided delusion of necessity. People actually believe their game needs to be social to be successful. This is simply not the case. At best, it&#8217;s a distraction from the real importance; fun. At worst, it&#8217;s lipstick on a pig. If your game sucks, social connectivity isn&#8217;t going to magically make people not notice.</p>
<p>Minecraft sold millions. No Facebook, no Twitter. It&#8217;s not even out of beta. Braid did incredibly well too. As did Bejeweled. No social connectivity there. Just good, old-fashioned fun. That&#8217;s all games need.</p>
<p>Stop for a moment and think; if Facebook didn&#8217;t exist, could my game still work? Would I still love playing it? Would I still tell my friends about that cool thing I did in it last night? If the answer to any of those is no, you have lost. Game over. Retry.</p>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=203&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2011/10/28/games-dont-need-to-be-social/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to make Socket.IO work behind nginx (mostly)</title>
		<link>http://stephenbelanger.com/2011/09/21/how-to-make-socket-io-work-behind-nginx-mostly/</link>
		<comments>http://stephenbelanger.com/2011/09/21/how-to-make-socket-io-work-behind-nginx-mostly/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 17:09:57 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[node.js]]></category>
		<category><![CDATA[socket.io]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[nginx]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://stephenbelanger.com/?p=186</guid>
		<description><![CDATA[Most web hosts with node.js support host it behind an nginx proxy. Sadly, Socket.IO doesn't work at all behind nginx without a bit of hacking.]]></description>
			<content:encoded><![CDATA[<p>UPDATE: News from <a href="http://github.com/jpetazzo">jpetazzo</a>:</p>
<blockquote><p>dotCloud now has beta websockets support, so this hack should no longer be necessary. Just point your custom domain to experimental-gateway-1.dotcloud.com instead of gateway.dotcloud.com and you will be using a websockets-aware load balancer instead of the default one running Nginx.</p></blockquote>
<p>Most web hosts with node.js support host it behind an nginx proxy. Sadly, Socket.IO doesn&#8217;t work at all behind nginx without a bit of hacking. Currently there&#8217;s no vhost-supported way to run websockets through nginx, but we can at least get the xhr transport to work properly&#8211;basically everything can do xhr-polling.</p>
<p>Turns out that nginx doesn&#8217;t really like how Socket.IO uses the &#8220;Connection: keep-alive&#8221; header, so lets just remove that. All we need to do is overwrite a function in the xhr-polling transport. This should do it;</p>
<pre name="code" class="javascript">
io.configure(function() {
  io.set("transports", ["xhr-polling"]);
  io.set("polling duration", 10);

  var path = require('path');
  var HTTPPolling = require(path.join(
    path.dirname(require.resolve('socket.io')),'lib', 'transports','http-polling')
  );
  var XHRPolling = require(path.join(
    path.dirname(require.resolve('socket.io')),'lib','transports','xhr-polling')
  );

  XHRPolling.prototype.doWrite = function(data) {
    HTTPPolling.prototype.doWrite.call(this);

    var headers = {
      'Content-Type': 'text/plain; charset=UTF-8',
      'Content-Length': (data &#038;&#038; Buffer.byteLength(data)) || 0
    };

    if (this.req.headers.origin) {
      headers['Access-Control-Allow-Origin'] = '*';
      if (this.req.headers.cookie) {
        headers['Access-Control-Allow-Credentials'] = 'true';
      }
    }

    this.response.writeHead(200, headers);
    this.response.write(data);
    this.log.debug(this.name + ' writing', data);
  };
});
</pre>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=186&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2011/09/21/how-to-make-socket-io-work-behind-nginx-mostly/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>An eventful week&#8230;</title>
		<link>http://stephenbelanger.com/2011/04/22/an-eventful-week/</link>
		<comments>http://stephenbelanger.com/2011/04/22/an-eventful-week/#comments</comments>
		<pubDate>Sat, 23 Apr 2011 04:17:26 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[Game Programming]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[Peint]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[socket.io]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[Canvas. Yammer]]></category>
		<category><![CDATA[Chattan]]></category>
		<category><![CDATA[DuoStack]]></category>
		<category><![CDATA[Galaxy S]]></category>
		<category><![CDATA[Game Development]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[Opzi]]></category>
		<category><![CDATA[PlayBook]]></category>
		<category><![CDATA[San Francisco]]></category>
		<category><![CDATA[Startup]]></category>
		<category><![CDATA[TechCrunch]]></category>

		<guid isPermaLink="false">http://stephenbelanger.com/?p=158</guid>
		<description><![CDATA[It's been an interesting week so far. I had a job interview at Yammer in San Francisco on Tuesday morning, so I was to fly out from Kelowna on Monday.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been an interesting week so far. I had a job interview at Yammer in San Francisco on Tuesday morning, so I was to fly out from Kelowna on Monday. My passport however, had expired. I ended up having to drive to Vancouver through the middle of the night and go to the passport office there at 7:30AM Monday morning. The process would take awhile, so I slept in the van for a few hours while I waited and hoped. They managed to have the passport put together just in time for me to pick it up and go straight to the airport.</p>
<p>Eventually I made it to San Francisco, but the problems still hadn&#8217;t ended. From the airport I took a shuttle&#8230;to the wrong hotel. Then I caught a cab to the right one. Finally at my hotel, I checked in and went up to my room. Much to my dismay however, their internet login system doesn&#8217;t work with Linux so my &#8220;complimentary&#8221; internet went entirely to waste. I had to resort to my Galaxy S for checking emails&#8211;no doubt my next bill is going to be scary expensive. In typical hotel fashion, they charge you to do pretty much anything but sleep, so I slept.</p>
<p>The next day was somewhat better. I was to meet at the Yammer HQ, in the same building as TechCrunch, for a few hours at 10AM. Checkout time at the hotel was noon, so I had to pack my luggage along with me. I quickly packed up my things and took a cab over to their offices, which were just a few minutes away.</p>
<p>The interview seemed to go pretty well, hopefully I can get the job because they&#8217;d be a pretty awesome crew to work with. There was several sets of interviews with people from the various teams at Yammer. They asked me various questions about Javascript to test my knowledge, which was refreshing&#8211;sometimes I just get disregarded because of my lack of formal training. Most of the questions were pretty easy but there was a few things that they were a bit vague about so it took a bit of prodding to figure out what exactly they were fishing for. Overall the interview seemed to go over pretty well though. I got to share a tasty catered lunch with them too.</p>
<p>After the interview I basically stepped outside the office, jumped into a cab and went straight to the airport. It was a much smoother exit from San Francisco than the entrance. There was a stop in Seattle though that was a bit on the long side. I sat at the gate for my next flight for about 3 hours. Fortunately there is plenty to do at the Seatac airport, so I managed to keep myself entertained. I got to try out a PlayBook while I was there, which was neat. I can kind of see where people are coming from about the complaints of it being &#8220;incomplete&#8221;, but it&#8217;s still a pretty neat piece of tech. I think application development should make it a pretty exciting platform.</p>
<p>Anyway, eventually I got back to Kelowna and finally got the sleep I had been longing for since Monday morning. I slept until almost noon on Wednesday, which I haven&#8217;t done in awhile. But eventually I felt compelled to get up and get some programming in. I wanted to get some more work done on the game engine I&#8217;ve been working on for a web game I&#8217;ve been making. I made a few updates to my Actor class to add RM2K support and animations, so I decided I&#8217;d do some benchmarks. I managed to get 484 unique Actors on a grass-tiled screen at 1920&#215;968 before it the rendering started to drop below 30 fps. That&#8217;s some pretty decent performance. Now I need to work on layer grouping and pre-rendering so I&#8217;m not drawing each tile of each layer for every frame. I&#8217;m convinced I can actually make an infinite scrolling tilemap render fast enough to be viable for large scale game development.</p>
<p>Thursday morning was the second Evoke Game Group meeting. Unfortunately there was only three of us this time&#8211;the weather was a bit ugly and I think there was a bit of confusion with moving the meet to Thursday because of Good Friday. It should pick up again for the next meet though. I&#8217;ve got a few people who&#8217;ve invited some programmers to join us, so I&#8217;m optimistic that I can get a hacknight going soon. I&#8217;ll keep my fingers crossed.</p>
<p>Today was more game dev stuff and deploying Chattan to DuoStack. Hopefully I can get Cloudant working too so I can deploy another secret project I&#8217;ve been working on. Cloudant was one of the many SaaS companies hit hard by the EC2 outage today. Hopefully they recover soon, it&#8217;s a pretty awesome service. I also got a few more calls from some web companies in San Francisco, including Opzi; one of the startups presented at this years TechCrunch Disrupt. They are somewhat smaller than Yammer, but it sounds like they are trying to do some pretty neat stuff. I can&#8217;t wait to see where that goes.</p>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=158&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2011/04/22/an-eventful-week/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Let&#8217;s chat about node.js</title>
		<link>http://stephenbelanger.com/2010/12/01/lets-chat-about-nodejs/</link>
		<comments>http://stephenbelanger.com/2010/12/01/lets-chat-about-nodejs/#comments</comments>
		<pubDate>Wed, 01 Dec 2010 19:44:27 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[Javascript]]></category>
		<category><![CDATA[node.js]]></category>
		<category><![CDATA[socket.io]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Web Programming]]></category>
		<category><![CDATA[express]]></category>
		<category><![CDATA[expressjs]]></category>
		<category><![CDATA[nodejs]]></category>
		<category><![CDATA[okdg]]></category>

		<guid isPermaLink="false">http://stephenbelanger.com/?p=117</guid>
		<description><![CDATA[Last night I had the pleasure of presenting on <a href="http://nodejs.org">node.js</a> at the November <a href="http://okdg.org">OKDG</a> meet. It was a lot of fun, and there seemed to be quite a bit of interest in the technology. Well, now I've got the slideshow available in PDF form for all to see. :)

Not only that, the chat demo created in the presentation will remain live for all to play with. In addition to what was covered in the presentation, it also has a basic message filtering system to convert URLs to embedded content. Try posting a URL to an image, Youtube video or PDF and you can see it in action. <a href="http://chat.stephenbelanger.com">Check it out!</a>]]></description>
			<content:encoded><![CDATA[<p>Last night I had the pleasure of presenting on <a href="http://nodejs.org">node.js</a> and <a href="http://socket.io">socket.io</a> at the November <a href="http://okdg.org">OKDG</a> meet. It was a lot of fun, and there seemed to be quite a bit of interest in the technology. Well, now I&#8217;ve got the slideshow available in PDF form for all to see. <img src='http://stephenbelanger.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Not only that, the chat demo created in the presentation will remain live for all to play with. In addition to what was covered in the presentation, it also has a basic message filtering system to convert URLs to embedded content. Try posting a URL to an image, Youtube video or PDF and you can see it in action. <a href="http://chat.stephenbelanger.com">Check it out!</a></p>
<p><iframe src="http://docs.google.com/gview?url=http://stephenbelanger.com/wp-content/uploads/2010/12/Let__s_chat_about_node_js1.pdf&amp;embedded=true" style="width:600px; height:500px;" frameborder="0"></iframe><a href='http://stephenbelanger.com/wp-content/uploads/2010/12/Let__s_chat_about_node_js1.pdf'>Download as PDF</a></p>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=117&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2010/12/01/lets-chat-about-nodejs/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Infinite Genies Paradox</title>
		<link>http://stephenbelanger.com/2010/07/15/the-infinite-genies-paradox/</link>
		<comments>http://stephenbelanger.com/2010/07/15/the-infinite-genies-paradox/#comments</comments>
		<pubDate>Fri, 16 Jul 2010 00:00:29 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[aladdin]]></category>
		<category><![CDATA[genie]]></category>
		<category><![CDATA[observations]]></category>

		<guid isPermaLink="false">http://www.stephenbelanger.com/?p=97</guid>
		<description><![CDATA[There's not many people out there who haven't heard the story of Aladdin--it's a story with quite a bit of history and has got recognition in many forms, including a cartoon rendition created by Disney. It's a creative and interesting story, but it's also quite flawed and most people don't even notice that.]]></description>
			<content:encoded><![CDATA[<p>There&#8217;s not many people out there who haven&#8217;t heard the story of Aladdin&#8211;it&#8217;s a story with quite a bit of history and has got recognition in many forms, including a cartoon rendition created by Disney. It&#8217;s a creative and interesting story, but it&#8217;s also quite flawed and most people don&#8217;t even notice that.</p>
<p>After finding the genie, Aladdin is told he can wish for anything except &#8220;more wishes&#8221;. This is obviously an attempt to prevent infinite wishes, but a loophole surfaces later in the story that went largely unnoticed. Jafar wishes to be a genie himself, and the original genie grants that wish, thus genies can create <em>other</em> genies.</p>
<p>Herein lies the paradox; a genie offers me 3 wishes&#8211;first I wish for something ridiculous like a trillion dollars, then I wish for someone else to become a genie, and spend my last wish to free the original genie. I now have a second genie with no wishes spent. I make another extravagant wish, make a new genie and then free the old one. Wash, rinse repeat&#8211;we have our Infinite Genies Paradox.</p>
<p>Were there only two wishes, the infinite loop could still be done if you chose not free the genies after, but that would have fit better with the moral dilemma at the core of the story. So why three wishes, and not two?</p>
<p>Anyone else have any weird observations like this on popular media? Feel free to post whatever comes to mind. It&#8217;s always interesting to see what you might not have seen without someone else pointing it out.</p>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=97&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2010/07/15/the-infinite-genies-paradox/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Back online!    &#8230;.mostly&#8230;</title>
		<link>http://stephenbelanger.com/2010/06/14/back-online-mostly/</link>
		<comments>http://stephenbelanger.com/2010/06/14/back-online-mostly/#comments</comments>
		<pubDate>Mon, 14 Jun 2010 19:42:27 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stephenbelanger.com/?p=94</guid>
		<description><![CDATA[UPDATE: Everything works now. So I decided to switch from Slicehost to Rackspace Cloud, since my server was overloaded and having all sorts of network issues. Unfortunately things kind of exploded. I managed to get the site back online, but the URL rewriting isn&#8217;t working at the moment and I&#8217;m at work right now, so [...]]]></description>
			<content:encoded><![CDATA[<p>UPDATE: Everything works now. <img src='http://stephenbelanger.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /><br />
So I decided to switch from Slicehost to Rackspace Cloud, since my server was overloaded and having all sorts of network issues. Unfortunately things kind of exploded. I managed to get the site back online, but the URL rewriting isn&#8217;t working at the moment and I&#8217;m at work right now, so I&#8217;ll have to look at it later.</p>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=94&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2010/06/14/back-online-mostly/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>jquery.flash is on github! (and updated)</title>
		<link>http://stephenbelanger.com/2010/02/18/jquery-flash-is-on-github-and-updated/</link>
		<comments>http://stephenbelanger.com/2010/02/18/jquery-flash-is-on-github-and-updated/#comments</comments>
		<pubDate>Thu, 18 Feb 2010 20:38:18 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stephenbelanger.com/2010/02/18/jquery-flash-is-on-github-and-updated/</guid>
		<description><![CDATA[I&#8217;ve recently starting committing changes made to jquery-flash to github. You can view the project page for it here. I&#8217;ve also made a few updates, the most notable being; I moved the checking code to seperate functions called isie(), hasflash() and flashversion(). All of which can be used anywhere, with or without using $().flash(). I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently starting committing changes made to jquery-flash to github. You can view the project page for it <a href="http://github.com/Qard/jquery-flash">here</a>.</p>
<p>I&#8217;ve also made a few updates, the most notable being; I moved the checking code to seperate functions called isie(), hasflash() and flashversion(). All of which can be used anywhere, with or without using $().flash(). I also did some minor optimizations to make execution a little speedier.</p>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=88&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2010/02/18/jquery-flash-is-on-github-and-updated/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Talker &#8211; Waves? Campfires? I just want to talk!</title>
		<link>http://stephenbelanger.com/2010/01/06/talker-waves-campfires-i-just-want-to-talk/</link>
		<comments>http://stephenbelanger.com/2010/01/06/talker-waves-campfires-i-just-want-to-talk/#comments</comments>
		<pubDate>Wed, 06 Jan 2010 02:16:51 +0000</pubDate>
		<dc:creator>Qard</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stephenbelanger.com/2010/01/06/talker-waves-campfires-i-just-want-to-talk/</guid>
		<description><![CDATA[I, among many, jumped on the Google Wave Dev Preview bandwagon. The video demonstrations they had were so nice and polished looking, but after getting the chance to try it first hand it&#8217;s polished sheen quickly faded&#8211;it was buggy to the point of being unusable and collaboration was so awkward. As a Wave expanded it [...]]]></description>
			<content:encoded><![CDATA[<p>I, among many, jumped on the Google Wave Dev Preview bandwagon. The video demonstrations they had were so nice and polished looking, but after getting the chance to try it first hand it&#8217;s polished sheen quickly faded&#8211;it was buggy to the point of being unusable and collaboration was so awkward. As a Wave expanded it became more and more difficult to determine what was new and what you had read before. Conversations would branch all over the place and you would quickly lose track of what was actually being discussed. There was other alternatives for business communication, but they all had one thing in common; over complication. Integration is fine and all, but sometimes the users don&#8217;t need what it integrates with, so it shouldn&#8217;t be built around that.</p>
<p>In steps <a href="http://www.talkerapp.com">Talker</a>, a deceptively flexible messaging system wrapped in a simple interface that anyone could understand. Who likes explaining to their coworkers how an app is supposed to work, show of hands. None? Yeah, I thought so.</p>
<p>I first stumbled across Talker through Marc-AndrÃ© Cournoyer&#8217;s LinkedIn profile and, to be honest, bookmarked it and forgot about it. It was in beta at the time and didn&#8217;t have much to see, so I overlooked it&#8217;s simple nature. Today though, I received word that Talker was ready for launch. I slipped into the demo room and made a few posts. Everything was quick and responsive and the functionality was so elegant; I posted a link to an image&#8211;it loaded the image itself in it&#8217;s place, I posted a youtube link&#8211;it embedded the video right there. The attention to detail down to things like the auto-completing / commands and @ usernames was a very nice touch.</p>
<p>What really blew me away though was the simplicity of the plugin interface. Many useful plugins like autocomplete are <i>literally</i> one-liners! You can&#8217;t get much simpler than that, unlike Wave&#8217;s monolithic Python plugins that need to load a million and one external libraries just to make a basic word filter. If you haven&#8217;t checked it out already I seriously recommend you give it a try, who knows, <a href="http://www.talkerapp.com">you might like it</a>.</p>
<img src="http://stephenbelanger.com/?ak_action=api_record_view&id=75&type=feed" alt="" />]]></content:encoded>
			<wfw:commentRss>http://stephenbelanger.com/2010/01/06/talker-waves-campfires-i-just-want-to-talk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

