<?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>taybin.com &#187; Programming</title>
	<atom:link href="http://www.taybin.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.taybin.com</link>
	<description>dubious thrills</description>
	<lastBuildDate>Tue, 22 Apr 2008 01:55:23 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>MacOS X memory alignment</title>
		<link>http://www.taybin.com/2007/04/03/macos-x-memory-alignment/</link>
		<comments>http://www.taybin.com/2007/04/03/macos-x-memory-alignment/#comments</comments>
		<pubDate>Tue, 03 Apr 2007 16:00:16 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.taybin.com/2007/04/03/macos-x-memory-alignment/</guid>
		<description><![CDATA[I had a hard time finding a definitive statement on MacOS X memory alignment so I did my own tests. On 10.4/intel, both stack and heap memory is 16 byte aligned. So people porting software can stop looking for memalign() and posix_memalign(). It&#8217;s not needed.]]></description>
			<content:encoded><![CDATA[<p>I had a hard time finding a definitive statement on MacOS X memory alignment so I did my own tests.  On 10.4/intel, both stack and heap memory is 16 byte aligned.  So people porting software can stop looking for memalign() and posix_memalign().  It&#8217;s not needed.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taybin.com/2007/04/03/macos-x-memory-alignment/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>I love it when a plan comes together</title>
		<link>http://www.taybin.com/2007/03/27/i-love-it-when-a-plan-comes-together/</link>
		<comments>http://www.taybin.com/2007/03/27/i-love-it-when-a-plan-comes-together/#comments</comments>
		<pubDate>Wed, 28 Mar 2007 03:23:00 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.taybin.com/2007/03/27/i-love-it-when-a-plan-comes-together/</guid>
		<description><![CDATA[With some help from Daniel Jalkut, Dave Dribin, Chris Hanson, and of course Andy Matuschak&#8217;s Sparkle and Reinvented Software&#8217;s Feeder, I finally have a system for pushing Gusto updates that are tied to SVN revision numbers. Once it works, it works pretty good. I might run into some trouble in the future if I were [...]]]></description>
			<content:encoded><![CDATA[<p>With some help from <a href="http://www.red-sweater.com/blog/23/automatic-build-sub-versioning-in-xcode">Daniel Jalkut</a>, <a href="http://www.dribin.org/dave/blog/archives/2006/08/02/versioning_os_x_apps/">Dave Dribin</a>, <a href="http://chanson.livejournal.com/125568.html">Chris Hanson</a>, and of course <a href="http://sparkle.andymatuschak.org/">Andy Matuschak&#8217;s Sparkle</a> and <a href="http://reinventedsoftware.com/feeder/">Reinvented Software&#8217;s Feeder</a>, I finally have a system for pushing Gusto updates that are tied to SVN revision numbers.  Once it works, it works pretty good.  I might run into some trouble in the future if I were to use a different tree than trunk, but that&#8217;ll be a good ways away.</p>
<p>I&#8217;m not too worried either because:<br />
a) agvtool will let me set whatever version and marketingversion I want<br />
b) Sparkle will let me explicitly name the next version</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taybin.com/2007/03/27/i-love-it-when-a-plan-comes-together/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Who is awesome?  I am</title>
		<link>http://www.taybin.com/2007/02/08/who-is-awesome-i-am/</link>
		<comments>http://www.taybin.com/2007/02/08/who-is-awesome-i-am/#comments</comments>
		<pubDate>Thu, 08 Feb 2007 21:26:17 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.taybin.com/2007/02/08/who-is-awesome-i-am/</guid>
		<description><![CDATA[I just got Ardour working on MacOS X without X11. It&#8217;s not stable, but it&#8217;s pretty sweet. Also fun: submitting patches to important projects like Gtk+ and having people say &#8220;thanks!&#8221;]]></description>
			<content:encoded><![CDATA[<p>I just got <a href="http://ardour.org">Ardour</a> working on MacOS X without X11.  It&#8217;s not stable, but it&#8217;s pretty sweet.  Also fun: submitting <a href="http://bugzilla.gnome.org/show_bug.cgi?id=405868">patches</a> to important projects like Gtk+ and having people say &#8220;thanks!&#8221;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taybin.com/2007/02/08/who-is-awesome-i-am/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>GSoC 2006 writeup</title>
		<link>http://www.taybin.com/2006/10/27/gsoc-2006-writeup/</link>
		<comments>http://www.taybin.com/2006/10/27/gsoc-2006-writeup/#comments</comments>
		<pubDate>Fri, 27 Oct 2006 15:01:48 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.taybin.com/2006/10/27/gsoc-2006-writeup/</guid>
		<description><![CDATA[The conference went great. It was an &#8220;unconference&#8221; were people reserve rooms to talk about whatever they want. If other people are interested, they&#8217;ll show up. I gave a talk called Rewarding Contributors that was about the various project management tricks I&#8217;ve done to pay back people who volunteer on Ardour. Sixteen people showed up [...]]]></description>
			<content:encoded><![CDATA[<p>The conference went great. It was an &#8220;unconference&#8221; were people reserve rooms to talk about whatever they want. If other people are interested, they&#8217;ll show up. I gave a talk called Rewarding Contributors that was about the various project management tricks I&#8217;ve done to pay back people who volunteer on Ardour. Sixteen people showed up and the following discussion, mostly with the Drupal team was very rewarding. There was applause afterwards. It was great.</p>
<p>Google&#8217;s campus was large and showed signs of rapid growth. They had over 40 buildings, I think. Their security guys were just dudes who sat under umbrellas in lawnchairs at the entrance to the driveway.</p>
<p>I had a good conversation with a couple of the Subversion developers, who work at Google. Their Poisoness People talk was particularly entertaining.</p>
<p>The whole thing really got me excited to work on Ardour again.</p>
<p>Also, the hotel was pretty nice. It had this late 50s intellectual motif. Lots of Jackson Pollock style paintings and such.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taybin.com/2006/10/27/gsoc-2006-writeup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Google Summer of Code conference!</title>
		<link>http://www.taybin.com/2006/10/12/google-summer-of-code-conference/</link>
		<comments>http://www.taybin.com/2006/10/12/google-summer-of-code-conference/#comments</comments>
		<pubDate>Thu, 12 Oct 2006 16:30:48 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[Life]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.taybin.com/2006/10/12/google-summer-of-code-conference/</guid>
		<description><![CDATA[I&#8217;m going to the Google Summer of Code conference this Saturday. I&#8217;m flying out to San Jose tomorrow morning. I&#8217;m pretty excited. I&#8217;ll be leading a discussion of cheap, homegrown ways to reward contributors to open source projects. Then, I&#8217;ll fly to LA to visit some friends. And since I&#8217;ve never been to California before, [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m going to the Google Summer of Code conference this Saturday.  I&#8217;m flying out to San Jose tomorrow morning.</p>
<p>I&#8217;m pretty excited.  I&#8217;ll be leading a discussion of cheap, homegrown ways to reward contributors to open source projects.</p>
<p>Then, I&#8217;ll fly to LA to visit some friends.  And since I&#8217;ve never been to California before, this is all new to me.  Too bad I won&#8217;t have time to check out San Francisco.  Oh well.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taybin.com/2006/10/12/google-summer-of-code-conference/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Objective-C and libsigc++</title>
		<link>http://www.taybin.com/2006/08/31/objective-c-and-libsigc/</link>
		<comments>http://www.taybin.com/2006/08/31/objective-c-and-libsigc/#comments</comments>
		<pubDate>Thu, 31 Aug 2006 18:04:53 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.taybin.com/2006/08/31/objective-c-and-libsigc/</guid>
		<description><![CDATA[I&#8217;ve started working on a secret MacOSX project. I decided to use Apple&#8217;s Cocoa framework, so that means I have to use Objective-C. The backend I&#8217;m basing my project on is in C++ and uses the libsigc++ callback library as an important component of its interface with the frontend. So how do you setup ObjC [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve started working on a secret MacOSX project.  I decided to use Apple&#8217;s Cocoa framework, so that means I have to use Objective-C.  The backend I&#8217;m basing my project on is in C++ and uses the libsigc++ callback library as an important component of its interface with the frontend.  So how do you setup ObjC methods to be called back?</p>
<p>Use my <a href="http://www.taybin.com/wp-content/uploads/2006/09/objcsigcglue.h">glue header</a>.  It will create glue functions at compile time for calling objc_msgSend() with the appropriate arguments.</p>
<p>Example:<br />
<code><br />
SignalActivated.connect (sigc::bind(sigc::ptr_fun(objcsigcglue<bool>), self, @selector(CatchSignal:)));<br />
</code></p>
<p>This will call [self CatchSignal:boolValue].  Pretty neat, right?  For the majority of callbacks that don&#8217;t accept arguments, a mere function pointer cast is needed:<br />
<code><br />
BoringSignal.connect (sigc::bind(sigc::ptr_fun((msgFtn)objc_msgSend), self, @selector(boringSignalCatch:)));<br />
</code></p>
<p><em>Update:  I fixed <a href="http://www.taybin.com/wp-content/uploads/2006/09/objcsigcglue.h">objcsigcglue.h</a> to work with references that are passed to the callback.  It should be much more flexible with other types I haven&#8217;t anticipated too.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://www.taybin.com/2006/08/31/objective-c-and-libsigc/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Mother of All Dubbers</title>
		<link>http://www.taybin.com/2006/07/17/the-mother-of-all-dubbers/</link>
		<comments>http://www.taybin.com/2006/07/17/the-mother-of-all-dubbers/#comments</comments>
		<pubDate>Mon, 17 Jul 2006 22:06:50 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[Capitalism]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.taybin.com/2006/07/17/the-mother-of-all-dubbers/</guid>
		<description><![CDATA[From Harrison&#8217;s marketing materials: The recording software behind the X-Dubber is an open-source, highly scalable program called Ardour. The stable, full-featured Ardour workstation has the capabilities you would expect from a state of theart workstation. By focusing on the specific needs of thepost-production community, Harrison has packaged the Ardour workstationinto a robust, streamlined re-recording product [...]]]></description>
			<content:encoded><![CDATA[<p>From Harrison&#8217;s <a href="http://www.motherofalldubbers.com/software.html">marketing materials:</a></p>
<blockquote><p>The recording software behind the X-Dubber is an open-source, highly scalable program called Ardour. The stable, full-featured Ardour workstation has the capabilities you would expect from a state of theart workstation. By focusing on the specific needs of thepost-production community, Harrison has packaged the Ardour workstationinto a robust, streamlined re-recording product that meets the needs ofour world-class customers.</p></blockquote>
<p>Pretty awesome.  Go Team <a href="http://ardour.org">Ardour</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taybin.com/2006/07/17/the-mother-of-all-dubbers/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Stop using deprecated dlopen() constructors</title>
		<link>http://www.taybin.com/2006/05/31/stop-using-deprecated-dlopen-constructors/</link>
		<comments>http://www.taybin.com/2006/05/31/stop-using-deprecated-dlopen-constructors/#comments</comments>
		<pubDate>Thu, 01 Jun 2006 05:33:32 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://www.taybin.com/?p=10</guid>
		<description><![CDATA[As I re-discovered for the third time last evening, LADSPA programmers still haven&#8217;t made the switch from _init() to __attribute__((constructor)) void init() {}. The older mechanism has been deprecated since the early/mid &#8217;90s. Most operating systems still supported it but with MacOSX 10.4, Apple dropped support when they implemented their own dlopen() support. I&#8217;ve sent [...]]]></description>
			<content:encoded><![CDATA[<p>As I re-discovered for the third time last evening, <a href="http://www.ladspa.org">LADSPA</a> programmers still haven&#8217;t made the switch from <code>_init()</code> to <code>__attribute__((constructor)) void init() {}</code>.</p>
<p>The older mechanism has been deprecated since the early/mid &#8217;90s.  Most operating systems still supported it but with MacOSX 10.4, Apple dropped support when they <a href="http://developer.apple.com/releasenotes/DeveloperTools/dyld.html">implemented</a> their own dlopen() support.</p>
<p>I&#8217;ve sent an <a href="http://marc.theaimsgroup.com/?l=linux-audio-dev&#38;m=113045466129402&#38;w=2">email</a> about it to the LAD mailing list, but apparently no one listened.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taybin.com/2006/05/31/stop-using-deprecated-dlopen-constructors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>fftw and intel iMacs</title>
		<link>http://www.taybin.com/2006/05/31/fftw-and-intel-imacs/</link>
		<comments>http://www.taybin.com/2006/05/31/fftw-and-intel-imacs/#comments</comments>
		<pubDate>Wed, 31 May 2006 14:12:48 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://www.taybin.com/?p=11</guid>
		<description><![CDATA[If you are trying to compile fftw3 on an intel iMac (or any Intel Core processor probably), you&#8217;ll need to pass to configure: --with-gcc-arch=prescott That will prevent compiler errors complaining about illegal i386 instructions.]]></description>
			<content:encoded><![CDATA[<p>If you are trying to compile <a href="http://fftw.org">fftw3</a> on an intel iMac (or any Intel Core processor probably), you&#8217;ll need to pass to configure:<br />
<code><br />
--with-gcc-arch=prescott<br />
</code><br />
That will prevent compiler errors complaining about illegal i386 instructions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.taybin.com/2006/05/31/fftw-and-intel-imacs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic Page Served (once) in 0.273 seconds -->
