<?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>Zachernuk.com</title>
	<atom:link href="http://www.zachernuk.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.zachernuk.com</link>
	<description>The desk of Brandel Zachernuk</description>
	<lastBuildDate>Thu, 16 May 2013 00:41:53 +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>Side-skilling and context</title>
		<link>http://www.zachernuk.com/2013/05/08/side-skilling-and-context/</link>
		<comments>http://www.zachernuk.com/2013/05/08/side-skilling-and-context/#comments</comments>
		<pubDate>Wed, 08 May 2013 02:53:32 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[application]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[thoughts]]></category>
		<category><![CDATA[webgl]]></category>
		<category><![CDATA[context]]></category>
		<category><![CDATA[demos]]></category>
		<category><![CDATA[directions]]></category>
		<category><![CDATA[learning]]></category>
		<category><![CDATA[people]]></category>
		<category><![CDATA[society]]></category>
		<category><![CDATA[technology]]></category>
		<category><![CDATA[usefulness]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1630</guid>
		<description><![CDATA[It has been quiet on this blog over the past couple of months. I try to post as much as I can, but what I manage to post about depends entirely on what I manage to do in my spare time. Over the last few months that spare time has been increasingly devoted to study [...]]]></description>
			<content:encoded><![CDATA[<p>It has been quiet on this blog over the past couple of months. I try to post as much as I can, but what I manage to post about depends entirely on what I manage to do in my spare time. Over the last few months that spare time has been increasingly devoted to study of non-computing subjects &#8211; in particular, management, economics and sociology.</p>
<p><strong>&#8230;<em>Why</em>?</strong></p>
<p>I love technology and doing cool new things with it, so why bother with any of those other subjects? Because technology doesn&#8217;t exist in a vacuum. It&#8217;s not enough just to invent a neat new app, network or gadget &#8211; as a technologists, we&#8217;ve got to understand how the stuff we create exists in society &#8211; who&#8217;d use it, where they use it, when they use it and why. It&#8217;s fun to study the technology side, and tempting to think the <em>exclusive</em> study of the tech aspects will get you the best answers. If you don&#8217;t understand people and society, though, you ultimately end up with brilliant solutions to problems that nobody has. Think of the <a href="http://www.youtube.com/watch?v=ccwNnvj1wXQ" target="_blank">Segway</a> or the even more brilliant (and doubly ridiculous) <a href="http://www.youtube.com/watch?feature=player_detailpage&amp;v=XgPArPAeYds#t=48s" target="_blank">robotic unicycle</a>. Catherine Bracy recently<a href="http://cbracy.tumblr.com/post/39314979304/silicon-valleys-problem" target="_blank"> outlined the problem very clearly</a>, highlighting the un-reality of the consensus bubble that surrounds the technology world. After focusing so heavily on technology it&#8217;s now clear to me that I&#8217;ve got to look at a wider range of fields to know what technology is really good for.</p>
<p><strong>Where to learn?</strong></p>
<p>Personally, I&#8217;ve been looking in a few places &#8211; first, <a href="https://www.coursera.org" target="_blank">coursera.org</a> is an amazing online resource that offers hundreds of classes on an ever-expanding range of subjects. Because it&#8217;s a technological resource, it&#8217;s not surprising that the courses initially offered in late 2011 were very technology-focused. Since then, though, they&#8217;ve opened up a lot &#8211; their course listing now covers medicine, history, literature and more &#8211; all being taught by some of the best professors in the world. The most useful fields for me have been the ones I&#8217;m the least familiar with, and the ones that help me understand more about the nature of human beings &#8211; in the present day or in the past, on their own or in large groups. Other great places to look for inspiration are companies like <a href="http://www.berglondon.com/blog" target="_blank">BERG</a>, the <a href="http://www.longnow.org">Long Now foundation</a> and the old-but-venerable discussion forum at the <a href="http://www.well.com/conf/inkwell.vue/topics/" target="_blank">WELL</a>.</p>
<p><strong>Does that mean studying technology is a problem?</strong></p>
<p>Nope! Technology is a great subject to learn, and a great field to work within. It just means that it has to be understood in a wider context. STEM (Science, Technology, Engineering and Medicine) education has an unfortunate tendency to create graduates with an all-or-nothing mindset about what they&#8217;re learning. That means that the people with the best technical skills to do something useful in society are often the worst-equipped to understand where those skills are best put to use. It&#8217;s partly because there&#8217;s a lot to learn about, so a technology course often doesn&#8217;t take the time to point these things out.</p>
<p><strong>Does that mean no more interactive doodles on this site?</strong></p>
<p>Absolutely not! It just means that there might be some more theoretical posts here amid the doodles. This year at <a href="http://www.resn.co.nz/" target="_blank">Resn</a> we&#8217;ve been playing with <a href="http://www.leapmotion.com/" target="_blank">Leap motion</a> and hope to have some demos and case studies to show off around that. More recently we&#8217;ve also been building a series of really gorgeous games in Away3D with models and animations constructed in Blender3D. To make that pipeline work for us we&#8217;ve had to do quite a lot of tweaking and building, and we look forward to releasing some of those tools into the wild. Closer to home, I&#8217;ve been using WebDatabases and a proxy tool to do some covert data-mining that I look forward to showing off in the near future. 2013 is going to be fun!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2013/05/08/side-skilling-and-context/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Simple IK solver &#8211; with source!</title>
		<link>http://www.zachernuk.com/2013/03/26/simple-ik-solver-with-source/</link>
		<comments>http://www.zachernuk.com/2013/03/26/simple-ik-solver-with-source/#comments</comments>
		<pubDate>Tue, 26 Mar 2013 01:18:38 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[flash]]></category>
		<category><![CDATA[prototyping]]></category>
		<category><![CDATA[vector]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[free]]></category>
		<category><![CDATA[ik]]></category>
		<category><![CDATA[inputdev]]></category>
		<category><![CDATA[inverse kinematics]]></category>
		<category><![CDATA[leap]]></category>
		<category><![CDATA[leapmotion]]></category>
		<category><![CDATA[library]]></category>
		<category><![CDATA[motion]]></category>
		<category><![CDATA[physics]]></category>
		<category><![CDATA[solver]]></category>
		<category><![CDATA[source]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1615</guid>
		<description><![CDATA[Usage: Click and drag the points around to reset the position of the two points. If you want to use the solver, download it here! 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_IKToy_1841781034"
			class="flashmovie"
			width="600"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2013/03/IKToy.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2013/03/IKToy.swf"
			name="fm_IKToy_1841781034"
			width="600"
			height="600">
	<!--<![endif]-->
		 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object> &#160; It has been a busy time at Resn! We have been hard at work on some pretty cool games/toys that should [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Usage: </strong>Click and drag the points around to reset the position of the two points. If you want to use the solver, <a href="http://www.zachernuk.com/wp-content/2013/03/IKHandler-lib.zip" target="_blank">download it here</a>!</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_IKToy_885341885"
			class="flashmovie"
			width="600"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2013/03/IKToy.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2013/03/IKToy.swf"
			name="fm_IKToy_885341885"
			width="600"
			height="600">
	<!--<![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>&nbsp;</p>
<p>It has been a busy time at <a href="http://www.resn.co.nz" target="_blank">Resn</a>! We have been hard at work on some pretty cool games/toys that should be available for the up-and-coming LEAP Motion device. It&#8217;s even in the <a href="http://www.stuff.co.nz/technology/games/8466940/Kiwi-firm-offers-US-market-new-games" target="_blank">paper</a>! The device is amazing, and I&#8217;ve got another post or two in the works just to describe what it&#8217;s like and how it&#8217;s going to change everything. In the meantime, we&#8217;ve had to make some games for it. The game  I&#8217;ve been working on has puppets that need semi-realistic movements, and so I&#8217;ve been using a mixture of Box2DAS3 for the general physics solver, and an Inverse Kinematics (IK) solver that I worked out myself. I&#8217;ve never played with IK before, so it was nice to have an opportunity. I built it because I couldn&#8217;t find a solver that was simple enough for my needs, and so here it is!</p>
<p><strong>That solver&#8217;s not finished! Or, obeying our lord YAGNI</strong></p>
<p>If you&#8217;re a stickler for details, you might notice that the solver&#8217;s not actually complete. It only deals with two limbs that are exactly the same length. Why bother releasing that? First, because it&#8217;s all I needed &#8211; The arms and legs of our puppets were close enough to symmetrical in length that it wasn&#8217;t necessary to add all of the extra detail. Second, it was kind of an exercise in minimalism. For those unfamiliar with the term, YAGNI stands for &#8216;You Ain&#8217;t Gonna Need It.&#8217; Programmers are notorious for trying to cover every possible situation before beginning anything &#8211; which is great for being prepared for everything&#8230; eventually. If you want to get anything done, though, it&#8217;s necessary to work on only those features that are strictly, immediately necessary.  It&#8217;s harder than it sounds to stick to that, though.</p>
<p><span style="font-size: 13px;">So here&#8217;s my IK solver, such as it is. If you want the solver on its own you can <a href="http://www.zachernuk.com/wp-content/2013/03/IKHandler-lib.zip" target="_blank">grab it here</a>, and if you&#8217;d prefer the sample project you can <a href="http://www.zachernuk.com/wp-content/2013/03/IKToy.zip" target="_blank">grab that here</a>. I hope it&#8217;s useful!   </span></p>
<p><a href="http://www.zachernuk.com/wp-content/2013/03/IKtoy0.png"><img class="alignnone size-full wp-image-1625" title="IKtoy0" src="http://www.zachernuk.com/wp-content/2013/03/IKtoy0.png" alt="" width="546" height="562" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2013/03/26/simple-ik-solver-with-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Study of Dan Cook&#8217;s Triple Town</title>
		<link>http://www.zachernuk.com/2013/02/25/study-of-dan-cooks-triple-town/</link>
		<comments>http://www.zachernuk.com/2013/02/25/study-of-dan-cooks-triple-town/#comments</comments>
		<pubDate>Mon, 25 Feb 2013 00:59:50 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[doodles]]></category>
		<category><![CDATA[Games]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[cook]]></category>
		<category><![CDATA[dan cook]]></category>
		<category><![CDATA[danc]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[magazine]]></category>
		<category><![CDATA[match3]]></category>
		<category><![CDATA[omni]]></category>
		<category><![CDATA[puzzle]]></category>
		<category><![CDATA[spryfox]]></category>
		<category><![CDATA[triple town]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1603</guid>
		<description><![CDATA[Usage: Click the image below to play Triple Copy. Click on the board to place a piece, and place three pieces of the same type next to each other to construct a piece of the next level. Rinse and repeat until you get a black orb. Let me know when you&#8217;re done and what you [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Usage:</strong> Click the image below to play Triple Copy. Click on the board to place a piece, and place three pieces of the same type next to each other to construct a piece of the next level. Rinse and repeat until you get a black orb. Let me know when you&#8217;re done and what you thought!</p>
<p><a href="http://zachernuk.com/triplecopy/"><img class="alignnone size-full wp-image-1605" title="tCopy" src="http://www.zachernuk.com/wp-content/2013/02/tCopy.png" alt="" width="686" height="458" /></a></p>
<p>&nbsp;</p>
<p>I made a game! Or more accurately, I made a copy of some of the mechanics in <a href="http://www.lostgarden.com" target="_blank">Dan Cook</a>&#8216;s<a href="https://apps.facebook.com/tripletown" target="_blank"> Triple Town</a>. The game is so fascinating that I had to study it in more detail. While I know that this could be a bit of an issue &#8211; Cook rightly brought action against 6waves for<em> Yeti Town</em> &#8211; I&#8217;d try to make it clear that my case is different because of the form and the purpose. First, it&#8217;s not for sale and I&#8217;m not making any money from it. It&#8217;s simply an exercise in understanding the mechanics that Cook has included in Triple Town. Second, it&#8217;s incomplete &#8211; it&#8217;s not a replacement for the original game and I hope that if anyone does play it, they&#8217;re compelled to try out Triple town to see what else Cook has included.</p>
<h4>If it is such shaky ground, why bother copying it at all?</h4>
<p>Copying is a great technique for learning about something. There are details that you&#8217;d miss when you just try to look at the original &#8211; quirks of the production that give you a better insight into why something was made in the first place. It also puts you in a better position to think about what other directions an idea could take &#8211; tweaking a color here, a number there or introducing a slightly different mechanic. If you do enough copying you can start to understand the mindset that creates stuff like the original, and start to explore ideas that are similar to  - but distinct from &#8211; the work of the the originator.</p>
<h4>Why copy Triple Town?</h4>
<p>So that&#8217;s why I like to copy stuff in general &#8211; but in the case of Triple Town it was necessary because Cook&#8217;s work is so unique. Triple Town has a fantastically simple rule-set that still creates a huge amount of depth. The three-grasses-to-make-a-bush, three-bushes-to-make-a-tree mechanic goes an incredibly long way. The occasional bonus piece like the wildcard crystal or other powerups add a little randomness and ga glimmer of hope to otherwise hopeless scenarios. The thin layer of narrative on the top isn&#8217;t necessary to understand the game but it definitely makes it more enjoyable, and the rendering of the bears turns them into an object of frustration and dread far beyond their actual impact in the game. This is a common theme running through all of Cook&#8217;s games &#8211; while other people are definitely making excellent games as entire packages, I think that he&#8217;s probably the best new <em>mechanic</em> designer working at the moment.</p>
<h4>So what did you  learn?</h4>
<p>The first thing is probably the most obvious, particularly to anyone who has played any successful mobile games over the last couple of years: <em>Keep the core experience simple, and make sure it&#8217;s fun</em>. This approach is not only cheaper to produce games with but ultimately more entertaining.</p>
<p>The second is that <em>the </em>level of polish on the experience matters a lot to people&#8217;s sense of quality, particularly non-gamers. For a long time I had plain, colored squares as the set pieces and while it was still Cook&#8217;s entertaining mechanic, it was much harder for anyone else to come in and enjoy the outcome of it. While the current appearance I&#8217;ve got on Triple Copy is still really abstract, people respond to it a lot better now.</p>
<p>Third, <em>the scale of the world you play within matters a lot</em>. The real Triple Town is played on a maximum of a 6&#215;6 board and my initial reason to make a copy was to understand what it would be like playing with a lot more room. It&#8217;s definitely interesting &#8211; the greater amount of room leaves more room to make mistakes and understand what does and does not work about certain strategies. The feedback between trying something out and seeing its success or failure becomes tighter and renders the system more learnable.</p>
<p>I was fascinated to realize that more learnable doesn&#8217;t always mean more fun, though;  it was the first time I had seen such a clear example of &#8216;flow&#8217; &#8211; the concept that there&#8217;s an optimum level for difficulty and progress to keep people engaged in a game. The increased size of the board reduces the difficulty and lays some of the meta-mechanics bare in a way that takes a lot longer without such a wide open test-bed.</p>
<p>The popular success of so many games will pivot on a single hook &#8211; and some of those hooks can be ugly when you get close to them. The &#8216;appointment mechanic&#8217; is really just exploiting a player&#8217;s compulsion to finish what they started, irrespective of the time it takes. It&#8217;s often intensified with the threat to shame players by parading their unfinished or ruined efforts in front of their friends. The &#8216;collection mechanic&#8217; feeds off the same compulsion by highlighting <em>just how much better</em> a set of things would look if someone were to just go to the effort of completing the collection. While Triple Town has recently included these mechanics, they&#8217;re by no means central to the game &#8211; the core is fun and everything else sort of piles goodness up on top of that already satisfying base.</p>
<h4> Where to from here?</h4>
<p>Here are a few directions I&#8217;d be interested in exploring further:</p>
<ul>
<li>A competitive multiplayer mode that borrows aspects of Othello to leapfrog off of your opponent&#8217;s established base.</li>
<li>A (slightly) deeper aspect of resource management that could be incorporated.</li>
<ul>
<li>Ever since my friends and I discovered the no-bases mode for Command &amp; Conquer multiplayer back in 1996, I was struck by the similarity it had to a game of chess , albeit a synchronous, real-time version.</li>
</ul>
<li>To introduce scenarios where the ratios of pieces to choose from varied and the state of existing pieces were slightly more unstable, so things could spontaneously deteriorate or erupt.</li>
</ul>
<div>There&#8217;s just so much to do with such a great base, I&#8217;m really looking forward to messing around with it more!</div>
<p><strong>What do you want to do with Triple Town? Does this copy bring up any ideas? Let me know!</strong></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2013/02/25/study-of-dan-cooks-triple-town/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Picto salad</title>
		<link>http://www.zachernuk.com/2013/01/31/picto-salad/</link>
		<comments>http://www.zachernuk.com/2013/01/31/picto-salad/#comments</comments>
		<pubDate>Thu, 31 Jan 2013 11:17:16 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[doodles]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[Incidental Learning]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1593</guid>
		<description><![CDATA[Usage: This is non-interactive except  for the &#8216;save&#8217; button. Click that to save the current snapshot as a JPG. You know, if you want to. &#160; 
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_GridPaper_909507039"
			class="flashmovie"
			width="800"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2013/01/GridPaper.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2013/01/GridPaper.swf"
			name="fm_GridPaper_909507039"
			width="800"
			height="600">
	<!--<![endif]-->
		 
	<!--[if !IE]>-->
	</object>
	<!--<![endif]-->
</object> &#160; Happy 2013!  We have been busy at Resn, as well as working on a couple of internal projects that we [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Usage:</strong> This is non-interactive except  for the &#8216;save&#8217; button. Click that to save the current snapshot as a JPG. You know, if you want to.</p>
<p>&nbsp;</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_GridPaper_1603195465"
			class="flashmovie"
			width="800"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2013/01/GridPaper.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2013/01/GridPaper.swf"
			name="fm_GridPaper_1603195465"
			width="800"
			height="600">
	<!--<![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>&nbsp;</p>
<p>Happy 2013!  We have been busy at Resn, as well as working on a couple of internal projects that we should be able to talk about soon. The work is amazing and I&#8217;m really looking forward to releasing it into the wild.</p>
<p>This is a random, automatic doodle that is based on the doodles I used to draw on graph paper back in school. I loved the geometric coherence that almost guaranteed you an interesting shape by just putting in random lines. I call it &#8216;picto salad&#8217; after the phrase &#8216;word salad&#8217;, the random stringing-together of words that don&#8217;t make any sense but we still try to decipher the meaning from.</p>
<p>In fact, the most interesting part of this is what happens when you stare at it for a while. Your brain tries to make sense of the chaos, and pick out icons and figures that look like things. Sometimes I see the iconography for Olympic events, sometimes I see heavily stylized Chinese characters. It&#8217;s a fascinating insight into the dizzying field of lines and circles that must come from not yet being able to read and the first struggling attempts to make sense of it all.</p>
<p><a href="http://www.zachernuk.com/wp-content/2013/01/pictosalad.jpg"><img class="alignnone size-full wp-image-1594" title="pictosalad" src="http://www.zachernuk.com/wp-content/2013/01/pictosalad.jpg" alt="" width="800" height="600" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2013/01/31/picto-salad/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The politics of chat and the dangers of the &#8216;Walled Garden&#8217;</title>
		<link>http://www.zachernuk.com/2012/12/30/the-politics-of-chat-and-the-dangers-of-the-walled-garden/</link>
		<comments>http://www.zachernuk.com/2012/12/30/the-politics-of-chat-and-the-dangers-of-the-walled-garden/#comments</comments>
		<pubDate>Sun, 30 Dec 2012 11:41:53 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[platform]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[communications]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[irc]]></category>
		<category><![CDATA[politics]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1589</guid>
		<description><![CDATA[We don’t talk the way we used to &#8211; not even online. The conversations we have through platforms like the Facebook wall are becoming less of an exchange and more the rehearsal of a person’s idealized self-image, chirping sweet, self-affirming nothings atop their personal soapbox. Internet-based communication systems have been available to the public for [...]]]></description>
			<content:encoded><![CDATA[<p>We don’t talk the way we used to &#8211; not even online. The conversations we have through platforms like the Facebook wall are becoming less of an exchange and more the rehearsal of a person’s idealized self-image, chirping sweet, self-affirming nothings atop their personal soapbox.</p>
<p>Internet-based communication systems have been available to the public for over 20 years now, and a comparison of this new walled garden approach of Facebook and Twitter with traditional real-time chat such as the old Internet Relay Chat reveals some of the potential social effects of the different platforms.</p>
<h2>Internet Relay Chat (IRC)</h2>
<p>IRC was the most popular form of the internet &#8216;chat rooms&#8217; of the 80s and 90s. A chat room or channel had a name, an owner and hierarchy of operators &#8211; people with power to set topics, moderate conversation and kick people out of that channel. A typical IRC user frequented three or four channels at a time, with a different power structure in each &#8211; the owner of channel #newzealand might be an operator in #nzchat and a standard user in #funfactory. Messages are sent to a channel or to an individual in &#8216;private chat.&#8217; Everything sent to a channel is seen by everyone in that channel.</p>
<h2>How Facebook Timeline does it</h2>
<p>By contrast, the visibility of posts on Facebook Timeline are much more obscure. We each see the activity of our friends, but it&#8217;s much harder to determine common ground. My wife and I share about one-third of our friends in common, so you&#8217;d expect us to see about one-third of the same posts, but it gets even more complicated. Some Facebook users share up to 100x the average amount of information, and Facebook itself uses a complicated formula called &#8216;EdgeRank&#8217; to figure out whose posts to show you and whose to hide. The result is not only a bubble of false consensus from the opinions of your friends, but an unpredictable one based on who you&#8217;ve recently interacted with and the current implementation of EdgeRank.</p>
<h3>But what does that <em>do</em>?</h3>
<p>IRC gives a clearer context to all of the conversations a user engages in. Users in a quiet channel are able to see that it&#8217;s quiet for everyone, and might complain about being bored to strike up a conversation. A busy channel is visibly busy &#8211; it&#8217;s possible to get a sense of how taxed another user&#8217;s attention is. Users augment their nicknames to reflect their status on a moment-to-moment basis: &lt;Brandy_away&gt;, &lt;Giuseppe`Dinner&gt; etc. On Facebook it&#8217;s impossible to anticipate the amount of information that another user has in front of her, so it&#8217;s impossible to know how engaged she can afford to be in conversation.</p>
<h2>On your permanent record</h2>
<p>Confusingly, although the Facebook lacks a single, authoritative record of a conversation, it does keep a permanent record of everyone&#8217;s actions. IRC had no such official record. Individual users could save chat logs for posterity, but these were subjective, covering only the duration of that user&#8217;s involvement in the channel. This gave everyone the benefit of a selective memory &#8211; something that we&#8217;ve lost in deference to The World According To Facebook.</p>
<p>The presence of a permanent, undisputed record is also wreaking havoc on what people say. The reality of these new networks is that a stranger, an employer or a government might have access to what you say even years after the fact.</p>
<h3>What does that do?</h3>
<p>With these features in mind, IRC is a platform where any enduring record is limited to direct participants in that conversation, the list of those participants is made explicit and there&#8217;s a visible hierarchy of moderators who can be reasoned with. Contrast that to Facebook &#8211; essentially a system where 1. you know that what you say is going to be recorded for all time and 2. you can&#8217;t be sure who is paying attention to it right now. I think it&#8217;s clear that the latter is going to encourage a more guarded, superficial form of dialog that is more a form of self-promotion than a conversation.</p>
<h2>Final thoughts</h2>
<p>Facebook does do something extremely well &#8211; it&#8217;s a great replacement for the vanity websites that allow users to curate their public persona. That&#8217;s a legitimate function and the site supports it brilliantly. But it doesn&#8217;t support contextual debate, and it doesn&#8217;t support free-flowing conversation. That wouldn&#8217;t be so bad except that modern social networks have displaced other platforms like IRC. It&#8217;s clear that technical choices that go into building a platform change the kind of conversation that takes place on it. I’ll admit that this fills me with a bit of nostalgia for IRC and other platforms whose times have passed, but it also makes me realize that despite the apparent stability of the walled garden, there&#8217;s still plenty of room for experimentation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2012/12/30/the-politics-of-chat-and-the-dangers-of-the-walled-garden/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Smiley generator</title>
		<link>http://www.zachernuk.com/2012/12/05/smiley-generator/</link>
		<comments>http://www.zachernuk.com/2012/12/05/smiley-generator/#comments</comments>
		<pubDate>Wed, 05 Dec 2012 11:42:57 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[doodles]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[vector]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1578</guid>
		<description><![CDATA[Usage: Click &#8216;random&#8217; to get a new face, and if you want to control the parameters yourself, you can open the panel and change the settings. Click the save button to get a screenshot. Update: If you like a face you  can copy a face preset to the clipboard and paste it as a comment! 
<p>After BERG produced <a href="http://berglondon.com/projects/schooloscope/" target="_blank">Schooloscope</a>, I was really intrigued by the idea of <a href="http://en.wikipedia.org/wiki/Chernoff_face" target="_blank">Chernoff faces</a> - the idea that because you can read a lot of subtlety in facial expressions, those expressions effectively encode a lot of data. I think that it would apply to other  images we have a lot of exposure to as well &#8211;  human outlines,  road signs, cars. One thing I like about this smiley-face  setting is that almost any output is cute. Another thing I noticed while making this was how much fun the animation between one state to another is. I&#8217;d like to explore that further by animating different speeds and visual / audio rhythms to encode things.</p>
<p>In the meantime, this is a smiley maker. I think it would be a lot of fun to set up a system where people can submit presets and name them, and view a gallery of all of the faces so far.  What do you think it should do? Let me know!</p>
<p>&nbsp;</p>
<p><img class="alignnone size-full wp-image-1582" title="smiley_2" src="http://www.zachernuk.com/wp-content/2012/12/smiley_2.jpg" alt="" width="309" height="339" /></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2012/12/05/smiley-generator/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Cityville 2 &#8211; what it is and why that&#8217;s important</title>
		<link>http://www.zachernuk.com/2012/11/15/cityville-2-what-it-is-and-why-thats-important/</link>
		<comments>http://www.zachernuk.com/2012/11/15/cityville-2-what-it-is-and-why-thats-important/#comments</comments>
		<pubDate>Thu, 15 Nov 2012 09:18:56 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[Games]]></category>
		<category><![CDATA[3d]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[channels]]></category>
		<category><![CDATA[chat]]></category>
		<category><![CDATA[cityville]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[farmville]]></category>
		<category><![CDATA[flare3d]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[friction]]></category>
		<category><![CDATA[game]]></category>
		<category><![CDATA[media platforms]]></category>
		<category><![CDATA[review]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[stage3d]]></category>
		<category><![CDATA[zynga]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1561</guid>
		<description><![CDATA[Things haven&#8217;t been going well for Zynga recently. They&#8217;ve been forced to cut jobs and close entire studios. Despite this, they&#8217;ve released two new games: Farmville 2 and Cityville 2. While they&#8217;re both sequels, they&#8217;re different enough to their original counterparts to be entirely new games in their own right. On Social Sequels Social games [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.zachernuk.com/wp-content/2012/11/uplload.jpg"><img class="alignnone size-full wp-image-1564" title="uplload" src="http://www.zachernuk.com/wp-content/2012/11/uplload.jpg" alt="" width="631" height="293" /></a>Things haven&#8217;t been going well for Zynga recently. They&#8217;ve been forced to cut jobs and close entire studios. Despite this, they&#8217;ve released two new games: Farmville 2 and Cityville 2. While they&#8217;re both sequels, they&#8217;re different enough to their original counterparts to be entirely new games in their own right.</p>
<h2>On Social Sequels</h2>
<p>Social games are a different beast to more traditionally developed games.  A game like <em>Grand Theft Auto </em>gets worked on for 3+ of years by a team of 100+ people.  The game gets 100% designed, then 100% developed, and then the game is &#8216;launched&#8217;. Small updates and bug-fixes might come after that launch, but people expect it to be the same game one year after launch, and what people do in the game doesn&#8217;t really change it for others. On the other hand, <em>Farmville 1 </em>was created by 5-6 people in 5-6 weeks. That&#8217;s 6 man-months of work to <em>Grand Theft Auto&#8217;s</em> 300+ man-years. That said, Zynga has also said that <em>Farmville 1</em> only launched with 5% of the finished product, so they made up a lot as they went along. In one way, this kind of development is liberating. Products can be shipped with a fraction of the content, and designers can test their ideas out without having to commit to everything up-front. However, it also means that initial decisions are made with a limited understanding of what the game is going to develop into over time. Expansions and features are built up in little steps, and after a while this makes additions harder to make. Each new development has to work together with the last, and no update is allowed to break another. I&#8217;ve heard from Zynga staff joke that a new player  jumping into <em>Farmville 1</em> basically needs a diploma in it to understand everything that&#8217;s going on! Because of that difficulty, sequels play an important role. They give designers the chance to look through everything that the original did &#8211; pick out what worked and throw out what didn&#8217;t, to rebuild engines from scratch and take advantage of the changes in technology since the last launch. Both <em>Farmville 2</em> and <em>Cityville 2</em>have done that admirably &#8211; I think Cityville especially, so I&#8217;m going focus on that.</p>
<h2>Summary of gameplay</h2>
<p>Cityville&#8217;s in 3D now, thanks to the hardware-accelerated Stage3D and the proprietary Flare3D engine. Like the first Cityville, it&#8217;s mostly about buildings &#8211; what they do, when you can get them and what they cost. There are the standard currency / level / population cap mechanics as well as the more interesting consumable resource side. I&#8217;m quite taken by the human resources, which I &#8216;ll go into later.</p>
<h3>Commodities</h3>
<p>Most buildings require components like bricks, foundations and glass. A specialist building like a burger joint may need other resources like &#8216;mystery meat.&#8217; These can all be collected from certain buildings, and most (if not all) can be crafted in various manufacturing buildings. The resource dependency tree is complex and a little unpredictable &#8211; there&#8217;s no map of how it all fits together but provides help along the way when you really need something.</p>
<h3>Human capital</h3>
<p>This is the first big difference for Cityville 2. There are three forms of human resource present in the game: Shoppers, builders and Citizens. You get shoppers by clicking on residential houses, who then stroll the sidewalks of the town until they go into stores like a coffee shop. You need Builders and citizens for putting up new buildings, and you get them by clicking on the cars and trucks on the roads. Most of the game is about the commerce, but it&#8217;s a nice link back to the the game setting  - saying that in the end cities are about people.</p>
<h3>Location matters</h3>
<p>It&#8217;s still pretty easy to see the spreadsheet of numbers that underpins most social games. It&#8217;s not a terrible thing &#8211;  game designers use these things to work out  how to balance the game, but it can be disappointing to know that it doesn&#8217;t matter what shape your city is.  The human resources in Cityville 2 actually move around the map, though. Shoppers are created from houses but then travel at a walking pace around the city, so there are strategic advantages to having a shopping mall next to a large population center. Even better, different regions can be zoned so that they&#8217;re better for industrial, commercial or residential purposes. That means there&#8217;s an advantage to keeping those districts close but still separate. Genius!</p>
<h3>It&#8217;s purty</h3>
<p>Zynga has managed to create a style that lets them use 3D graphics without having to build in too much detail. The color schemes and art direction make a clear aesthetic that makes everything readable without sacrificing style. Basically I guess I&#8217;m saying that it works.</p>
<h3>Quicktime events</h3>
<p>One problems I&#8217;ve had with social games is that skill doesn&#8217;t matter much &#8211; there&#8217;s no way for a skilled player to win more and race ahead of an unskilled one. This is because developers want to make these games work for as large an audience as possible, so it&#8217;s hard to justify using mechanics that demand skills that would some players just don&#8217;t have. Cityville 2 gets around this and layers an optional timing-based minigame on top of each action on the game: When collecting stuff &#8211;  laying out a building or picking up completed goods &#8211; a small timer is shown, and a player has to click at the right time to get a bonus. Bonuses get bigger over time, and the required timing gets more exact. The game can be played without these bonuses, and it&#8217;s not totally clear how much you get from them, but it definitely makes the game more exciting. My one complaint is that you could use different minigame for different activities &#8211; hammering a nail, tapping on a cash register or pouring concrete &#8211; but this is pretty minor and I&#8217;m sure that this will get picked up somewhere down the line.</p>
<h3>High-but-finite friction</h3>
<p>In the end, social games are designed to get players to pay money for them. A lot of social games made the purchase of in-game items a flat-out requirement (Simcity Social, I&#8217;m looking at you), but it seems like all of the items that you need in Cityville 2 can be collected for free &#8211; eventually. Every action has a small, random chance of giving the player &#8216;keys&#8217;, the for-pay currency. This means that players hell-bent on playing without paying can do that, but it would also be obvious to them that progress is much faster with a little cash input.</p>
<h2>Undecided points</h2>
<p>While it&#8217;s good to set a game inside a story to help progression, the plot of Cityville 2 has a lot of details that we don&#8217;t really need. There&#8217;s a criminal investigation going on that puts too much emphasis on too few characters. Zynga has dropped storylines like this into a couple of their games over the last few years, and this one works better than others like the &#8216;world at war&#8217; story in Empires &amp; Allies. It&#8217;s better to pick a story that can be told in the stop-and-start way a mission structure depends on. It&#8217;s still very specific to a couple of characters, though, and the game doesn&#8217;t sell us on why <em>the player</em>has to be in charge of the investigation.</p>
<h3>The power of positive thinking</h3>
<p>Cityville 2 uses incredibly encouraging language. Icons fly out of buildings in an arc, and if you can catch them before they hit the ground, you get to see encouraging phrases like &#8220;Got it!&#8221;, &#8220;What a catch!&#8221; or the more confusing &#8220;OMGEEZERS!&#8221; Each catch adds to your overall &#8216;approval&#8217; level, and when that his the maximum you get to see the phrase &#8220;WE LOVE YOU!!!!&#8221; writ large across the screen while a party goes underneath. It&#8217;s an understandable thing to incorporate into a game, I can see why they&#8217;d do it, but it&#8217;s hard to say whether it makes the game more fun.</p>
<h3>Theme and points of emphasis</h3>
<p>As with the original Cityville, the game mechanics are based on modern western cities with service-based economies. This framing paints an oddly incomplete picture of the inter-dependent parts of a functioning city, but reflects the state of modern western economies well. It&#8217;s quite fitting for us to be left with that question whether it&#8217;s intentional or not!</p>
<h3>Chat</h3>
<p>This is an interesting feature, and an intriguing power grab on Zynga&#8217;s part. Over the years, Facebook has limited the number of communication channels that an app can broadcast from. In response, Zynga has started making channels of their own: in Cityville, Each city acts as a chat room. All of my friends can visit my city and then use the chat room there, so even if my friend Aaron isn&#8217;t friends with my friend Bruce, they can still talk in my city. That wouldn&#8217;t be such a big deal except for the fact that <em>everyone</em>in Cityville is friends with a default neighbour, Governor Maxley. That basically makes Maxley&#8217;s city a public chat room, letting strangers connect with each other to get more out of the game.</p>
<h2>Dislikes</h2>
<p>Overall, the game is another big step in the right direction and I&#8217;m pleased about that. There are a few large and glaring things that get in the way of my enjoyment, though.</p>
<h3>It barely runs on my machine!</h3>
<p>I have very little idea about hardware benchmarks these days, so maybe I&#8217;m alone in this issue. I&#8217;m also a huge fan of Flash, of 3D games and of pushing graphical boundaries so it&#8217;s hard for me to complain about this. I&#8217;m going to though. Games that can benefit from a high-performance machine are great, and I&#8217;ve had a lot of fun when I buy a new computer that lets me crank up the settings on my old games. Citiville 2 doesn&#8217;t present any levels or options, though, and the inconsistency of the frame rate means that the quick-time events can sometimes be impossible. A system that either allowed different levels of complexity or automatically adjusted when things get a little ropey would totally solve this.</p>
<h3>Jangling Jingles</h3>
<p>It&#8217;s probably still in beta, but the music is something that I&#8217;d really like to see updated soon. It uses the kind of up-beat, chirpy music you&#8217;d expect to hear in the opening of movie about a small-but-bustling midwestern town where you just <em>know</em> something kooky is going to happen. The problem is that this scene is <em>constantly being set,</em> and the only let-up is during a levelling up when <em>Ode To Joy</em>is played instead. Games like Transport Tycoon Deluxe did a great job of varying the music through the game by giving you a playlist of possible tracks. Granted, music was probably cheaper to produce in the era of low-fi MIDI audio, but a game that expects millions of daily players can probably afford to fill the soundtrack out a little more.</p>
<h3>I don&#8217;t like the humor</h3>
<p>Every click and action has a (silly) accompanying description of that action: clicking on a house to send out a shopper will tell you that they are &#8220;Opening junk mail&#8221;, or &#8220;Burning roasts.&#8221; The opening site loader is has phrases like &#8220;Missing the point&#8221; and &#8220;Pivoting unexpectedly.&#8221; At best it is bewilderingly irrelevant. I get that writing is hard, and most of the designers, artists and programmers who work on a game aren&#8217;t very good at it. Unfortunately it often falls on these people to come up with barely-relevant content to fill the gaps for the design. At worst, though , it&#8217;s downright offensive. Here are some of my least favourite bits: Dumpsters: where bodies are found (according to TV detective shows) Glass: Clear material made out of sand. Glass ceilings are used to separate the sexes in business environments.</p>
<h3>It&#8217;s really sexist</h3>
<p>Continuing on from the sexist undertone in the humor, the pictures that describe the core mechanics are kind of sexist too. All the icons for builders, store owners and industrial buildings are men. The icons for shopper and citizen are both women. In the narrative flow so far I&#8217;ve met a male governor and two male police officers. The female characters are an out-of touch hippie and a scientist. The scientist character wouldn&#8217;t be such a problem but she&#8217;s depicted as insane and destitute, and asks me to put up extra housing for her after she destroys her home, and raise additional taxes to fund her crazy experiments. On the bright side, it appears that she controls the weather, so there&#8217;s that.</p>
<h2>Conclusion</h2>
<p>All in all it&#8217;s an impressive extension of the original Cityville. Unlike the original Farmville or Mafia Wars, it has been launched as  a fully-fledged game with fun mechanics on day one. It&#8217;s clear that Zyinga is learning from their experiences and making an effort to put out better games. It&#8217;s also clear that they&#8217;re not the evil geniuses that many people have made them out to be. If they knew how to make the perfect revenue-generating machine, they would have built it already. Let&#8217;s hope that never happens. In the meantime, though, the games are getting better, and we can all be happy about that!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2012/11/15/cityville-2-what-it-is-and-why-thats-important/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Fun with (Schelling) Segregation &#8211; with source!</title>
		<link>http://www.zachernuk.com/2012/10/03/fun-with-schelling-segregation-with-source/</link>
		<comments>http://www.zachernuk.com/2012/10/03/fun-with-schelling-segregation-with-source/#comments</comments>
		<pubDate>Wed, 03 Oct 2012 09:50:46 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[analytics]]></category>
		<category><![CDATA[doodles]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[mathematical]]></category>
		<category><![CDATA[model]]></category>
		<category><![CDATA[schelling]]></category>
		<category><![CDATA[segregation]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1541</guid>
		<description><![CDATA[[UPDATE May 2013] Welcome, readers from d3.ru! It has been very interesting reading your discussion (admittedly, through Google translate) on the potential applications of the Schelling model. I was also interested in what you had to say about a combination of Schelling segregation and Conway&#8217;s Game of Life &#8211; I have an expanded version of [...]]]></description>
			<content:encoded><![CDATA[<p><strong>[UPDATE May 2013]</strong> Welcome, readers from <a href="http://d3.ru">d3.ru</a>! It has been very interesting reading your discussion (admittedly, through Google translate) on the potential applications of the Schelling model. I was also interested in what you had to say about a combination of Schelling segregation and Conway&#8217;s <em>Game of Life</em> &#8211; I have an <a href="http://www.zachernuk.com/2012/03/09/life-is-beautiful/">expanded version of that</a>  that may be of interest to you as well. I made these simulations because of a free online course called <a href="https://class.coursera.org/modelthinking/class/index">&#8216;model thinking&#8217;</a>, which is available at <a href="http://www.coursera.org">coursera.org</a>. Thanks for the interest!]</p>
<p>This is a Schelling sim. hit &#8216;run&#8217; to start it, play with the sliders to get interesting stuff coming out. Read on for an explanation of what&#8217;s happening.</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_SchellingSegregation_696810430"
			class="flashmovie"
			width="800"
			height="600">
	<param name="movie" value="http://zachernuk.com/wp-content/2012/10/SchellingSegregation.swf" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://zachernuk.com/wp-content/2012/10/SchellingSegregation.swf"
			name="fm_SchellingSegregation_696810430"
			width="800"
			height="600">
	<!--<![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>I&#8217;m still having a lot of fun taking online courses at Coursera. I&#8217;m taking &#8216;Networked life&#8217;, which goes over the general ideas of networks in various forms. One of the ideas they mention, and something that was also in &#8220;Model Thinking&#8221;, is &#8220;Schelling segregation.&#8221;</p>
<p>I can&#8217;t find a simple text explanation of it online, so here goes: imagine a world divided into a grid. Each grid cell can have either a red person, a yellow person or be empty.</p>
<p><a href="http://www.zachernuk.com/wp-content/2012/09/schellingimg.jpg"><img class="alignnone size-full wp-image-1542" title="schellingimg" src="http://www.zachernuk.com/wp-content/2012/09/schellingimg.jpg" alt="" width="287" height="287" /></a></p>
<p>A person could have  up to eight neighbours, and  each neighbour can be the same colour, or a different one:</p>
<p><a href="http://www.zachernuk.com/wp-content/2012/09/schellingimg2.jpg"><img class="alignnone size-full wp-image-1543" title="schellingimg2" src="http://www.zachernuk.com/wp-content/2012/09/schellingimg2.jpg" alt="" width="287" height="287" /></a></p>
<p>If we say that people want to have more than 35% of their neighbours the same, then this would only affect the bottom-left yellow one. They&#8217;d pick a new space at random in the next round until everyone has found a spot where they&#8217;re happy.</p>
<p>The interesting thing that you see in this system is that the level of segregation that you get is always much higher than how picky the individual people are. If you have a system with people wanting 20% of their neighbours to be like them, the average person ends up with 40% like them, 40% gives you 80% segregation and upward until nobody ever ends up happy.</p>
<p>It&#8217;s an interesting way of looking at a pretty touchy issue, so when I heard about it I decided to code it up to see what it does. You can play with the result above. I&#8217;ve added some extra controls to it on top of how picky the people are: How dense the grid is, how many types of people there are, as well as the the number of neighbours a cell has. The standard model says that each person is connected to the eight people around them:</p>
<p><a href="http://www.zachernuk.com/wp-content/2012/09/schellingimg4.jpg"><img class="alignnone size-full wp-image-1544" title="schellingimg4" src="http://www.zachernuk.com/wp-content/2012/09/schellingimg4.jpg" alt="" width="287" height="287" /></a></p>
<p>You could imagine expanding it so that a person checks neighbours two squares away:</p>
<p><a href="http://www.zachernuk.com/wp-content/2012/09/schellingimg5.jpg"><img class="alignnone size-full wp-image-1545" title="schellingimg5" src="http://www.zachernuk.com/wp-content/2012/09/schellingimg5.jpg" alt="" width="287" height="287" /></a></p>
<p>That would make the check for happiness a lot more complicated &#8211; but I have expanded it so that a person might also be connected to people up to five squares away &#8211; so each person would be looking at over fifty others. There are some really interesting results when you do that.</p>
<p>First, people have to be more picky to make anything happen. It makes sense &#8211; the more neighbours, the more usual your neighbours will be. It&#8217;s interesting because this creates a kind of two-layered effect when the world evens out into more segregated areas &#8211; there are red-and-yellow, red-and-empty, and yellow-and-empty mixtures.</p>
<p>Another thing is that if everyone starts off too picky, nobody ends up happy and the world just kind of churns. What is interesting, though, is that if the population starts out as not picky, but gets pickier over time, then it can settle into a stable state. It seems like the shape of that stable state has something to do with the speed that the pickiness changes around.</p>
<p>The time it takes to stabilize has a lot to do with the population density. The fewer empty cells available, the harder it is for anything to settle down.</p>
<p>More different colours means more boundaries, and therefore more difficulty settling into a stable state.</p>
<p>These are awesome things to be able to observe, but I&#8217;d like to look into it more. At the moment everyone is the same level of picky. First, it would be interesting to see what happens when you either get a pickiness &#8216;map&#8217;, make the pickiness a result of the level of segregation in the last round. Second, it&#8217;s unrealistic to think of everyone as having the same level of choice in where they live. Altering the population over time would be cool too &#8211; either by adding people at random, or having very happy people &#8216;reproduce&#8217;. A degree of churn could be interesting to observe the effects of too.  If you decide to take this and run with it, let me know how it goes, it&#8217;s a fascinating model that has a lot of room for exploration!  <a href="http://www.zachernuk.com/wp-content/2012/10/Main.as">Get the source for the Schelling segregation model here.</a></p>
<p><img class="alignnone" src="http://25.media.tumblr.com/tumblr_mb8nuuEZ351rrouleo1_1280.png" alt="" width="502" height="508" /><img class="alignnone" src="http://zachernuk.com/wp-content/2012/10/schellingtn.gif" alt="" width="64" height="64" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2012/10/03/fun-with-schelling-segregation-with-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Autobaroque</title>
		<link>http://www.zachernuk.com/2012/09/16/autobaroque/</link>
		<comments>http://www.zachernuk.com/2012/09/16/autobaroque/#comments</comments>
		<pubDate>Sun, 16 Sep 2012 13:12:27 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[application]]></category>
		<category><![CDATA[doodles]]></category>
		<category><![CDATA[flash]]></category>
		<category><![CDATA[prototyping]]></category>
		<category><![CDATA[shape]]></category>
		<category><![CDATA[vector]]></category>
		<category><![CDATA[animation]]></category>
		<category><![CDATA[arts]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[baroque]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[generative]]></category>
		<category><![CDATA[generator]]></category>
		<category><![CDATA[gif]]></category>
		<category><![CDATA[image]]></category>
		<category><![CDATA[loop]]></category>
		<category><![CDATA[ornamentation]]></category>
		<category><![CDATA[visual]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1527</guid>
		<description><![CDATA[This is a kind of generator for animations that stem from some of my thinking on ornamentation. Play with the options to get different outcomes, and click &#8216;render to GIF&#8217; to render to GIF. Warning: GIF rendering can take some time, so start with shorter ones. Feel free to put anything you like up on [...]]]></description>
			<content:encoded><![CDATA[<p>This is a kind of generator for animations that stem from some of my thinking on ornamentation. Play with the options to get different outcomes, and click &#8216;render to GIF&#8217; to render to GIF. Warning: GIF rendering can take some time, so start with shorter ones. Feel free to put anything you like up on Tumblr!</p>

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
			id="fm_SpikeyTendrils_120710882"
			class="flashmovie"
			width="800"
			height="600">
	<param name="movie" value="http://www.zachernuk.com/wp-content/2012/09/SpikeyTendrils.swf" />
	<param name="allowfullscreen" value="true" />
	<!--[if !IE]>-->
	<object	type="application/x-shockwave-flash"
			data="http://www.zachernuk.com/wp-content/2012/09/SpikeyTendrils.swf"
			name="fm_SpikeyTendrils_120710882"
			width="800"
			height="600">
		<param name="allowfullscreen" value="true" />
	<!--<![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>It has been a while! Resn continues to be amazing. I have just finished up a project for the Toyota Camry effect, where we built a fancy HTML5 website out of jQuery, requirejs and Isotope. As a Flash developer it is gratifying to be able to push HTML to do new things and get a chance to appreciate what JavaScript does well, what it does badly and what it doesn&#8217;t do at all. I think it&#8217;s fair to say that there is still room for both JavaScript and Flash!</p>
<p>I code pictures</p>
<p>One of the tensions that comes from being involved in development but also having an interest in aesthetics is that there&#8217;s a tendency to bounce back and forth between the two. The last couple months have gotten me thinking a little more about what the point of skill in programming is &#8211; <a href="http://booktwo.org/notebook/every-book-i-made/">James Bridle has a good talk</a> about how he studied Computer Science to be able to think more effectively about books. So what did I study for? One of the major reasons was pictures.</p>
<p>I find it very satisfying to produce an image that I like. To get from the initial concept to being able to creating a final image, though, can be a long and arduous process &#8211; particularly if that image is a slight tweak of an earlier experiment. There&#8217;s definitely something to be learned from doing something the hard way once or twice, but once you&#8217;ve learned those things it should get easier! It scares me somewhat to think that Escher&#8217;s geometric studies were as time-consuming and difficult to draw the hundredth time as they were the first.</p>
<p>A lot of developments do follow this pattern of escalating efficiency &#8211; anything we can automate becomes increasingly fast to do once we have invested in the process. It has become so ingrained in modern society that we have begun rejecting things that can&#8217;t benefit from the efficiencies of that process. That sense of impatience has swallowed up entire fields of artisanship, from typesetting to weaving to carpentry.</p>
<p>That&#8217;s why I was so thrilled to see Wim Delvoye&#8217;s <a href="http://www.wimdelvoye.be/chantier.php#">concrete mixers</a>. He&#8217;s put that painstaking detail back into an every-day object, in a manner that could have been commonplace in a time before automation.  I feel like it highlights the absence of that degree of attention to many of our most treasured objects. Many of the objects that we&#8217;re told to love are built not too look the way we want them to be built, but in a way that makes it easier to build them. But how can we make things that we like with the efficiencies that we have come to expect?</p>
<p>I think we can develop tools that have an understanding of the medium, so that we can focus our human expertise on higher levels of abstraction.  We have tools that have a near-perfect understanding of the technical requirements for, say, printing or injection molding. The next step is to develop systems with an appreciation of symmetry, color and balance. Instagram might already be one of these new programs, although the range of options available is probably too coarse to qualify.</p>
<p>Autobaroque is the result of reflecting on what kind of aesthetic questions these new programs might serve to answer. It&#8217;s an attempt at an algorithmic response to the spectacular work on ornamentation by figures<a href="http://books.google.co.nz/books/about/Suggestions_in_design.html?id=nIkZAAAAYAAJ&amp;redir_esc=y"> like John Leighton in the 1860s</a>. Flip through some pages of his book and you&#8217;ll see that there is a world of visual complexity that we have all but abandoned. If autobaroque can help reclaim even a little of that knowledge it will be a great success!</p>
<p>On a related note, I&#8217;ve fallen prey to the seductive immediacy of Tumblr where<a href="http://zachernuk.tumblr.com/tagged/autobaroque" target="_blank"> I&#8217;ve already posted several animations that come out of this system</a>. Just as in the class of tools I&#8217;m talking about here, the immediacy of people&#8217;s responses to one image or another helps me to understand what people like remarkably quickly.</p>
<p><a href="http://www.zachernuk.com/wp-content/2012/09/lannimation.gif"><img class="alignnone size-full wp-image-1534" title="lannimation" src="http://www.zachernuk.com/wp-content/2012/09/lannimation.gif" alt="" width="83" height="82" /></a></p>
<p><a href="http://zachernuk.tumblr.com/"><img class="alignnone" src="http://24.media.tumblr.com/tumblr_mafwsey8cG1rrouleo1_1280.jpg" alt="" width="640" height="360" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2012/09/16/autobaroque/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A practical explanation of colour</title>
		<link>http://www.zachernuk.com/2012/07/22/a-practical-explanation-of-colour/</link>
		<comments>http://www.zachernuk.com/2012/07/22/a-practical-explanation-of-colour/#comments</comments>
		<pubDate>Sat, 21 Jul 2012 15:45:07 +0000</pubDate>
		<dc:creator>Brandel Zachernuk</dc:creator>
				<category><![CDATA[canvas]]></category>
		<category><![CDATA[doodles]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[0xff]]></category>
		<category><![CDATA[255]]></category>
		<category><![CDATA[actionscript]]></category>
		<category><![CDATA[as3]]></category>
		<category><![CDATA[ceil]]></category>
		<category><![CDATA[color]]></category>
		<category><![CDATA[colour]]></category>
		<category><![CDATA[cos]]></category>
		<category><![CDATA[floor]]></category>
		<category><![CDATA[hex]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[js]]></category>
		<category><![CDATA[phase]]></category>
		<category><![CDATA[random]]></category>
		<category><![CDATA[rounding]]></category>
		<category><![CDATA[sin]]></category>
		<category><![CDATA[sine]]></category>
		<category><![CDATA[sineawave]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://www.zachernuk.com/?p=1448</guid>
		<description><![CDATA[In my last post I talked about how certain building blocks of knowledge can make a lot of different tasks easier. I thought I’d go into a couple of building blocks that have helped me to do interesting things with colours. Colours: What are they? The first thing to understand is what colours – primary [...]]]></description>
			<content:encoded><![CDATA[<p><script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script></p>
<p><script src="http://www.zachernuk.com/wp-content/2012/07/oscillator.js" ></script></p>
<p>In my last post I talked about how certain building blocks of knowledge can make a lot of different tasks easier. I thought I’d go into a couple of building blocks that have helped me to do interesting things with colours.</p>
<h4>Colours: What are they?</h4>
<p>The first thing to understand is what colours – primary and secondary – actually are. When colours are made of light on a screen, the primary colours are red, <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#ff0000;"> </span> green <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#00ff00;"> </span> and blue <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#0000ff;"> </span> (RGB). We’re told from childhood that they’re red, yellow and blue, but they’re not. People who have used computers a lot are used to this, but it’s surprising how many people aren’t.</p>
<p>The secondary colours are Cyan, Magenta and Yellow.</p>
<p>Green + Blue = Cyan<br />
<span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#00ff00;"> </span> + <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#0000ff;"> </span> = <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#00ffff;"> </span></p>
<p>Red + Blue = Magenta<br />
<span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#ff0000;"> </span> + <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#0000ff;"> </span> = <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#ff00ff;"> </span></p>
<p>and Red + Green = Yellow (somewhat bizarrely)<br />
<span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#ff0000;"> </span> + <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#00ff00;"> </span> = <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#ffff00;"> </span></p>
<p>full Red +  full Green + full Blue = White<br />
<span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#ff0000;"> </span> + <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#00ff00;"> </span> + <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#0000ff;"> </span> = <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#ffffff;"> </span></p>
<p><i>The sooner you accept these things, the happier you will be.</i></p>
<h4>Understanding colours as numbers</h4>
<p>Because colours on a computer are represented by numbers, it helps to keep in mind what those numbers are. The range for colour values is either between between 0 and 255 or 0.0 and 1.0. The 0.0-1.0 range can be thought of as a percentage: 0.8, 0.2, 0.9 would be 80% red, 20% green and 90% blue – a bright purple which is slightly more blue than it is red <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:rgb(204,52,225);"> </span>.  Numbers in the range 0-255 are the same, so 0 is none of the colour, 128 is half, and 255 is full.</p>
<p>If bright yellow is all red + all green, that would mean it’s (255, 255, 0) <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#ffff00;"> </span>. A dark blue would be no red and no green, with just a little blue – maybe something like (0, 0, 64). <span style="display:inline-block; border-radius:18px; border:thin solid rgba(0,0,0,0.2); width:15px;height:15px; background:#000040;"> </span></p>
<p>So why does this matter?<br />
If you want to be able to write code that generates colours, you need to know what the components of that colour are and what kind of number represents them. Next, we&#8217;ll look at how to use math to generate these numbers.</p>
<h4>Some basic functions</h4>
<p>The three math functions that I use the most are </p>
<ol>
<li>the random number generator</li>
<li>rounding, and</li>
<li>trigonometry functions. </li>
</ol>
<h4>The random number generator and rounding</h4>
<p>The first is simple – it takes no input, and produces a different random number between 0 and 1 every time you use it &#8211; 0.2114, 0.7435 etc. If you wanted a random number anywhere between 1 and 10, you could just multiply by 10. If you wanted to simulate flipping a coin &#8211; heads <em>or</em> tails with nothing in between &#8211; you&#8217;d need to round this result to the nearest whole number, and say that 0 is tails and 1 is heads. In JavaScript, that would look like:</p>
<p><code>var coinFlip = Math.round(Math.random()); //this will give 0 or 1</code></p>
<p>Alternatively, you could simulate dice by multiplying by six and cutting off the decimal with Math.floor():<br />
<code>var diceThrow = Math.floor(Math.random()*6); //this will give a result of 0-5</code></p>
<p>floor() is like round() but always rounds down. There&#8217;s also ceil(), short for ceiling, which will always round up. We could use that to give a result of 1-6 instead:<br />
<code>var diceThrow = Math.ceil(Math.random()*6); //this will give a result of 1-6</code><br />
It&#8217;s useful to be able to do both, since so many things in programming are zero-indexed.<br />
If you wanted a totally random colour, you could &#8216;floor&#8217; three random numbers between 0 and 255:</p>
<p><code>var randomRed = Math.floor(Math.random()*256); //this will give a result of 0-255</code><br />
<code>var randomGreen = Math.floor(Math.random()*256); //this will give a result of 0-255</code><br />
<code>var randomBlue = Math.floor(Math.random()*256); //this will give a result of 0-255</code></p>
<h4>Sine and Cosine</h4>
<p>The Sine and Cosine function are actually used to describe the components of an angle, but when you’re making colours the most useful aspect of them is that they take an input that increases at a constant rate (like the current time) and turn it into something that bounces back between -1 and 1. That means a function like this:<br />
<img src="http://www.zachernuk.com/wp-content/2012/07/linear.png" alt="" title="linear" width="240" height="77" class="alignnone size-full wp-image-1493" /><br />
Turns into this:<br />
<img src="http://www.zachernuk.com/wp-content/2012/07/sin1.png" alt="" title="sin1" width="244" height="68" class="alignnone size-full wp-image-1494" /><br />
This is great, but we need to change it a little to make a colour. If we wanted to make a colour with it, we’d need to do a couple of things. First, the function goes between -1 and +1. A colour needs to be between 0 and 255. First, we could add 1 to make the function go between 0 and 2:<br />
<img src="http://www.zachernuk.com/wp-content/2012/07/sin2.png" alt="" title="sin2" width="248" height="92" class="alignnone size-full wp-image-1495" /></p>
<p>Next, we need to shift it into the range of 0-255. You can think of that as first getting it into the range of 0-1 by dividing it by 2,<br />
<img src="http://www.zachernuk.com/wp-content/2012/07/SIN3.png" alt="" title="SIN3" width="248" height="92" class="alignnone size-full wp-image-1496" /><br />
and then multiplying by 255 again to get it to cover the full range. The code for that would be:<br />
<code>var output = (1+Math.sin(input))/2*255; </code></p>
<p>Great! Now if you wanted to make a pulsing red colour, you could use time as the input and set the ‘r’ part of the output to be the output:</p>
<p><code>var redOutput = (1+Math.sin(input))/2*255; </code></p>
<p>To make a shade of grey, just make the red, green and blue values all the same:</p>
<p><code>var redOutput = (1+Math.sin(input))/2*255; </code><br />
<code>var greenOutput = (1+Math.sin(input))/2*255; </code><br />
<code>var blueOutput = (1+Math.sin(input))/2*255; </code></p>
<p>That would look like this: <span class="animColor" rvalue="1t0" gvalue="1t0" bvalue="1t0" style="display:inline-block; width:20px;height:20px; border-radius:10px; border:thin solid rgba(0,0,0,0.2);" > </span></p>
<p>Sine has a couple of interesting features, though: the wavelength, and the offset or phase. Wavelength is the time it takes for the pattern to repeat itself, so if we’re making a colour out of it, it could be the time it takes for that colour to return to white after going dark. You’d change the wavelength by <em>multiplying</em> the input value:</p>
<p><code>var slowOutput = (1+Math.sin(input))/2*255; </code><br />
<code>var fastOutput = (1+Math.sin(input * 10 ))/2*255; //changes ten times as fast as slowOutput</code></p>
<p>You could make a colour where the red changes slowly, the green changes faster and the blue changes even faster:<br />
<code>var redOutput = (1+Math.sin(input))/2*255; </code><br />
<code>var greenOutput = (1+Math.sin(input*2))/2*255; </code><br />
<code>var blueOutput = (1+Math.sin(input*3))/2*255; </code></p>
<p>That looks like this  <span class="animColor" rvalue="1t0" gvalue="2t0" bvalue="3t0" style="display:inline-block; width:20px;height:20px; border-radius:10px; border:thin solid rgba(0,0,0,0.2);" > </span> </p>
<p>The offset, or <em>phase</em> is how far ahead or behind that pattern is from the standard sine wave. You can think of it like a clock running early or late – it goes at the same speed as a clock telling the right time, and always stays different by the same amount. You get this effect/number(?) by adding some consistent amount to input. If you wanted the red, green and blue parts of a colour to change at the same speed but always stay different values, you might do this:</p>
<p><code>var redOutput = (1+Math.sin(input))/2*255; </code><br />
<code>var greenOutput = (1+Math.sin(input+1))/2*255; </code><br />
<code>var blueOutput = (1+Math.sin(input + 2))/2*255; </code></p>
<p>and that looks like this <span class="animColor" rvalue="1t0" gvalue="1t2" bvalue="1t3" style="display:inline-block; width:20px;height:20px; border-radius:10px; border:thin solid rgba(0,0,0,0.2);" > </span> </p>
<p>So now you can make colours! In a future post I’ll go into how to think of adjusting the range and probability distribution of random numbers, tweaking the shape of a sine wave with exponents, and some advice on understanding hexadecimal.<br />
<img src="http://www.zachernuk.com/wp-content/2012/07/colourtn.jpg" alt="" title="colourtn" width="64" height="64" class="alignnone size-full wp-image-1519" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.zachernuk.com/2012/07/22/a-practical-explanation-of-colour/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
