<?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>Vance Lucas &#187; Opinion</title>
	<atom:link href="http://www.vancelucas.com/blog/category/opinion/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.vancelucas.com</link>
	<description>Web Entrepreneur and Freelance PHP/Javascript Developer</description>
	<lastBuildDate>Thu, 17 Nov 2011 15:30:33 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Protected vs Private Scope: Arrogance, Fear, and Handcuffs</title>
		<link>http://www.vancelucas.com/blog/protected-vs-private-scope-arrogance-fear-and-handcuffs/</link>
		<comments>http://www.vancelucas.com/blog/protected-vs-private-scope-arrogance-fear-and-handcuffs/#comments</comments>
		<pubDate>Mon, 04 Apr 2011 14:19:48 +0000</pubDate>
		<dc:creator>Vance Lucas</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[method scope]]></category>
		<category><![CDATA[oop]]></category>
		<category><![CDATA[private vs protected]]></category>

		<guid isPermaLink="false">http://www.vancelucas.com/?p=721</guid>
		<description><![CDATA[The age old private vs protected debate has been re-ignited in the PHP community recently following the decision of Doctrine2 and Symfony2 to make all class methods private until there is a very clear and proven reason to change them to protected or public. The intention is a good one &#8211; to ensure they are [...]]]></description>
			<content:encoded><![CDATA[<p>The age old private vs protected debate has been re-ignited in the PHP community recently following the decision of <a href="http://groups.google.com/group/symfony-devs/browse_thread/thread/58a0d015622c13cb">Doctrine2 and Symfony2 to make all class methods private</a> until there is a very clear and proven reason to change them to protected or public. The intention is a good one &#8211; to ensure they are providing a clear and stable API through intentional and known extension points that they can better test and support. Fabien (the creator of Symfony) points to this benefit in an <a href="http://fabien.potencier.org/article/47/pragmatism-over-theory-protected-vs-private">article of his own</a> explaining the thinking behind the decision. The primary started point of Fabien&#8217;s article and the driving thought behind this whole change and philosophy is (emphasis his):</p>
<blockquote><p><strong>Having a few well defined extension points force the developer to extend your library the right way instead of hacking your code.</strong></p></blockquote>
<p>The problem is that this kind of thinking is a slippery slope that kills the spirit of programming. It alienates the more pragmatic developers within communities. Telling other developers that you are going to force them to work with your code in some pre-determined &#8220;right way&#8221; is an incredibly arrogant statement to make.<span id="more-721"></span> Instead of letting the codebase grow organically and be modified or extended at will, you handcuff developers and send them a different message. Allow me to re-phrase it using my own words:</p>
<blockquote><p>I know the right way to use this code and I have thought of all the possible use cases. If you don&#8217;t agree, then you have to prove me wrong and wait until I either agree or figure out a better right way for you.</p></blockquote>
<p>This is the real message developers hear when internal code is private scope or marked with the final keyword &#8211; a message that they have arbitrarily limited power and ability to make changes where they need to. But it doesn&#8217;t stop there.</p>
<p>When you take the position that all methods should be private unless proven otherwise, you plant a seed of fear in the developers that use your code. Fear that whenever they may have to veer off the beaten path to meet a project requirement they won&#8217;t be able to. Fear that they might miss deadlines waiting for the &#8220;right way&#8221;  to enable the functionality they need. Fear that they might have to modify or hack the actual file or class they need to change the behavior of to achieve the functionality they want within the project deadline because they are not able to extend it.</p>
<p>Using private scope removes the fun from programming and kills the hacking spirit by creating fear through the knowledge that you will not have the ability to make changes anywhere in the codebase you need to when you need to. You are no longer in control of your own code. You were forced to submit to a <a href="http://blog.astrumfutura.com/2011/03/private-vs-protected-methods-the-debate-that-never-ends/">nanny state mentality</a> by sacrificing your freedoms to modify the code for the promise of future stability and safety. That&#8217;s not a fun place to be when you&#8217;re on the receiving end, and it&#8217;s not a policy I would ever consider enforcing with my own code. I sincerely hope this line of thinking does not proliferate within the PHP community and infect other projects.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vancelucas.com/blog/protected-vs-private-scope-arrogance-fear-and-handcuffs/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>NoSQL First Impressions: Object Databases Missed the Boat</title>
		<link>http://www.vancelucas.com/blog/nosql-first-impressions-object-databases-missed-the-boat/</link>
		<comments>http://www.vancelucas.com/blog/nosql-first-impressions-object-databases-missed-the-boat/#comments</comments>
		<pubDate>Tue, 27 Apr 2010 17:00:57 +0000</pubDate>
		<dc:creator>Vance Lucas</dc:creator>
				<category><![CDATA[Database]]></category>
		<category><![CDATA[NoSQL]]></category>
		<category><![CDATA[Opinion]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[databases]]></category>
		<category><![CDATA[mongodb]]></category>
		<category><![CDATA[rdbms oodb]]></category>

		<guid isPermaLink="false">http://www.vancelucas.com/?p=551</guid>
		<description><![CDATA[I&#8217;ve spent the past few weeks here at work researching and playing with NoSQL databases (and especially MongoDB) for a new feature we&#8217;re developing that doesn&#8217;t easily fit into a relational model. And so far, I really like what I see. The profoundness of the shift away from the relational model and the implications that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve spent the past few weeks here at work researching and playing with <a href="http://en.wikipedia.org/wiki/NoSQL">NoSQL</a> databases (and especially <a href="http://mongodb.org">MongoDB</a>) for a new feature we&#8217;re developing that doesn&#8217;t easily fit into a relational model. And so far, I <em>really</em> like what I see. The profoundness of the shift away from the relational model and the implications that has just blow my mind. <strong>You no longer have to fragment your data to persist it</strong><em>.</em> You just store it. That&#8217;s it. No more hours toiling over the design your table schema and how to break apart the data you put together just to fit it into a relational model. You can now store your data exactly how you use it in your application, with no other special needs or <a href="http://en.wikipedia.org/wiki/Object-relational_impedance_mismatch">impedance mismatches</a>. Going back to an <a href="http://en.wikipedia.org/wiki/RDBMS">RDBMS</a> system now just seems illogical &#8211; it&#8217;s like breaking apart a camera tripod just to fit it in the same standard size case you&#8217;ve been using for years instead of just collapsing it and finding a different case that fits it better. All that effort you go though tearing down your tripod and putting it back together every time you use it is wasted and unnecessary. It&#8217;s a symptom of the larger problem that your case doesn&#8217;t fit your tripod.<span id="more-551"></span></p>
<p>Once you fully get the NoSQL viewpoint and the implications it has on  the future of data storage, you have one of those &#8220;why didn&#8217;t anyone  think of this sooner?&#8221; moments. And yes, I know key/value stores like <a href="http://memcached.org/">memcached</a> existed long before this whole new &#8220;NoSQL&#8221; movement, but it&#8217;s not quite  the same thing.</p>
<h3>Object Databases</h3>
<p>Object databases are an interesting case. They are in the &#8220;NoSQL&#8221; category and solve the same problem other NoSQL databases do &#8211; creating a storage mechanism that fits your data instead of making your data fit a predefined rigid storage mechanism. So why didn&#8217;t they catch on? What gives? It&#8217;s anyone&#8217;s guess why object databases didn&#8217;t catch on and achieve widespread adoption, but one thing is for sure &#8211; <strong>object databases really missed the boat</strong> while other NoSQL database technologies are running rings around them.</p>
<p>The primary problem is that most object databases are designed for a specific language, like Java or .NET. Some have more language support than others, but the problem is still the same &#8211; by integrating in directly with a language&#8217;s object model they depend on specific language implementations, which severely limits adoption. They solve the impedance mismatch problem that RDBMSes present, but <strong>fail to provide language-agnostic data persistence and access</strong>, effectively tying their use to specific technology stacks and platforms.</p>
<h3>The Best of Both Worlds</h3>
<p>NoSQL databases are gaining traction like no other database technology has in over 30 years. The reason is that <strong>good NoSQL databases solve both key data storage problems: impedance mismatches AND language-agnosticism.</strong> By storing the data in an intermediary format like JSON (or BSON) and allowing custom file content types, the focus is on the actual data itself instead of specific technologies or data models. The technology stack becomes irrelevant, and the walls to gaining user adoption crumble.</p>
<p>The bottom line is that NoSQL databases are not just the latest fad. They represent a fundamental paradigm shift in data storage and are an entirely new way of thinking about how to store and access your data in a way that makes sense for your actual usage. NoSQL databases are absolutely something you should be paying attention to and following closely &#8211; they are a strong contender to the RDBMS model and will likely become the de-facto data storage choice for most new web applications within a decade.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vancelucas.com/blog/nosql-first-impressions-object-databases-missed-the-boat/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Why WordPress Should Not Have Won the Open Source CMS Award</title>
		<link>http://www.vancelucas.com/blog/wordpress-and-the-open-source-cms-award/</link>
		<comments>http://www.vancelucas.com/blog/wordpress-and-the-open-source-cms-award/#comments</comments>
		<pubDate>Wed, 23 Dec 2009 19:10:26 +0000</pubDate>
		<dc:creator>Vance Lucas</dc:creator>
				<category><![CDATA[Opinion]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[awards]]></category>
		<category><![CDATA[cms]]></category>
		<category><![CDATA[Drupal]]></category>
		<category><![CDATA[Joomla]]></category>
		<category><![CDATA[MODx]]></category>
		<category><![CDATA[open source]]></category>
		<category><![CDATA[open source cms awards]]></category>
		<category><![CDATA[SilverStripe]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://www.vancelucas.com/?p=498</guid>
		<description><![CDATA[Packt Publishing announced the winners for their annual Open Source CMS Award in November, and since then I have been a bit disturbed that the 2009 winner was WordPress. My first reaction was this: &#8220;&#8230; So a blogging platform won the content management system award? How sad is that?&#8221; My knee-jerk &#8220;how sad is that?&#8221; [...]]]></description>
			<content:encoded><![CDATA[<p>Packt Publishing announced the winners for their annual <a href="http://www.packtpub.com/award">Open Source CMS Award</a> in November, and since then I have been a bit disturbed that the 2009 <a href="http://wordpress.org/development/2009/11/wordpress-wins-cms-award/">winner was WordPress</a>. My first reaction was this:</p>
<blockquote><p>&#8220;&#8230; So a <em>blogging platform</em> won the <em>content management system</em> award? How sad is that?&#8221;</p></blockquote>
<p>My knee-jerk &#8220;how sad is that?&#8221; reaction comes not because I don&#8217;t think WordPress is worthy, but because of what it implies about the state of other open source CMS projects. The reaction comes from the fact that <em>a </em><strong>blogging platform is kicking your CMS&#8217;s ass in its own category</strong>.</p>
<p><span id="more-498"></span></p>
<p>WordPress bridges both the blogging and CMS categories due to the &#8216;Pages&#8217; feature, and is extremely useful for managing a blog-focused website. Mostly. That is, until you want to do something that a CMS should be good at, like have an event calendar, custom form, photo gallery, etc. &#8211; which is why WordPress is not focused on being a CMS in the first place. Yet <em>it does such a better job at the basic things</em> like creating new pages, tagging, categorizing, comments, and having custom SEO-friendly URLs out of the box that it edged out other software projects like <del><a href="http://drupal.org/">Drupal</a></del> <a href="http://modxcms.com/">MODx</a> and <del><a href="http://www.joomla.org/">Joomla!</a></del> <a href="http://www.silverstripe.com/">SilverStripe</a> whose sole focus is content management. Sad indeed.</p>
<p>The fact that I can go through <a href="http://php.opensourcecms.com/scripts/show.php?catid=1&amp;cat=CMS%20/%20Portals">literally hundreds</a> of open source content management systems and still end up settling on WordPress because I know it&#8217;s the only one that won&#8217;t totally confuse my client is what&#8217;s sad. Usability and ease of use matter. They are the number one feature to the end user. If you&#8217;re involved in a CMS project, you need to do better. A <em>lot</em> better. <strong>Right now</strong>.</p>
<p><strong>UPDATE</strong>: Some commenters have pointed out that the awards website has a specific rule:</p>
<blockquote><p>Previous winners of the Overall category are not eligible for the Overall category in 2009. Previous winners compete amongst one another in a separate Hall of Fame category designed specifically for them.</p></blockquote>
<p>Since both Drupal and Joomla! have won the award previously and thus were automatically excluded, I replaced their names with the CMS projects that were 2nd and 3rd behind WordPress (MODx and SilverStripe) instead. The premise of the post still holds true.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.vancelucas.com/blog/wordpress-and-the-open-source-cms-award/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
	</channel>
</rss>

