<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="wordpress/1.5.2" -->
<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/"
>

<channel>
	<title>fdiv.net</title>
	<link>http://fdiv.net</link>
	<description>the floating point divide</description>
	<pubDate>Wed, 30 Jul 2008 17:51:50 +0000</pubDate>
	<generator>http://wordpress.org/?v=1.5.2</generator>
	<language>en</language>

		<item>
		<title>Silicon Dioxide (SiO2)</title>
		<link>http://fdiv.net/2008/07/30/silicon-dioxide-sio2/</link>
		<comments>http://fdiv.net/2008/07/30/silicon-dioxide-sio2/#comments</comments>
		<pubDate>Wed, 30 Jul 2008 17:50:33 +0000</pubDate>
		<dc:creator>cwright</dc:creator>
		
	<category>Social Story</category>
	<category>kineme</category>
	<category>Interactive Media</category>
	<category>Quartz Composer</category>
	<category>Apple</category>
	<category>Software Development</category>
	<category>Kosada</category>
		<guid>http://fdiv.net/2008/07/30/silicon-dioxide-sio2/</guid>
		<description><![CDATA[	In the wee small hours of this morning, Kineme Interactive Media released its first commercial product, QuartzCrystal.
	QuartzCrystal is an offline renderer that turns Quartz Compositions into portable QuickTime movies.  It supports 3rd party plugins, as well as patches that do not work in safe-mode-only environments (such as QuickTime Pro).  It also supports software [...]]]></description>
			<content:encoded><![CDATA[	<p><a href="http://kineme.net/product/QuartzCrystal"><img style="background: none;" align="right" alt="QuartzCrystal Logo" src="http://kineme.net/files/imagecache/product/files/QuartzCrystal-1.0.png" /></a>In the wee small hours of this morning, <a href="http://kineme.net/">Kineme Interactive Media</a> released its first commercial product, <a href="http://kineme.net/product/QuartzCrystal">QuartzCrystal</a>.</p>
	<p>QuartzCrystal is an offline renderer that turns Quartz Compositions into portable QuickTime movies.  It supports 3rd party plugins, as well as patches that do not work in safe-mode-only environments (such as QuickTime Pro).  It also supports software scene antialiasing, so if you have a Mac with plenty of RAM and a hard-core video card, you can make spectacularly beautiful renderings of your plugins, effects, and compositions.</p>
	<p>Beside QuartzCrystal, the only other product that renders and encodes compositions to movies is <a href="http://www.apple.com">Apple</a>&#8217;s own <a href="http://store.apple.com/us/product/D3380Z/A">QuickTime Pro</a>, which doesn&#8217;t support plugins, unsafe patches, or antialiasing.</p>
	<p><a href="http://kineme.net/product/QuartzCrystal"><img style="background: none;" alt="QuartzCrystal Main Window Screenshot" src="http://kineme.net/system/files/QuartzCrystal+Main+Window_1.png" /></a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fdiv.net/2008/07/30/silicon-dioxide-sio2/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Python&#8217;s Flying Circus</title>
		<link>http://fdiv.net/2008/02/22/pythons-flying-circus/</link>
		<comments>http://fdiv.net/2008/02/22/pythons-flying-circus/#comments</comments>
		<pubDate>Fri, 22 Feb 2008 19:35:35 +0000</pubDate>
		<dc:creator>cwright</dc:creator>
		
	<category>kineme</category>
	<category>Antisocial Story</category>
	<category>Language</category>
	<category>Software Development</category>
		<guid>http://fdiv.net/2008/02/22/pythons-flying-circus/</guid>
		<description><![CDATA[	
	Lately I&#8217;ve been working on integrating (or, more accurately, attempting to integrate) the Python scripting language into some plugins for an application we develop plugins for.  We&#8217;ve wrapped many libraries with varying levels of success, so this one wasn&#8217;t going to be much different.  Or, so we thought.
	Technically, we&#8217;re interested in &#8220;Embedding&#8221; Python [...]]]></description>
			<content:encoded><![CDATA[	<p><img src="http://img.b33p.net/pub/cwIngHlMs0BtBweZ0BcHJrnBo3K6wYeW/thumbnail-256" align="right" alt="Python Logo" /></p>
	<p>Lately I&#8217;ve been working on integrating (or, more accurately, attempting to integrate) the Python scripting language into some plugins for an application we develop plugins for.  We&#8217;ve wrapped many libraries with varying levels of success, so this one wasn&#8217;t going to be much different.  Or, so we thought.<a id="more-118"></a></p>
	<p>Technically, we&#8217;re interested in &#8220;Embedding&#8221; Python &#8212; We have a native Objective-C application that needs to make use of the Python interpreter at various stages of execution.  The Python scripts are user-supplied, and are exceptionally free-form:  the functions they write can take variable numbers of inputs, produce variable numbers of outputs, and can use any Python modules they have installed.</p>
	<p>Unfortunately, this makes the embedding process somewhat complicated:  From Objective-C, we need to be able to parse the script, find all its functions, and get all those functions&#8217; input and output parameters.  From this data, we can expose the Python module&#8217;s interface usefully.  Unfortunately, Python does not appear to allow this kind of introspection from the outside (and it&#8217;s questionable whether or not it&#8217;s even possible from the inside.)</p>
	<p>In searching for information on this, <a href="http://davidf.sjsoft.com/mirrors/mcmillan-inc/embed.html">Numerous</a> <a href="http://www.developer.com/lang/other/article.php/2217941">Documents</a> are <a href="http://twistedmatrix.com/users/glyph/rant/extendit.html">Found</a> that <a href="http://www.linuxjournal.com/article/8497">Needlessly</a> <a href="http://www.python.org/doc/current/ext/embedding.html">Complicate</a> or Obfuscate the difference between Embedding and Extending.  As if it&#8217;s really that difficult (<strong>embed</strong> means &#8220;fix firmly and deeply in a surrounding mass&#8221; while <strong>extend</strong> means &#8220;cause to cover a larger area; make longer or wider&#8221;.  From these obvious definitions, we can infer that &#8220;Embedding&#8221; means putting something inside, while &#8220;Extending&#8221; means adding functionality or abilities.  Maybe it&#8217;s not so clear for non-native english speakers.  I don&#8217;t know.)</p>
	<p>Another annoying side-trip of this research was an overwhelmingly smug idea that almost reeks of Java.  This side effect is the recorded smarmy discussion of why one should &#8220;Extend&#8221; rather than &#8220;Embed&#8221; (these reasons are then used to explain away why there isn&#8217;t any good documentation on actually embedding Python).  The arguments go something like this:</p>
	<ul>
	<li>Python&#8217;s so good, cross-platform, and flexible that it&#8217;s actually more cost-effective to <em>Throw Out All Your C/C++/ObjC Code And Rewrite Everything In Python.</em></li>
	<li>Embedding is so cumbersome to code, and so difficult compared to embedding Python in Python, that you should <em>Throw Out All Your C/C++/ObjC Code And Rewrite Everything In Python.</em></li>
	<li>High-performance code can be written in C, and then called from within Python&#8217;s runtime when you actually need to performance boost.  Why not just <em>Throw Out All Your C/C++/ObjC Code And Rewrite Everything In Python</em> Except for the fast bits?</li>
	<li>If you embed Python, you&#8217;ll annoy Python developers who can&#8217;t access the modules they&#8217;re used to using.  Why not <em>Throw Out All Your C/C++/ObjC Code And Rewrite Everything In Python</em> so you don&#8217;t annoy your Python developers?</li>
	</ul>
	<p>These arguments cover some pretty diverse ground there.  Unfortunately, there are 2 fatals flaws in the list above.  </p>
	<p>First, embedded Python _Can_ in fact use installed modules just like raw Python, so point 4 above is flagrantly incorrect.  There are some suggestions that it&#8217;s simply annoying to develop in such an environment because namespaces are all strange (or wrong) and nothing works quite right.  Guess What:  Welcome To Plugin Development!  It&#8217;s like these Python developers have never worked on real projects before or something.</p>
	<p>Second, All of the above points assume that it&#8217;s possible to discard your entire code-base and rewrite everything.  While this is technically possible, it&#8217;s not very likely when you don&#8217;t have access to the source of the application to be discarded (in our case).  The unfortunate downside is that _All The Listed &#8220;Solutions&#8221; Hinge On This One Idea_.</p>
	<p>What&#8217;s with these non-solutions from allegedly flexible languages?  Even Objective-C, a compiled language, and the (totally undocumented) JavaVM-ObjC bridge, offer enough introspection to at least find methods and parameter counts without too much hassle.  Maybe Python does this just as simply, but if so, no one&#8217;s talking about it&#8230;
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fdiv.net/2008/02/22/pythons-flying-circus/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Announcing: kineme.net</title>
		<link>http://fdiv.net/2007/07/10/announcing-kinemenet/</link>
		<comments>http://fdiv.net/2007/07/10/announcing-kinemenet/#comments</comments>
		<pubDate>Tue, 10 Jul 2007 22:24:30 +0000</pubDate>
		<dc:creator>cwright</dc:creator>
		
	<category>Social Story</category>
	<category>kineme</category>
	<category>Interactive Media</category>
	<category>Quartz Composer</category>
	<category>Software Development</category>
		<guid>http://fdiv.net/2007/07/10/announcing-kinemenet/</guid>
		<description><![CDATA[	The Kineme Quartz Composer patches now have a proper home at http://kineme.net/, including forums, bug reports, comments, and feature requests &#8212; complete with voting!
	Along with the new site, a few new patches are available as well based on requests from users.

]]></description>
			<content:encoded><![CDATA[	<p><img align="right" src="http://img.b33p.net/pub/0xk3_shbAp63pte73kN2cEqQU7h_WlFM/thumbnail-256" alt="screenshot of kineme.net" />The Kineme Quartz Composer patches now have a proper home at <a href="http://kineme.net/">http://kineme.net/</a>, including forums, bug reports, comments, and feature requests &#8212; complete with voting!</p>
	<p>Along with the new site, a <a href="http://kineme.net/QuartzComposerPatches/ImageDownloaderBlockingPatch">few</a> <a href="http://kineme.net/QuartzComposerPatches/ShellCommandPatch">new</a> <a href="http://kineme.net/QuartzComposerPatches/SpeechSynthesisPatch">patches</a> are available as well based on requests from users.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fdiv.net/2007/07/10/announcing-kinemenet/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>More New Quartz Composer Patches</title>
		<link>http://fdiv.net/2006/09/22/more-new-quartz-composer-patches/</link>
		<comments>http://fdiv.net/2006/09/22/more-new-quartz-composer-patches/#comments</comments>
		<pubDate>Fri, 22 Sep 2006 06:36:07 +0000</pubDate>
		<dc:creator>smokris</dc:creator>
		
	<category>kineme</category>
	<category>Interactive Media</category>
	<category>Quartz Composer</category>
	<category>Apple</category>
		<guid>http://fdiv.net/2006/09/22/more-new-quartz-composer-patches/</guid>
		<description><![CDATA[	This is the second release of the Kineme Quartz Composer Plugins.
	New this time:
	
	MIDI Global In Note :: This patch observes a specified MIDI Note number on a specified MIDI Channel, and outputs the Velocity and a boolean Gate signal.
	MIDI Global Out Note :: This patch, when Gate is rising true, outputs a MIDI note-on message [...]]]></description>
			<content:encoded><![CDATA[	<p><img align="right" src="http://img.b33p.net/pub/9MmZdzzrUE-6LR7FN2eVxpqHYBffwtPy/png-indexed-64" />This is the second release of the <a href="http://fdiv.net/2006/08/20/some-new-quartz-composer-patches/">Kineme Quartz Composer Plugins</a>.</p>
	<p>New this time:</p>
	<ul>
	<li><b>MIDI Global In Note</b> :: This patch observes a specified MIDI Note number on a specified MIDI Channel, and outputs the Velocity and a boolean Gate signal.</li>
	<li><b>MIDI Global Out Note</b> :: This patch, when Gate is rising true, outputs a MIDI note-on message on a specified MIDI Channel with the specified Velocity.  When Gate is falling false, a MIDI note-off message is sent.</li>
	<li><b>Image With Composition</b> :: This patch loads a Quartz Composer Composition (.qtz) file and renders it to an Image.  (This is intended to replace functionality that was removed with the Mac OS X 10.4.7 update, as described by <a href="http://eskatonia.net/qcblog/2006/08/01/apples-developer-relations-regarding-qc/">Roger Bolton</a> and <a href="http://dpwolf.net/blog/2006/07/another-quartz-composer-feature-broken-with-mac-os-1047/">David Wolf</a>.)</li>
	<li><b>File Type</b> :: This patch provides the Uniform Type Identifier (UTI) of the specified file.  For example, if the path to a QuickTime movie is specified, File Type outputs &#8220;com.apple.quicktime-movie&#8221;.</li>
	</ul>
	<div class="notice"><img src="/wp-content/themes/alternate0/stop.png" /> This release is only compatible with Tiger (10.4).<br />Please see <a href="http://kineme.net/">kineme.net</a> for Leopard-compatible patches.</div>
	<p>Get them here:  <a href="http://softpixel.com/~smokris/widgets/quartzComposer/kinemePlugins/">http://softpixel.com/~smokris/widgets/quartzComposer/kinemePlugins/</a>
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fdiv.net/2006/09/22/more-new-quartz-composer-patches/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>Some New Quartz Composer Patches</title>
		<link>http://fdiv.net/2006/08/20/some-new-quartz-composer-patches/</link>
		<comments>http://fdiv.net/2006/08/20/some-new-quartz-composer-patches/#comments</comments>
		<pubDate>Sun, 20 Aug 2006 21:45:15 +0000</pubDate>
		<dc:creator>smokris</dc:creator>
		
	<category>kineme</category>
	<category>Interactive Media</category>
	<category>Quartz Composer</category>
	<category>Apple</category>
		<guid>http://fdiv.net/2006/08/20/some-new-quartz-composer-patches/</guid>
		<description><![CDATA[	I wrote a few new patches for Quartz Composer.
	MIDI Global Output CC :: This patch, when triggered, outputs a MIDI Custom Controller message on a specified MIDI Channel to all MIDI outputs.
	MIDI Global Input CC :: This patch observes a specified MIDI Custom Controller on a specified MIDI Channel, and outputs the Custom Controller Value [...]]]></description>
			<content:encoded><![CDATA[	<p><img align="right" src="http://img.b33p.net/pub/xiAEyWBBbq5buE4LBUmLmA8q9-FSUOeA/png-indexed-64" />I wrote a few new patches for Quartz Composer.</p>
	<p><b>MIDI Global Output CC</b> :: This patch, when triggered, outputs a MIDI Custom Controller message on a specified MIDI Channel to all MIDI outputs.</p>
	<p><b>MIDI Global Input CC</b> :: This patch observes a specified MIDI Custom Controller on a specified MIDI Channel, and outputs the Custom Controller Value and a Value-changed trigger.  Unlike the &#8220;MIDI Controllers&#8221; patch that comes with Quartz Composer, this patch doesn&#8217;t require the user to manually select the &#8220;Observed MIDI Sources&#8221; individually for every controller/computer combination - so you&#8217;re free to take your composition to a different machine and/or controller and jam without needing to hack the composition.</p>
	<p><b>String With File</b> :: This patch reads a file into a string.</p>
	<p><b>String With URL</b> :: This patch retrieves a URL into a string.</p>
	<p><b>Document Info</b> :: This patch returns some information about the zeroth Cocoa NSDocument.</p>
	<div class="notice"><img src="/wp-content/themes/alternate0/stop.png" /> This release is out-of-date.<br />Please see the <a href="http://fdiv.net/2006/09/22/more-new-quartz-composer-patches/">latest version</a>.</div>
	<p>Get them here: <a href="http://softpixel.com/~smokris/widgets/quartzComposer/kinemePlugins/">http://softpixel.com/~smokris/widgets/quartzComposer/kinemePlugins/</a></p>
	<p>(<a href="http://digg.com/apple/MIDI_Output_External_File_Input_Patches_for_Quartz_Composer">digg this!</a>)
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fdiv.net/2006/08/20/some-new-quartz-composer-patches/feed/</wfw:commentRSS>
	</item>
		<item>
		<title>The Year Zero</title>
		<link>http://fdiv.net/2005/12/05/the-year-zero/</link>
		<comments>http://fdiv.net/2005/12/05/the-year-zero/#comments</comments>
		<pubDate>Mon, 05 Dec 2005 14:14:44 +0000</pubDate>
		<dc:creator>rbtvance</dc:creator>
		
	<category>kineme</category>
		<guid>http://fdiv.net/2005/12/05/the-year-zero/</guid>
		<description><![CDATA[	I was at the lab with Steve the other night.
	I scantlandishly asked him, &#8220;Steve, how long do you think it would take to get kineme to the point that we could capture four streams of video, mix them in realtime, and output to QuickTime for mastering in DVD Studio Pro?&#8221;
	He kurtruffishly launched into a brief [...]]]></description>
			<content:encoded><![CDATA[	<p>I was at the lab with Steve the other night.</p>
	<p>I scantlandishly asked him, &#8220;Steve, how long do you think it would take to get kineme to the point that we could capture four streams of video, mix them in realtime, and output to QuickTime for mastering in DVD Studio Pro?&#8221;</p>
	<p>He kurtruffishly launched into a brief coughing fit.</p>
	<p>I continued by telling him that in about two weeks would be the annual <a href="http://www.hilliard.k12.oh.us/dvd/" target="_new">Hilliard Davidson High School</a> alumni choir concert, and that I intended to use it for this.</p>
	<p>He hit me.</p>
	<p>We planned out the new computer hardware we would need for kineme version 0.8.0.</p>
	<p>We ordered it this morning.
</p>
]]></content:encoded>
			<wfw:commentRSS>http://fdiv.net/2005/12/05/the-year-zero/feed/</wfw:commentRSS>
	</item>
	</channel>
</rss>
