<?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>penguin sounds &#187; programming</title>
	<atom:link href="http://penguinsounds.org/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://penguinsounds.org</link>
	<description>programming blog</description>
	<lastBuildDate>Mon, 12 Jan 2009 01:34:21 +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>goodbye Carbon and good riddence</title>
		<link>http://penguinsounds.org/2008/07/07/goodbye-carbon-and-good-riddence/</link>
		<comments>http://penguinsounds.org/2008/07/07/goodbye-carbon-and-good-riddence/#comments</comments>
		<pubDate>Mon, 07 Jul 2008 17:51:42 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/?p=71</guid>
		<description><![CDATA[From the documentation for GetProcessInformation() You need to specify values for the processInfoLength, processName, and processAppSpec fields of the process information structure. Specify the length of the process information structure in the processInfoLength field. If you do not want information returned in the processName and processAppSpec fields, specify NULL for these fields. Otherwise, allocate at [...]]]></description>
			<content:encoded><![CDATA[<p>From the documentation for GetProcessInformation()</p>
<blockquote><p>You need to specify values for the processInfoLength, processName, and processAppSpec fields of the process information structure. Specify the length of the process information structure in the processInfoLength field. If you do not want information returned in the processName and processAppSpec fields, specify NULL for these fields. Otherwise, allocate at least 32 bytes of storage for the string pointed to by the processName field and, in the processAppSpec field, specify a pointer to an FSSpec structure.
</p></blockquote>
<p><a href="http://developer.apple.com/documentation/Carbon/Reference/Process_Manager/Reference/reference.html#//apple_ref/c/func/GetProcessInformation">no joke</a></p>
<p>Rollover Carbon, rock on OOP.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2008/07/07/goodbye-carbon-and-good-riddence/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Defactoring</title>
		<link>http://penguinsounds.org/2008/05/13/defactoring/</link>
		<comments>http://penguinsounds.org/2008/05/13/defactoring/#comments</comments>
		<pubDate>Tue, 13 May 2008 21:14:12 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/?p=65</guid>
		<description><![CDATA[You&#8217;ve read Refactoring. You&#8217;ve seen Prefactoring on the bookstore&#8217;s shelf. Well, after you&#8217;ve fact&#8217;d it all up, it&#8217;s time for Defactoring. My new book, which introduces such techniques as overriding your framework&#8217;s core eventloop and running dynamic_cast&#60;&#62; on each widget that passes through to see if it&#8217;s the widget you&#8217;re looking for.]]></description>
			<content:encoded><![CDATA[<p>You&#8217;ve read <strong>Refactoring</strong>.  You&#8217;ve seen <strong>Prefactoring</strong> on the bookstore&#8217;s shelf.  Well, after you&#8217;ve fact&#8217;d it all up, it&#8217;s time for <strong>Defactoring</strong>.</p>
<p>My new book, which introduces such techniques as overriding your framework&#8217;s core eventloop and running dynamic_cast&lt;&gt; on each widget that passes through to see if it&#8217;s the widget you&#8217;re looking for.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2008/05/13/defactoring/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>The Forgotten Delicious</title>
		<link>http://penguinsounds.org/2008/02/23/the-forgotten-delicious/</link>
		<comments>http://penguinsounds.org/2008/02/23/the-forgotten-delicious/#comments</comments>
		<pubDate>Sat, 23 Feb 2008 23:05:06 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[websites]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2008/02/23/the-forgotten-delicious/</guid>
		<description><![CDATA[Matt Ball writes about the tendency of &#8220;delicious generation&#8221; apps to become abandonware. That&#8217;s fine by me. My biggest problem with them is that they seem to be composed almost entirely of lightweight to-do list applications and other such &#8220;my first real program&#8221; homework assignments. http://www.anxietyapp.com/ http://hogbaysoftware.com/products/taskpaper http://www.culturedcode.com/things/ http://www.objectivesatisfaction.com/what_todo/ http://www.jimmcgowan.net/Site/DoIt.html http://www.nomicro.com/Products/ToDo/ http://www.magnetismstudios.com/MonkeyBusinessLabs/Checkmarker http://www.bluehenley.com/products/dobedo/ http://www.mygnu.com/julius/proj_todo.html http://www.myownapp.com/istk_app.html [...]]]></description>
			<content:encoded><![CDATA[<p>Matt Ball <a href="http://mattballdesign.com/blog/2008/02/20/the-forgotten-delicious/">writes</a> about the tendency of &#8220;delicious generation&#8221; apps to become abandonware.</p>
<p>That&#8217;s fine by me.  My biggest problem with them is that they seem to be composed almost entirely of lightweight to-do list applications and other such &#8220;my first real program&#8221; homework assignments.</p>
<p><a href="http://www.anxietyapp.com/">http://www.anxietyapp.com/</a><br />
<a href="http://hogbaysoftware.com/products/taskpaper">http://hogbaysoftware.com/products/taskpaper</a><br />
<a href="http://www.culturedcode.com/things/">http://www.culturedcode.com/things/</a><br />
<a href="http://www.objectivesatisfaction.com/what_todo/">http://www.objectivesatisfaction.com/what_todo/</a><br />
<a href="http://www.jimmcgowan.net/Site/DoIt.html">http://www.jimmcgowan.net/Site/DoIt.html</a><br />
<a href="http://www.nomicro.com/Products/ToDo/">http://www.nomicro.com/Products/ToDo/</a><br />
<a href="http://www.magnetismstudios.com/MonkeyBusinessLabs/Checkmarker">http://www.magnetismstudios.com/MonkeyBusinessLabs/Checkmarker</a><br />
<a href="http://www.bluehenley.com/products/dobedo/">http://www.bluehenley.com/products/dobedo/</a><br />
<a href="http://www.mygnu.com/julius/proj_todo.html">http://www.mygnu.com/julius/proj_todo.html</a><br />
<a href="http://www.myownapp.com/istk_app.html">http://www.myownapp.com/istk_app.html</a><br />
<a href="http://www.intuiware.com/Products/MacOSX/HotPlan/">http://www.intuiware.com/Products/MacOSX/HotPlan/</a><br />
<a href="http://www.myownapp.com/meinkopp_app.html">http://www.myownapp.com/meinkopp_app.html</a><br />
<a href="http://www.desertsandsoftware.com/?todo_home">http://www.desertsandsoftware.com/?todo_home</a><br />
<a href="http://www.orionbelt.com/productMac.php">http://www.orionbelt.com/productMac.php</a><br />
<a href="http://a-sharp.com/opal/opal">http://a-sharp.com/opal/opal</a></p>
<p>Nice icons and websites though.  Makes me wonder where the developers&#8217; real strengths lay.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2008/02/23/the-forgotten-delicious/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>gpl craziness</title>
		<link>http://penguinsounds.org/2007/12/10/gpl-craziness/</link>
		<comments>http://penguinsounds.org/2007/12/10/gpl-craziness/#comments</comments>
		<pubDate>Mon, 10 Dec 2007 21:40:09 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2007/12/10/gpl-craziness/</guid>
		<description><![CDATA[Sometimes, late at night when the moon is full and no one is around, I&#8217;ll download the Emacs source. Then, I&#8217;ll make a single change. Maybe rename a variable or a function, or comment something out. Then, I&#8217;ll recompile it and put the binary on my website for people to download. But I won&#8217;t provide [...]]]></description>
			<content:encoded><![CDATA[<p>Sometimes, late at night when the moon is full and no one is around, I&#8217;ll download the Emacs source.  Then, I&#8217;ll make a single change.  Maybe rename a variable or a function, or comment something out.  Then, I&#8217;ll recompile it and put the binary on my website for people to download.  But I won&#8217;t provide the source of my changes!  Muahahahaha.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2007/12/10/gpl-craziness/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>whoa guys</title>
		<link>http://penguinsounds.org/2007/11/21/whoa-guys/</link>
		<comments>http://penguinsounds.org/2007/11/21/whoa-guys/#comments</comments>
		<pubDate>Wed, 21 Nov 2007 21:45:26 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[websites]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2007/11/21/whoa-guys/</guid>
		<description><![CDATA[In Vacuous Virtuoso&#8217;s CTGradient code bloat article, he showed how easy it was to trim a 1300 line 3rd party piece of code down to 30 lines by trimming the unneeded code. Super. We should all look at what code we use and whether it is inefficient or not. The problem is he didn&#8217;t include [...]]]></description>
			<content:encoded><![CDATA[<p>In Vacuous Virtuoso&#8217;s <a href="http://lipidity.com/apple/ctgradient-code-bloat/">CTGradient code bloat</a> article, he showed how easy it was to trim a 1300 line 3rd party piece of code down to 30 lines by trimming the unneeded code.</p>
<p>Super.  We should all look at what code we use and whether it is inefficient or not.</p>
<p>The problem is he didn&#8217;t include any numbers beyond the LOCs.  It would have been nice to have had some before and after numbers on execution speed, binary size, and memory usage.</p>
<p>No big deal though.  It&#8217;s still a decent article.</p>
<p>It&#8217;s turned into a bit of a flame war though, or as close to a flame war as the usually polite Mac developer community gets.</p>
<p>I started it with what I like to think of was an <a href="http://lipidity.com/apple/ctgradient-code-bloat/comment-page-1/%23comment-39149">innocuous</a> comment.</p>
<p>It went back and forth a little bit with <a href="http://www.red-sweater.com/blog/">Daniel Jalkut</a> <a href="http://lipidity.com/apple/ctgradient-code-bloat/comment-page-1/%23comment-39180">joining in too</a>.</p>
<p>Then this guy, <a href="http://rixstep.com/">Rick</a>, <a href="http://lipidity.com/apple/ctgradient-code-bloat/comment-page-2/#comment-39353">joined in</a> and immediately went personal.</p>
<p>Rick also posted a fun little <a href="timecube.com">timecube</a> style rant on his <a href="http://www.rixstep.com/2/1/20071121,00.shtml">blog</a> where he referred to developers as the <em>Landed Gentry of Mac Development</em> and as <em>snakes</em>.  He also put the word &#8220;people&#8221; in scare quotes.<br />
<blockquote>It&#8217;s also amazing how far these &#8216;people&#8217; will go to defend what essentially is a defenceless position.</p></blockquote>
<p> Not quite sure what he thinks we are instead.</p>
<p><a href="http://www.seanmcollins.com/site/Intro.html">Sean</a> was totally unnecessary with his<br />
<blockquote>Do us a favor, think of this as being a thanksgiving dinner. The adults are busy discussing things at the dinner table. Take your slice of turkey, and go back to the childr- Oops, I mean, “indy” developer table.</p></blockquote>
<p> style comments.</p>
<p>I just think that the personal attacks are pretty lame in a discussion by a bunch of developers about the relative merits of a code cleanup.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2007/11/21/whoa-guys/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Rails vs Seaside</title>
		<link>http://penguinsounds.org/2007/09/10/rails-vs-seaside/</link>
		<comments>http://penguinsounds.org/2007/09/10/rails-vs-seaside/#comments</comments>
		<pubDate>Tue, 11 Sep 2007 03:36:40 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[interesting]]></category>
		<category><![CDATA[languages]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2007/09/10/rails-vs-seaside/</guid>
		<description><![CDATA[I came across an interesting post about SmallTalk&#8217;s Seaside versus Ruby&#8217;s Rails. The meat is in the comments which are very polite and informative. I&#8217;ve only played with Squeak once back in college so I didn&#8217;t really grasp the whole editing-live-objects-which-don&#8217;t-live-in-files thing. It sounds pretty neat and pretty powerful.]]></description>
			<content:encoded><![CDATA[<p>I came across an <a href="http://onsmalltalk.com/programming/smalltalk/rails-vs-seaside/">interesting post</a> about SmallTalk&#8217;s Seaside versus Ruby&#8217;s Rails.</p>
<p>The meat is in the comments which are very polite and informative.  I&#8217;ve only played with <a href="http://www.squeak.org/">Squeak</a> once back in college so I didn&#8217;t really grasp the whole editing-live-objects-which-don&#8217;t-live-in-files thing.</p>
<p>It sounds pretty neat and pretty powerful.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2007/09/10/rails-vs-seaside/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Power of Binary Searching</title>
		<link>http://penguinsounds.org/2007/08/21/the-power-of-binary-searching/</link>
		<comments>http://penguinsounds.org/2007/08/21/the-power-of-binary-searching/#comments</comments>
		<pubDate>Tue, 21 Aug 2007 15:41:57 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[interesting]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2007/08/21/the-power-of-binary-searching/</guid>
		<description><![CDATA[I always knew that binary searching was fast, O(log2) and all that. But when you have to run it by hand over 3000 subversion revisions, looking for the place where you introduced a memory leak, and after four steps you&#8217;ve eliminated 93% of the search space, you get a new appreciation for it. There are [...]]]></description>
			<content:encoded><![CDATA[<p>I always knew that <a href="http://en.wikipedia.org/wiki/Binary_search">binary searching</a> was fast, O(log<sub>2</sub>) and all that.  But when you have to run it by hand over 3000 subversion revisions, looking for the place where you introduced a memory leak, and after four steps you&#8217;ve eliminated 93% of the search space, you get a new appreciation for it.</p>
<p>There are some tools out there for automating these searches through subversion.  They didn&#8217;t fit our problem though because determining whether we were showing a memory leak was fuzzy.</p>
<p>Turned out to be 4 memory leaks.  Two very minor ones, and two major ones in third party libraries, one of which only showed up on the Mac platform.</p>
<p>Thanks to binary searching, we could quickly identify the exact spots where these leaks were introduced.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2007/08/21/the-power-of-binary-searching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bjorne Stroustrup lecture</title>
		<link>http://penguinsounds.org/2007/08/09/bjorne-stroustrup-lecture/</link>
		<comments>http://penguinsounds.org/2007/08/09/bjorne-stroustrup-lecture/#comments</comments>
		<pubDate>Fri, 10 Aug 2007 00:15:42 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[ideas]]></category>
		<category><![CDATA[interesting]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2007/08/09/bjorne-stroustrup-lecture/</guid>
		<description><![CDATA[I saw Bjorne Stroustrup give a lecture as part of the New York City Google TechTalks. Pretty interesting stuff. More updates to the language that I was expecting. Some much desired features too. Two downsides: the language is going to be that much more complicated. I&#8217;m looking at you, seperate meta-type system for controlling templates [...]]]></description>
			<content:encoded><![CDATA[<p>I saw <a href="http://www.research.att.com/~bs/homepage.html">Bjorne Stroustrup</a> give a lecture as part of the New York City Google TechTalks.  Pretty interesting stuff.  More updates to the language that I was expecting.  Some much desired features too.</p>
<p>Two downsides:</p>
<ol>
<li>the language is going to be that much more complicated.  I&#8217;m looking at you, seperate meta-type system for controlling templates</li>
<li>it took so long for the STL and templates to get good enough support, I doubt I&#8217;ll see any of this until 2015</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2007/08/09/bjorne-stroustrup-lecture/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>AppleEvents: Apple&#8217;s worst documented API?</title>
		<link>http://penguinsounds.org/2007/07/18/appleevents-apples-worst-documented-api/</link>
		<comments>http://penguinsounds.org/2007/07/18/appleevents-apples-worst-documented-api/#comments</comments>
		<pubDate>Wed, 18 Jul 2007 22:06:58 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[apple]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2007/07/18/appleevents-apples-worst-documented-api/</guid>
		<description><![CDATA[If you are trying to register a callback on getting a URL passed to your program through AppleEvents, don&#8217;t use the documented kAEInternetSuite and kAEISGetURL enums. They are defined as &#8216;gurl&#8217;, but the actual value passed to your program is &#8216;GURL&#8217;. From what I can tell, everyone defines their own enums because this is well [...]]]></description>
			<content:encoded><![CDATA[<p>If you are trying to register a callback on getting a URL passed to your program through AppleEvents, don&#8217;t use the documented kAEInternetSuite and kAEISGetURL enums.  They are defined as &#8216;gurl&#8217;, but the actual value passed to your program is &#8216;GURL&#8217;.  From what I can tell, everyone defines their own enums because this is well known.</p>
<p>Apple can&#8217;t fix it though, because it would break everyone&#8217;s software.  So they keep documenting it as &#8216;gurl&#8217;, and we keep redefining it to the actual value.</p>
<p>Awesome.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2007/07/18/appleevents-apples-worst-documented-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Python 3000 Status Update</title>
		<link>http://penguinsounds.org/2007/06/19/python-3000-status-update/</link>
		<comments>http://penguinsounds.org/2007/06/19/python-3000-status-update/#comments</comments>
		<pubDate>Wed, 20 Jun 2007 00:24:28 +0000</pubDate>
		<dc:creator>taybin</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://penguinsounds.org/2007/06/19/python-3000-status-update/</guid>
		<description><![CDATA[Guido van Rossum&#8217;s Python 3000 Status Update. Nothing new if you&#8217;ve watched his tech talk, but still an interesting read.]]></description>
			<content:encoded><![CDATA[<p>Guido van Rossum&#8217;s <a href="http://www.artima.com/forums/flat.jsp?forum=106&#038;thread=208549">Python 3000 Status Update</a>.  Nothing new if you&#8217;ve watched his <a href="http://video.google.com/videoplay?docid=-6459339159268485356">tech talk</a>, but still an interesting read.</p>
]]></content:encoded>
			<wfw:commentRss>http://penguinsounds.org/2007/06/19/python-3000-status-update/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
