<?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>Defective Semantics &#187; cocoa</title>
	<atom:link href="http://scarff.id.au/blog/tag/cocoa/feed/" rel="self" type="application/rss+xml" />
	<link>http://scarff.id.au</link>
	<description>Dean Scarff's perpetual struggle with technology, and other anecdotes</description>
	<lastBuildDate>Thu, 03 Nov 2011 22:39:55 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>Muxic – Minimal XMMS2 client for Mac OS X</title>
		<link>http://scarff.id.au/blog/2009/muxic-minimal-xmms2-client-for-mac-os-x/</link>
		<comments>http://scarff.id.au/blog/2009/muxic-minimal-xmms2-client-for-mac-os-x/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 15:33:35 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Programs]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[growl]]></category>
		<category><![CDATA[mac os x]]></category>
		<category><![CDATA[muxic]]></category>
		<category><![CDATA[xmms2]]></category>

		<guid isPermaLink="false">http://scarff.id.au/?p=246</guid>
		<description><![CDATA[<p>XMMS2 is cool.  In my experience, its architecture does everything The Right Way, and their support tools (git, mantis, mediawiki, doxygen-generated documentation) are all modern.</p>
<p>The clientlib is good enough that clients (frontends) can be very lightweight.  <acronym title="from what I can see">FWICS</acronym> there are some good Qt and GTK based clients that would probably run fine on OS X, if you can be bothered getting them and their dependencies working.</p>
<p>Even then, other Qt and GTK based applications I have on scud always feel slightly out of place (or very out of place for those using X11).  There were no Cocoa/Application Kit based GUIs on the old clientlist.  I set out to create a Cocoa UI.</p>
<p>I like Winamp Classic&#8217;s UI; it is functional and compact, especially in windowshade mode.  If you are used to the keyboard shortcuts (and they make a lot of sense with a QWERTY keyboard),&#8230; <a href="http://scarff.id.au/blog/2009/muxic-minimal-xmms2-client-for-mac-os-x/" class="read_more">more</a></p>]]></description>
			<content:encoded><![CDATA[<p><a href="http://xmms2.sourceforge.net/">XMMS2</a> is cool.  In my experience, its architecture does everything The Right Way, and their support tools (git, mantis, mediawiki, doxygen-generated documentation) are all modern.</p>
<p>The clientlib is good enough that clients (frontends) can be very lightweight.  <acronym title="from what I can see">FWICS</acronym> there are some good Qt and GTK based clients that would probably run fine on OS X, if you can be bothered getting them and their dependencies working.</p>
<p>Even then, other Qt and GTK based applications I have on scud always feel slightly out of place (or very out of place for those using X11).  There were no Cocoa/Application Kit based GUIs on the <a href="http://wiki.xmms2.xmms.se/w/index.php?title=Clientlist&#038;oldid=8612">old clientlist</a>.  I set out to create a Cocoa UI.</p>
<p>I like Winamp Classic&#8217;s UI; it is functional and compact, especially in windowshade mode.  If you are used to the keyboard shortcuts (and they make a lot of sense with a QWERTY keyboard), you don&#8217;t need huge buttons.</p>
<p>Hence I made a client with similar minimalism, without trying to be Winamp-skin-compatible.  I&#8217;m quite happy to use the CLI and other clients for managing the media library, but for something that&#8217;s sitting on my desktop all the time I wanted small, and I wanted it to fit in with OS X.  It&#8217;s got Growl support too!</p>
<div id="attachment_248" class="wp-caption aligncenter" style="width: 310px"><a href="http://scarff.id.au/blog/wp-content/uploads/2009/03/muxic-desktop-ss.png"><img src="http://scarff.id.au/blog/wp-content/uploads/2009/03/muxic-desktop-ss-300x187.png" alt="Muxic Desktop screenshot" title="Muxic Desktop screenshot" width="300" height="187" class="aligncenter size-thumbnail wp-image-248" /></a><p class="wp-caption-text">Introducing: Muxic.</p></div>
<p>Muxic is a minimal user interface to XMMS2.  It should be ready for a release soon, meanwhile you can <a href="/cgit/muxic.git/">browse the Muxic source</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://scarff.id.au/blog/2009/muxic-minimal-xmms2-client-for-mac-os-x/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cocoa devs fail Data Structures &amp; Algorithms?</title>
		<link>http://scarff.id.au/blog/2008/cocoa-devs-fail-data-structures-algorithms/</link>
		<comments>http://scarff.id.au/blog/2008/cocoa-devs-fail-data-structures-algorithms/#comments</comments>
		<pubDate>Sat, 09 Feb 2008 12:40:35 +0000</pubDate>
		<dc:creator>Dean</dc:creator>
				<category><![CDATA[Problems]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[cocoa]]></category>
		<category><![CDATA[linked list]]></category>

		<guid isPermaLink="false">http://scarff.id.au/blog/2008/cocoa-devs-fail-data-structures-algorithms/</guid>
		<description><![CDATA[<p>I can&#8217;t find a linked-list class in Cocoa.  Yes, I do want to do middle-insertions, and I&#8217;d have a fine time amortising my sequential access to constant time.  Fine; it&#8217;s not like they&#8217;re hard to implement.</p>
<p>The scary thing is that when searching, I blindly fell into the pool of ignorance displayed in this circa-2004 Cocoa-dev thread.  To be fair, the OP was more concerned about iterator functionality than a list implementation, but most of the responses seemed oblivious to:</p>
<ul>
<li>The iterator design pattern</li>
<li>The time-complexity advantages of a linked-list implementation over arrays and deques (<code>NSArray</code>) and hashes and trees (<code>NSDictionary</code> and <code>NSSet</code>)</li>
</ul>
<p><span id="more-14"></span></p>
<p>Take Nicko van Someren&#8217;s insertion:</p>
<blockquote><p>Building a doubly-linked list requires the object to gain forward and backward pointers and the only way to do this in Objective-C is to subclass the things you want to list.  The problem is that the type system in</p></blockquote><p>&#8230; <a href="http://scarff.id.au/blog/2008/cocoa-devs-fail-data-structures-algorithms/" class="read_more">more</a></p>]]></description>
			<content:encoded><![CDATA[<p>I can&#8217;t find a linked-list class in Cocoa.  Yes, I do want to do middle-insertions, and I&#8217;d have a fine time amortising my sequential access to constant time.  Fine; it&#8217;s not like they&#8217;re hard to implement.</p>
<p>The scary thing is that when searching, I blindly fell into the pool of ignorance displayed in <a href="http://lists.apple.com/archives/Cocoa-dev/2004/Jul/msg01740.html">this circa-2004 Cocoa-dev thread</a>.  To be fair, the OP was more concerned about iterator functionality than a list implementation, but most of the responses seemed oblivious to:</p>
<ul>
<li>The iterator design pattern</li>
<li>The time-complexity advantages of a linked-list implementation over arrays and deques (<code>NSArray</code>) and hashes and trees (<code>NSDictionary</code> and <code>NSSet</code>)</li>
</ul>
<p><span id="more-14"></span></p>
<p>Take Nicko van Someren&#8217;s <a href="http://lists.apple.com/archives/Cocoa-dev/2004/Jul/msg01828.html">insertion</a>:</p>
<blockquote><p>Building a doubly-linked list requires the object to gain forward and backward pointers and the only way to do this in Objective-C is to subclass the things you want to list.  The problem is that the type system in Objective C is much more dynamic than in C++ and people are therefore far more inclined to write code that neither knows nor cares about the type of object that gets passed in. An initial reaction might be to build a linked list of some sort of node class and have each object in the list hang off a pointer in the node, but this does not really do what you need since it&#8217;s hard to work out which node refers to a particular object. So, all in all building code in Objective C to make generic lists of all subclasses of NSObject is a bit of a pain.</p></blockquote>
<p>WTF?  First of all, of course adding iterator functionality to member types is silly.  He seems to dismiss the second approach (list of nodes, with pointers to members) for an even sillier reason.  What does &#8220;it&#8217;s hard to work out which node refers to a particular object&#8221; mean?  He&#8217;s still hung up on members having inverse awareness of their container.  That&#8217;s what the iterator is for, damnit!</p>
<p>I think Pandaa <a href="http://lists.apple.com/archives/Cocoa-dev/2004/Jul/msg01824.html">said it well</a>:</p>
<blockquote><p>I strongly suggest everyone who contributed to this confusion read up on basic computer science.</p></blockquote>
<p>So I guess not all Cocoa developers are oblivious to DSA.</p>
]]></content:encoded>
			<wfw:commentRss>http://scarff.id.au/blog/2008/cocoa-devs-fail-data-structures-algorithms/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

