<?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>Fri, 16 Dec 2011 04:41:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.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>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>6</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>1</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>
		<item>
		<title>Why performSelector: Is More Dangerous Than I Thought</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/YMibcevHj0U/why-performselector-is-more-dangerous-than-i-thought</link>
		<comments>http://www.tomdalling.com/blog/cocoa/why-performselector-is-more-dangerous-than-i-thought#comments</comments>
		<pubDate>Fri, 14 May 2010 07:22:05 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/?p=425</guid>
		<description>I fixed a rather nasty bug today in AspectObjectiveC. One particular unit test would crash with EXC_BAD_ACCESS every time. After learning far more about registers and ABIs than I ever wanted to know (thanks, Greg Parker), it dawned on me that performSelector: was corrupting memory. It was particularly hard to track down because the crash [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/YMibcevHj0U" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/cocoa/why-performselector-is-more-dangerous-than-i-thought/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/cocoa/why-performselector-is-more-dangerous-than-i-thought</feedburner:origLink></item>
		<item>
		<title>For those who have never used Objective C</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/TBLsZhtlAxI/for-those-who-have-never-used-objective-c</link>
		<comments>http://www.tomdalling.com/blog/coding-styleconventions/for-those-who-have-never-used-objective-c#comments</comments>
		<pubDate>Wed, 28 Apr 2010 02:02:33 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Coding Style/Conventions]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/?p=411</guid>
		<description>There is one feature of the Objective C language that I really love: the method naming. Let me explain with an example. Here is a nasty call to a C function from the Win32 API that has 12 arguments: hwnd = CreateWindowEx&amp;#40;WS_EX_LAYERED, TEXT&amp;#40;&amp;#34;Hello&amp;#34;&amp;#41;, TEXT&amp;#40;&amp;#34;World&amp;#34;&amp;#41;, WS_OVERLAPPEDWINDOW, 10, 10, 400, 400, NULL, NULL, hInstance, NULL&amp;#41;; Pick an [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/TBLsZhtlAxI" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/coding-styleconventions/for-those-who-have-never-used-objective-c/feed</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/coding-styleconventions/for-those-who-have-never-used-objective-c</feedburner:origLink></item>
		<item>
		<title>Video: AspectObjectiveC In Five Minutes</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/5XiYVf8_qUw/video-aspectobjectivec-in-five-minutes</link>
		<comments>http://www.tomdalling.com/blog/cocoa/video-aspectobjectivec-in-five-minutes#comments</comments>
		<pubDate>Sat, 20 Mar 2010 16:17:26 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/?p=392</guid>
		<description>Here&amp;#8217;s a quick video about AspectObjectiveC, and what it can do. The code is available from github. I should also mention that AspectObjectiveC isn&amp;#8217;t ready for release just yet.&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/5XiYVf8_qUw" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/cocoa/video-aspectobjectivec-in-five-minutes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/cocoa/video-aspectobjectivec-in-five-minutes</feedburner:origLink></item>
		<item>
		<title>Side Project: AspectObjectiveC</title>
		<link>http://feedproxy.google.com/~r/TomDalling/~3/2r5vzRecHsA/side-project-aspectobjectivec</link>
		<comments>http://www.tomdalling.com/blog/cocoa/side-project-aspectobjectivec#comments</comments>
		<pubDate>Thu, 11 Mar 2010 15:49:39 +0000</pubDate>
		<dc:creator>Tom</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.tomdalling.com/?p=388</guid>
		<description>I&amp;#8217;ve started a new side project called AspectObjectiveC on github. It&amp;#8217;s a little aspect-oriented programming framework for objective-c. In a nutshell, it allows you to run arbitrary code before, after, or instead of any method at runtime. You can modify arguments before they enter the method, modify the return value of the method, or completely [...]&lt;img src="http://feeds.feedburner.com/~r/TomDalling/~4/2r5vzRecHsA" height="1" width="1"/&gt;</description>
		<wfw:commentRss>http://www.tomdalling.com/blog/cocoa/side-project-aspectobjectivec/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://www.tomdalling.com/blog/cocoa/side-project-aspectobjectivec</feedburner:origLink></item>
	</channel>
</rss>

