<?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>fibre~thread</title>
	<atom:link href="http://www.fibrethread.com/blog/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://www.fibrethread.com/blog</link>
	<description>blasphemy against the hackneyed</description>
	<lastBuildDate>Wed, 12 May 2010 03:00:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Cappuccino Machine</title>
		<link>http://www.fibrethread.com/blog/?p=95</link>
		<comments>http://www.fibrethread.com/blog/?p=95#comments</comments>
		<pubDate>Wed, 12 May 2010 03:00:43 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=95</guid>
		<description><![CDATA[I would call this post: &#8220;In a realm of all things cool Cappucino starts to rule&#8221;. I&#8217;ve noticed the framework a while ago but never quite had the time to sit down and start writing the &#8220;Hello World&#8221;. In my (graphics developer) vernacular that would be an animated &#8216;dot&#8217; running around in circles. Here it [...]]]></description>
			<content:encoded><![CDATA[<p>I would call this post: &#8220;In a realm of all things cool <a href="http://cappuccino.org/">Cappucino</a> starts to rule&#8221;. I&#8217;ve noticed the framework a while ago but never quite had the time to sit down and start writing the &#8220;Hello World&#8221;. In my (graphics developer) vernacular that would be an animated &#8216;dot&#8217; running around in circles. <a href="/CappucinoCode/NewApplication/">Here it goes&#8230;</a> a bit slow, but does the job. I imagine it easy enough to improve the speed the animation by layer-backing the &#8216;dot&#8217;. Enjoy..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=95</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A subtlety of object identity in Obj-C</title>
		<link>http://www.fibrethread.com/blog/?p=90</link>
		<comments>http://www.fibrethread.com/blog/?p=90#comments</comments>
		<pubDate>Fri, 26 Feb 2010 19:02:31 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=90</guid>
		<description><![CDATA[A problem: given an object a of class A that aggregates a publicly accessible instance of class B determine if an instance changed by polling periodically. This comes up often in concurrent systems where an object change warrants a response while KVO is undesirable. The first thought that comes to mind is to a cache [...]]]></description>
			<content:encoded><![CDATA[<p>A problem: given an object <strong>a</strong> of class <strong>A</strong> that aggregates a publicly accessible instance of class <strong>B</strong> determine if an instance changed by polling periodically. This comes up often in concurrent systems where an object change warrants a response while KVO is undesirable. The first thought that comes to mind is to a cache the instance of B during each cycle of polling after the comparison of the cached instance to the present value.</p>
<p>Our code might look like this</p>
<div class="codecolorer-container text mac-classic" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">if (cachedB != [a valueOfB]) { triggerEvent(...); }<br />
cachedB = [a valueOfB];</div></div>
<p>Unfortunately this fails miserable due to the fact that a newly allocated instance of <strong>B</strong> may occupy the same memory location as the previous one (assuming, of course, that we never retain the cached value). This is a low probability failure and is extremely hard to debug. This bug is solved by storing a timestamp upon change of instance of <strong>B</strong> inside <strong>a</strong>, and<strong> </strong>cacheing it instead of the memory address.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=90</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Joy</title>
		<link>http://www.fibrethread.com/blog/?p=87</link>
		<comments>http://www.fibrethread.com/blog/?p=87#comments</comments>
		<pubDate>Wed, 24 Feb 2010 21:49:15 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Poetry]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=87</guid>
		<description><![CDATA[Authentic joy is everlasting A thing that freely permeates As born in hearts of lovers lusting So nascent is when we create It hides itself in child&#8217;s smile In ray-ing clouds of sunrise It so resides in every shining Of every memorable time]]></description>
			<content:encoded><![CDATA[<p>Authentic joy is everlasting<br />
A thing that freely permeates<br />
As born in hearts of lovers lusting<br />
So nascent is when we create</p>
<p>It hides itself in child&#8217;s smile<br />
In ray-ing clouds of sunrise<br />
It so resides in every shining<br />
Of every memorable time</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=87</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>@rpath</title>
		<link>http://www.fibrethread.com/blog/?p=85</link>
		<comments>http://www.fibrethread.com/blog/?p=85#comments</comments>
		<pubDate>Wed, 10 Feb 2010 02:36:19 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=85</guid>
		<description><![CDATA[Leopard and (Sno) have a new way of specifying deployment location of a dynamic lib. Follow this link for an in depth explanation.]]></description>
			<content:encoded><![CDATA[<p>Leopard and (Sno) have a new way of specifying deployment location of a dynamic lib. Follow <a href="http://http://www.dribin.org/dave/blog/archives/2009/11/15/rpath/">this</a> link for an in depth explanation.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=85</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Command line is your friend :)</title>
		<link>http://www.fibrethread.com/blog/?p=77</link>
		<comments>http://www.fibrethread.com/blog/?p=77#comments</comments>
		<pubDate>Wed, 10 Feb 2010 00:44:14 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=77</guid>
		<description><![CDATA[A nifty command &#160;python -m SimpleHTTPServer will start serving the current directory on port 8000. Seems like a cute alternative to broken iChat transfers&#8230; found it here among other cute Linux miscellanea. When in doubt about missing symbols during linking nm &#60;filename&#62; can be an invaluable asset. When struggling with questions about architectures of a binary [...]]]></description>
			<content:encoded><![CDATA[<p>A nifty command <code class="codecolorer text mac-classic"><span class="text">&nbsp;python -m SimpleHTTPServer</span></code> will start serving the current directory on port 8000. Seems like a cute alternative to broken iChat transfers&#8230; found it <a href="http://www.pixelbeat.org/cmdline.html">here</a> among other cute Linux miscellanea.</p>
<p>When in doubt about missing symbols during linking <code class="codecolorer text mac-classic"><span class="text">nm &lt;filename&gt;</span></code> can be an invaluable asset. When struggling with questions about architectures of a binary <code class="codecolorer text mac-classic"><span class="text">otool -vf &lt;filename&gt;</span></code> is the there to help.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=77</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Examining view hierarchy at runtime</title>
		<link>http://www.fibrethread.com/blog/?p=29</link>
		<comments>http://www.fibrethread.com/blog/?p=29#comments</comments>
		<pubDate>Tue, 01 Sep 2009 07:08:47 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=29</guid>
		<description><![CDATA[If ever in need to examine a view hierarchy at runtime HTViewHierarchy is your friend. It is a superb reverse engineering tool. F-Script can be used to this end to a degree, but sometimes one just needs a hierarchy browser.]]></description>
			<content:encoded><![CDATA[<p>If ever in need to examine a view hierarchy at runtime HTViewHierarchy is your friend. It is a superb reverse engineering tool. F-Script can be used to this end to a degree, but sometimes one just needs a hierarchy browser.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=29</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Modifying dynamic linker paths</title>
		<link>http://www.fibrethread.com/blog/?p=28</link>
		<comments>http://www.fibrethread.com/blog/?p=28#comments</comments>
		<pubDate>Wed, 20 May 2009 18:03:05 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=28</guid>
		<description><![CDATA[There times when standard locations for libraries and frameworks just don&#8217;t cut it. For such times a lineup of environment variables can be used to guide the linker. Typing man dyld in the terminal tells the story. Also otool -L &#60;executable-name&#62; lists library locations for a given executable.]]></description>
			<content:encoded><![CDATA[<p>There times when standard locations for libraries and frameworks just don&#8217;t cut it. For such times a lineup of environment variables can be used to guide the linker. Typing</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">man</span> dyld</div></div>
<p>in the terminal tells the story. Also</p>
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">otool <span style="color: #660033;">-L</span> <span style="color: #000000; font-weight: bold;">&lt;</span>executable-name<span style="color: #000000; font-weight: bold;">&gt;</span></div></div>
<p>lists library locations for a given executable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=28</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Building CGAL 3.3.1 on (10.5) Leopard</title>
		<link>http://www.fibrethread.com/blog/?p=26</link>
		<comments>http://www.fibrethread.com/blog/?p=26#comments</comments>
		<pubDate>Wed, 29 Apr 2009 20:01:12 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[AAAdd new tag]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=26</guid>
		<description><![CDATA[Not an exercise for the faint of heart. In fact this applies to using it in your programs as well. While I managed to build the libs, I never managed to build the demos that rely on Qt.   Download the mac distribution from CGAL portal. Prior to installing CGAL you need to have a [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.fibrethread.com/blog/wp-content/uploads/2009/04/images.jpeg"><img class="alignright size-full wp-image-27" title="images" src="http://www.fibrethread.com/blog/wp-content/uploads/2009/04/images.jpeg" alt="" width="143" height="50" /></a><br />
Not an exercise for the faint of heart. In fact this applies to using it in your programs as well. While I managed to build the libs, I never managed to build the demos that rely on Qt.<br />
 </p>
<li>Download the mac distribution from <a href="http://www.cgal.org">CGAL portal</a>.</li>
<li>Prior to installing CGAL you need to have a few prerequisites on your system: boost, GMP, MPFR, Qt (3 didn&#8217;t manage to get it working with 4)</li>
<li>It is easiest to use <a href="http://www.macports.org/">macports</a> to get these. After downloading and installing macports install the libraries as follows
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> boost<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> GMP<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> MPFR<br />
<span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> qt3-mac</div></div>
</li>
<li>You may also wish to install qt4 by invoking
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">sudo</span> port <span style="color: #c20cb9; font-weight: bold;">install</span> qt4-mac-devel</div></div>
</li>
<li>Open your terminal window and cd to CGAL home directory</li>
<li>Copy (rename) boost program_options library file so the installer picks it up by going into <code class="codecolorer bash mac-classic"><span class="bash"><span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>lib</span></code> and type
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #c20cb9; font-weight: bold;">cp</span> libboost_program_options-mt.a libboost_program_options.a</div></div>
</li>
<li>Invoke <code class="codecolorer bash mac-classic"><span class="bash">.<span style="color: #000000; font-weight: bold;">/</span>instal_cgal <span style="color: #660033;">-i</span></span></code> to enter interactive mode of their installer</li>
<li>Provide the paths the installer cannot find automatically (they are all in <code class="codecolorer bash mac-classic"><span class="bash"><span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>include</span></code> and <code class="codecolorer bash mac-classic"><span class="bash"><span style="color: #000000; font-weight: bold;">/</span>opt<span style="color: #000000; font-weight: bold;">/</span>local<span style="color: #000000; font-weight: bold;">/</span>lib</span></code>)</li>
<li>Before building examples (from examples directory invoke make) don&#8217;t forget to set an environment varible
<div class="codecolorer-container bash mac-classic" style="overflow:auto;white-space:nowrap;border: 1px solid #9F9F9F;width:435px;"><div class="bash codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #7a0874; font-weight: bold;">export</span> <span style="color: #007800;">CGAL_MAKEFILE</span>=<span style="color: #000000; font-weight: bold;">&lt;</span>path_to_CGAL-3.3.1<span style="color: #000000; font-weight: bold;">&gt;/</span>make<span style="color: #000000; font-weight: bold;">/</span>makefile_i386_Darwin-<span style="color: #000000;">9.6</span>_g++-4.0.1</div></div>
</li>
<p> </p>
<p> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=26</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Backported LogKit to Tiger</title>
		<link>http://www.fibrethread.com/blog/?p=25</link>
		<comments>http://www.fibrethread.com/blog/?p=25#comments</comments>
		<pubDate>Tue, 14 Apr 2009 04:19:34 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=25</guid>
		<description><![CDATA[Backporting LogKit to Tiger proved to be a pain in the neck. Crossdevelopment is tedious and the macros-riddled code looks ugly. On the upside I fixed a few bugs and reorganized the projects. The current release SymbicLogKit 0.92 is tested under both Tiger (10.4.11) and Leopard and includes source for both the framework and examples. [...]]]></description>
			<content:encoded><![CDATA[<p>Backporting LogKit to Tiger proved to be a pain in the neck. Crossdevelopment is tedious and the macros-riddled code looks ugly. On the upside I fixed a few bugs and reorganized the projects. The current release <a href="http://www.fibrethread.com/blog/wp-content/uploads/LogKit_092.zip">SymbicLogKit 0.92</a> is tested under both Tiger (10.4.11) and Leopard and includes source for both the framework and examples.</p>
<p>To include SymbicLogKit in your own projects follow these steps:</p>
<ul>
<li>Add SymbicLogKit as a dependent project to your project.</li>
<li>SymbicLogKit is built as a private framework so you will need to add a &#8220;Copy&#8221; stage to your target to place SymbicLogKit into a Frameworks subdirectory of your build product.</li>
<li>Make your target dependent on the principal target of SymbicLogKit project.</li>
<li>Now we need to tell the compiler where to look for the SymbicLogKit.framework since it isn&#8217;t available for inclusion in the project (it doesn&#8217;t exist yet). Modify <strong>Framework Search Paths</strong> setting in your build settings per configuration to point to the appropriate directory relative, for instance, to your project location e.g. <span style="color: #ff0000;"><span style="color: #800000;">$(PROJECT_DIR)/../SymbicLogKit/build/Release</span></span>.</li>
<li>Since the framework isn&#8217;t available for inclusion in our host project we will be weak-linking to it. Locate <strong>Other Linker Flags</strong> in you build settings and set it or augment it to include <span style="color: #ff0000;"><span style="color: #800000;">-<span style="text-decoration: line-through;">weak_framework SymbicLogKit</span>  -framework SymbicLogKit</span></span></li>
<li>You may want to uncheck <strong>Build Active Architecture Only</strong> build setting. </li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=25</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>A cute way to log in as root</title>
		<link>http://www.fibrethread.com/blog/?p=24</link>
		<comments>http://www.fibrethread.com/blog/?p=24#comments</comments>
		<pubDate>Wed, 08 Apr 2009 00:20:26 +0000</pubDate>
		<dc:creator>paul</dc:creator>
				<category><![CDATA[Cocoa]]></category>

		<guid isPermaLink="false">http://www.fibrethread.com/blog/?p=24</guid>
		<description><![CDATA[In Leopard one can obtain the a terminal without enabling the root account. Just type &#8220;sudo su&#8221; and provide your user password. Seems like a cleaner way to operate as root.]]></description>
			<content:encoded><![CDATA[<p>In Leopard one can obtain the a terminal without enabling the root account. Just type <strong>&#8220;sudo su&#8221;</strong> and provide your user password. Seems like a cleaner way to operate as root.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.fibrethread.com/blog/?feed=rss2&amp;p=24</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
