<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>Chris Charabaruk: Code for Life</title>
	
	<link>http://chris.charabaruk.com</link>
	<description>Delicious software, I must write it.</description>
	<lastBuildDate>Mon, 13 May 2013 21:23:15 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/ChrisCharabaruk" /><feedburner:info uri="chrischarabaruk" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>ChrisCharabaruk</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
		<title>TOJam 2013 and Happy Island</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/-QNmQFIqAts/</link>
		<comments>http://chris.charabaruk.com/2013/05/tojam-2013-and-happy-island/#comments</comments>
		<pubDate>Mon, 13 May 2013 21:18:20 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Events]]></category>
		<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[game design]]></category>
		<category><![CDATA[Happy Island]]></category>
		<category><![CDATA[postmortem]]></category>
		<category><![CDATA[TOJam]]></category>
		<category><![CDATA[XNA]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=253</guid>
		<description><![CDATA[It&#8217;s been a bit over a week since TOJam happened, and therefore I&#8217;m overdue on blogging about my experience there this year. My friend Karl and I participated as &#8220;Team Water-Rock&#8221;, putting together a game that was originally supposed to be about getting people to work together but ended up simply being an escort mission. [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.tojam.ca"><img class="alignright  wp-image-255" title="TOJam 2013: Haters Gonna Eight" alt="TOJam 2013: Haters Gonna Eight" src="http://chris.charabaruk.com/wp-content/uploads/2013/05/required_tojam8certified-300x165.png" width="240" height="132" /></a>It&#8217;s been a bit over a week since <a href="http://www.tojam.ca">TOJam</a> happened, and therefore I&#8217;m overdue on blogging about my experience there this year. My friend <a title="Karl Knechtel" href="http://twitter.com/dj_zmx">Karl</a> and I participated as &#8220;Team Water-Rock&#8221;, putting together a game that was originally supposed to be about getting people to work together but ended up simply being an escort mission. The end result? Still something fun, but with a feeling that we could have done better. And I&#8217;ll explain why, <em><a class="zem_slink" title="Game Developer (magazine)" href="http://www.gdmag.com/" target="_blank" rel="homepage">Game Developer</a></em> postmortem style.<span id="more-253"></span></p>
<h4>What went right</h4>
<h5>Strong tools and tool support</h5>
<p>We had a pretty convoluted way of getting map data from our editor (<a href="http://www.mapeditor.org/">Tiled</a>) to the <a class="zem_slink" title="Game engine" href="http://en.wikipedia.org/wiki/Game_engine" target="_blank" rel="wikipedia">game engine</a>, but if it wasn&#8217;t for Karl&#8217;s strong <a class="zem_slink" title="Python (programming language)" href="http://www.python.org/" target="_blank" rel="homepage">Python</a> and tool-development skills, we might have been left out in the cold. Karl wrote up a script that would let us convert Tiled maps into the particular flavour of XML that the <a class="zem_slink" title="Microsoft XNA" href="http://msdn.microsoft.com/en-us/centrum-xna.aspx" target="_blank" rel="homepage">XNA</a> content pipeline prefers, since we weren&#8217;t using <a href="https://bitbucket.org/vinull/xtiled">XTiled</a> (due to the fact that at least at the time, it didn&#8217;t support the staggered isometric maps we were using). Tiled&#8217;s ability to set custom properties on practically everything was very useful for working with the game entity system we developed, too, and whenever I needed something from the map in the engine, Karl was able to update his script very quickly. We had great turnaround time on map editing to in-engine play.</p>
<h5>Great environment for ideas or mental refreshment</h5>
<p>With over 450 game developers present, getting ideas for when we were faced with problems, or just getting away to chat with other developers was wonderful. One of the worst things about working in a distributed environment is the lack of social activity that can help deal with issues such as when you&#8217;ve hit a brick wall in your development (or just have coder&#8217;s block and can&#8217;t think straight).</p>
<h4>What went wrong</h4>
<h5>Starting from clumsy code</h5>
<p>Unlike a lot of other programmers, I&#8217;m not afraid of building off of others people&#8217;s code. In fact, I prefer it when there are existing frameworks, libraries, etc. that I can use in order to focus on developing my actual project. Unfortunately, that caused quite a bit of problems for Karl and I this time around. What&#8217;s worse is knowing after the fact that adding what I needed to XTiled would have had us further ahead than the &#8220;complete&#8221; isometric engine we started from.</p>
<p>On top of that, the distraction of getting the isometric tile engine working the way we wanted meant I didn&#8217;t think about using some nice and pre-built XNA systems but instead wrote my own off the top of my head (one of which I&#8217;ve already pulled out and replaced with something better).</p>
<h5>Planning for more than we could chew</h5>
<p>Three days isn&#8217;t a lot of time, especially if you intend on taking time to sleep and eat. The original concept for what became Happy Island was developed over a couple of weeks before TOJam, which gave me the luxury of time to think up and toss in whatever I thought would be good. At the event, however, we had to pare down things and make the game really simple &#8212; and even if we hadn&#8217;t had the other problems, it still would have been necessary to cut things down to size.</p>
<h5>Lack of &#8220;floaters&#8221;</h5>
<p>TOJam offers developers without them the ability to borrow artists and musicians as &#8220;floaters&#8221; &#8212; in other words, people who come pretty much to provide content to other developers. While there were a good number of floaters signed up, unfortunately not many of them actually came out to the event, and so we had to make do with what graphics we could scrounge up online, and a 31-second audio clip for background music.</p>
<h4>Conclusion and download</h4>
<p>In the end, we just made it. Karl and I finished our v1.0 of Happy Island right as time was up, and while it wasn&#8217;t what we were expecting or hoping for, it was complete enough to play. Getting to see people enjoy it afterwards was great, too!</p>
<p>Since TOJam, Karl and I have done some additional work on the game. I&#8217;ve also taken the opportunity to work on a few things that&#8217;ll be useful for further Happy Island development, or other XNA/<a href="http://www.monogame.net/">MonoGame</a> projects. For starters, I&#8217;ve updated a <a title="Rainault.Xna.PdnImporter" href="https://github.com/coldacid/Rainault.Xna.PdnImporter">Paint.NET image content importer</a> to work with XNA 4.0, which can be found on Github. As well, I&#8217;ve made <a title="XTiled" href="https://bitbucket.org/coldacid/xtiled">my own fork of the XTiled engine</a> and map importer which adds support for Tiled 0.9 features (image layers and staggered isometric maps), so that future projects can make use of that instead of the frustrating code we used for this project.</p>
<p>You can <a title="Get to the Goat!" href="http://coldacid.net/2013/05/get-to-the-goat/">download Happy Island</a> from the Cold Acid Entertainment site; as of this blog post, a polished v1.1 is available.</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul zemanta-article-ul-image" style="margin: 0; padding: 0; overflow: hidden;">
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://business.financialpost.com/2013/05/10/tojam-2013/" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://chris.charabaruk.com/wp-content/uploads/2013/05/167843135_80_80.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://business.financialpost.com/2013/05/10/tojam-2013/" target="_blank">Developers dream of making it big at TOJam</a></li>
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://kotaku.com/a-game-where-the-princess-doesnt-want-to-be-rescued-497326072" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://chris.charabaruk.com/wp-content/uploads/2013/05/167310119_80_80.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://kotaku.com/a-game-where-the-princess-doesnt-want-to-be-rescued-497326072" target="_blank">A Game Where The Princess Doesn&#8217;t WANT To Be Rescued</a></li>
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://indiegames.com/2013/05/browser_pick_truth_is_grey_in_.html" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://chris.charabaruk.com/wp-content/uploads/2013/05/168547555_80_80.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://indiegames.com/2013/05/browser_pick_truth_is_grey_in_.html" target="_blank">Browser Pick: truth is grey in TOJam entry Notes, from Starseed Pilgrim dev Droqen</a></li>
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://chris.charabaruk.com/2013/04/haters-gonna-eight/" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://chris.charabaruk.com/wp-content/uploads/2013/05/noimg_101_80_80.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://chris.charabaruk.com/2013/04/haters-gonna-eight/" target="_blank">Haters Gonna Eight</a></li>
</ul>
<p>&nbsp;</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" alt="" src="http://img.zemanta.com/pixy.gif?x-id=2d2c88ee-5c5c-4d43-afc1-50ef4b311a54" /></div>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/-QNmQFIqAts" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/05/tojam-2013-and-happy-island/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/05/tojam-2013-and-happy-island/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=tojam-2013-and-happy-island</feedburner:origLink></item>
		<item>
		<title>District 60 Toastmasters post-conference report</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/dydZKYkVMg8/</link>
		<comments>http://chris.charabaruk.com/2013/04/district-60-toastmasters-post-conference-report/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 14:26:25 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Speaking]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[postmortem]]></category>
		<category><![CDATA[Toastmasters]]></category>
		<category><![CDATA[workshops]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=217</guid>
		<description><![CDATA[This weekend just past was the annual spring conference for District 60 Toastmasters. I was on the conference committee with the responsibility of organizing the workshops part of the conference programme, and on top of that ran a workshop myself on the subject of creative Table Topics. As someone who had responsibility for how the [...]]]></description>
				<content:encoded><![CDATA[<p><img class="zemanta-img-inserted zemanta-img-configured alignright" title="Toastmasters International" alt="Toastmasters International" src="http://chris.charabaruk.com/wp-content/uploads/2013/04/300px-Toastmasters_2011.png" width="120" height="105" /></p>
<p>This weekend just past was the annual spring conference for <a href="http://toastmasters60.org">District 60 Toastmasters</a>. I was on the conference committee with the responsibility of organizing the workshops part of the conference programme, and on top of that ran a workshop myself on the subject of creative Table Topics. As someone who had responsibility for how the conference turned out, I feel that I should write up a post-mortem of my part of the work, in order to better evaluate how well I did and where I have room for improvement.<span id="more-217"></span></p>
<h4>What worked well</h4>
<p><strong>Processing received proposals.</strong> Despite a few difficulties, extracting the data from proposal submissions and putting it into the tracking documents was fairly simple. While the system for tracking and managing workshops fell apart later on, at least at the beginning it was easy to get stuff in.</p>
<p>I was also able to leverage <a class="zem_slink" title="Windows Live SkyDrive" href="http://backup-software.findthebest.com/l/235/Windows-Live-SkyDrive" target="_blank" rel="fdbsoftware">SkyDrive</a> so that other committee members could review the proposals as well, and make suggestions as to which ones to approve or otherwise discuss.</p>
<p><strong>Equipment and room setup management.</strong> This was fairly simple. From the get-go, we made sure to note that while the conference could supply certain equipment, presenters would have to bring their own projectors if they needed them. Still, we made sure to have a couple backups just in case. Things worked out well for this.</p>
<p><strong>Mail merge.</strong> Never underestimate the value of form communication. With the proposal tracking documents, it wasn’t too difficult to handle one-way communication. Both the Excel spreadsheet and Access database loaned themselves well to producing emails I could batch send to presenters.</p>
<p><strong>Workshop packages.</strong> Other than an envelope-related hiccup, I was able to manage the process of putting together workshop packages fairly easily. Each package simply contained timing cards and a gift for the presenter. On each envelope I affixed a sheet of paper with relevant information, so that workshop sergeants-at-arms would pick up the correct packages.</p>
<h4>What needs improvement</h4>
<p><strong>Communication, communication, communication!</strong> That old nemesis of mine, email communication, caused quite a bit of trouble during the planning stages, as well as making things very uncomfortable for me in the week leading up to the conference. Not only were a number of workshop proposals lost in the mail (at least two that I was informed of after it was too late to add them in), but the response time for replies – both for emails sent to and from me – made miscommunications more frequent and troubling than I would prefer.</p>
<p>For the next time I am in charge of an event’s programme (or part of it) I need to ensure that I communicate regularly and more frequently with presenters, fellow committee members, and other stakeholders, and to do so by phone more often than by email.</p>
<p><strong>Submission Process.</strong> Between the MIA proposals and hand-written, scanned in ones, the submission process was plagued with problems. Hopefully for future conferences we can move away from the current proposal form as the primary method and onto a web-based submission system instead. At the very least, it would be good to use PDF forms technology, which would allow for easier processing of proposal submission data.</p>
<p>I’ll just note there’s nothing wrong with the form itself, but relying on email submissions of it is simply asking for trouble.</p>
<p><strong>Workflow.</strong> At the start of planning for the conference, I adopted the workflow used by past workshop chairs. Unfortunately, the workflow was too ridden with cracks that things could slip through, due to the fact that it was nothing more than a simple Excel spreadsheet. I kept modifying the spreadsheet as I needed to track more and more, but each change was nothing more than a kludge, which in the end only increased my manual workload.</p>
<p>Eventually, I replaced the spreadsheet with an Access database which allowed me to track workshops, presenters, and other team members easily, as well as create reports that allowed me and others to see the status of workshop programming at any time. Hopefully the person handling workshops for the fall conference will have Access and be able to use this workflow.</p>
<h4>Sidebar: Creative Table Topics (my workshop)</h4>
<p>On Saturday morning, I was able to conduct an hour-long workshop on Table Topics. More specifically, a workshop on how to run a fun Table Topics session by reviewing sources of ideas for crafting unique and creative topics for each meeting. Because of all the work I was putting into organizing things with Ad Astra and the workshop programme for the conference, I wasn’t able to organize my workshop as well as I would have liked. However, my observation was that the workshop attendees thoroughly enjoyed themselves and the activities I presented.</p>
<p>This workshop needed no notes for me, no hand-outs, no visuals. Rather, I guided the attendees through various activities to help them identify and build on ideas for producing Table Topics “decks”, as well as ran them through various different ways to actually run the game. While it wasn’t that well attended (actually, for a 9:15am workshop I probably got a decent number of people in the room) nobody left part-way through, and everyone left satisfied and ready for their next time as Table Topics Master.</p>
<h4>Summary</h4>
<p>Despite the crossed communiqués, the stress of the final week before the conference, and the feeling that I didn’t give enough attention to the conference in the last couple weeks (due to all my preparation work for Ad Astra just the weekend before), I think things went very well for the district conference. We had a lot of happy Toastmasters attending, and with workshop presenters coming from as far away as Quebec or North Carolina, a lot more could have gone wrong than actually did.</p>
<p>I am proud to have helped out District 60 with the 2013 spring conference, and I look forward to helping out with organizing the fall conference as well.</p>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" alt="" src="http://img.zemanta.com/pixy.gif?x-id=ee3b6e36-ec43-4c4d-905b-9dfac0d1d0af" /></div>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/dydZKYkVMg8" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/04/district-60-toastmasters-post-conference-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/04/district-60-toastmasters-post-conference-report/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=district-60-toastmasters-post-conference-report</feedburner:origLink></item>
		<item>
		<title>Ad Astra 2013 post-convention report</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/pfD5L0a1LnA/</link>
		<comments>http://chris.charabaruk.com/2013/04/ad-astra-2013-post-convention-report/#comments</comments>
		<pubDate>Tue, 16 Apr 2013 01:27:04 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Ad Astra]]></category>
		<category><![CDATA[conventions]]></category>
		<category><![CDATA[postmortem]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=228</guid>
		<description><![CDATA[Ah, I promised on Twitter I’d have this up last week, didn’t I? Well, finalizing things for the District 60 spring conference got in the way, sorry. Anyway, here we go with my postmortem on the games department for this year’s Ad Astra convention. What went well The video games room! Video games have returned [...]]]></description>
				<content:encoded><![CDATA[<p><a href="http://ad-astra.org"><img class="size-full wp-image-243 alignright" alt="Ad Astra" src="http://chris.charabaruk.com/wp-content/uploads/2013/04/ad-astra.png" width="178" height="124" /></a></p>
<p>Ah, I promised on Twitter I’d have this up last week, didn’t I? Well, finalizing things for the <a title="District 60 Toastmasters" href="http://toastmasters60.org" target="_blank">District 60</a> spring conference got in the way, sorry. Anyway, here we go with my postmortem on the games department for this year’s <a href="http://www.ad-astra.org/" target="_blank">Ad Astra convention</a>.</p>
<p><span id="more-228"></span></p>
<h4>What went well</h4>
<p><strong>The video games room!</strong> Video games have returned to Ad Astra’s programme this year! The last two years saw a lack of video gaming due to various issues, and years before then only saw a short two-hour gaming session in the anime room. However, we were finally able to get a proper video games room up and running, with a number of consoles, both new and old, available to attendees.</p>
<p>Available to play were: Xbox 360 and Nintendo 64 on the big screen, <a class="zem_slink" title="Master System" href="http://en.wikipedia.org/wiki/Master_System" target="_blank" rel="wikipedia">Sega Master System</a> and <a class="zem_slink" title="Super Nintendo Entertainment System" href="http://en.wikipedia.org/wiki/Super_Nintendo_Entertainment_System" target="_blank" rel="wikipedia">Super Nintendo</a> on the first little screen, and <a class="zem_slink" title="Sega Genesis" href="http://en.wikipedia.org/wiki/Sega_Genesis" target="_blank" rel="wikipedia">Sega Genesis</a> and <a class="zem_slink" title="TurboGrafx-16" href="http://en.wikipedia.org/wiki/TurboGrafx-16" target="_blank" rel="wikipedia">Turbografx-16</a> on the second little screen.</p>
<p><strong>Snakes &amp; Lattes.</strong> Like last year, Snakes &amp; Lattes hosted the table top games lounge. Their sponsorship and staffing of the room for open gaming hours is incredibly helpful, and gives me the chance to focus on the big picture of games and game-related programming at the convention. A great big thanks to Steve and his S&amp;L crew!</p>
<p><strong>Expanding beyond the game rooms.</strong> While minimal this year (see what needs improvement below) we’re starting to see games-related programming expand beyond just the games lounge and <acronym title="video games">VG</acronym> room. We had two games panels this year, although they weren’t that well attended. Still, it’s a start, and I’m looking forward to establishing more panels on games and gamer culture for future years – not to mention at least one panel related to video game narrative and writing. We could even bring in a gaming guest of honour for next year.</p>
<h4>What needs improvement</h4>
<p><strong>A late start.</strong> Originally I had planned to have things moving back in July. Then it got pushed to September. And even then, I didn’t have a real, written plan that I could share with department staff, the other members of the convention committee, or the board of directors. A written plan for the department would have been able to provide us with guidance for some of the problems we faced leading up to the convention, as well as offer a rationale for expanded programming and departmental budget.</p>
<p>Fortunately, I already have something worked out for 2014, based on the results of this year’s convention. You’re not going to see it (unless you’re on the convention team), but you’ll certainly see the effects of it next April!</p>
<p><strong>Communication.</strong> Getting a late start on things was bad enough, but not keeping in frequent, regular contact with the rest of my team also hurt matters, and made it more difficult to make up for a number of scheduling and personnel problems we faced this year. We had a few people who were unable to come out for the whole weekend, one of whom I didn’t even hear from for months until the Saturday of the convention. (He had a damn good reason, though.)</p>
<p>For next year’s convention, I plan to have weekly communication with my team, via email, phone, and/or Skype. This way we should be able to avoid some communication problems, and know about potential roadblocks well enough in advance to be able to work around them.</p>
<p><strong>Batteries (or lack thereof).</strong> Oops. Rack this one up to me simply forgetting to stick my huge bunch of batteries into my luggage. The reason this was a problem was because without those batteries, we weren’t able to make use of the Wii in the video games room. We also needed some batteries for the TV remotes, and so had to swap batteries back and forth in order to set up two of the sets we were using. D’oh!</p>
<h4>Fun and interesting experiences</h4>
<p>This year was the first time I actually sat on some of the panels at Ad Astra, and it was great. I had a panel a day, starting with Friday’s “The Contemporary Troll”, Saturday’s “Hardcore Gamers’ Forum” (which unfortunately nobody came to, I think they were all in the video gaming room), and Sunday’s Game of Thrones panel, “Beyond Winterfell”. I was hoping that we could have a panel on visual novels and interactive fiction as well, but unfortunately nobody else was interested.</p>
<p>I also had an interesting conversation Saturday night in the <acronym title="guest of honour">GOH</acronym>/panellist green room, that lead to an interesting concept and story idea relating to death and the afterlife. If I ever get around to non-game fiction writing again, I think I could come up with a decent short story off of that conversation!</p>
<h4>Summary</h4>
<p>Ad Astra 2013 was made of ups and downs for the games department – but mostly ups. Building on this year’s energy, I’m sure that Ad Astra 2014 will be even more awesome!</p>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul zemanta-article-ul-image" style="margin: 0; padding: 0; overflow: hidden;">
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://nickmatthews.ca/2013/04/ad-astra-2013/" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://chris.charabaruk.com/wp-content/uploads/2013/04/158593606_80_801.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://nickmatthews.ca/2013/04/ad-astra-2013/" target="_blank">Ad Astra 2013</a></li>
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://gwynplainelives.wordpress.com/2013/04/07/ad-astra-2013/" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://chris.charabaruk.com/wp-content/uploads/2013/04/158124571_80_801.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://gwynplainelives.wordpress.com/2013/04/07/ad-astra-2013/" target="_blank">Ad Astra 2013</a></li>
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://coldacid.tumblr.com/post/47341314069/philosophical-story-idea" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://chris.charabaruk.com/wp-content/uploads/2013/04/158048143_80_801.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://coldacid.tumblr.com/post/47341314069/philosophical-story-idea" target="_blank">Philosophical story idea</a></li>
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="list-style: none; margin: 2px 10px 10px 2px; padding: 0px; width: 84px; text-align: left; font-size: 11px; vertical-align: top; float: left; display: block;"><a style="padding: 2px; border-radius: 2px; text-decoration: none; display: block; box-shadow: 0px 0px 4px #999;" href="http://archeddoorway.com/2013/04/12/interview-with-jim-butcher/" target="_blank"><img style="margin: 0px; padding: 0px; border: 0px currentColor; width: 80px; display: block; max-width: 100%;" alt="" src="http://chris.charabaruk.com/wp-content/uploads/2013/04/159665495_80_80.jpg" /></a><a style="padding: 5px 2px 0px; height: 80px; line-height: 12pt; overflow: hidden; text-decoration: none; display: block;" href="http://archeddoorway.com/2013/04/12/interview-with-jim-butcher/" target="_blank">Interview with Jim Butcher</a></li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" alt="" src="http://img.zemanta.com/pixy.gif?x-id=77e5cd6e-d6ec-41b6-a29e-48c28dce53fc" /></div>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/pfD5L0a1LnA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/04/ad-astra-2013-post-convention-report/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/04/ad-astra-2013-post-convention-report/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ad-astra-2013-post-convention-report</feedburner:origLink></item>
		<item>
		<title>Haters Gonna Eight</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/BmV48ErOTtU/</link>
		<comments>http://chris.charabaruk.com/2013/04/haters-gonna-eight/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 20:24:38 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[TOJam]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=215</guid>
		<description><![CDATA[There once was a little event where people from around Toronto came together to make games. It was called TOJam, and much fun was had by the participants. Years and years later, TOJam has become one of Toronto’s big, annual game development events! 2013 marks the eighth TOJam, and the third time that I’ll be [...]]]></description>
				<content:encoded><![CDATA[<p>There once was a little event where people from around Toronto came together to make games. It was called <a href="http://www.tojam.ca/">TOJam</a>, and much fun was had by the participants. Years and years later, TOJam has become one of Toronto’s big, annual game development events! 2013 marks the eighth TOJam, and the third time that I’ll be attending.</p>
<p>I was at the first two events, back in <a title="TOJam #1: May 5-7, 2006" href="http://www.tojam.ca/history/2006.asp">2006</a> and <a title="TOJam #2: May 4-6, 2007" href="http://www.tojam.ca/history/2007.asp">2007</a>. That first amazing year saw me complete a game called <a href="http://www.tojam.ca/games/alien_abduction.asp">Alien Abduction!</a> (now renamed UFO Panic), a game where you flew around another planet abducting aliens. Unfortunately, the second year saw my computer blow up on me, which resulted in much sad, and so I didn’t get anything completed. However, this year I don’t have to transport an entire desktop system from Pickering to downtown Toronto; all I need is my trusty laptop, and if I’m crazy enough I might also bring along my CRT monitor so I can rely on my usual two-monitor setup.</p>
<p>Almost every TOJam has had a theme, and this year is no different. The theme is “uncooperative”, and I already have a game idea for it. With any luck, I’ll be able to put together a simple tactical socialization game on a deserted island within the three days of the jam, with the help of my friend and fellow <a href="https://coldacid.net" target="_blank">Cold Acid Entertainment</a> developer <a href="https://twitter.com/dj_zmx" target="_blank">Karl</a>.</p>
<p>I’m really looking forward to it, and so are many others in the city! For the four hundred seats available, over three hundred registrations have already been sent in since the registration form opened up this morning. Goes to show you just how popular this game jam can be. I certainly hope that Karl and I will be among the lucky folks selected to attend!</p>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/BmV48ErOTtU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/04/haters-gonna-eight/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/04/haters-gonna-eight/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=haters-gonna-eight</feedburner:origLink></item>
		<item>
		<title>Ad Astra 2013</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/A9hTJy3Gp8c/</link>
		<comments>http://chris.charabaruk.com/2013/04/ad-astra-2013/#comments</comments>
		<pubDate>Thu, 04 Apr 2013 22:48:00 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Ad Astra]]></category>
		<category><![CDATA[communication]]></category>
		<category><![CDATA[conventions]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=213</guid>
		<description><![CDATA[It&#8217;s Ad Astra this weekend, so I&#8217;ll be fairly busy. This is my sixth year of running gaming for the convention. I have a lot of fun here, even though I&#8217;ve had my fair share of troubles managing my department. This year has been no different in that regard, but the problems I&#8217;ve faced this [...]]]></description>
				<content:encoded><![CDATA[<p>It&#8217;s <a href="http://ad-astra.org">Ad Astra</a> this weekend, so I&#8217;ll be fairly busy. This is my sixth year of running gaming for the convention.</p>
<p>I have a lot of fun here, even though I&#8217;ve had my fair share of troubles managing my department. This year has been no different in that regard, but the problems I&#8217;ve faced this time around have been in the planning and preparation stages, rather than execution (so far). It boils down to two issues that should be of concern for any group project: personnel and communication.</p>
<p>I&#8217;ll not name names or anything, partially because I am one of the people at fault for this (not just in a &#8220;buck stops here&#8221; way either). But yeah, it is incredibly important to know who you&#8217;ll be working with and what they will be responsible for from the get-go. Even more importantly, it is necessary that team members keep multiple lines of communication open at all times, and that they communicate early and often.</p>
<p>For future years and future projects, I hope that I will be able to maintain this knowledge.</p>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/A9hTJy3Gp8c" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/04/ad-astra-2013/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/04/ad-astra-2013/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=ad-astra-2013</feedburner:origLink></item>
		<item>
		<title>Old game design documents</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/MfiSSnDdKAw/</link>
		<comments>http://chris.charabaruk.com/2013/04/old-game-design-documents/#comments</comments>
		<pubDate>Wed, 03 Apr 2013 16:58:20 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[Game Dev]]></category>
		<category><![CDATA[documents]]></category>
		<category><![CDATA[game design]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=212</guid>
		<description><![CDATA[Every million years or so, I dig up and review some old game design treatments I wrote eons ago. They never got anywhere, not even to paper prototyping, but sometimes I still consider resurrecting them and making the games I had planned out. I got thinking about these again as I was building the new [...]]]></description>
				<content:encoded><![CDATA[<p>Every million years or so, I dig up and review some old game design treatments I wrote eons ago. They never got anywhere, not even to paper prototyping, but sometimes I still consider resurrecting them and making the games I had planned out. I got thinking about these again as I was building the new <a href="http://coldacid.net/">cold acid entertainment</a> website, and figured I might as well post them here for anyone interested.</p>
<p>The two docs I’m posting today are for games that were tentatively titled “Valkyrie Dragon” and “Great Kingdoms”. The first was originally written around 2003, and was to be a cross between the mecha combat (a la Starsiege or Evangelion) and dating simulation genres. In short, it was Baldr Force with genetics instead of virtual reality. As for the second, it was written and tweaked over a period of time spanning 2002 through 2004, and was to be a real-time strategy where players would build their own fiefdoms (including vassal relationships to other players). This was the far more interesting (and further developed) treatment, although I determined I had neither the resources nor the inclination to follow through on developing it.</p>
<p>As other projects of mine either get retired or tossed on the heap of unfulfilled ideas, I might release their design documents too. In the meantime feel free to review these ancient treatments – perhaps they’ll inspire you to come up with something interesting.</p>
<div id="scid:fb3a1972-4489-4e52-abe7-25a00bb07fdf:43cd3eab-dc63-478a-9611-3d23b395004f" class="wlWriterEditableSmartContent" style="float: none; padding-bottom: 0px; padding-top: 0px; padding-left: 0px; margin: 0px; display: inline; padding-right: 0px">
<p> <a href="http://chris.charabaruk.com/wp-content/uploads/2013/04/GreatKingdomsFantasyMMORTS.doc" target="_blank">Valkyrie Dragon (Mecha &#038; dating sim)</a><br /> <a href="http://chris.charabaruk.com/wp-content/uploads/2013/04/ValkyrieDragonMecha26DatingSim.doc" target="_blank">Great Kingdoms (Fantasy MMORTS)</a></p>
</div>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/MfiSSnDdKAw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/04/old-game-design-documents/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/04/old-game-design-documents/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=old-game-design-documents</feedburner:origLink></item>
		<item>
		<title>Sharing models between Windows Phone and Windows 8: An exercise in futility</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/dJbdK6rk-QA/</link>
		<comments>http://chris.charabaruk.com/2013/04/sharing-models-between-windows-phone-and-windows-8-an-exercise-in-futility/#comments</comments>
		<pubDate>Tue, 02 Apr 2013 04:13:38 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Projects]]></category>
		<category><![CDATA[data access]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[LINQ to SQL]]></category>
		<category><![CDATA[MoodTracker]]></category>
		<category><![CDATA[Windows 8]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=206</guid>
		<description><![CDATA[Data access is hell. I’ve been stuck on the same problem for a while now, working on MoodTracker. The problem comes down to SQL Server Compact and LINQ to SQL, and the lack of the former on Windows 8. You see, I’d like to get MoodTracker on Windows 8. However, to do so means reworking [...]]]></description>
				<content:encoded><![CDATA[<p>Data access is hell.</p>
<p>I’ve been stuck on the same problem for a while now, working on MoodTracker. The problem comes down to SQL Server Compact and LINQ to SQL, and the lack of the former on Windows 8. You see, I’d like to get MoodTracker on Windows 8. However, to do so means reworking how the app does data access since SQL CE isn’t available for use in Windows 8 applications, and unfortunately, there’s absolutely no useful guidance on moving from using SQLCE-decorated model classes to a more portable solution for data access.</p>
<p>So here I am, working on separating my model classes from the concern of data access. And it’s not going too well. Sure, I have a portable library containing new model classes free of the attributes and various association-related classes, and I’ve moved the SQLCE-specific stuff into its own assembly. But that’s as far as things have gone. Trying to connect the dots between the model classes and the data access classes has gotten me nowhere. On a related issue, working out how to inject the DAL into the app had been troubling me, but the realization that it would be done in another platform-specific assembly has given me the clue to work that out (so long as I can work out an interface for data access that works).</p>
<p>I really wish there was some guidance on this, so that phone apps making use of a local database could be more easily ported to Windows 8, with a lot less fuss. If anyone has a good solution for this problem (bonus points if it’s MvvmLight friendly) please let me know!</p>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/dJbdK6rk-QA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/04/sharing-models-between-windows-phone-and-windows-8-an-exercise-in-futility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/04/sharing-models-between-windows-phone-and-windows-8-an-exercise-in-futility/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=sharing-models-between-windows-phone-and-windows-8-an-exercise-in-futility</feedburner:origLink></item>
		<item>
		<title>Good Enough versus Perfect</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/rmmS8OVJyVc/</link>
		<comments>http://chris.charabaruk.com/2013/03/good-enough-versus-perfect/#comments</comments>
		<pubDate>Sat, 23 Mar 2013 01:37:42 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[‌Random]]></category>
		<category><![CDATA[productivity]]></category>
		<category><![CDATA[project management]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=199</guid>
		<description><![CDATA[Pulled from the archives. Originally published on July 1, 2010. The perfect is the enemy of the good. – Voltaire Motivation to perform to perfection is a strong force in western society. The attitude that we have to be better than anyone else at something, to achieve perfection in our activities, has been a strong [...]]]></description>
				<content:encoded><![CDATA[<p><span style="font-size: smaller;">Pulled from the archives. Originally published on July 1, 2010.</span></p>
<blockquote><p><q>The perfect is the enemy of the good.</q> – Voltaire</p></blockquote>
<p>Motivation to perform to perfection is a strong force in western society. The attitude that we have to be better than anyone else at something, to achieve perfection in our activities, has been a strong force throughout modern history, from the world&#8217;s nations down to the individuals which form their bases. And it&#8217;s seen every day in projects of all scopes and sizes.</p>
<p>But Voltaire left a message that should be listened to, by everyone on every project – one that is unfortunately ignored by many, to their detriment.</p>
<p>It&#8217;s a somewhat heretical thought: What if we don&#8217;t have to be perfect? What if we just do <a href="http://en.wikipedia.org/wiki/Principle_of_good_enough">good enough</a> to pass? What will that offer us instead of striving to be the best? Well, what it offers is the ability to work more efficiently and still do a proper job of it.</p>
<p><span id="more-199"></span></p>
<h4>What is good enough?</h4>
<p>It&#8217;s actually pretty simple. Being good enough is about meeting the needs of the project, rather than the ideals. Some might think it means lacking quality, but it&#8217;s really more about balancing quality against the work that actually needs to be accomplished.</p>
<p>For an example of something good enough, one need only recall the 1980s and early 90s, to VHS. In the late 70s and early 80s, it competed against the Betamax standard for home video. However, it won the competition in the end because it was good enough for the average consumer. It was cheap, had acceptable video and audio quality, and was readily available. In contrast, Sony&#8217;s Betamax standard, while better quality than VHS, was more expensive and harder to get a hold of. The focus of having a perfect format paradoxically resulted in a product that couldn&#8217;t cut it against VHS.</p>
<h4>What&#8217;s wrong with perfection?</h4>
<p>First of all, perfectionism is procrastination. Say it out loud: perfectionism is procrastination. When you try to be perfect, you get little, if anything, actually accomplished. Planning for perfection leads to a project terminal state known as <a href="http://en.wikipedia.org/wiki/Analysis_paralysis">analysis paralysis</a> – you get so bogged down in the details of what could happen, what could be needed, etc. that you never actually get started at all. And for a project that is in development, perfectionism can lead to endless wanking on a few particular pet tasks of the developers, as they keep trying to make those parts they&#8217;re working on better and better. At first it may look like progress, but at some point, those constant attempts at improvement return no value at all.</p>
<p>On the other hand, aiming for Good Enough just gets the job done. In planning, you focus on what the requirements are, no more, no less, and how to meet them simply and efficiently. No worrying about edge cases or making things bulletproof or endlessly customizable – meet the core needs and be done with it. As for development, it should be simple enough to test against the plan to see if a task is met. Once it is, you move on to the next one, and stop worrying about the one you just finished. The work goes by faster, and you accomplish more.</p>
<p>Another issue with perfection is that not everyone agrees on what perfect means, in the context of the project. It&#8217;s very easy to end up with a camel, when what you want is a horse, because everyone thinks that the perfect quadruped needs this or that or the other thing. It&#8217;s a very subjective concept, as opposed to achieving good enough. Not to say that good enough isn&#8217;t subjective itself, but it&#8217;s a much easier target to hit and reach consensus on, and if you plan well, it can be objectively determined whether or not something is Good Enough based on project goals, client needs, and metrics collected during the planning and development stages of a project.</p>
<h4>Determining what is good enough</h4>
<p>There are three simple questions you can ask:</p>
<p><strong>Is it simple?</strong> That is to say, is the design simple and can be picked up by the developers without much work? If the design and implementation is simple, it&#8217;s easier to make any needed changes later, while still fulfilling the current requirements now.</p>
<p><strong>Does it work acceptably well?</strong> If it&#8217;s easy for the end user to figure out, and does the job without raising problems the user can&#8217;t handle, it&#8217;s good.</p>
<p><strong>Does it cover all the bases?</strong> It should meet the project requirements, with a minimum of additional features tacked on. Wherever additional things are added, it should either be because of (legitimately) changing requirements, or because those features are required by the features which do meet project requirements.</p>
<h4>Conclusion</h4>
<p>There are some clear advantages to aiming for good enough rather than for perfection. You&#8217;ll be more efficient while still providing a proper job well done. It&#8217;s not necessary to provide all the bells and whistles so long as you meet the goals of your project, so don&#8217;t try for it! Success comes from getting the job done right, not done perfect. And good enough is doing it right.</p>
<blockquote><p><q>The greatest enemy of a good plan is the dream of a perfect plan.</q> – Karl von Clausewitz</p></blockquote>
<h6 class="zemanta-related-title" style="font-size: 1em;">Related articles</h6>
<ul class="zemanta-article-ul zemanta-article-ul-image" style="margin: 0; padding: 0; overflow: hidden;">
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://worldlygirlturnedmom.wordpress.com/2013/03/20/getting-stuff-done-means-letting-go-of-perfectionism/" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://i.zemanta.com/153737548_80_80.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://worldlygirlturnedmom.wordpress.com/2013/03/20/getting-stuff-done-means-letting-go-of-perfectionism/" target="_blank">Getting Stuff Done means Letting Go of Perfectionism</a></li>
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://openingoureyes.net/2013/03/17/perfectionism-are-you-protecting-yourself-from-success/" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://i.zemanta.com/152993497_80_80.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://openingoureyes.net/2013/03/17/perfectionism-are-you-protecting-yourself-from-success/" target="_blank">Perfectionism &#8211; Are You Protecting Yourself from Success?</a></li>
<li class="zemanta-article-ul-li-image zemanta-article-ul-li" style="padding: 0; background: none; list-style: none; display: block; float: left; vertical-align: top; text-align: left; width: 84px; font-size: 11px; margin: 2px 10px 10px 2px;"><a style="box-shadow: 0px 0px 4px #999; padding: 2px; display: block; border-radius: 2px; text-decoration: none;" href="http://www.solo-e.com/blog/2013/03/perfectionism-trap-free-timely.html" target="_blank"><img style="padding: 0; margin: 0; border: 0; display: block; width: 80px; max-width: 100%;" alt="" src="http://i.zemanta.com/151882782_80_80.jpg" /></a><a style="display: block; overflow: hidden; text-decoration: none; line-height: 12pt; height: 80px; padding: 5px 2px 0 2px;" href="http://www.solo-e.com/blog/2013/03/perfectionism-trap-free-timely.html" target="_blank">Perfectionism Trap: Free Yourself with 2 Timely Tips!</a></li>
</ul>
<div class="zemanta-pixie" style="margin-top: 10px; height: 15px;"><img class="zemanta-pixie-img" style="border: none; float: right;" alt="" src="http://img.zemanta.com/pixy.gif?x-id=88f8cfe9-32b8-47ba-a867-0c7eb98f9762" /></div>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/rmmS8OVJyVc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/03/good-enough-versus-perfect/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/03/good-enough-versus-perfect/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=good-enough-versus-perfect</feedburner:origLink></item>
		<item>
		<title>Exceptions and Tasks and Async, oh my!</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/rcmkqH0fLK4/</link>
		<comments>http://chris.charabaruk.com/2013/03/exceptions-and-tasks-and-async-oh-my/#comments</comments>
		<pubDate>Tue, 19 Mar 2013 22:23:57 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[async]]></category>
		<category><![CDATA[debugging]]></category>
		<category><![CDATA[diagnostics]]></category>
		<category><![CDATA[exception handling]]></category>
		<category><![CDATA[exceptions]]></category>
		<category><![CDATA[Taptics]]></category>
		<category><![CDATA[task async]]></category>
		<category><![CDATA[Telerik]]></category>
		<category><![CDATA[Windows Phone]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=185</guid>
		<description><![CDATA[This afternoon, I pushed out a couple bug fixes for Taptics to Windows Phone Dev Center. I feel like doing a bit of ranting about it, as the fixes are something that could have been done and pushed out a lot earlier were it not for the rudimentary level of detail I got through the [...]]]></description>
				<content:encoded><![CDATA[<p>This afternoon, I pushed out a couple bug fixes for <a href="http://chris.charabaruk.com/taptics">Taptics</a> to Windows Phone Dev Center. I feel like doing a bit of ranting about it, as the fixes are something that could have been done and pushed out a lot earlier were it not for the rudimentary level of detail I got through the crash logs from Dev Center and the bug reports generated by Telerik’s <a href="http://www.telerik.com/products/windows-phone/overview/all-controls/diagnostics.aspx">RadDiagnostics component</a>.</p>
<p>What it all boils down to: The Task-based Asynchronous Pattern, known to most of us mortals as <tt>async</tt>/<tt>await</tt>. And, to a slightly lesser degree, parallelization.</p>
<p><span id="more-185"></span></p>
<p>You see, in Taptics, when scores are submitted in game, I have to submit the score multiple times due to how leaderboards work on the Scoreloop platform (which is what I’m using for that, as well as the upcoming achievements feature planned for the next big release). As well, players can connect Twitter and Facebook to the game and send out a message of their score. Rather than chain together these operations in serial (one at a time, wait for one to complete before starting the next), I start them all right away, and just wait for them all to finish with the help of <a href="http://msdn.microsoft.com/en-us/library/system.threading.tasks.task.waitall.aspx"><tt>Task.WaitAll</tt></a>.</p>
<p>So, what happens if an exception is thrown within one of your tasks that you’re waiting on? In the case of await with a single task, it’s more or less the same as an exception being thrown in classic synchronous code. The stack trace is a bit different, though, as the exception has been thrown twice – first in the method or lambda that the task is running asynchronously, and then again in the state machine hidden behind your await call. This was problem number one: the stack traces I was getting from these asynchronous method exceptions let me know where the exception was thrown the second time, but no (or almost no) information from the original throw. That lead to tedious work looking for possible bugs, often with the help of both <a href="http://www.telerik.com/products/decompiler.aspx">JustDecompile</a> and <a href="http://ilspy.net/">ILSpy</a> to peek into the state machine’s inner workings.</p>
<p>What happens when you’re awaiting a group of tasks, though? Here we run into the issue I had with RadDiagnostics. You see, <tt>Task.WaitAll</tt> doesn’t throw you back any old exception. What would happen if multiple tasks threw? Because of that situation, Microsoft introduced the <a href="http://msdn.microsoft.com/en-us/library/system.aggregateexception.aspx"><tt>AggregateException</tt></a> class, which acts as a collection of exceptions. You can enumerate the <tt>InnerExceptions</tt> property of <tt>AggregateException</tt> to get the actual exceptions thrown by the tasks. Unfortunately, RadDiagnostics isn’t bright enough on its own to do that, so the reports in that and similar situations where tasks were run side-by-side were practically useless.</p>
<p>Fortunately, that was easier to fix than the earlier case, even though it meant pushing a Taptics update that did nothing but improve bug reporting. RadDiagnostics provides an event that is fired before actually submitting reports, in case a developer wants to transmit them via a method other than email. It can also be used to tack on custom data for error reports, and so I was able to add in some code to handle <tt>AggregateException</tt>. Now, whenever such an exception percolates up and gets caught by RadDiagnostics, I at least know what’s causing it and where.</p>
<p>By the way, I should note that even if only one exception is thrown by one of the awaited tasks, it’s still wrapped in an <tt>AggregateException</tt>. I only ever had <tt>AggregateException</tt>s with a single inner exception, but even in that case, you have to go through <tt>InnerExceptions</tt> (regular <tt>InnerException</tt> appears to remain null).</p>
<p>In the end, I’ve strengthened my ability to deal with pesky exceptions crawling out of the async woodwork, and hopefully the next update of Telerik’s controls will offer a more <tt>AggregateException</tt>-friendly RadDiagnostics.</p>
<p><strong>UPDATE March 22:</strong> <a title="AggregateException handling" href="http://www.telerik.com/community/forums/windows-phone-8/diagnostics/aggregateexception-handling.aspx#2547262">Telerik has listened!</a> Future versions of RadDiagnostics will keep an eye out for <tt>AggregateException</tt> and give expanded reports when they&#8217;re encountered.</p>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/rcmkqH0fLK4" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/03/exceptions-and-tasks-and-async-oh-my/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/03/exceptions-and-tasks-and-async-oh-my/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=exceptions-and-tasks-and-async-oh-my</feedburner:origLink></item>
		<item>
		<title>State of my brain</title>
		<link>http://feedproxy.google.com/~r/ChrisCharabaruk/~3/JGN3v5FSi_Y/</link>
		<comments>http://chris.charabaruk.com/2013/03/state-of-my-brain/#comments</comments>
		<pubDate>Mon, 18 Mar 2013 20:00:35 +0000</pubDate>
		<dc:creator>Chris Charabaruk</dc:creator>
				<category><![CDATA[‌Random]]></category>
		<category><![CDATA[mind dump]]></category>

		<guid isPermaLink="false">http://chris.charabaruk.com/?p=181</guid>
		<description><![CDATA[This isn’t so much a blog post as it is a laundry list of things I’ve got rolling through my head: responsibilities, projects, stuff I’ve been reading, etc. I think I need to just dump this somewhere so I can review it, so why not on my blog? External projects: District 60 Toastmasters spring 2013 [...]]]></description>
				<content:encoded><![CDATA[<p>This isn’t so much a blog post as it is a laundry list of things I’ve got rolling through my head: responsibilities, projects, stuff I’ve been reading, etc. I think I need to just dump this somewhere so I can review it, so why not on my blog?</p>
<p><strong>External projects:</strong></p>
<ul>
<li><a href="http://www.toastmasters60.org">District 60 Toastmasters</a> spring 2013 conference. I am the workshops chair, and at the moment I am doing a lot of work regarding scheduling of the workshops and making sure workshop presenters have what they need in time. I am also presenting a workshop, which I need to finish preparing.
<li><a href="http://www.ad-astra.org">Ad Astra</a> 2013 convention. As the game department supervisor, I’ve been dealing with what will be available to play and who will run individual sessions. Things started a bit late for this year’s conference so I’m playing a lot of catch-up.
<li>Anime North 2013 panels. I’ll be on some game-related discussion panels, but there’s been a lot of issues getting things laid out with the panels I am on this year.</li>
</ul>
<p><strong>Internal projects:</strong></p>
<ul>
<li>Taptics. There’ve been a lot of bugs reported lately, but unfortunately the bug reports and crash traces aren’t providing me with enough information to fix them. I’m also implementing achievements, but I need help with designing the achievement icons.
<li>MoodTracker. Currently stuck trying to make MoodTracker somewhat more portable so I don’t have to maintain different branches for Windows Phone 7, Windows Phone 8, and Windows 8. My fault, and would have been entirely avoidable had I taken more time to plan before starting the code for it.
<li>Business planning for Charabaruk Information Solutions. This is the name I plan to consult under. The business side of projects has never been my strong suit, instead I tend to focus on technical aspects. I’ve been putting a lot of thought onto how to build up business skills lately.</li>
</ul>
<p><strong>Education:</strong></p>
<ul>
<li>Foundations of Business Strategy and Calculus 101 on <a href="http://www.coursera.com">Coursera</a>. Currently playing catch-up with my courses.</li>
</ul>
<p><strong>Reading:</strong></p>
<ul>
<li><em><a href="http://www.amazon.com/gp/product/1430233516/ref=as_li_ss_tl?ie=UTF8&amp;camp=1789&amp;creative=390957&amp;creativeASIN=1430233516&amp;linkCode=as2&amp;tag=coldacidnet-20">Gamers at Work</a><img style="border-top-style: none !important; border-left-style: none !important; border-bottom-style: none !important; border-right-style: none !important; margin: 0px" border="0" alt="" src="http://www.assoc-amazon.com/e/ir?t=coldacidnet-20&amp;l=as2&amp;o=1&amp;a=1430233516" width="1" height="1"></em> by Morgan Ramsay. I preordered the book, received it within a week of launch, and still haven’t finished it. Still a few chapters to go.
<li>Currently awaiting the 1.1 edition of <em>Mindfire</em> by Scott Berkun. It’s already had a soft launch on Amazon, but the ebook editions are going to be given away for free on Wednesday from the <a title="Scott Berkun" href="http://www.scottberkun.com">author’s website</a>.
<li>Various light novels and manga when I go to bed each night. It’s been a little while since I read any western fiction.</li>
</ul>
<p>That’s what’s on top of my head right now, but no doubt there’s more. Hopefully I can clear out a bunch of tasks related to these over the week. Which reminds me, I should probably get back to doing weekly reviews.</p>
<img src="http://feeds.feedburner.com/~r/ChrisCharabaruk/~4/JGN3v5FSi_Y" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://chris.charabaruk.com/2013/03/state-of-my-brain/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://chris.charabaruk.com/2013/03/state-of-my-brain/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=state-of-my-brain</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic page generated in 1.343 seconds. --><!-- Cached page generated by WP-Super-Cache on 2013-05-23 08:45:44 -->
