<?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/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Hot Chocolate</title>
	<atom:link href="http://skuggdev.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://skuggdev.wordpress.com</link>
	<description>Adventures in Cocoa development</description>
	<lastBuildDate>Sun, 09 Jan 2011 15:40:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='skuggdev.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Hot Chocolate</title>
		<link>http://skuggdev.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://skuggdev.wordpress.com/osd.xml" title="Hot Chocolate" />
	<atom:link rel='hub' href='http://skuggdev.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Moved!</title>
		<link>http://skuggdev.wordpress.com/2010/03/07/moved/</link>
		<comments>http://skuggdev.wordpress.com/2010/03/07/moved/#comments</comments>
		<pubDate>Sun, 07 Mar 2010 16:08:14 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=122</guid>
		<description><![CDATA[I have fallen head over heels for Tumblr, and will continue this blog over there. The DNS should update in a few days, if not before. I&#8217;ll see about importing the old posts in there too, but no promises!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=122&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I have fallen head over heels for Tumblr, and will continue this blog over there. The DNS should update in a few days, if not before. I&#8217;ll see about importing the old posts in there too, but no promises!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/122/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/122/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/122/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=122&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2010/03/07/moved/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>
	</item>
		<item>
		<title>1,000,000,000 seconds old</title>
		<link>http://skuggdev.wordpress.com/2009/12/31/1000000000-seconds-old/</link>
		<comments>http://skuggdev.wordpress.com/2009/12/31/1000000000-seconds-old/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 18:08:37 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Hacks]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=120</guid>
		<description><![CDATA[Re-reading Accelerando recently. Throughout the book they dispense with years, months, days, hours and minutes and instead measure longer timespans in Mega and Giga seconds. Personally I find such big numbers hard to deal with, so I converted them to familiar units. What blew me away is the scale of the difference between the two [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=120&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Re-reading <a href="http://www.antipope.org/charlie/accelerando/accelerando.html">Accelerando</a> recently. Throughout the book they dispense with years, months, days, hours and minutes and instead measure longer timespans in Mega and Giga seconds. Personally I find such big numbers hard to deal with, so I converted them to familiar units.  What blew me away is the scale of the difference between the two numbers. A Megasecond is only around 11.5 days, but a Gigasecond is more than 31 years, 9 months and 9 days!</p>
<p>When I realised this I was 31 years and about 7.5 months, and since then I thought the day for me was yesterday. (<a href="http://twitter.com/skugg/status/7211541858">I even noted so on twitter</a>. And Facebook. The shame.) However today I was challenged on it. Since I could not find the program I wrote previously I whipped up a new one. Here it is:</p>
<pre>
#!/usr/bin/perl
use strict;
use warnings;
use DateTime;
my $date = DateTime-&gt;new( time_zone =&gt; 'floating', @ARGV )
	or die "Could not get date from input!";
printf "If your birth date is: %s\n", $date;
for (qw/ 1e6 1e9 /) {
	my $date2 = $date-&gt;clone-&gt;add( seconds =&gt; $_ );
	printf " .. your birth date plus $_ seconds is: %s\n", $date2;
}
printf " .. and you are now %d seconds old\n", (DateTime-&gt;now-&gt;epoch - $date-&gt;epoch);
</pre>
<p>I then texted mom to find out <strong>exactly</strong> when on the day I was born and after a quick response could call the script with the following arguments:</p>
<pre>
./1e9.pl year 1978 month 4 day 24 hour 12 minute 35
</pre>
<p>The output produced is:</p>
<pre>
If your birth date is: 1978-04-24T12:35:00
 .. your birth date plus 1e6 seconds is: 1978-05-06T02:21:40
 .. your birth date plus 1e9 seconds is: 2009-12-31T14:21:40
 .. and you are now 1000012821 seconds old
</pre>
<p>So, it turned out that I either misremembered or miscalculated before: <strong>today</strong> is actually the day when I turned 1,000,000,000 seconds old. Happy 1e9 seconds day to me!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/120/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/120/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/120/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=120&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2009/12/31/1000000000-seconds-old/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>
	</item>
		<item>
		<title>JSON.framework v2.2 released!</title>
		<link>http://skuggdev.wordpress.com/2009/05/31/json-framework-v2-2-released/</link>
		<comments>http://skuggdev.wordpress.com/2009/05/31/json-framework-v2-2-released/#comments</comments>
		<pubDate>Sun, 31 May 2009 14:34:43 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Framework]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=114</guid>
		<description><![CDATA[I am proud to present version 2.2 of JSON.framework, the strict JSON parser/generator for Cocoa and the iPhone. You can get the latest version from the download page. Here are the more significant changes from the 2.1 series: New, fresh API&#8212;particularly for errors Extracted the SBJsonWriter and SBJsonParser classes from the SBJSON class. These present [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=114&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I am proud to present version 2.2 of <a href="http://code.google.com/p/json-framework/">JSON.framework</a>, the strict JSON parser/generator for Cocoa and the iPhone. You can get the latest version from <a href="http://code.google.com/p/json-framework/downloads/list">the download page</a>.</p>
<p>Here are the more significant changes from the 2.1 series:</p>
<ul>
<li><strong>New, fresh API&mdash;particularly for errors</strong>
<p>Extracted the SBJsonWriter and SBJsonParser classes from the SBJSON class. These present a fresh, simple API. If a method returns nil, you can now simply call a method to get an array of NSError objects containing the error trace.</p>
<p>The SBJSON class is now a facade, implementing its old interface by forwarding messages to instances of the new classes. Additionally, the facade also implements the new simplified interface of the SBJsonWriter and SBJsonParser classes.</p>
<p>The category methods on Foundation objects have also been re-implemented more efficiently in terms of the new objects. In case of error in these methods now print the full trace to the log, rather than just the top-level error.
</li>
<li><strong>Support for JSON representation of custom objects</strong>
<p>If you implement the <code>-proxyForJson</code> method in a custom class (either directly or as category) this now enables JSON.framework to create a JSON representation for objects of that type. See the <a href="http://code.google.com/p/json-framework/source/browse/branches/2.2/Tests/ProxyTest.m">ProxyTest.m</a> file for more information on how this works.
</li>
<li><strong>Deprecated fragment-based methods</strong>
<p>The fragment-based methods are an extension to the JSON spec that does not belong in a strict JSON parser/generator. They were originally implemented to ease testing, but the tests should rather be rewritten not to need them. For the time being they are still included, but will be removed in the 2.3.x line.
</li>
<li><strong>Updated the iPhone SDK</strong>
<p>The iPhone SDK has had some updates to address problems some people were seeing. It has been updated to be based on iPhoneOS v2.2.1.
</li>
<li><strong>Fix crash on recursive structures</strong>
<p>Implemented the <code>maxDepth</code> setting for writing JSON. This defaults to 512 and means the framework won&#8217;t crash if its is fed a recursive (or extremely deeply nested) structure.
</li>
<li><strong>Documentation updates</strong>
<p>Simplified the installation instructions, particularly for the iPhone.</p>
<p>In the API documentation classes now inherit documentation from their superclasses and the protocols they implement.
</li>
<li><strong>Miscellaneous</strong>
<p>Fixed some warnings reported by the Clang static analyser.</p>
<p>Added a Changes file and updated the Credits.
</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/114/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/114/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/114/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=114&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2009/05/31/json-framework-v2-2-released/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>
	</item>
		<item>
		<title>Doxygen and API docs in Subversion</title>
		<link>http://skuggdev.wordpress.com/2009/05/17/doxygen-and-api-docs-in-subversion/</link>
		<comments>http://skuggdev.wordpress.com/2009/05/17/doxygen-and-api-docs-in-subversion/#comments</comments>
		<pubDate>Sun, 17 May 2009 10:23:58 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Versioning]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=109</guid>
		<description><![CDATA[For one of my projects I have just started checking generated API documentation into Subversion. This has a few benefits: I don&#8217;t need separate hosting for the generated API documentation. The API documentation benefits from whatever versioning scheme you adopt in Subversion. By hooking the script into your release process you can make sure that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=109&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>For one of my projects I have just started checking <a href="http://json-framework.googlecode.com/svn/branches/2.2/documentation/index.html">generated API documentation</a> into Subversion. This has a few benefits:</p>
<ul>
<li>I don&#8217;t need separate hosting for the generated API documentation.</li>
<li>The API documentation benefits from whatever versioning scheme you adopt in Subversion.</li>
<li>By hooking the script into your release process you can make sure that the documentation is always up to date.</li>
</ul>
<p>However, there&#8217;s a couple of things that may snag you too:</p>
<ul>
<li>It requires that your Subversion repository is available over HTTP.</li>
<li>You have to set the mime-type of the various file types correctly. Otherwise you just get the raw content of each file.</li>
<li>You have to deal with adding and removing files when the documentation changes.</li>
<li>Doxygen puts a timestamp in every file so every time you regenerate the documentation <em>all</em> the files will appear to have changed. That&#8217;s a lot of unnecessary updates if you&#8217;re barely tweaking the version number for a patch release.</li>
</ul>
<p>If you&#8217;re using <a href="http://code.google.com/">Google Code</a> your repository is already available over HTTP. The below script snippet deals with the remaining issues. It assumes that you have already run Doxygen and generated documentation in <code>/tmp/doxygen</code>, and that you are running it from your Subversion checkout, and that the directory that contains the  API documentation is called <code>apidocs</code>.</p>
<p><code>
<pre>
rm -f apidocs/*
cp -p /tmp/doxygen/html/* apidocs
cd apidocs

# Revert files that only has one line removed
# and one added. They differ only in the timestamp.
svn diff *.html \
	| diffstat \
	| awk '$3 == 2 { print $1 }' \
	| xargs svn revert

# Add/remove files from subversion.
svn st | awk '
    $1 == "?" { print "svn add", $2 }
    $1 == "!" { print "svn delete",  $2 }
' | sh -

# Set mime-types so files display properly
# rather than just display their raw content.
svn propset svn:mime-type text/html *.html
svn propset svn:mime-type text/css *.css
svn propset svn:mime-type image/png *.png
svn propset svn:mime-type image/gif *.gif
</pre>
<p></code></p>
<p>Notice that it doesn&#8217;t actually submit the changes, so you can verify that the generated documentation looks like you want it to before you check it in.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/109/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/109/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/109/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=109&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2009/05/17/doxygen-and-api-docs-in-subversion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>
	</item>
		<item>
		<title>iTunes Genius fail</title>
		<link>http://skuggdev.wordpress.com/2009/05/11/itunes-genius-fail/</link>
		<comments>http://skuggdev.wordpress.com/2009/05/11/itunes-genius-fail/#comments</comments>
		<pubDate>Mon, 11 May 2009 10:04:04 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=107</guid>
		<description><![CDATA[Words don&#8217;t do it justice, so here&#8217;s a picture:<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=107&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Words don&#8217;t do it justice, so here&#8217;s a picture:</p>
<p><img src="http://skuggdev.files.wordpress.com/2009/05/genius-fail.png?w=629&#038;h=345" alt="genius-fail.png" border="0" width="629" height="345" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/107/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/107/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/107/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=107&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2009/05/11/itunes-genius-fail/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>

		<media:content url="http://skuggdev.files.wordpress.com/2009/05/genius-fail.png" medium="image">
			<media:title type="html">genius-fail.png</media:title>
		</media:content>
	</item>
		<item>
		<title>JSON framework 2.2 in the pipeline</title>
		<link>http://skuggdev.wordpress.com/2009/04/12/json-framework-22-in-the-pipeline/</link>
		<comments>http://skuggdev.wordpress.com/2009/04/12/json-framework-22-in-the-pipeline/#comments</comments>
		<pubDate>Sun, 12 Apr 2009 12:37:09 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=104</guid>
		<description><![CDATA[I&#8217;ve refactored the internals and provided a bit more convenient interface for getting at errors in Subversion trunk. (For example, you can now get a whole stack of errors in one go.) Updated API documentation is checked in to the repository and is available at http://json-framework.googlecode.com/svn/trunk/documentation/index.html. What I haven&#8217;t tackled properly yet is the installation [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=104&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve refactored the internals and provided a bit more convenient interface for getting at errors in Subversion trunk. (For example, you can now get a whole stack of errors in one go.) Updated API documentation is checked in to the repository and is available at <a href="http://json-framework.googlecode.com/svn/trunk/documentation/index.html">http://json-framework.googlecode.com/svn/trunk/documentation/index.html</a>. What I haven&#8217;t tackled properly yet is the installation issues, particularly on the iPhone. I&#8217;m a bit at a loss how to solve that still. Suggestions welcome!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/104/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/104/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/104/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=104&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2009/04/12/json-framework-22-in-the-pipeline/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>
	</item>
		<item>
		<title>Mail.app hissy fit</title>
		<link>http://skuggdev.wordpress.com/2009/04/07/mailapp-hissy-fit/</link>
		<comments>http://skuggdev.wordpress.com/2009/04/07/mailapp-hissy-fit/#comments</comments>
		<pubDate>Tue, 07 Apr 2009 20:19:26 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=102</guid>
		<description><![CDATA[I managed to get Mail.app into a hissy fit. I&#8217;ve transferred all my mail to GMail, by the act of dragging mail from my old imap account into the GMail one. It barfed on one email from my aunt, that had several huge pictures in it, timing out over and over while Mail.app would diligently [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=102&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I managed to get Mail.app into a hissy fit. I&#8217;ve transferred all my mail to GMail, by the act of dragging mail from my old imap account into the GMail one. It barfed on one email from my aunt, that had several huge pictures in it, timing out over and over while Mail.app would diligently retry again and again. That got it into the state that you see below (honestly, I don&#8217;t get <strong>that</strong> much mail):</p>
<div style="text-align:center;"><img src="http://skuggdev.files.wordpress.com/2009/04/picture-3.png?w=516&#038;h=188" alt="Picture 3.png" border="0" width="516" height="188" /></div>
<p>The GMail web interface showed that &#8220;enough&#8221; mail had made it over. (All apart from that message, I believe.) So the solution was simply to kill that account from Mail.app, and recreate it immediately. Problem solved instantly.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/102/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/102/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/102/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=102&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2009/04/07/mailapp-hissy-fit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>

		<media:content url="http://skuggdev.files.wordpress.com/2009/04/picture-3.png" medium="image">
			<media:title type="html">Picture 3.png</media:title>
		</media:content>
	</item>
		<item>
		<title>Phage v1.0 teaser</title>
		<link>http://skuggdev.wordpress.com/2008/10/16/phage-v10-teaser/</link>
		<comments>http://skuggdev.wordpress.com/2008/10/16/phage-v10-teaser/#comments</comments>
		<pubDate>Thu, 16 Oct 2008 19:51:45 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Game]]></category>
		<category><![CDATA[Phage]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=99</guid>
		<description><![CDATA[Having primarily written libraries and back-end code so far in my career, I&#8217;ve decided to knuckle down and learn how to create decent GUIs. I enjoy mucking about with games so revisiting Phage, an abstract strategy game I wrote last year, seems an apt exercise. It&#8217;s only at version 0.2.1 and the low version number [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=99&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Having primarily written libraries and back-end code so far in my career, I&#8217;ve decided to knuckle down and learn how to create decent GUIs.</p>
<p>I enjoy mucking about with games so revisiting <a href="http://code.brautaset.org/Phage/">Phage</a>, an abstract strategy game I wrote last year, seems an apt exercise. It&#8217;s only at version 0.2.1 and the low version number reflects the clunkiness of the UI. I&#8217;m going to give this game a complete overhaul for version 1.0, and this time I&#8217;m not taking UI short-cuts. Here&#8217;s a screen shot of the work in progress:</p>
<div style="text-align:center;"><img src="http://skuggdev.files.wordpress.com/2008/10/picture-5.png?w=486&#038;h=315" alt="Picture 5.png" border="0" width="486" height="315" /></div>
<p>I&#8217;m using <a href="http://en.wikipedia.org/wiki/Core_Animation">Core Animation</a> to do the visual elements of the game. It took some time before I managed to wrap my head around how to make a <a href="http://devblog.brautaset.org/2008/10/01/calayer-grid-with-caconstraintlayoutmanager/">re-sizeable grid of CALayer instances</a>, but once I <em>finally</em> did the rest has been pretty smooth sailing. It&#8217;s really satisfying resizing the window and see the graphics smoothly scale up or down!</p>
<p>Looking at the source of the <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://developer.apple.com/samplecode/GeekGameBoard/index.html">GeekGameBoard</a> example project from Apple has been a huge help. It&#8217;s a bit hard to follow sometimes as it actually implements five quite diverse games but it is full of gold nuggets. I don&#8217;t like its tight coupling between the UI and the game logic, however, and I&#8217;m currently working on cleanly marrying my shiny CALayer based View to my Model classes.</p>
<p>Psst: I&#8217;m planning to also release this on the iPhone. I&#8217;ll announce it here when I do, so if you&#8217;re interested: keep checking back!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/99/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/99/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/99/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=99&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2008/10/16/phage-v10-teaser/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>

		<media:content url="http://skuggdev.files.wordpress.com/2008/10/picture-5.png" medium="image">
			<media:title type="html">Picture 5.png</media:title>
		</media:content>
	</item>
		<item>
		<title>Creating a CALayer grid using CAConstraintLayoutManager</title>
		<link>http://skuggdev.wordpress.com/2008/10/01/calayer-grid-with-caconstraintlayoutmanager/</link>
		<comments>http://skuggdev.wordpress.com/2008/10/01/calayer-grid-with-caconstraintlayoutmanager/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 22:39:20 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=81</guid>
		<description><![CDATA[The last few days I&#8217;ve been poring over the Core Animation Programming Guide. In particular, I&#8217;ve been trying to figure out how to create a grid of equally-sized cells. My initial attempt just saw me calculating the frames for each cell in the grid manually, and explicitly setting the frame for each cell. This worked, [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=81&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>The last few days I&#8217;ve been poring over the <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://developer.apple.com/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html">Core Animation Programming Guide</a>. In particular, I&#8217;ve been trying to figure out how to create a grid of equally-sized cells. My initial attempt just saw me calculating the frames for each cell in the grid manually, and explicitly setting the frame for each cell. This worked, after a fashion, but was pretty ugly. And, if I resized the grid the cells didn&#8217;t follow.</p>
<p>Enter <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://developer.apple.com/documentation/GraphicsImaging/Reference/CAConstraintLayoutManager_class/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004498-CH1">CAConstraintLayoutManager</a>. I initially tried to constrain each cell to neighbouring cells, and to the super layer for the &#8220;outer&#8221; cells. Not only was this messy; I <a onclick="return mugicPopWin(this,event);" oncontextmenu="mugicRightClick(this);" href="http://lists.apple.com/archives/quartz-dev/2008/Sep/msg00044.html">couldn&#8217;t make it work</a> at all&mdash;not even with a 1 by 5 &#8220;grid&#8221;. I suspect that the layout manager is getting a bit confused because I don&#8217;t specify the size of any dimension of any cell.</p>
<p>Then I discovered the scale-argument form of the <code>NSConstraint</code>. With this I can specify the size of a cell and its position in the grid only in terms of the super layer. This is <strong>much</strong> much simpler. Have a look at the example code below. Paste it into a custom view, and it should display a gray grid on a pleasant blue background:</p>
<pre>
- (void)awakeFromNib {
    self.wantsLayer = YES;
    CALayer *grid = self.layer;

    grid.backgroundColor = CGColorCreateGenericRGB(0.1, 0.1, 0.4, .8);
    grid.layoutManager = [CAConstraintLayoutManager layoutManager];

    int rows = 8;
    int columns = 8;

    for (int r = 0; r &lt; rows; r++) {
        for (int c = 0; c &lt; columns; c++) {
            CALayer *cell = [CALayer layer];
            cell.borderColor = CGColorCreateGenericGray(0.8, 0.8);
            cell.borderWidth = 1;
            cell.cornerRadius = 4;
            cell.name = [NSString stringWithFormat:@"%u@%u", c, r];

            [cell addConstraint:
             [CAConstraint constraintWithAttribute: kCAConstraintWidth
                                        relativeTo: @"superlayer"
                                         attribute: kCAConstraintWidth
                                             scale: 1.0 / columns
                                            offset: 0]];

            [cell addConstraint:
             [CAConstraint constraintWithAttribute: kCAConstraintHeight
                                        relativeTo: @"superlayer"
                                         attribute: kCAConstraintHeight
                                             scale: 1.0 / rows
                                            offset: 0]];

            [cell addConstraint:
             [CAConstraint constraintWithAttribute: kCAConstraintMinX
                                        relativeTo: @"superlayer"
                                         attribute: kCAConstraintMaxX
                                             scale: c / (float)columns
                                            offset: 0]];

            [cell addConstraint:
             [CAConstraint constraintWithAttribute: kCAConstraintMinY
                                        relativeTo: @"superlayer"
                                         attribute: kCAConstraintMaxY
                                             scale: r / (float)rows
                                            offset: 0]];

            [grid addSublayer:cell];
        }
    }
}
</pre>
<p><del>Things aren&#8217;t so simple if you want to have some spacing between the cells. I suspect you have to pack a cell within an intermediate CALayer, or add some custom drawing to each cell to draw the border a bit inset from the edge of the cell.</del></p>
<p><strong>Update:</strong> It turns out that using this method to create a grid with spacing between the cells is not much harder after all. The below replacements for the constraints above give you a 2-pixel spacing between the tiles. I&#8217;ve highlighted the differences in <strong>bold text</strong>.</p>
<pre>
[cell addConstraint:
 [CAConstraint constraintWithAttribute: kCAConstraintWidth
                            relativeTo: @"superlayer"
                             attribute: kCAConstraintWidth
                                 scale: 1.0 / columns
                                offset: <strong>-2</strong>]];

[cell addConstraint:
 [CAConstraint constraintWithAttribute: kCAConstraintHeight
                            relativeTo: @"superlayer"
                             attribute: kCAConstraintHeight
                                 scale: 1.0 / rows
                                offset: <strong>-2</strong>]];

[cell addConstraint:
 [CAConstraint constraintWithAttribute: <strong>kCAConstraintMidX</strong>
                            relativeTo: @"superlayer"
                             attribute: kCAConstraintMaxX
                                 scale: <strong>(c + 0.5)</strong> / (float)columns
                                offset: 0]];

[cell addConstraint:
 [CAConstraint constraintWithAttribute: <strong>kCAConstraintMidY</strong>
                            relativeTo: @"superlayer"
                             attribute: kCAConstraintMaxY
                                 scale: <strong>(r + 0.5)</strong> / (float)rows
                                offset: 0]];
</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/81/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/81/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/81/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=81&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2008/10/01/calayer-grid-with-caconstraintlayoutmanager/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>
	</item>
		<item>
		<title>JSON Framework 2.1</title>
		<link>http://skuggdev.wordpress.com/2008/08/30/json-framework-21/</link>
		<comments>http://skuggdev.wordpress.com/2008/08/30/json-framework-21/#comments</comments>
		<pubDate>Sat, 30 Aug 2008 17:23:12 +0000</pubDate>
		<dc:creator>skugg</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[JSON]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Releases]]></category>

		<guid isPermaLink="false">http://skuggdev.wordpress.com/?p=58</guid>
		<description><![CDATA[I just uploaded JSON framework version 2.1 to Google Code. Changes since the 2.0 series, big and small, include: iPhone-ready SDK The disk image now contains a Custom SDK. This makes the framework a lot easier to use on the iPhone. See the INSTALL file in the dmg for details. New sortKeys option This makes [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=58&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img src="http://skuggdev.files.wordpress.com/2008/08/json211.png?w=371&#038;h=144" alt="JSON2.1.png" border="0" width="371" height="144" align="right" />I just uploaded <a href="http://json-framework.googlecode.com/files/JSON_2.1.dmg">JSON framework version 2.1</a> to Google Code. Changes since the 2.0 series, big and small, include:</p>
<p><strong>iPhone-ready SDK</strong><br />
The disk image now contains a Custom SDK. This makes the framework a lot easier to use on the iPhone. See the INSTALL file in the dmg for details.</p>
<p><strong>New sortKeys option</strong><br />
This makes the generator produce objects with the keys in sorted order. This is very handy when you need to compare JSON documents.</p>
<p><strong>Leopard only</strong><br />
From version 2.1 onwards this framework is Leopard-only. Stick with version 2.0 if you need Tiger support. Some of the Objective-C 2.0 features are just <em>too shiny</em> to pass up for long. Some of the changes related to this:</p>
<ul>
<li><strong>64 bit support</strong><br />
The JSON framework now supports 64 bit. Moved to use the 10.5 64-bit compatibility typedefs for basic types.</p>
</li>
<li><strong>Garbage collection support</strong><br />
The framework is now built with garbage collection support by default.</p>
</li>
<li><strong>Syntesized properties</strong><br />
Killed some redundant code by moving to use synthesised properties.</p>
</li>
<li><strong>Fast iteration loops</strong><br />
Update the code to use Objective-C 2.0 fast iteration loops in a couple of places.
</li>
</ul>
<p><strong>Removed deprecated methods</strong><br />
Removed the option-taking category methods, as promised in v2.0. Rewrote some tests to use the underlying object instead.</p>
<p><strong>New error code</strong><br />
Introduced a new error code for clarity: EEOF &#8211; premature end of input.</p>
<p><strong>Documentation target</strong><br />
Added a documentation target to integrate the documentation into Xcode automatically.</p>
<br /><img alt="" border="0" src="http://feeds.wordpress.com/1.0/categories/skuggdev.wordpress.com/58/" /> <img alt="" border="0" src="http://feeds.wordpress.com/1.0/tags/skuggdev.wordpress.com/58/" /> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/skuggdev.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/skuggdev.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/skuggdev.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/skuggdev.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/skuggdev.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/skuggdev.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/skuggdev.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/skuggdev.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/skuggdev.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/skuggdev.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/skuggdev.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/skuggdev.wordpress.com/58/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/skuggdev.wordpress.com/58/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/skuggdev.wordpress.com/58/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=skuggdev.wordpress.com&amp;blog=564035&amp;post=58&amp;subd=skuggdev&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://skuggdev.wordpress.com/2008/08/30/json-framework-21/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/f83cfcc2713f34cf9db3f6488383cee1?s=96&#38;d=identicon&#38;r=X" medium="image">
			<media:title type="html">skugg</media:title>
		</media:content>

		<media:content url="http://skuggdev.files.wordpress.com/2008/08/json211.png" medium="image">
			<media:title type="html">JSON2.1.png</media:title>
		</media:content>
	</item>
	</channel>
</rss>
