<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
		>
<channel>
	<title>Comments for Ben Allfree</title>
	<atom:link href="http://www.benallfree.com/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.benallfree.com</link>
	<description>Custom programming by someone who knows the difference.</description>
	<lastBuildDate>Tue, 10 Jan 2012 00:17:59 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<item>
		<title>Comment on Project Health Test by J. Thompson</title>
		<link>http://www.benallfree.com/2008/10/15/oversized-ego-test/comment-page-1/#comment-2163</link>
		<dc:creator>J. Thompson</dc:creator>
		<pubDate>Tue, 10 Jan 2012 00:17:59 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/index.php/2008/10/15/oversized-ego-test/#comment-2163</guid>
		<description>Thank you so much for this post. You just saved me a lot of time. Now I can disregard about 80% of the CL adverts I was responding to.</description>
		<content:encoded><![CDATA[<p>Thank you so much for this post. You just saved me a lot of time. Now I can disregard about 80% of the CL adverts I was responding to.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on What sucks about WP dev by Ben</title>
		<link>http://www.benallfree.com/2011/09/20/what-sucks-about-wp-dev/comment-page-1/#comment-2116</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Fri, 30 Sep 2011 22:15:22 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/?p=1243#comment-2116</guid>
		<description>Change code around? Got an example?</description>
		<content:encoded><![CDATA[<p>Change code around? Got an example?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on What sucks about WP dev by lincoln ne computer repair</title>
		<link>http://www.benallfree.com/2011/09/20/what-sucks-about-wp-dev/comment-page-1/#comment-2115</link>
		<dc:creator>lincoln ne computer repair</dc:creator>
		<pubDate>Fri, 30 Sep 2011 20:36:05 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/?p=1243#comment-2115</guid>
		<description>Also... WP has a tendency to change your code around... Usually not a good thing for most developers and creates a niche of people specializing in forcing WP to behave.</description>
		<content:encoded><![CDATA[<p>Also&#8230; WP has a tendency to change your code around&#8230; Usually not a good thing for most developers and creates a niche of people specializing in forcing WP to behave.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Actions vs Filters in WP &#8211; Do We Need Both? by Ben</title>
		<link>http://www.benallfree.com/2011/09/18/actions-vs-filters-in-wp-interesting-destinction/comment-page-1/#comment-2102</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Tue, 20 Sep 2011 13:26:52 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/?p=1241#comment-2102</guid>
		<description>Thanks for gracing my blog with such a thoughtful reply. Seriously, I don&#039;t think I&#039;ve ever seen a trackback work. :)

Ok, so we&#039;re basically not arguing. Distinguishing between event types will reduce the likelihood of misuse even if it can&#039;t really be enforced by PHP. Is that a fair summary?

Click does allow the caller to suppress/capture responder output, so the ECHO example is not a problem but your general point stands. Click has thus far been used by a small core of expert programmers, so the issue of event type abuse has not surfaced. I see how it could though. After writing this post I got to thinking that WP&#039;s immutable-positive approach to life probably leads to more stable plugins. It reduces the likelihood that something will be misused or inadvertently modified. 

Regarding the impetus for filters/actions, I want a world where someone was sitting around a long time ago trying to figure out how to hook into some blog post output and said &quot;hey, I know, I need to run the post output through some FILTERS!&quot; And then, someone wanted to shoot an email out based on a trigger and didn&#039;t like using a filter for it so they said &quot;hey, I know, we need some ACTIONS!&quot; And the rest is history. Something about it just feels bloggy to me and I want it to be true. I want it to be evidence of an organic evolution from blog engine to CMS.</description>
		<content:encoded><![CDATA[<p>Thanks for gracing my blog with such a thoughtful reply. Seriously, I don&#8217;t think I&#8217;ve ever seen a trackback work. <img src='http://www.benallfree.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p>Ok, so we&#8217;re basically not arguing. Distinguishing between event types will reduce the likelihood of misuse even if it can&#8217;t really be enforced by PHP. Is that a fair summary?</p>
<p>Click does allow the caller to suppress/capture responder output, so the ECHO example is not a problem but your general point stands. Click has thus far been used by a small core of expert programmers, so the issue of event type abuse has not surfaced. I see how it could though. After writing this post I got to thinking that WP&#8217;s immutable-positive approach to life probably leads to more stable plugins. It reduces the likelihood that something will be misused or inadvertently modified. </p>
<p>Regarding the impetus for filters/actions, I want a world where someone was sitting around a long time ago trying to figure out how to hook into some blog post output and said &#8220;hey, I know, I need to run the post output through some FILTERS!&#8221; And then, someone wanted to shoot an email out based on a trigger and didn&#8217;t like using a filter for it so they said &#8220;hey, I know, we need some ACTIONS!&#8221; And the rest is history. Something about it just feels bloggy to me and I want it to be true. I want it to be evidence of an organic evolution from blog engine to CMS.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Is Brad Gunn a thief? by Ben</title>
		<link>http://www.benallfree.com/2011/09/08/is-brad-gunn-a-thief/comment-page-1/#comment-2100</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Tue, 20 Sep 2011 12:29:28 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/?p=1191#comment-2100</guid>
		<description>Someone just asked me if it was possible that Brad Gunn really is a thief. Yes!! Read the full article above and you&#039;ll see that I say that. 

Maybe Brad is a thief. What I object to is the chickenshit way the guy goes about smearing Brad&#039;s name. Open a real discussion if you have something to say. Otherwise you&#039;re just introducing &lt;a href=&quot;http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt&quot; rel=&quot;nofollow&quot;&gt;FUD&lt;/a&gt; which is a form of evil. You are choosing to be evil.

So what we have here is:

Client - Definitely Evil
Gunn - Maybe Evil</description>
		<content:encoded><![CDATA[<p>Someone just asked me if it was possible that Brad Gunn really is a thief. Yes!! Read the full article above and you&#8217;ll see that I say that. </p>
<p>Maybe Brad is a thief. What I object to is the chickenshit way the guy goes about smearing Brad&#8217;s name. Open a real discussion if you have something to say. Otherwise you&#8217;re just introducing <a href="http://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt" rel="nofollow">FUD</a> which is a form of evil. You are choosing to be evil.</p>
<p>So what we have here is:</p>
<p>Client &#8211; Definitely Evil<br />
Gunn &#8211; Maybe Evil</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Actions vs Filters in WP &#8211; Do We Need Both? by Otto</title>
		<link>http://www.benallfree.com/2011/09/18/actions-vs-filters-in-wp-interesting-destinction/comment-page-1/#comment-2098</link>
		<dc:creator>Otto</dc:creator>
		<pubDate>Mon, 19 Sep 2011 19:53:35 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/?p=1241#comment-2098</guid>
		<description>No, it&#039;s not an accident, actually. The distinction is intentional. Actions have always been implemented as a subset of filters.

The difference is that actions are specific defined places in the code where you can run some code of your own, doing whatever it is that you want to do. Filters, on the other hand, are designed to change existing structures in the code.

The distinction is that actions are placed at points where it would make sense to do something outside the normal flow of things, while filters are intended to only modify pre-existing things and not to modify other things or cause output or the like.

This is not a trivial distinction, actually. Placement of these this in the normal flow of WordPress code is designed around this, more or less. Actions rarely receive any arguments, they&#039;re simply defined points in the running code where one might want to hook in a function to do something. Filters tend to be mostly used in return statements where the value of a function being returned is first passed through a filter to potentially be modified.

Your &quot;event&quot; system doesn&#039;t account for this. What if one were to take an event and instead of returning something, they produced output to the main output stream. In PHP, this would be basically doing &quot;echo &#039;HELLO&#039;;&quot; or similar? If you did it in the wrong place, this could break the output of the page. With the distinction of actions and filters, it&#039;s fairly obvious that a filter should *never* do this, while an action hook *might* be the right place to produce some kind of output. 

Most actions (not all) typically run one time only in the page processing. There&#039;s only ever one &quot;init&quot; or &quot;plugins_loaded&quot; call, for example. Filters can be used by anybody to filter whatever, and might run more than once.

That sort of distinction does matter, and it&#039;s not an accident.</description>
		<content:encoded><![CDATA[<p>No, it&#8217;s not an accident, actually. The distinction is intentional. Actions have always been implemented as a subset of filters.</p>
<p>The difference is that actions are specific defined places in the code where you can run some code of your own, doing whatever it is that you want to do. Filters, on the other hand, are designed to change existing structures in the code.</p>
<p>The distinction is that actions are placed at points where it would make sense to do something outside the normal flow of things, while filters are intended to only modify pre-existing things and not to modify other things or cause output or the like.</p>
<p>This is not a trivial distinction, actually. Placement of these this in the normal flow of WordPress code is designed around this, more or less. Actions rarely receive any arguments, they&#8217;re simply defined points in the running code where one might want to hook in a function to do something. Filters tend to be mostly used in return statements where the value of a function being returned is first passed through a filter to potentially be modified.</p>
<p>Your &#8220;event&#8221; system doesn&#8217;t account for this. What if one were to take an event and instead of returning something, they produced output to the main output stream. In PHP, this would be basically doing &#8220;echo &#8216;HELLO&#8217;;&#8221; or similar? If you did it in the wrong place, this could break the output of the page. With the distinction of actions and filters, it&#8217;s fairly obvious that a filter should *never* do this, while an action hook *might* be the right place to produce some kind of output. </p>
<p>Most actions (not all) typically run one time only in the page processing. There&#8217;s only ever one &#8220;init&#8221; or &#8220;plugins_loaded&#8221; call, for example. Filters can be used by anybody to filter whatever, and might run more than once.</p>
<p>That sort of distinction does matter, and it&#8217;s not an accident.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reverting in SVN (undoing an &#8216;add&#8217; before committing) by Ben</title>
		<link>http://www.benallfree.com/2011/09/18/reverting-in-svn-undoing-an-add-before-committing/comment-page-1/#comment-2097</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Mon, 19 Sep 2011 05:17:14 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/?p=1237#comment-2097</guid>
		<description>Yes. It works perfectly for any situation where I remember ahead of time that the folder with thousands of user data files is there. I&#039;m not even sure why I have it in the repo path. That&#039;s probably an issue to consider :)</description>
		<content:encoded><![CDATA[<p>Yes. It works perfectly for any situation where I remember ahead of time that the folder with thousands of user data files is there. I&#8217;m not even sure why I have it in the repo path. That&#8217;s probably an issue to consider <img src='http://www.benallfree.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on Reverting in SVN (undoing an &#8216;add&#8217; before committing) by Rob</title>
		<link>http://www.benallfree.com/2011/09/18/reverting-in-svn-undoing-an-add-before-committing/comment-page-1/#comment-2096</link>
		<dc:creator>Rob</dc:creator>
		<pubDate>Mon, 19 Sep 2011 04:41:38 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/?p=1237#comment-2096</guid>
		<description>Doesn&#039;t SVN have an ignore function like git&#039;s .gitignore file?

svn:ignore ?</description>
		<content:encoded><![CDATA[<p>Doesn&#8217;t SVN have an ignore function like git&#8217;s .gitignore file?</p>
<p>svn:ignore ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on &#8230;but will it scale? by Ryan Glasgow</title>
		<link>http://www.benallfree.com/2010/02/05/but-will-it-scale/comment-page-1/#comment-2091</link>
		<dc:creator>Ryan Glasgow</dc:creator>
		<pubDate>Fri, 12 Feb 2010 00:37:41 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/?p=819#comment-2091</guid>
		<description>Great post and response Ben, I&#039;m glad looking forward to working with you.</description>
		<content:encoded><![CDATA[<p>Great post and response Ben, I&#8217;m glad looking forward to working with you.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Comment on &#8230;but will it scale? by Ben</title>
		<link>http://www.benallfree.com/2010/02/05/but-will-it-scale/comment-page-1/#comment-2089</link>
		<dc:creator>Ben</dc:creator>
		<pubDate>Sun, 07 Feb 2010 17:13:06 +0000</pubDate>
		<guid isPermaLink="false">http://www.benallfree.com/?p=819#comment-2089</guid>
		<description>I let Joey&#039;s response through moderation to prove my point. He didn&#039;t read very far into my site, or he would have found that we agree on the existence of multifaceted scalability. He provides a great summary. I totally agree.

I disagree with Joey in one huge way: doing things now for a possible payoff &quot;when and if&quot; (as he says) is a really, really bad idea. We disagree on timing, emphasis, and the link between scalability and your success.

Almost every developer you talk to is going to have Joey&#039;s attitude: plan early, architect the shit out of it, build for scalability from day 1, and beat the scalability drum loudly as you parade around spewing theoretical knowledge. 

You can go that way. There are many developers who will sell that distraction and burn your budget. But intuitively, you know his viewpoint is wrong. You know from your own life experience that the best laid plans go to waste. The allure of the silver bullet is the only thing that makes Joey&#039;s attitude seem so compelling. We want to believe. It would be so dang convenient and enabling if we could find a way to make big plans that work. 

What I am about - and what my philosophy is about - is to know and understand the theory while recognizing that reality throws theory out the window. It doesn&#039;t sound very sexy until you&#039;ve gotten burned by the advice of a few Joeys. After you experience bad advice first hand, you become a believer in Benkido.

Scalability is a form of optimization. You can&#039;t optimize for a general case. You need a concrete situation to study and solve. What&#039;s funny is nearly every programmer will agree that optimizing too early (i.e., before you have a specific problem) is a bad idea. But here&#039;s Joey, seemingly knowledgeable, telling you to do exactly that. And he&#039;s got a lot of company.

Consider this: more projects fail from lack of business analysis than all other reasons combined. I have witnessed and participated in the design of scalable solutions that never ended up launching because they missed the market window, or missed a critical feature, or just plain ran out of money before they could complete the minimum feature set. Everyone focused on scalability and perfect design. We nailed it. And we lost, because our attention and resources were in the wrong place.

Here&#039;s the pragmatic question for you: if scalability doesn&#039;t make you a winner, what does? The answer, of course, is pragmatism. If you focus on the pragmatic choice at each step, you will maximize your chances of success.

For some reason, people really don&#039;t like the idea of not planning ahead very far. I know I sure didn&#039;t like it at first either. It was uncomfortable. Counter-intuitive. I wanted to plan. I needed to plan. But after I let the process work, I saw that pragmatism was leading to ingenious solutions I never would have imagined. Pragmatism is smarter than we are.

My philosophy says that scalability is a by-product of short development iterations and staying tuned in to customer demands. You can&#039;t do that if you spend your whole budget, alone in the woodshed, building a scalable solution to a problem that nobody actually has. The real world is very subtle. Little differences between what you think will work and what actually works carry huge design implications. If you stay focused on what people need - real people who have a problem worth paying money to solve right now, today - your system will evolve into something more beautiful, more scalable, and wildly different than anything you had imagined. Just let evolution take its course. Your software will adapt in very clever ways.

Sorry Joey. I&#039;ve seen it happen. I&#039;ve made it happen. I know what I&#039;m talking about.</description>
		<content:encoded><![CDATA[<p>I let Joey&#8217;s response through moderation to prove my point. He didn&#8217;t read very far into my site, or he would have found that we agree on the existence of multifaceted scalability. He provides a great summary. I totally agree.</p>
<p>I disagree with Joey in one huge way: doing things now for a possible payoff &#8220;when and if&#8221; (as he says) is a really, really bad idea. We disagree on timing, emphasis, and the link between scalability and your success.</p>
<p>Almost every developer you talk to is going to have Joey&#8217;s attitude: plan early, architect the shit out of it, build for scalability from day 1, and beat the scalability drum loudly as you parade around spewing theoretical knowledge. </p>
<p>You can go that way. There are many developers who will sell that distraction and burn your budget. But intuitively, you know his viewpoint is wrong. You know from your own life experience that the best laid plans go to waste. The allure of the silver bullet is the only thing that makes Joey&#8217;s attitude seem so compelling. We want to believe. It would be so dang convenient and enabling if we could find a way to make big plans that work. </p>
<p>What I am about &#8211; and what my philosophy is about &#8211; is to know and understand the theory while recognizing that reality throws theory out the window. It doesn&#8217;t sound very sexy until you&#8217;ve gotten burned by the advice of a few Joeys. After you experience bad advice first hand, you become a believer in Benkido.</p>
<p>Scalability is a form of optimization. You can&#8217;t optimize for a general case. You need a concrete situation to study and solve. What&#8217;s funny is nearly every programmer will agree that optimizing too early (i.e., before you have a specific problem) is a bad idea. But here&#8217;s Joey, seemingly knowledgeable, telling you to do exactly that. And he&#8217;s got a lot of company.</p>
<p>Consider this: more projects fail from lack of business analysis than all other reasons combined. I have witnessed and participated in the design of scalable solutions that never ended up launching because they missed the market window, or missed a critical feature, or just plain ran out of money before they could complete the minimum feature set. Everyone focused on scalability and perfect design. We nailed it. And we lost, because our attention and resources were in the wrong place.</p>
<p>Here&#8217;s the pragmatic question for you: if scalability doesn&#8217;t make you a winner, what does? The answer, of course, is pragmatism. If you focus on the pragmatic choice at each step, you will maximize your chances of success.</p>
<p>For some reason, people really don&#8217;t like the idea of not planning ahead very far. I know I sure didn&#8217;t like it at first either. It was uncomfortable. Counter-intuitive. I wanted to plan. I needed to plan. But after I let the process work, I saw that pragmatism was leading to ingenious solutions I never would have imagined. Pragmatism is smarter than we are.</p>
<p>My philosophy says that scalability is a by-product of short development iterations and staying tuned in to customer demands. You can&#8217;t do that if you spend your whole budget, alone in the woodshed, building a scalable solution to a problem that nobody actually has. The real world is very subtle. Little differences between what you think will work and what actually works carry huge design implications. If you stay focused on what people need &#8211; real people who have a problem worth paying money to solve right now, today &#8211; your system will evolve into something more beautiful, more scalable, and wildly different than anything you had imagined. Just let evolution take its course. Your software will adapt in very clever ways.</p>
<p>Sorry Joey. I&#8217;ve seen it happen. I&#8217;ve made it happen. I know what I&#8217;m talking about.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

