<?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>Tom Dalling</title>
	
	<link>http://www.tomdalling.com/blog</link>
	<description>Thoughts of a software developer</description>
	<lastBuildDate>Thu, 17 May 2012 08:35:45 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/TomDalling" /><feedburner:info uri="tomdalling" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Resource Acquisition is Initialisation (RAII) Explained</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/3V8WMewZHSY/resource-acquisition-is-initialisation-raii-explained</link>
		<comments>http://www.tomdalling.com/blog/software-design/resource-acquisition-is-initialisation-raii-explained#comments</comments>
		<pubDate>Thu, 17 May 2012 08:35:45 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[Coding Style/Conventions]]></category>
		<category><![CDATA[Software Design]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/blog/?p=586</guid>
		<description>In the competition to make the worst acronym, RAII probably comes second after HATEOS. Nevertheless, it is an important concept because it allows you to write safer code in C++ &amp;#8212; a harsh, unforgiving language that is all too happy to help you shoot yourself in the foot. This article will explain exception-safety and common [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/3V8WMewZHSY" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/software-design/resource-acquisition-is-initialisation-raii-explained/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/software-design/resource-acquisition-is-initialisation-raii-explained</feedburner:origLink></item>
		<item>
		<title>Adventures Playing SWF Files In OpenGL</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/YU1dAWupHx4/adventures-playing-swf-files-in-opengl</link>
		<comments>http://www.tomdalling.com/blog/random-stuff/adventures-playing-swf-files-in-opengl#comments</comments>
		<pubDate>Sun, 11 Mar 2012 04:56:43 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Random Stuff]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/blog/?p=582</guid>
		<description>A quick video about what I got up to on the weekend.&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/YU1dAWupHx4" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/random-stuff/adventures-playing-swf-files-in-opengl/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/random-stuff/adventures-playing-swf-files-in-opengl</feedburner:origLink></item>
		<item>
		<title>When A Café Is Not A Café – A Short Lesson In Unicode Featuring NSString</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/qchWxMArS2M/when-a-cafe-is-not-a-cafe-a-short-lesson-in-unicode-featuring-nsstring</link>
		<comments>http://www.tomdalling.com/blog/coding-tips/when-a-cafe-is-not-a-cafe-a-short-lesson-in-unicode-featuring-nsstring#comments</comments>
		<pubDate>Thu, 08 Mar 2012 10:38:31 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Coding Tips]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/blog/?p=576</guid>
		<description>Let&amp;#8217;s start with two exotic strings (console output is in the code comments): NSString* apples = NSGetFrenchWord&amp;#40;&amp;#41;; NSString* oranges = NSGetFrenchWord&amp;#40;&amp;#41;; &amp;#160; NSLog&amp;#40;@&amp;#34;apples == '%@'&amp;#34;, apples&amp;#41;; //apples == 'café' NSLog&amp;#40;@&amp;#34;oranges == '%@'&amp;#34;, oranges&amp;#41;; //oranges == 'café' They look identical, but looks can be deceiving. NSLog&amp;#40;@&amp;#34;isEqual? %@&amp;#34;, &amp;#91;apples isEqual:oranges&amp;#93; ? @&amp;#34;YES&amp;#34; : @&amp;#34;NO&amp;#34;&amp;#41;; //isEqual? NO NSLog&amp;#40;@&amp;#34;[apples length] [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/qchWxMArS2M" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/coding-tips/when-a-cafe-is-not-a-cafe-a-short-lesson-in-unicode-featuring-nsstring/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/coding-tips/when-a-cafe-is-not-a-cafe-a-short-lesson-in-unicode-featuring-nsstring</feedburner:origLink></item>
		<item>
		<title>Gotchas With Grand Central Dispatch (libdispatch) And Blocks</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/Qxt364Saag0/gotchas-with-grand-central-dispatch-libdispatch-and-blocks</link>
		<comments>http://www.tomdalling.com/blog/cocoa/gotchas-with-grand-central-dispatch-libdispatch-and-blocks#comments</comments>
		<pubDate>Fri, 02 Mar 2012 07:20:59 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/blog/?p=563</guid>
		<description>GCD is a nice replacement for the old performSelectorInBackground:withObject: and performSelectorOnMainThread:withObject:waitUntilDone: methods and NSOperation. It&amp;#8217;s also a nice supplement to NSThread. However, I think it was over-hyped a little bit by Apple when it was first released. You probably have all these random deadlocks and race conditions and stuff whenever you use multiple threads, but [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/Qxt364Saag0" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/cocoa/gotchas-with-grand-central-dispatch-libdispatch-and-blocks/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/cocoa/gotchas-with-grand-central-dispatch-libdispatch-and-blocks</feedburner:origLink></item>
		<item>
		<title>Const Correctness For NSString (And Pointers In General)</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/ly50JKVLdVw/const-correctness-for-nsstring-and-pointers-in-general</link>
		<comments>http://www.tomdalling.com/blog/coding-tips/const-correctness-for-nsstring-and-pointers-in-general#comments</comments>
		<pubDate>Fri, 16 Dec 2011 01:38:00 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Coding Tips]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/blog/?p=552</guid>
		<description>So you&amp;#8217;re implementing a new notification and you want the name to be a constant. Easy, right? const NSString* VTMyNewNotification; If that&amp;#8217;s how you do constants, you&amp;#8217;re not doing it quite right. Try assign a new value to the alleged constant and watch in horror as the compiler doesn&amp;#8217;t stop you. This is because when [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/ly50JKVLdVw" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/coding-tips/const-correctness-for-nsstring-and-pointers-in-general/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/coding-tips/const-correctness-for-nsstring-and-pointers-in-general</feedburner:origLink></item>
		<item>
		<title>How To Set Up A Secure Git Server At Home (OSX)</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/wNt3U7KrOFo/how-to-set-up-a-secure-git-server-at-home-osx</link>
		<comments>http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx#comments</comments>
		<pubDate>Fri, 03 Dec 2010 00:56:30 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Software Processes]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/blog/?p=525</guid>
		<description>In this article I&amp;#8217;m going to show you, step by step, how to set up an OSX machine to provide secure access to git repositories over the internet via ssh. This was tested on OSX 10.6. github provides git repository hosting with a lovely interface. If github isn&amp;#8217;t feasible, then this article will help you [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/wNt3U7KrOFo" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/software-processes/how-to-set-up-a-secure-git-server-at-home-osx</feedburner:origLink></item>
		<item>
		<title>Using Blocks (i.e. Closures) To Improve Transactional Code</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/m1KcyLnAtls/using-blocks-i-e-closures-to-improve-transactional-code</link>
		<comments>http://www.tomdalling.com/blog/cocoa/using-blocks-i-e-closures-to-improve-transactional-code#comments</comments>
		<pubDate>Sun, 21 Nov 2010 03:35:21 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/blog/?p=509</guid>
		<description>I stumbled across a nice article by Jonathan Dann about using blocks to improve transactional code. When I say &amp;#34;transactional&amp;#34; code, I mean code that has an opening, a middle, and a closing, where the opening and the closing have to be matched. You see it in a few places in Cocoa, such as: KVO: [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/m1KcyLnAtls" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/cocoa/using-blocks-i-e-closures-to-improve-transactional-code/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/cocoa/using-blocks-i-e-closures-to-improve-transactional-code</feedburner:origLink></item>
		<item>
		<title>How Cocoa Bindings Work (via KVC and KVO)</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/cOVMHz28_Dw/how-cocoa-bindings-work-via-kvc-and-kvo</link>
		<comments>http://www.tomdalling.com/blog/cocoa/how-cocoa-bindings-work-via-kvc-and-kvo#comments</comments>
		<pubDate>Fri, 05 Nov 2010 01:41:26 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/blog/?p=490</guid>
		<description>Cocoa bindings can be a little confusing, especially to newcomers. Once you have an understanding of the underlying concepts, bindings aren&amp;#8217;t too hard. In this article, I&amp;#8217;m going to explain the concepts behind bindings from the ground up; first explaining Key-Value Coding (KVC), then Key-Value Observing (KVO), and finally explaining how Cocoa bindings are built [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/cOVMHz28_Dw" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/cocoa/how-cocoa-bindings-work-via-kvc-and-kvo/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/cocoa/how-cocoa-bindings-work-via-kvc-and-kvo</feedburner:origLink></item>
		<item>
		<title>AspectObjectiveC framework 1.0 Release</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/FVSdOXGF6cA/aspectobjectivec-framework-1-0-release</link>
		<comments>http://www.tomdalling.com/blog/cocoa/aspectobjectivec-framework-1-0-release#comments</comments>
		<pubDate>Fri, 29 Oct 2010 05:16:49 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/blog/?p=482</guid>
		<description>I&amp;#8217;ve (finally) released version 1.0 of AOC. I could go on improving it forever, but it&amp;#8217;s good enough to release so I&amp;#8217;m going to set it free in the wild. Give it a spin, tell your neighbors, and let me know what you think. Manual: http://www.tomdalling.com/aoc_doc_mirror/ API Docs: http://www.tomdalling.com/aoc_doc_mirror/api/ Source/project: http://github.com/tomdalling/AspectObjectiveC Download (framework compiled for [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/FVSdOXGF6cA" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/cocoa/aspectobjectivec-framework-1-0-release/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/cocoa/aspectobjectivec-framework-1-0-release</feedburner:origLink></item>
		<item>
		<title>Manufactoria: A Tile-based Programming Game</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/zNwi9mvCRcc/manufactoria-a-tile-based-programming-game</link>
		<comments>http://www.tomdalling.com/blog/random-stuff/manufactoria-a-tile-based-programming-game#comments</comments>
		<pubDate>Mon, 24 May 2010 11:14:00 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Random Stuff]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/?p=439</guid>
		<description>What is a &amp;#8220;tile-based programming game&amp;#8221;? That&amp;#8217;s a very good question. I never dreamt of such a thing until I played Manufactoria today. Be warned: if you&amp;#8217;re not a programmer you will have great difficulty with this game. A picture is worth a thousand lines of code, so I&amp;#8217;ll show you a screenshot from the [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/zNwi9mvCRcc" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/random-stuff/manufactoria-a-tile-based-programming-game/feed</wfw:commentRss>
		<slash:comments>5</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/random-stuff/manufactoria-a-tile-based-programming-game</feedburner:origLink></item>
	</channel>
</rss>

