<?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>Nial Giacomelli</title>
	<atom:link href="http://nial.me/feed/" rel="self" type="application/rss+xml" />
	<link>http://nial.me</link>
	<description></description>
	<lastBuildDate>Thu, 17 May 2012 21:23:54 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Wingman</title>
		<link>http://nial.me/2012/05/wingman/</link>
		<comments>http://nial.me/2012/05/wingman/#comments</comments>
		<pubDate>Thu, 17 May 2012 21:13:11 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Project]]></category>

		<guid isPermaLink="false">http://nial.me/?p=563</guid>
		<description><![CDATA[I&#8217;m a revisionist by nature, and I&#8217;m absolutely obsessive when it comes to stuff like Twitter, which is why I put together Wingman. Wingman&#8217;s a Safari extension which gives you a 45 second grace period when composing tweets. Your tweets are held as drafts, allowing you to proof read and edit them as necessary before [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m a revisionist by nature, and I&#8217;m absolutely obsessive when it comes to stuff like Twitter, which is why I put together Wingman. Wingman&#8217;s a Safari extension which gives you a 45 second grace period when composing tweets. Your tweets are held as drafts, allowing you to proof read and edit them as necessary before they&#8217;re posted as full-fledged tweets.</p>
<p><iframe width="480" height="360" src="http://www.youtube.com/embed/KguJnlwCCrg" frameborder="0" allowfullscreen style="margin-left: 60px"></iframe></p>
<p>It&#8217;s important to note that Wingman<em> isn&#8217;t perfect</em>. It&#8217;s presented here as a proof of concept. There will be occasional hiccups. If you&#8217;d like to give it a shot, you can grab it <a href="http://uglyapps.co.uk/wingman/Wingman.safariextz.zip" title="Wingman">here</a>. I&#8217;d love to know what you think of it, and how you&#8217;d like to see it improved. Feel free to get in touch via Twitter @nialgiacomelli.</p>
]]></content:encoded>
			<wfw:commentRss>http://nial.me/2012/05/wingman/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nibbble &#8211; A Dribbble screensaver</title>
		<link>http://nial.me/2012/05/nibbble-a-dribbble-screensaver/</link>
		<comments>http://nial.me/2012/05/nibbble-a-dribbble-screensaver/#comments</comments>
		<pubDate>Sat, 12 May 2012 20:17:23 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Project]]></category>

		<guid isPermaLink="false">http://nial.me/?p=547</guid>
		<description><![CDATA[About a week ago @markjardine made the following Twitter post: Someone needs to create a nice quartz composer screensaver displaying dribbble shots. On a related note, I need to learn quartz composer. As luck would have it, I actually already had a Dribbble-powered screen saver. I&#8217;d written it months ago and had been using it [...]]]></description>
			<content:encoded><![CDATA[<p>About a week ago @markjardine made the following Twitter post:</p>
<blockquote><p>Someone needs to create a nice quartz composer screensaver displaying dribbble shots. On a related note, I need to learn quartz composer.</p></blockquote>
<p>As luck would have it, I actually <em>already had</em> a Dribbble-powered screen saver. I&#8217;d written it months ago and had been using it ever since. Mark&#8217;s tweet prompted me to polish it up and get it ready for release, which I&#8217;m doing today! So I&#8217;d like to introduce <a href="http://uglyapps.co.uk/nibbble/" title="Nibbble">Nibbble</a> &#8211; an OS X screensaver that fetches and displays Dribbble&#8217;s current popular shots. You can grab it <a href="http://uglyapps.co.uk/nibbble/" title="Nibbble">here</a>.</p>
<p>It&#8217;s a first release, and as such is fairly green. If there&#8217;s enough interest, I&#8217;ll look into adding the ability to enter your Dribbble credentials to optionally show you follower shots. Ironically, I&#8217;m not much of a graphic artist, so the bundle is without an icon. If someone thinks they can cook up something fun, feel free to drop me a line on Twitter @nialgiacomelli. </p>
<p>If you enjoy Nibbble feel free to repay the favour by checking out my upcoming iOS word game <a href="http://lumicongame.com" title="Lumicon">Lumicon</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://nial.me/2012/05/nibbble-a-dribbble-screensaver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Nabatar</title>
		<link>http://nial.me/2012/05/nabatar/</link>
		<comments>http://nial.me/2012/05/nabatar/#comments</comments>
		<pubDate>Sun, 06 May 2012 19:04:13 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Resources]]></category>

		<guid isPermaLink="false">http://nial.me/?p=535</guid>
		<description><![CDATA[More and more, I&#8217;ve found that when I seek out a person online, I&#8217;ll look to their Twitter account as a primary means of communication. Why? Because Twitter affords me an instant snapshot of that person at any given time. I know that if I view a Twitter profile I&#8217;ll inevitably be able to find [...]]]></description>
			<content:encoded><![CDATA[<p>More and more, I&#8217;ve found that when I seek out a person online, I&#8217;ll look to their Twitter account as a primary means of communication. Why? Because Twitter affords me an instant snapshot of that person at any given time. I know that if I view a Twitter profile I&#8217;ll inevitably be able to find that persons website, their current topics of interest and a whole host of other information. </p>
<p>Which is why, when it comes to digital attribution, I&#8217;ll usually opt for a Twitter username (as can be seen <a href="http://nial.me/2009/12/showtime-2/" title="Showtime">here</a>). But the problem I&#8217;ve always faced is finding a nice way to present that information, which is why today I&#8217;m releasing <a href="https://github.com/NialG/Nabatar" title="Nabatar">Nabatar</a>.</p>
<p><a href="https://github.com/NialG/Nabatar" title="Nabatar">Nabatar</a> is a simple jQuery plugin that attempts to put names to faces. It automatically detects the inclusion of Twitter and Facebook usernames in text content and converts those mentions to avatar-embedded profile links.</p>
<p>For more information, check out the projects <a href="https://github.com/NialG/Nabatar" title="Nabatar">Github page</a>:</p>
<blockquote><p>Nabatar is a jQuery extension with a simple premise: put faces next to the names of Twitter and Facebook users you mention on your blog. Mention a Twitter user and Nabatar will convert that text into a profile link along with that users current avatar.</p>
<p>Nabatar aims to be fairly lightweight and easily styled. Checkout nabatar.css for an example of how one might go about styling its output.</p></blockquote>
<p>If you&#8217;ve got any questions, drop me a line: @nialgiacomelli.</p>
]]></content:encoded>
			<wfw:commentRss>http://nial.me/2012/05/nabatar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lessons from Lumicon: Risk vs. reward</title>
		<link>http://nial.me/2012/04/risk-vs-reward/</link>
		<comments>http://nial.me/2012/04/risk-vs-reward/#comments</comments>
		<pubDate>Sat, 21 Apr 2012 18:06:27 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Project]]></category>

		<guid isPermaLink="false">http://nial.me/?p=454</guid>
		<description><![CDATA[It was shortly after sending the second Lumicon beta out to our external testers that we realised we had a difficult decision to make. Things were going fairly well. People had responded positively and we felt we&#8217;d found a core mechanic that worked well and was entertaining. The problem was that people were ending games [...]]]></description>
			<content:encoded><![CDATA[<p>It was shortly after sending the second <a href="http://lumicongame.com" title="Lumicon">Lumicon</a> beta out to our external testers that we realised we had a difficult decision to make. Things were going fairly well. People had responded positively and we felt we&#8217;d found a core mechanic that worked well and was entertaining. The problem was that people were ending games due to fatigue, rather than any kind of mounting difficulty.</p>
<p>It was clear that we had to rethink our approach to difficulty as a whole. But how? The act of assessing difficulty is, in itself, a difficult task. It&#8217;s a relative measure. Something impossible to quantify. So ultimately we cast our attention to the game itself. We asked the question, <em>&#8216;what do we want Lumicon to be?&#8217;</em>. The answer, thankfully, was a little easier to quantify:</p>
<ul>
<li><em>We wanted Lumicon to be accessible, but ultimately frantic.</em></li>
<li><em>We wanted to encourage tactical play.</em></li>
<li><em>We wanted to make it very difficult, but not impossible, to play for a long period of time.</em></li>
</ul>
<p>At its simplest, Lumicon is a game about making words (for those who haven&#8217;t seen any of the in-game shots, they&#8217;re <a href="http://dribbble.com/shots/532023-Lumicon-Reset-Speed/attachments/38184">on Dribbble</a>). You have a gutter at the bottom of the screen that is gradually populated with letters. Much like a game of Scrabble, you must take the letters that arrive and arrange them to form words. If your gutter fills up, the game is lost.</p>
<h3>Approach one: punishing success</h3>
<p>Our initial approach to difficulty revolved solely around the speed at which letters were delivered to a players gutter. The faster letters appeared, the more difficult and frantic the game became. It was a simple mechanic and it worked well. As the player created words and &#8216;popped&#8217; them for points, the speed at which letters appeared would increase. For every 300 points a player scored, the game would move up a notch.</p>
<p>Speeds were capped by bandings that corresponded to the games difficulty level. Each difficulty (Normal, Medium and Hard) would have a minimum and a maximum speed. </p>
<p><a href="http://nial.me/wp-content/uploads/2012/04/lumicon-graph-1.png"><img src="http://nial.me/wp-content/uploads/2012/04/lumicon-graph-1.png" alt="" title="Original Lumicon difficulty" width="600" height="250" /></a></p>
<p>Out of the three criteria listed above, our initial system only satisfied one: <em>the fact that we wanted the game to be accessible, but also frantic</em>. Even then, this was only partly true. New players would often approach the game on its easiest difficulty and report little to no challenge. While our default response was to suggest players try the game at a higher setting, it ultimately left a bad taste in our mouths. </p>
<p>The game, we felt, should become challenging regardless of difficulty level. Instead, because of the banding system we&#8217;d employed, difficulty would often plateau, leaving players in an awkward limbo. Without mounting difficulty it became possible to play indefinitely, which resulted in players growing restless and ultimately fatigued. Often you would simply allow the gutter to fill up as a means of ending your game.</p>
<p>While there were many issues with this first iteration, by far the most worrying was the fact that it completely failed to satisfy our most important criteria: that the game should <em>reward</em> tactical play. Instead, we found that the banding system actively punished skilled players. Because we were incrementing difficulty based on the number of points a player had scored, it was often better to avoid large combos, as they would inevitably lead to more frantic play. </p>
<h3>Approach two: time</h3>
<p>We quickly realised that our banding system wasn&#8217;t to blame for the games difficulty issues. The culprit seemed instead to be the marrying of difficulty to point score. A situation we attempted to rectify by having difficulty increase linearly over a set period of time.</p>
<p><a href="http://nial.me/wp-content/uploads/2012/04/lumicon-graph-2.png"><img src="http://nial.me/wp-content/uploads/2012/04/lumicon-graph-2.png" alt="" title="lumicon-graph-2" width="600" height="250" /></a></p>
<p>It was decided that Normal games would start with a letter spawning rate of 3 seconds. Over the course of a full game, this rate would decrease to a minimum of 1.4 seconds. As we had three difficulty levels, we decided that it should take a player roughly 4 minutes of gameplay before a Normal game &#8216;shifted&#8217; to a speed comparable to that of Medium difficulty.</p>
<p>Which meant that if a player were to start a Normal game they would reach the maximum letter spawn speed of 1.4 seconds in a total time of 12 minutes. Hard players would reach it in 8 minutes, and Advanced in 4.</p>
<p><a href="http://nial.me/wp-content/uploads/2012/04/lumicon-graph-3.png"><img src="http://nial.me/wp-content/uploads/2012/04/lumicon-graph-3.png" alt="" title="Lumicon difficulty graph 3" width="600" height="250" /></a></p>
<p>To make the increase in difficulty as transparent to the user as possible, we implemented a levelling system. Every 45 seconds the players level would increase, along with the letter spawn time. Below is a basic breakdown of the formula used to calculate letter spawn times during each level increase:</p>
<pre class="manual-code">slowestLetterSpawnTime = 3.0;
fastestLetterSpawnTime = 1.4;
timeUntilMaxSpeed = 12*60;
levelDuration = 45;
currentLevel = 0;

speedDiff = slowestLetterSpawnTime - fastestLetterSpawnTime;
speedIncrease = (speedDiff/timeUntilMaxSpeed)*levelDuration;
letterSpawnTime = slowestLetterSpawnTime-(currentLevel*speedIncrease);</pre>
<p>Given that a Normal game takes 12 minutes to reach our maximum level, and that each level takes 45 seconds, we know that there must be a total of 16 levels in a Normal game of Lumicon. </p>
<p>Using the above formula, we can determine the exact letter spawn time at level 11 by first calculating the speed increase per level and then multiplying that amount by our current level.</p>
<pre class="manual-code">speedIncrease = ((3.0-1.4)/720)*45 = 0.099
letterSpawnTime = 3.0-(11*0.099) = 1.9 seconds</pre>
<p>And for the sake of completeness, here&#8217;s the letter spawn time at level 16 for a normal game:</p>
<pre class="manual-code">letterSpawnTime = 3.0-(16*0.099) = 1.4 seconds</pre>
<h3>Mechanics complimenting mechanics</h3>
<p>It&#8217;s astonishing to think that by exchanging one metric (player score) for another (total game time) we were able to dramatically increase the difficulty and depth of our entire game. If we return to our initial list of criteria, we can finally appreciate what the above changes allow us:</p>
<ul>
<li><em>We wanted Lumicon to be accessible, but ultimately frantic.</em> By decoupling player score from difficulty level, and ultimately making difficulty a variable measure, we&#8217;ve made it possible for players of <em>any</em> skill level to start a game of Lumicon at <em>any</em> difficulty and eventually find themselves challenged.</li>
<li><em>We wanted to encourage tactical play</em>. By removing score from the difficulty equation, the entire tactical approach of the game is changed. We&#8217;ve shifted the impetus away from rationing your combos to avoid difficulty increase, to considering large combos early in the game as a sort of &#8216;low hanging fruit&#8217;. You want to score as highly as possible before difficulty ramps up and it&#8217;s far more difficult to do so.</li>
<li><em>We wanted to make it very difficult, but not impossible, to play for a long period of time</em>. While there may ultimately be a select few individuals who find the 1.4 second limit slightly too slow for their liking, we believe the majority of players will find Lumicon&#8217;s max speed to be a state of permanent jeopardy.</li>
</ul>
<p>I can&#8217;t wait to see what people make of it.</p>
]]></content:encoded>
			<wfw:commentRss>http://nial.me/2012/04/risk-vs-reward/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lessons from Lumicon: Design</title>
		<link>http://nial.me/2012/04/lessons-from-lumicon-design/</link>
		<comments>http://nial.me/2012/04/lessons-from-lumicon-design/#comments</comments>
		<pubDate>Sun, 15 Apr 2012 19:30:14 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Project]]></category>

		<guid isPermaLink="false">http://nial.me/?p=420</guid>
		<description><![CDATA[For the past three months I&#8217;ve been working on an iOS word game called Lumicon with a friend of mine, Glynn Smith. The concept for the game came to me on a Saturday morning and I spent a hurried weekend putting together a basic prototype. The concept was simple, and when I sat down to [...]]]></description>
			<content:encoded><![CDATA[<p>For the past three months I&#8217;ve been working on an iOS word game called <a href="http://lumicongame.com" title="Lumicon">Lumicon</a> with a friend of mine, <a href="http://iamglynnsmith.com" title="Glynn Smith">Glynn Smith</a>. The concept for the game came to me on a Saturday morning and I spent a hurried weekend putting together a basic prototype. The concept was simple, and when I sat down to turn it into a prototype I believed it to be fully formed. It still astonishes me just how mistaken I was. </p>
<p>Even in the beginning, putting together that initial prototype, the entire geography of the idea would shift in my mind. The more I thought about my simple concept, the more uncomfortable it became, the more it seemed to swell. Until eventually I realised that what I was looking at wasn&#8217;t a concept at all, but a kaleidoscope of unruly ideas. Each more delicate than the last. Which deserved my attention?</p>
<p>The process of refining those ideas caused me to ultimately reconsider everything I believed about the creative process. Because within my industry, the principles of design and development are approached with a sense of polarity. They are considered as a sort of binary opposition. You are either one, or you are the other. Designers are extrovert, their work is framed so as to be appreciated or scrutinised. Whereas developers are the more introvert souls. Their work is internalised, hidden away behind interface and chrome.</p>
<p>But working on Lumicon helped me to realise that this is largely untrue. It&#8217;s easy to see where this misconception originates. Designers create form, developers function. But the reality is that development is an almost entirely external process. You take a concept, something already fleshed out by design documents and mockups, and you turn it into something tangible. Design is ultimately the more internal process. Like the formation of a diamond, it&#8217;s the act of applying pressure to ideas until something beautiful is formed. It&#8217;s the weighing of options. The solidification of ideas into concepts.</p>
<p>Later, after I&#8217;d put together the initial Lumicon prototype, after I&#8217;d pitched the concept to Glynn and we&#8217;d begun work on it as a fully fledged game, my appreciation for the subtly of game design continued to grow. We would openly discuss design decisions and gameplay obstacles. We would voice our concerns, each giving a sort of &#8216;State of the Union&#8217; speech on the various aspects of the game we were actively involved in. But it was always after these conversations, working independently, that we&#8217;d find time to reflect, to gather our thoughts, and ultimately arrive upon a solution which we would bring to the other.</p>
<p>And the discussions would begin again. Because like a diamond, an idea is often cut rough. It is refined time and time again. But you know what? The game was always better for it.</p>
]]></content:encoded>
			<wfw:commentRss>http://nial.me/2012/04/lessons-from-lumicon-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Calculating screen coordinates from NSView-relative coordinates in Cocoa</title>
		<link>http://nial.me/2012/01/calculating-screen-coordinates-from-view-relative-coordinates-in-cocoa/</link>
		<comments>http://nial.me/2012/01/calculating-screen-coordinates-from-view-relative-coordinates-in-cocoa/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 20:49:16 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Code]]></category>

		<guid isPermaLink="false">http://nial.me/?p=398</guid>
		<description><![CDATA[For a recent release of SpriteRight I set out to integrate snap-to-grid functionality. Unfortunately this required that I calculate screen coordinates from a set of view-relative coordinates. I&#8217;ve decided to make the code I ended up with public in the hope that it avoids someone a little head scratching down the road. It should be [...]]]></description>
			<content:encoded><![CDATA[<p>For a recent release of <a href="http://spriterightapp.com" title="SpriteRight">SpriteRight</a> I set out to integrate snap-to-grid functionality. Unfortunately this required that I calculate screen coordinates from a set of view-relative coordinates. </p>
<p>I&#8217;ve decided to make the code I ended up with public in the hope that it avoids someone a little head scratching down the road. It should be noted that the following code makes use of Oscar Del Ben&#8217;s fantastic <a href="https://github.com/oscardelben/NSScreen-PointConversion" title="NSScreen+PointConversion">NSScreen+PointConversion category</a> to help with determining the active NSScreen and flipping said screens coordinates.</p>
<p>The following code should handle flipped coordinate systems and multi-monitor displays gracefully. Also included is a function to warp the mouse (without simulating any events) to a specified point in screen coordinates.</p>


<div class="wp-geshi-highlight-wrap5"><div class="wp-geshi-highlight-wrap4"><div class="wp-geshi-highlight-wrap3"><div class="wp-geshi-highlight-wrap2"><div class="wp-geshi-highlight-wrap"><div class="wp-geshi-highlight"><div class="objc"><pre class="de1"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">NSPoint</span><span class="br0">&#41;</span>convertToScreenFromLocalPoint<span class="sy0">:</span><span class="br0">&#40;</span><span class="kw4">NSPoint</span><span class="br0">&#41;</span>point relativeToView<span class="sy0">:</span><span class="br0">&#40;</span><span class="kw7">NSView</span> <span class="sy0">*</span><span class="br0">&#41;</span>view
<span class="br0">&#123;</span>
	<span class="kw7">NSScreen</span> <span class="sy0">*</span>currentScreen <span class="sy0">=</span> <span class="br0">&#91;</span><span class="kw7">NSScreen</span> currentScreenForMouseLocation<span class="br0">&#93;</span>;
	<span class="kw1">if</span><span class="br0">&#40;</span>currentScreen<span class="br0">&#41;</span>
	<span class="br0">&#123;</span>
		<span class="kw4">NSPoint</span> windowPoint <span class="sy0">=</span> <span class="br0">&#91;</span>view convertPoint<span class="sy0">:</span>point toView<span class="sy0">:</span><span class="kw2">nil</span><span class="br0">&#93;</span>;
		<span class="kw4">NSPoint</span> screenPoint <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#91;</span>view window<span class="br0">&#93;</span> convertBaseToScreen<span class="sy0">:</span>windowPoint<span class="br0">&#93;</span>;
		<span class="kw4">NSPoint</span> flippedScreenPoint <span class="sy0">=</span> <span class="br0">&#91;</span>currentScreen flipPoint<span class="sy0">:</span>screenPoint<span class="br0">&#93;</span>;
		flippedScreenPoint.y <span class="sy0">+=</span> <span class="br0">&#91;</span>currentScreen frame<span class="br0">&#93;</span>.origin.y;
&nbsp;
		<span class="kw1">return</span> flippedScreenPoint;
	<span class="br0">&#125;</span>
&nbsp;
	<span class="kw1">return</span> NSZeroPoint;
<span class="br0">&#125;</span>
&nbsp;
<span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>moveMouseToScreenPoint<span class="sy0">:</span><span class="br0">&#40;</span><span class="kw4">NSPoint</span><span class="br0">&#41;</span>point
<span class="br0">&#123;</span>
	CGPoint cgPoint <span class="sy0">=</span> NSPointToCGPoint<span class="br0">&#40;</span>point<span class="br0">&#41;</span>;
&nbsp;
	CGSetLocalEventsSuppressionInterval<span class="br0">&#40;</span><span class="nu0">0.0</span><span class="br0">&#41;</span>;
	CGWarpMouseCursorPosition<span class="br0">&#40;</span>cgPoint<span class="br0">&#41;</span>;
	CGSetLocalEventsSuppressionInterval<span class="br0">&#40;</span><span class="nu0">0.25</span><span class="br0">&#41;</span>;
<span class="br0">&#125;</span></pre></div></div></div></div></div></div></div>


]]></content:encoded>
			<wfw:commentRss>http://nial.me/2012/01/calculating-screen-coordinates-from-view-relative-coordinates-in-cocoa/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>App Store rank tracking that (hopefully) doesn&#8217;t suck</title>
		<link>http://nial.me/2012/01/app-store-rank-tracking-that-doesnt-suck/</link>
		<comments>http://nial.me/2012/01/app-store-rank-tracking-that-doesnt-suck/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 21:01:23 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nial.me/?p=392</guid>
		<description><![CDATA[I&#8217;ve recently become fairly obsessed with watching the ebb and flow of App Store rankings. This started recently, following the release of SpriteRight, but has since extended to encompass a number of unrelated applications. Unfortunately I wasn&#8217;t able to find a simple, uncluttered web interface for viewing historic App Store ranking data. Which is why [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve recently become fairly obsessed with watching the ebb and flow of App Store rankings. This started recently, following the release of <a href="http://spriterightapp.com" title="SpriteRight">SpriteRight</a>, but has since extended to encompass a number of unrelated applications.</p>
<p>Unfortunately I wasn&#8217;t able to find a simple, uncluttered web interface for viewing historic App Store ranking data. Which is why I spent this weekend knocking up <a href="http://appstorerank.net" title="AppStoreRank.net">AppStoreRank.net</a>. It&#8217;s a fairly simple site with a fairly simple objective: display data and don&#8217;t piss people off in the process.</p>
<p>I use it to track my <a href="http://appstorerank.net/info/492081694" target="Houdini">own</a> <a href="http://appstorerank.net/info/488584662" title="SpriteRight">applications</a> and to also get an appreciation for just how turbulent ranking can be towards the lower end of the top 100 scale. Hopefully some of you find it interesting too.</p>
]]></content:encoded>
			<wfw:commentRss>http://nial.me/2012/01/app-store-rank-tracking-that-doesnt-suck/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Houdini to appear in the Mac App Store</title>
		<link>http://nial.me/2011/12/houdini-to-appear-in-the-mac-app-store/</link>
		<comments>http://nial.me/2011/12/houdini-to-appear-in-the-mac-app-store/#comments</comments>
		<pubDate>Thu, 29 Dec 2011 14:57:14 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nial.me/?p=380</guid>
		<description><![CDATA[Houdini will soon appear in the Mac App Store. Relax! It&#8217;s still free. This is just a note to say that I will be retiring the currently active Sparkle appcast. Which means that all future updates will be exclusive to the App Store. Edit: Houdini is now available to download.]]></description>
			<content:encoded><![CDATA[<p><a href="http://nial.me/wp-content/uploads/2011/12/256.png"><img src="http://nial.me/wp-content/uploads/2011/12/256.png" alt="" title="Houdini" width="256" height="256" class="aligncenter size-full wp-image-386" /></a></p>
<p><a href="http://uglyapps.co.uk/houdini" title="Houdini">Houdini</a> will soon appear in the Mac App Store. Relax! It&#8217;s still free. This is just a note to say that I will be retiring the currently active Sparkle appcast. Which means that all future updates will be exclusive to the App Store.</p>
<p><strong>Edit:</strong> Houdini is now <a href="http://itunes.apple.com/us/app/houdini/id492081694?ls=1&#038;mt=12" title="Download">available to download</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://nial.me/2011/12/houdini-to-appear-in-the-mac-app-store/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SpriteRight</title>
		<link>http://nial.me/2011/12/spriteright/</link>
		<comments>http://nial.me/2011/12/spriteright/#comments</comments>
		<pubDate>Tue, 27 Dec 2011 16:42:33 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nial.me/?p=369</guid>
		<description><![CDATA[SpriteRight is a spritesheet generator for the Mac that lets you import your existing images or stylesheets. Make your sites load faster, cut bandwidth costs and save time. SpriteRight even generates CSS code on the fly. And best of all, it&#8217;s available now on the Mac App Store.]]></description>
			<content:encoded><![CDATA[<p><a href="http://itunes.apple.com/us/app/spriteright/id488584662?ls=1&amp;mt=12"><img src="http://nial.me/wp-content/uploads/2011/12/icon-0.png" alt="Available now!" title="SpriteRight" width="400" height="300" class="aligncenter size-full wp-image-370" /></a></p>
<p><a href="http://spriterightapp.com" title="SpriteRight">SpriteRight</a> is a spritesheet generator for the Mac that lets you import your existing images or stylesheets. Make your sites load faster, cut bandwidth costs and save time. SpriteRight even generates CSS code on the fly. And best of all, it&#8217;s available now on the <a href="http://itunes.apple.com/us/app/spriteright/id488584662?ls=1&#038;mt=12" title="SpriteRight">Mac App Store</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://nial.me/2011/12/spriteright/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Net neutrality</title>
		<link>http://nial.me/2011/10/net-neutrality/</link>
		<comments>http://nial.me/2011/10/net-neutrality/#comments</comments>
		<pubDate>Tue, 11 Oct 2011 17:29:15 +0000</pubDate>
		<dc:creator>Nial Giacomelli</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://nial.me/?p=366</guid>
		<description><![CDATA[I&#8217;m fairly appalled by todays Orwellian announcement regarding Cameron&#8217;s push to negotiate pornographic filtering as an opt-out service across the UK&#8217;s internet service providers. This is, of course, a fully political move. It has very little to do with pornography and a whole lot to do with a government that is slowly but surely moving [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m fairly appalled by todays Orwellian announcement regarding <a href="http://www.guardian.co.uk/society/2011/oct/11/pornography-internet-service-providers">Cameron&#8217;s push</a> to negotiate pornographic filtering as an opt-out service across the UK&#8217;s internet service providers. This is, of course, a fully political move. It has very little to do with pornography and a whole lot to do with a government that is slowly but surely moving to violate net neutrality. They&#8217;ve chosen a contraband which, by its very nature, people are unlikely to protest. And they&#8217;ve done so under the guise of a moral obligation to young citizens.</p>
<p>The entire situation brings <a href="http://blog.ted.com/2011/05/02/beware-online-filter-bubbles-eli-pariser-on-ted-com/">Eli Pariser&#8217;s</a> talk on filter bubbles back into focus. It&#8217;s a wonderful presentation that really helps to personalise the net neutrality issue.</p>
]]></content:encoded>
			<wfw:commentRss>http://nial.me/2011/10/net-neutrality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
<!-- This Quick Cache file was built for (  nial.me/feed/ ) in 0.12949 seconds, on May 18th, 2012 at 12:06 pm UTC. -->
<!-- This Quick Cache file will automatically expire ( and be re-built automatically ) on May 18th, 2012 at 1:06 pm UTC -->
