<?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>KDBDallas &#187; Programming</title>
	<atom:link href="http://kdbdallas.com/category/programming/feed/" rel="self" type="application/rss+xml" />
	<link>http://kdbdallas.com</link>
	<description>Mac and iPhone Developer, Husband, Father, all in one</description>
	<lastBuildDate>Thu, 17 Jun 2010 22:27:15 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Very Very Classy</title>
		<link>http://kdbdallas.com/2010/06/17/very-very-classy/</link>
		<comments>http://kdbdallas.com/2010/06/17/very-very-classy/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 22:25:49 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[Fanboy]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[WWDC]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=324</guid>
		<description><![CDATA[I was VERY disappointed that I was unable to make it to Apple&#8217;s WWDC (World Wide Developer Conference) this year (it was last week).
The sessions are always VERY informative, but it is also a excellent chance to not only meet with other Mac/iOS developers, but you have the chance to talk one on one with [...]]]></description>
			<content:encoded><![CDATA[<p>I was VERY disappointed that I was unable to make it to Apple&#8217;s WWDC (World Wide Developer Conference) this year (it was last week).</p>
<p>The sessions are always VERY informative, but it is also a excellent chance to not only meet with other Mac/iOS developers, but you have the chance to talk one on one with the very people who are writing the software and API&#8217;s (Application Programming Interface) that we write software for/with.</p>
<p>Apple does make the videos of the sessions (along with the slides) available to everyone that attends, and allows those that didn&#8217;t attend to purchase the videos.<br />
Before last year, these videos usually took around 6 months to become available, however last year they had them released within a month.</p>
<p>This year Apple TOTALLY outdid themselves and have released the videos all today!<br />
That is LESS than 1 week!<br />
Not only did they release everything within a week, but Apple has made all of the videos and slides available to ALL registered developers (even the free developer accounts) FOR FREE!!! That is a $500 savings for those that couldn&#8217;t attend!</p>
<p>I only have 2 things to say&#8230;</p>
<p>First: Good bye to my Hard Drive space <img src='http://kdbdallas.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  (The videos are available in HD and Standard formats this year)</p>
<p>and Secondly&#8230; Classy Apple! VERY VERY CLASSY!</p>
<p><em>Reminder: Even though the videos did not cost this year, they are still covered under an NDA that you agree to when signing up for a developer account. Don&#8217;t make them sorry that they were so giving.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2010/06/17/very-very-classy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why Engineers Hop Jobs</title>
		<link>http://kdbdallas.com/2010/05/03/why-engineers-hop-jobs/</link>
		<comments>http://kdbdallas.com/2010/05/03/why-engineers-hop-jobs/#comments</comments>
		<pubDate>Mon, 03 May 2010 17:23:40 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=314</guid>
		<description><![CDATA[Repost of an article by Ted Dziuba on Saturday May 01, 2010.
Read the original article at: http://teddziuba.com/2010/05/why-engineers-hop-jobs.html
&#8212;&#8212;-
What&#8217;s with all the hate on my generation? It started when somebody
 quit Jason Calacanis&#8217;s industrial web spam startup, Mahalo, for a higher
paying position at a competitor. Invariably, Calacanis went apeshit on
the poor guy in a very public way, [...]]]></description>
			<content:encoded><![CDATA[<p><em>Repost of an article by Ted Dziuba on Saturday May 01, 2010.<br />
Read the original article at: <a href="http://teddziuba.com/2010/05/why-engineers-hop-jobs.html">http://teddziuba.com/2010/05/why-engineers-hop-jobs.html</a></em></p>
<p>&#8212;&#8212;-</p>
<p>What&#8217;s with all the hate on my generation? It started when somebody<br />
 quit Jason Calacanis&#8217;s industrial web spam startup, Mahalo, for a higher<br />
paying position at a competitor. Invariably, Calacanis went apeshit on<br />
the poor guy in a very public way, and this started a cascade of blogosphere<br />
butthurt about people in software under thirty: that we&#8217;re unreliable,<br />
that we&#8217;re lazy, that we&#8217;re entitled.</p>
<p>Well I&#8217;m as unreliable, lazy, and entitled as the next guy, but that&#8217;s not<br />
why I&#8217;ve hopped jobs in the past. People in my generation have a very<br />
low tolerance for bullshit, and software engineering, in general, is a<br />
very high bullshit career. If you couple that with the standard load<br />
of bullshit you would get from a non-technical Harvard MBA type boss &mdash;<br />
like many CEOs that you find trying to get rich in Silicon Valley by<br />
hiring some engineers to &#8220;code up this idea real quick&#8221; &mdash; it&#8217;s no<br />
wonder that a good engineer will walk off the job after his one year<br />
cliff vesting.</p>
<p>As an engineer, you are told that you&#8217;re &#8220;lucky to have a job&#8221;, because there are &#8220;a hundred people lined up<br />
outside, ready to take it&#8221;. (As chance would have it, there are at<br />
least a thousand lined up to take the job of <em>rich prick who tells<br />
people what to do</em>). This backlash is the product of diseased<br />
thinking. A CEO who makes an engineer work 80 hours a week is a driven<br />
entrepreneur, but an engineer asking for a comfy chair is a prima<br />
donna. So, when we are up to our knees in golf-course, martini-lunch<br />
bullshit, don&#8217;t be surprised when we jump ship for a higher<br />
salary.</p>
<p>I recognize the value of business people and<br />
management. Somebody has to sell the code that I write, which in turn<br />
puts food on my table. Since I <em>am</em> an engineer, I like<br />
iterative optimization. Every time I have left a job, I have<br />
further refined the requirements that a person must fill before I agree to work for him. After every job, I add one or two requirements to the list, and<br />
I have found that my happiness at work improves dramatically with<br />
every step.</p>
<p>This is my current list:</p>
<ul>
<li>The organization must need me at least as much as I need it.</li>
<li>My direct manager must have a technical background &mdash; enough to understand why programming is hard.</li>
<li>My direct manager must have enough experience or raw intelligence such that I can trust him/her to make decisions, even though I may not understand the reasoning.</li>
<li>I must have absolute faith in the business plan.</li>
<li>I must have absolute faith in &#8220;the business side&#8221; to execute that plan.</li>
</ul>
<p>So, Jason, when that fellow quit Mahalo, he didn&#8217;t just leave you<br />
in the lurch. He added something to his list. Maybe you should find<br />
out what that is.</p>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2010/05/03/why-engineers-hop-jobs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Core Data Speed Gotcha</title>
		<link>http://kdbdallas.com/2009/12/31/core-data-speed-gotcha/</link>
		<comments>http://kdbdallas.com/2009/12/31/core-data-speed-gotcha/#comments</comments>
		<pubDate>Thu, 31 Dec 2009 17:16:59 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[Cocoa]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[Core Data]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=296</guid>
		<description><![CDATA[Recently I was doing some performance stress testing on my upcoming iPhone app, Newsprint, and ran into a little Core Data gotcha that I thought I would document for both myself and for Google to index for others.
Special thanks to Jeff LaMarche for guiding me in the right direction to figure this out. You can [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I was doing some performance stress testing on my upcoming iPhone app, Newsprint, and ran into a little Core Data gotcha that I thought I would document for both myself and for Google to index for others.</p>
<p><strong>Special thanks to Jeff LaMarche for guiding me in the right direction to figure this out. You can find his blog at: <a href="http://iphonedevelopment.blogspot.com/">http://iphonedevelopment.blogspot.com/</a></strong></p>
<p>This issue came to play when I needed to do a fetch request from Core Data and then run a couple of Predicate &#8220;searches&#8221;/&#8221;filtering&#8221; on the data.</p>
<p>My original thought was that doing a single fetch request and then running my different predicates on the returned set of objects would have better performance then doing multiple fetch requests since I would only have to pull from the Core Data SQLite DB once and then I would have everything in memory and I could just simply manipulate it.</p>
<p>Turns out that this is HIGHLY incorrect.</p>
<p>If instead you just do multiple fetch requests and implement your predicate into your fetch request, that Core Data and SQLite are smart enough to scan the records more efficiently and without causing Core Data Faults to fire.</p>
<p>This gives a MASSIVE speed increase!</p>
<p>So if you are ever doing something similar, make sure to check this method and see if it to can speed your app up.</p>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2009/12/31/core-data-speed-gotcha/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How NOT to do app demos/trials</title>
		<link>http://kdbdallas.com/2009/12/04/how-not-to-do-app-demostrials/</link>
		<comments>http://kdbdallas.com/2009/12/04/how-not-to-do-app-demostrials/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 01:17:06 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=288</guid>
		<description><![CDATA[In the today&#8217;s world of software I think it is safe to say that the majority of applications offer some type of demo or trial.
For example, I offer a fully functional trial of iDeskCal for 14 days.
There are many different ways a developer/company can do/offer demos/trials.
I am not going to go into all the different [...]]]></description>
			<content:encoded><![CDATA[<p>In the today&#8217;s world of software I think it is safe to say that the majority of applications offer some type of demo or trial.</p>
<p>For example, I offer a fully functional trial of iDeskCal for 14 days.</p>
<p>There are many different ways a developer/company can do/offer demos/trials.<br />
I am not going to go into all the different ways and their pros and cons (perhaps I will in another post later).<br />
What I want to talk about today is one thing you should NOT do no matter how you choose to implement your demo/trial.</p>
<p>The inspiration for this post comes from a real world experience that I had recently when trying out a trial from a company, who will remain nameless as this post isn&#8217;t about blasting them but instead educating developers no matter what platform they write for.</p>
<p>Recently I needed to try and recover some accidentally deleted photos.<br />
I found an app that seemed to be exactly what I was looking for, and was excited because they offered a trial version with the statement that you can find out if their app can restore your files before you pay for the app.<br />
I say I was excited because from my experience backup and recovery applications are ones the tend to break my rule above about most offering trials.<br />
As I was searching a 1TB drive it took 13 hours to complete the search.</p>
<p>It is at this point that the app gives you a list of pictures to view and select to restore, so I started selecting items from the 70Gig worth of images it found (which took a while).<br />
I hit restore forgetting that I was still in trial mode, at which point the application reminded me that to restore I needed to purchase a license.</p>
<p>Up to this point everything with the trial was fine.<br />
There are some things they could have done to make it even better, but in general it was fine.<br />
But this is the point where it took a face dive as well.</p>
<p>I am redirected to their website, as expected, and I purchased a license.<br />
After purchasing I was expecting to get a serial number or registration file, but alas no&#8230;.</p>
<p>It was at this point (and ONLY this point) that I was informed that the trial application executable was ONLY a trial executable.<br />
I now had to download their app a second time, this time without limitations.<br />
Which meant that after running for 13+ hours I had to lose everything I had done.</p>
<p>This is the main point of this post.<br />
Let me say this clearly and to the point&#8230;.</p>
<p><strong>DO NOT DO THIS!</strong></p>
<p>Now that were clear, let me explain the reasons why you should not do this.</p>
<p>Lets start with the general aspects that apply to any program.<br />
Firstly, there is no reason to make your customer download your program again.<br />
By them purchasing you should be making their life easier not harder.</p>
<p>Secondly, depending on your programs focus there is a good chance that a large amount of your customers are not going to be geeks.<br />
In fact the opposite is more likely to be true.<br />
Chances are that most of your customers will the type that know just enough to get around, or less!<br />
This means any extra steps in your process adds to the chance for confusion.<br />
This is bad is very which way, as it frustrates the user who is likely to make that frustration known to others, as well as increases the chance that you will receive a support request, which if you are a small development shop means you have to stop coding to respond to the support request.</p>
<p>Last yet most importantly, If your program lets users do any kind of data manipulation give the user a way to save that data, so by purchasing they do not lose anything they did in the trial.<br />
If your trial doesn&#8217;t let them save without purchasing, then you REALLY should not be having separate executables.<br />
At VERY least give them the ability to save into a proprietary file format, that you can go as far as encrypting if you need/want.</p>
<p>Along with this, make sure that the user can Open that saved data after installing the full version.<br />
I was stung with this as well.<br />
I was able to save my 13 hour search results, but when I tried to open them in the full version, the app would just crash no matter how many times I tried to open it.</p>
<p>Whatever you do just make sure they do not lose their work/changes!</p>
<p>So in conclusion, when coming up with how to do the trial for your program try and make the process as smooth as possible.<br />
Try and make it so the user has to do a little work as possible.</p>
<p><strong>Remember: Don&#8217;t screw over your paying customers just to try and keep your app from being pirated.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2009/12/04/how-not-to-do-app-demostrials/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cocoa Touch for iPhone OS 3, Now Shipping!</title>
		<link>http://kdbdallas.com/2009/11/19/cocoa-touch-for-iphone-os-3-now-shipping/</link>
		<comments>http://kdbdallas.com/2009/11/19/cocoa-touch-for-iphone-os-3-now-shipping/#comments</comments>
		<pubDate>Thu, 19 Nov 2009 23:02:52 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[App Store]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=279</guid>
		<description><![CDATA[The book that I was the Technical Editor for, Cocoa Touch for iPhone OS 3, is now shipping from Amazon.com and should also be in (hopefully) most Barnes and Nobles.
View it at Amazon.com by clicking here.
This book is great for new iPhone developers as well as experienced ones.
You will need some Objective-C knowledge, but if [...]]]></description>
			<content:encoded><![CDATA[<p>The book that I was the Technical Editor for, Cocoa Touch for iPhone OS 3, is now shipping from Amazon.com and should also be in (hopefully) most Barnes and Nobles.<br />
<a href="http://www.amazon.com/dp/0470481072" target="_blank">View it at Amazon.com by clicking here.</a></p>
<p>This book is great for new iPhone developers as well as experienced ones.<br />
You will need some Objective-C knowledge, but if you have some OOP (Object Oriented Programming) experience you should be ok with picking up an Objective-C book as well for as you work through the book.</p>
<p>If you are in a B&#038;N stroll into the Geek, err, I mean Computer Programming section and look for the book.<br />
Feel free to buy a copy to support my good friend and author of the book, Jiva DeVoe.<br />
If you can&#8217;t get yourself to that level of geek, at least pick it up and look at the &#8216;Credits&#8217; page, right before the Table of Contents and then you can go around to all the geeks in that area and say, &#8220;I KNOW THIS GUY!&#8221; <img src='http://kdbdallas.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>This makes 2 iPhone development books that I have been involved in, each one with more of a role than the last, however I can safely say it will be my last as after being involved with the book writing processes and having the author be a close friend of mine, I don&#8217;t really have a desire to write one myself (unless it&#8217;s an offer I just can&#8217;t refuse).</p>
<p><a href="http://kdbdallas.com/wp-content/uploads/2009/11/cocoaTouchForIPhone.png"><img src="http://kdbdallas.com/wp-content/uploads/2009/11/cocoaTouchForIPhone.png" alt="cocoaTouchForIPhone" title="cocoaTouchForIPhone" width="300" height="376" class="aligncenter size-full wp-image-280" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2009/11/19/cocoa-touch-for-iphone-os-3-now-shipping/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Goodbye GeoCities</title>
		<link>http://kdbdallas.com/2009/10/26/goodbye-geocities/</link>
		<comments>http://kdbdallas.com/2009/10/26/goodbye-geocities/#comments</comments>
		<pubDate>Mon, 26 Oct 2009 19:14:17 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=267</guid>
		<description><![CDATA[Today marks the end of an era&#8230;
Today we mark the end of GeoCities!  
GeoCities was the premiere place to get your own personal &#8220;web space&#8221; back circa-1995.
GeoCities provide the initial playground for many of today&#8217;s web professionals (including myself).
I remember many-a-night hacking away on my GeoCities page.
Having informal feuds with others on who could [...]]]></description>
			<content:encoded><![CDATA[<p>Today marks the end of an era&#8230;</p>
<p>Today we mark the end of GeoCities! <img src='http://kdbdallas.com/wp-includes/images/smilies/icon_sad.gif' alt=':-(' class='wp-smiley' /> </p>
<p>GeoCities was the premiere place to get your own personal &#8220;web space&#8221; back circa-1995.<br />
GeoCities provide the initial playground for many of today&#8217;s web professionals (including myself).</p>
<p>I remember many-a-night hacking away on my GeoCities page.<br />
Having informal feuds with others on who could do the best site with the latest and greatest web technologies of the times, like frame and guest books!</p>
<p>GeoCities has therefore always been, and continued to today&#8217;s closure, the ultimate place to find the worst looking webpages with the most crap and the worst code.</p>
<p>In honor of the closing I took it on myself to throw everything I know from doing professional web development for 12 years, out the window and come put together the following for your enjoyment.</p>
<p><iframe src="http://kdbdallas.com/wp-content/uploads/geocities/" width="595" height="400"></iframe></p>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2009/10/26/goodbye-geocities/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>On that moron feeling</title>
		<link>http://kdbdallas.com/2009/07/18/on-that-moron-feeling/</link>
		<comments>http://kdbdallas.com/2009/07/18/on-that-moron-feeling/#comments</comments>
		<pubDate>Sat, 18 Jul 2009 18:20:31 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[Programming]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=243</guid>
		<description><![CDATA[This is a re-post of a blog written by Brent Simmons http://inessential.com/2009/07/17/on_that_moron_feeling. I am re-posting it as it is a great post.
I was a moron five years ago. Five months ago, even.
I’ve heard this from other programmers, so I don’t think I’m alone. They look back at old code they wrote and say, “What idiot [...]]]></description>
			<content:encoded><![CDATA[<p><em>This is a re-post of a blog written by Brent Simmons <a href="http://inessential.com/2009/07/17/on_that_moron_feeling">http://inessential.com/2009/07/17/on_that_moron_feeling</a>. I am re-posting it as it is a great post.</em></p>
<blockquote><p>I was a moron five years ago. Five <em>months</em> ago, even.</p>
<p>I’ve heard this from other programmers, so I don’t think I’m alone. They look back at old code they wrote and say, “What <em>idiot</em> wrote this <em>crap</em>?”</p>
<p>I used to wonder if this feeling would ever go away — as if I’d just get to the point where I’m super-awesome and that’s it.</p>
<p>But over the years I’ve learned to <em>rely</em> on this feeling. Were it ever to go away, then I’d be worried like hell. It would mean I’m not learning and not improving.</p>
<p>So, yes, I’m <em>proud</em> to have been such a moron so recently.</p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2009/07/18/on-that-moron-feeling/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting Pretty Lonely</title>
		<link>http://kdbdallas.com/2009/07/02/getting-pretty-lonely/</link>
		<comments>http://kdbdallas.com/2009/07/02/getting-pretty-lonely/#comments</comments>
		<pubDate>Thu, 02 Jul 2009 19:39:34 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[GPL]]></category>
		<category><![CDATA[Red Sweater Software]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=233</guid>
		<description><![CDATA[Post by Daniel Jalkut of Red Sweater Software &#8211; http://www.red-sweater.com/blog/825/getting-pretty-lonely. Reposting since Daniel&#8217;s site is currently overwhelmed.


This very post is delivered to your browser or news reader by the famous and fabulous WordPress blogging system. In my work as the developer of MarsEdit, I am exposed to countless blogging options, each with its own strengths [...]]]></description>
			<content:encoded><![CDATA[<p><em>Post by Daniel Jalkut of Red Sweater Software &#8211; <a href="http://www.red-sweater.com/blog/825/getting-pretty-lonely">http://www.red-sweater.com/blog/825/getting-pretty-lonely</a>. Reposting since Daniel&#8217;s site is currently overwhelmed.</em></p>
<p><em><br />
</em></p>
<p>This very post is delivered to your browser or news reader by the famous and fabulous <a href="http://wordpress.org/">WordPress</a> blogging system. In my work as the developer of <a href="http://www.red-sweater.com/marsedit/">MarsEdit</a>, I am exposed to countless blogging options, each with its own strengths and weaknesses. And yet, I stick with WordPress because it strikes a balance of power and ease of use which feels comfortable to me. Not to mention that <a href="http://josephscott.org/">Joseph Scott</a> and others are tirelessly working to improve its API.</p>
<p>WordPress is licensed under the terms of the <a href="http://www.gnu.org/licenses/quick-guide-gplv3.html">Gnu Public License</a> (GPL) which, in a nutshell, stipulates that you are free to use the software however you like, but if you make changes and <em>distribute</em> those changes, then you must share those changes under the same terms. This simple, radical restriction means that you are prohibited from taking a GPL project and incorporating it with a closed-source project.</p>
<h3>Violating The GPL</h3>
<p>Violating the GPL is easy. All you have to do is write some code,  intermingle it with some GPL code, distribute a changed copy of the original, and refuse to share your contributions. Bam! You’re toast. Assuming the original authors discover your violation and decide to pursue a resolution.</p>
<p>Once a violation occurs, it might be settled privately, or could escalate to legal court procedures. But the most obvious form of resolution is for the author of the changes to release their code to the public under the terms of the GPL.</p>
<p>Depending on how much code you “mixed” with the GPL code, this could mean only a small portion, or it could mean the entire source code of your project. This so-called “viral nature” of GPL is what scares the bejeezus out of companies, large and small, who fear the consequences of having to give up their own intellectual property to the public.</p>
<p>The terms of the GPL sound pretty simple at first read, but due in part to the epic consequences of a violation, there has been a great deal of debate and uncertainty about what legally constitutes a violation. Most of the debate seems to boil down to two questions:</p>
<ol>
<li>What counts as a change to the original product?</li>
<li>What counts as distribution of those changes?</li>
</ol>
<p>If you can legally justify that your additions to a GPL project either <em>don’t change or derive from</em> the original product, or haven’t technically been <em>distributed</em>, then you are not subject to the restrictive terms of the license.</p>
<p>Take <a href="http://www.gimp.org/">GIMP</a>, the popular GNU-licensed image editing application. The application supports plugins, analogous to the types of plugins you might find for the commercial, closed-source application Photoshop. A savvy developer may argue that a plugin doesn’t meet the criteria of changing the original application, because the original application still runs in its unaltered condition whether the plugin is there or not.</p>
<p>But promoters of the GPL take the position that plugins, by nature of being loaded into the same code space as other GPL code, do constitute a modification of the original, and are therefore subject to the terms of the GPL. As far as I know this is not a question that has been well-tested in courts.</p>
<p>Let me take a moment to make this abundantly clear: <strong>I respect the rights of authors to license their software under whatever terms they choose, including the GPL.</strong> In my opinion, all the legal mumbo jumbo ceases to matter once the original author’s <em>intentions</em> are made clear. So if the author of GPL-licensed code clarifies to me that it cannot be run on Sundays, then <em>their GPL</em> means it cannot be run on Sundays. But this is one of the   problems with the GPL: its terms are not often understood, even by the authors of GPL-licensed code.</p>
<h3>WordPress Themes &amp; Plugins</h3>
<p>WordPress supports two explicit forms of extension, each of which may affect the appearance and functionality of the product. Themes tend to work as a “skin” for the appearance of a blog, while plugins tend to introduce completely new features. Since plugins in WordPress are analogous to GIMP or Photoshop plugins, it would stand to reason that they would also be covered by the terms of the GPL. But what about themes?</p>
<p>Themes have been controversial in the WordPress community, as a few commercial business models have sprung up to take advantage of bloggers’ desires for high quality themes at an affordable price. One approach is to distribute “free” themes that contains commercial ads. So you might stumble upon the perfect theme for your blog, only to learn that the glaring “Brought to you by Hostess Cupcakes” line near the bottom of your page cannot be removed.</p>
<p>But the terms of the GPL, if themes are covered, would require that end users be granted the legal right to modify and redistribute their own copy of the theme. Zap the sponsorship, reupload to your site, and you’ve got a free, high quality theme with no ugly ads.</p>
<p>Today, Matt Mullenweg of the WordPress project announced his lawyer-supported opinion that <a href="http://wordpress.org/development/2009/07/themes-are-gpl-too/">themes are partly covered by the GPL</a>:</p>
<blockquote><p>I reached out to the Software Freedom Law Center, the world’s preeminent experts on the GPL, which spent time with WordPress’s code, community, and provided us with an official legal opinion. One sentence summary: PHP in WordPress themes must be GPL, artwork and CSS may be but are not required.</p></blockquote>
<p>If you’re starting with the understanding that WordPress itself is GPL, and WordPress plugins are GPL, then it’s not so much extra hay on the camel’s back, to also clarify that its themes are to some extent GPL. But it got me thinking again about my own blog, and about the restrictions the GPL imposes on the kinds of things I can do with the software that runs it.</p>
<h3>GPL Stifles Participation</h3>
<p>Now for the most controversial point of this article, where I suggest that the GPL does more to harm collaborative development than it does to help it.</p>
<p>For the purposes of this argument, let me reduce all the source code in the world down to three rough categories. I recognize I have omitted some classes of license here, but for the sake of argument, most projects fall into these camps:</p>
<ol>
<li>GPL code. Changes may be distributed only in other GPL products.</li>
<li>Liberal-licensed code. (MIT/BSD/Apache/etc). Changes may be distributed anywhere. Appropriate origin-attribution may be required.</li>
<li>Closed-source code. May be distributed only by the copyright owner and other explicit licensees.</li>
</ol>
<p>Now, there are a few people in the world who, for political or philosophical reasons, will <em>only</em> participate in a GPL project. And for compariable yet opposite reasons, there are some who will <em>only</em> participate in commercial, closed-source projects. But I propose that <strong>the vast majority of developers will participate in any project that is advantageous to them.</strong></p>
<p>So let’s imagine a representative, run-of-the-mill developer who is working on a project that falls into each of these three camps. If this developer is not radically committed to their own project’s license, they will naturally look to outside resources in order to bolster the success of their own work.</p>
<p>As the developer evaluates communities to participate in, they must evaluate the legal impact such participation will have on their own project. The closed source communities are, by definition uninviting to outsiders. GPL communities are open and embracing of other GPL developers, but generally off-putting to liberal-license and closed-license developers. <strong>Only the liberal-license communities are attractive to developers from all 3 camps.</strong></p>
<p>I know what some of the GPL-enthusiasts are thinking now: “leeches don’t count as community.” Many GPL developers  take comfort in the fact that their hard work can’t be quietly taken and incorporated into a commercial product, without any payback of time or money to the original project. But you’re piloting an open source project, and the first step of building a community is to get people in the door. Liberal licenses? Whoo-eee do they ever get people in the door.</p>
<p>If you operate from the presumption that great developers love to build great projects, the first step in any successful open source project is to get as many great developers in the door as possible.</p>
<h3>It’s Your Party</h3>
<p>Yes, this is just me and my crazy theories. I haven’t done exhaustive research to prove that liberal-license communities thrive more than GPL communities. But the anecdotal examples are staggering. The very foundation of Mac OS X, the operating system through which I’m typing, is thanks to the liberally-licensed <a href="http://www.freebsd.org/">FreeBSD</a> operating system.</p>
<p>Looking over to the right of my screen, I’m watching this sentence appear in a live web preview as I type, thanks to the <a href="http://webkit.org/">WebKit</a> project, whose liberal license makes it compatible with closed source projects such as Safari, as well as open source efforts such as Google’s <a href="http://code.google.com/chromium/">Chromium</a> project.</p>
<p>For years, the problem of a generic HTTP client library that runs on every major platform has been addressed by <a href="http://curl.haxx.se/libcurl/">libcurl</a>, whose liberal license has caused it to be embraced by <em>countless</em> <a href="http://curl.haxx.se/docs/companies.html">companies</a> and <a href="http://curl.haxx.se/libcurl/using/apps.html">projects</a>.</p>
<p>The popular <a href="http://subversion.tigris.org/">Subversion</a> source control system’s liberal license enabled <a href="http://www.madebysofa.com/">Sofa</a>, a commercial software business to contribute value to the community with its extremely polished, <a href="http://versionsapp.com/">award-winning client application</a>. Meanwhile, the newly popular distributed source control systems presents three major choices: <a href="http://git-scm.com/">git</a>, <a href="http://mercurial.selenic.com/wiki/">Mercurial</a>, and <a href="http://bazaar-vcs.org/">Bazaar</a>. All are restrcted by the GPL-license, and therefore none is likely to inspire development of a Versions-caliber client.</p>
<p>I’ve touched the tip of the iceberg, and yes I’ve neglected to mention some GPL success stories such as <a href="http://linux.org/">Linux</a>, <a href="http://www.mysql.com/">MySQL</a>, and <a href="http://gcc.gnu.org/">gcc</a>. These communities have thrived to some extent because the passions of the GPL community are strong, but we can’t know whether their success is <em>in spite of</em> the restrictions their license places on participation by the broader developer community.</p>
<p>Speaking of GPL succeses, WordPress is itself an example of <em>monumental success.</em> All of its developers have something to be immensely proud of. But whenever I am reminded that WordPress is GPL, my passion for it takes a bit of a dive. I’m more comfortable with the true freedom of liberally-licensed products. If a liberally-licensed blog system of equal quality, ease of use, and popularity should appear, my loyalties to WordPress would not last long.</p>
<p>It’s your party, and you’re entitled to write the guest list. But take a look around the room: not as many folks as you’d hoped for? Liberally-licensed projects are booming. Speaking for myself, a developer who has been to <em>all the parties</em>, I’m much more likely to pass through the door that doesn’t read “GPL Only.”</p>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2009/07/02/getting-pretty-lonely/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WWDC 2009</title>
		<link>http://kdbdallas.com/2009/06/21/wwdc-2009/</link>
		<comments>http://kdbdallas.com/2009/06/21/wwdc-2009/#comments</comments>
		<pubDate>Sun, 21 Jun 2009 09:55:36 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Mac]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[WWDC]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=227</guid>
		<description><![CDATA[I have been back from WWDC for a little over a week now, but haven&#8217;t had a chance to say anything about it or post any pictures. (I will post an explanation shortly)
WWDC (Apple&#8217;s World Wide Developer Conference, in case you don&#8217;t know) was amazing!
This was the first time that I have been able to [...]]]></description>
			<content:encoded><![CDATA[<p>I have been back from WWDC for a little over a week now, but haven&#8217;t had a chance to say anything about it or post any pictures. (I will post an explanation shortly)</p>
<p>WWDC (Apple&#8217;s World Wide Developer Conference, in case you don&#8217;t know) was amazing!<br />
This was the first time that I have been able to justify going (it&#8217;s not cheap) but man was it great.</p>
<p>I had the chance to meet so many amazing people that I talk to all the time on Twitter, but now I got the chance to meet them in real life.</p>
<p>Besides all the great developers and parties, it was a chance to learn about new and upcoming enhancements to the Mac operating system and the iPhone, as well as learn the best way to do certain things in code, coming from the people that write the language!</p>
<p>Apple also offers what the call labs during WWDC.<br />
Labs allow you to take your code and sit down with an Apple Engineer that works on whatever particular topic you want, and they are there to serve. They will look over code and tell if you how you could have done it better, or they will help you debug an issue you are having, or anything else.</p>
<p>There is so much information flying at you all day that it can be overwhelming at times.</p>
<p>And when the sessions and labs end each day, WWDC does not end&#8230;.<br />
I have never seen more back to back, double/triple booked parties in my life.<br />
Parties that go until all hours of the morning.</p>
<p>So with sessions and labs all day and parties all night, by midweek you are the walking dead but it doesn&#8217;t stop the fun. (and I didn&#8217;t even go out every night!)</p>
<p>Around the end of the week Apple throws a big party and this year had the band &#8216;Cake&#8217; come and perform.</p>
<p>Overall it was a GREAT time and I can&#8217;t wait until next year, yet it is always nice to come back home to family as well.</p>
<p>We are talking about Nancy coming along next year and being able to tour San Francisco while I am in the sessions.</p>
<p>My WWDC 09 Photos &#8211; <a href="http://www.flickr.com/photos/kdbdallas/sets/72157620059169940/">http://www.flickr.com/photos/kdbdallas/sets/72157620059169940/</a></p>
<p><a href="http://www.flickr.com/photos/kdbdallas/3646634330/" title="SDC10044 by Dallas Brown, on Flickr"><img src="http://farm4.static.flickr.com/3611/3646634330_34bfffa391.jpg" width="500" height="375" alt="SDC10044" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2009/06/21/wwdc-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Coming Soon to a Bookstore Near You</title>
		<link>http://kdbdallas.com/2009/05/05/coming-soon-to-a-bookstore-near-you/</link>
		<comments>http://kdbdallas.com/2009/05/05/coming-soon-to-a-bookstore-near-you/#comments</comments>
		<pubDate>Tue, 05 May 2009 21:56:12 +0000</pubDate>
		<dc:creator>Dallas</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Cocoa Touch]]></category>
		<category><![CDATA[Objective-C]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[SDK]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://kdbdallas.com/?p=213</guid>
		<description><![CDATA[I have been offered a gig of being the Technical Editor for an upcoming iPhone programming book.
The book is called &#8220;Cocoa Touch for iPhone 3.0&#8243; and is being written by my friend Jiva DeVoe and published by Wiley and Sons Publishing.
You can visit the current pre-emptive webpage for the book at: http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470481072.html
I was previously a [...]]]></description>
			<content:encoded><![CDATA[<p>I have been offered a gig of being the Technical Editor for an upcoming iPhone programming book.</p>
<p>The book is called &#8220;Cocoa Touch for iPhone 3.0&#8243; and is being written by my friend <a href="http://www.random-ideas.net/">Jiva DeVoe</a> and published by <a href="http://www.wiley.com/WileyCDA/">Wiley and Sons Publishing</a>.</p>
<p>You can visit the current pre-emptive webpage for the book at: <a href="http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470481072.html">http://www.wiley.com/WileyCDA/WileyTitle/productCd-0470481072.html</a></p>
<p>I was previously a Technical Reviewer for the programming book: <a href="http://my.safaribooksonline.com/9780596156282/preface#acknowledgments">iPhone SDK Application Development, 1st Edition</a></p>
<p>It will be interesting the see the differences between being a technical reviewer and a technical editor.</p>
]]></content:encoded>
			<wfw:commentRss>http://kdbdallas.com/2009/05/05/coming-soon-to-a-bookstore-near-you/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
