<?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 on: HipHop, PHP, and the Evolution of Language</title>
	<atom:link href="http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/feed/" rel="self" type="application/rss+xml" />
	<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/</link>
	<description>Business and Technology with Common Sense</description>
	<lastBuildDate>Thu, 24 May 2012 21:21:16 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4-beta4-20883</generator>
	<item>
		<title>By: Joshua Frankamp</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48151</link>
		<dc:creator>Joshua Frankamp</dc:creator>
		<pubDate>Sat, 13 Feb 2010 00:43:54 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48151</guid>
		<description>Hans said
&quot;Deep down, I think I just feel strongly that the reason to choose PHP is the deployment paradigm and *not* the language. So, I just don’t see a reason to use a tool like HipHop other than rescuing an ailing PHP application.&quot;


A tool like HipHop will become the defacto runtime for php, when it combines its compilation with its runtime in an on the fly JIT compile. Then you get your deploy model back (just edit and reload), and the performance gains. Keep your deployment scheme, keep your language... get performance gains. Win win win win win. Am I missing something here? The community needs to jump behind this.

I don&#039;t understand why people keep saying things like &quot;this is nice but its only for those who are cpu bound&quot; and &quot;other parts of web applications could be better optimized&quot;.It seems like an argument built for misdirection. If you could improve php by 50% you could (theoretically reslice the hardware) and shut off a large chunk of the internet with no lost capacity. Sure, the apps will still be IO bound, but for the ones that required more than one httpd to fire up all those hungry mod_php&#039;s they will now need less boxes, less cpu, and will get to dispatching those IO requests faster, and processing the results faster.

Yes. I&#039;m saying we&#039;d need less power plants. This is a big deal.</description>
		<content:encoded><![CDATA[<p>Hans said<br />
&#8220;Deep down, I think I just feel strongly that the reason to choose PHP is the deployment paradigm and *not* the language. So, I just don’t see a reason to use a tool like HipHop other than rescuing an ailing PHP application.&#8221;</p>
<p>A tool like HipHop will become the defacto runtime for php, when it combines its compilation with its runtime in an on the fly JIT compile. Then you get your deploy model back (just edit and reload), and the performance gains. Keep your deployment scheme, keep your language&#8230; get performance gains. Win win win win win. Am I missing something here? The community needs to jump behind this.</p>
<p>I don&#8217;t understand why people keep saying things like &#8220;this is nice but its only for those who are cpu bound&#8221; and &#8220;other parts of web applications could be better optimized&#8221;.It seems like an argument built for misdirection. If you could improve php by 50% you could (theoretically reslice the hardware) and shut off a large chunk of the internet with no lost capacity. Sure, the apps will still be IO bound, but for the ones that required more than one httpd to fire up all those hungry mod_php&#8217;s they will now need less boxes, less cpu, and will get to dispatching those IO requests faster, and processing the results faster.</p>
<p>Yes. I&#8217;m saying we&#8217;d need less power plants. This is a big deal.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: wdu</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48150</link>
		<dc:creator>wdu</dc:creator>
		<pubDate>Mon, 08 Feb 2010 16:25:59 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48150</guid>
		<description>I&#039;m curious to see some translated code, but I don&#039;t think that HipHop produces code that is manageable in C++ is any way. More likely, it produces a collection of string maps and weird inferred types, which is probably why only a 50% performance increase is achieved.

Side note: Wt (http://www.webtoolkit.eu/) is a very descent native C++ web toolkit.</description>
		<content:encoded><![CDATA[<p>I&#8217;m curious to see some translated code, but I don&#8217;t think that HipHop produces code that is manageable in C++ is any way. More likely, it produces a collection of string maps and weird inferred types, which is probably why only a 50% performance increase is achieved.</p>
<p>Side note: Wt (<a href="http://www.webtoolkit.eu/" >http://www.webtoolkit.eu/</a>) is a very descent native C++ web toolkit.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Kris Hardy</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48149</link>
		<dc:creator>Kris Hardy</dc:creator>
		<pubDate>Mon, 08 Feb 2010 13:49:56 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48149</guid>
		<description>That&#039;s sort of the whole Agile philosophy in a sense...  Quickly build something that works properly, test it, make it reusable if appropriate, deliver and keep moving.

A lot of the decision on language (and prototypes) comes down to a decision on technical debt.  If you&#039;re using PHP, you&#039;re incurring some debt by developing with a slower language at runtime.  But you&#039;re avoiding other debt by being able to develop, test and deploy quicker.

HipHop, to me, is a code debt refinancing tool.  Used well, it could save you.  Used poorly, you&#039;re not paying down the debt at all, or possibly even making it worse.

(Aside: If there was a selection of good C++ web frameworks/libraries, HipHop may not have been as necessary.)

I&#039;m curious to look at HipHop for one-time translations from PHP to C++ and then maintaining the C++ code from there.  By the sounds of it, though, that&#039;s not how it&#039;s being used at FB.

Also, if you can do per-class translation or run a fully compiled app but then plug in individual classes in PHP, it could be pretty nice from a rapid development standpoint.  I assume that FB is doing this.</description>
		<content:encoded><![CDATA[<p>That&#8217;s sort of the whole Agile philosophy in a sense&#8230;  Quickly build something that works properly, test it, make it reusable if appropriate, deliver and keep moving.</p>
<p>A lot of the decision on language (and prototypes) comes down to a decision on technical debt.  If you&#8217;re using PHP, you&#8217;re incurring some debt by developing with a slower language at runtime.  But you&#8217;re avoiding other debt by being able to develop, test and deploy quicker.</p>
<p>HipHop, to me, is a code debt refinancing tool.  Used well, it could save you.  Used poorly, you&#8217;re not paying down the debt at all, or possibly even making it worse.</p>
<p>(Aside: If there was a selection of good C++ web frameworks/libraries, HipHop may not have been as necessary.)</p>
<p>I&#8217;m curious to look at HipHop for one-time translations from PHP to C++ and then maintaining the C++ code from there.  By the sounds of it, though, that&#8217;s not how it&#8217;s being used at FB.</p>
<p>Also, if you can do per-class translation or run a fully compiled app but then plug in individual classes in PHP, it could be pretty nice from a rapid development standpoint.  I assume that FB is doing this.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48148</link>
		<dc:creator>Michael</dc:creator>
		<pubDate>Fri, 05 Feb 2010 23:50:45 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48148</guid>
		<description>Hans,

I understand what you&#039;re saying about picking the wrong tools, but now that HipHop exists, it seems there are fewer reasons not to use PHP (or Rails =&gt; JRuby).  While you can claim Facebook made a mistake, their resolution means other startups can&#039;t make the same mistake.  In general, I think we should be working toward brining scalability to the most agile language, as there is a clear value to doing so (the same can be said of projects like Grails, the other way around).

Ultimately I don&#039;t see much sense in objecting to something feeling like a &quot;hack&quot;.  What is a hack, but a rift between dogma and implementation?  Programming languages are tools, not philosophies.  We shouldn&#039;t allow ourselves to be limited by the aesthetics of a technical solution.</description>
		<content:encoded><![CDATA[<p>Hans,</p>
<p>I understand what you&#8217;re saying about picking the wrong tools, but now that HipHop exists, it seems there are fewer reasons not to use PHP (or Rails =&gt; JRuby).  While you can claim Facebook made a mistake, their resolution means other startups can&#8217;t make the same mistake.  In general, I think we should be working toward brining scalability to the most agile language, as there is a clear value to doing so (the same can be said of projects like Grails, the other way around).</p>
<p>Ultimately I don&#8217;t see much sense in objecting to something feeling like a &#8220;hack&#8221;.  What is a hack, but a rift between dogma and implementation?  Programming languages are tools, not philosophies.  We shouldn&#8217;t allow ourselves to be limited by the aesthetics of a technical solution.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hans</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48147</link>
		<dc:creator>Hans</dc:creator>
		<pubDate>Fri, 05 Feb 2010 21:23:37 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48147</guid>
		<description>The quote was a (loose) reference to Fred Brooks&#039; Mythical Man Month, but it&#039;s a fair point that prototypes typically evolve and never fully disappear.  I&#039;m sure the same could be said about Facebook&#039;s use of PHP.  What I was trying to suggest is that technologies should be allowed to change.  From all I&#039;ve read of Facebook&#039;s technology platform they understand this really well.  Yes, it sounds to me like when you have a monolithic web app, things are already &quot;too far gone&quot; to make those sort of design changes, but whatever -- Facebook with all their various technologies in play definitely seems to understand that some tools are better for some jobs than others.  I&#039;m really not talking about Facebook, I&#039;m talking about new PHP projects, and trying to suggest (not very successfully) that there&#039;s something to be said for *not* ending up in a situation where you do have a monolithic codebase that can only be migrated wholesale.  (And I think that discussing how one designs a project to make that possible would be an interesting discussion.)

So maybe &quot;discard prototypes&quot; is too strong a phrase.  But I think there&#039;s a value to remaining objective here, to reviewing, and to entertaining the idea that maybe the technology that started it all is actually limiting the solution.  For example, the way the Twitter folks said, (something like) &quot;you know, we actually needed long-running processes [and Ruby had a hard time with that]&quot;.

Obviously, it&#039;s purely inflammatory to suggest that PHP is a good prototyping tool ;) -- I&#039;ve certainly deployed plenty of production code on PHP.  But I think there&#039;s a valid point missing in a lot of this HipHopped-up retoric, which is: revisit your prototype decisions.  And maybe even, if you can afford it, &quot;throw away your prototype&quot;.</description>
		<content:encoded><![CDATA[<p>The quote was a (loose) reference to Fred Brooks&#8217; Mythical Man Month, but it&#8217;s a fair point that prototypes typically evolve and never fully disappear.  I&#8217;m sure the same could be said about Facebook&#8217;s use of PHP.  What I was trying to suggest is that technologies should be allowed to change.  From all I&#8217;ve read of Facebook&#8217;s technology platform they understand this really well.  Yes, it sounds to me like when you have a monolithic web app, things are already &#8220;too far gone&#8221; to make those sort of design changes, but whatever &#8212; Facebook with all their various technologies in play definitely seems to understand that some tools are better for some jobs than others.  I&#8217;m really not talking about Facebook, I&#8217;m talking about new PHP projects, and trying to suggest (not very successfully) that there&#8217;s something to be said for *not* ending up in a situation where you do have a monolithic codebase that can only be migrated wholesale.  (And I think that discussing how one designs a project to make that possible would be an interesting discussion.)</p>
<p>So maybe &#8220;discard prototypes&#8221; is too strong a phrase.  But I think there&#8217;s a value to remaining objective here, to reviewing, and to entertaining the idea that maybe the technology that started it all is actually limiting the solution.  For example, the way the Twitter folks said, (something like) &#8220;you know, we actually needed long-running processes [and Ruby had a hard time with that]&#8220;.</p>
<p>Obviously, it&#8217;s purely inflammatory to suggest that PHP is a good prototyping tool ;) &#8212; I&#8217;ve certainly deployed plenty of production code on PHP.  But I think there&#8217;s a valid point missing in a lot of this HipHopped-up retoric, which is: revisit your prototype decisions.  And maybe even, if you can afford it, &#8220;throw away your prototype&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: terry chay</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48146</link>
		<dc:creator>terry chay</dc:creator>
		<pubDate>Fri, 05 Feb 2010 17:05:52 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48146</guid>
		<description>“Prototypes should be thrown away” ignores the fact that they’re *never* thrown away. Even Twitter, despite their move to Scala, still has a lot of Rails on nonperformant parts.

Prototyping, in general, is always the worst reason to adopt a language because, in practice, it’s a lie. It was a lie when people said it to get in the door at Yahoo! and various enterprise places (and then became entrenched), It‘s a lie when people argue for Rails development (and then had to hire consultants), etc. It’s even a lie in most RAD tools—when you use prototyping to build a UI, you either never leave/break it (Interface Builder), or you drop it once the part you needed has been built (Windows Forms Designer).</description>
		<content:encoded><![CDATA[<p>“Prototypes should be thrown away” ignores the fact that they’re *never* thrown away. Even Twitter, despite their move to Scala, still has a lot of Rails on nonperformant parts.</p>
<p>Prototyping, in general, is always the worst reason to adopt a language because, in practice, it’s a lie. It was a lie when people said it to get in the door at Yahoo! and various enterprise places (and then became entrenched), It‘s a lie when people argue for Rails development (and then had to hire consultants), etc. It’s even a lie in most RAD tools—when you use prototyping to build a UI, you either never leave/break it (Interface Builder), or you drop it once the part you needed has been built (Windows Forms Designer).</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Evan Byrne</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48145</link>
		<dc:creator>Evan Byrne</dc:creator>
		<pubDate>Thu, 04 Feb 2010 20:33:13 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48145</guid>
		<description>I think it&#039;s a tad silly to refer to PHP as simply a prototyping tool. :)</description>
		<content:encoded><![CDATA[<p>I think it&#8217;s a tad silly to refer to PHP as simply a prototyping tool. :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Jonathan Nieto</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48144</link>
		<dc:creator>Jonathan Nieto</dc:creator>
		<pubDate>Thu, 04 Feb 2010 19:33:05 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48144</guid>
		<description>A company can&#039;t start thinking about scaling with new ideas that no one knows if someday will need it.
Totally agree with you!</description>
		<content:encoded><![CDATA[<p>A company can&#8217;t start thinking about scaling with new ideas that no one knows if someday will need it.<br />
Totally agree with you!</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Hans</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48143</link>
		<dc:creator>Hans</dc:creator>
		<pubDate>Thu, 04 Feb 2010 18:45:12 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48143</guid>
		<description>As I am quoted above (and somewhat selectively), I did feel I should probably mention here that Aaron and I are really talking about different things.  My perspective is much more from traditional software development; Aaron comes from more of a startup background (and admittedly that is more relevant here).

To be fair, Michael, I never suggested Facebook should have *started out* writing code in Java.  I am a huge fan of prototypes and I concur that PHP (like Rails) is a good prototyping framework.  I do, however, want to suggest the possibility that the PHP version also have been treated as a prototype.  I believe it&#039;s important to be able to discard prototypes.  It feels like HipHop, more than anything else, is about holding on to a prototype.  (Granted that&#039;s really unfair in FB&#039;s case, given the amount of third-party code out their that&#039;s written for that &quot;prototype&quot;.)

Anyway, while I&#039;m ok with Aaron&#039;s opinion of me being puritanical &amp; naive, I do want to make it clear that I&#039;m not against HipHop or Facebook -- or any of Facebook&#039;s open-source tools.  I do think that it provokes some good discussion about prototyping and choosing the right tools for a job, though, and I feel those are worth discussing.

Deep down, I think I just feel strongly that the reason to choose PHP is the deployment paradigm and *not* the language.  So, I just don&#039;t see a reason to use a tool like HipHop other than rescuing an ailing PHP application.

*Had* they started with Ruby, it does seem likely that they could have moved to leverage JRuby on the JVM and they could have used existing tools rather than having to rebuild the compiler/engine themselves.  At the end of the day that does /sound/ like it would have been cheaper.  Of course, hindsight is 20/20.  I&#039;m more interested in how other people choose to use HipHop than how Facebook uses it; I&#039;m sure it makes perfect sense for them.  I just think it&#039;s important to say &quot;prototypes should be thrown away&quot;.</description>
		<content:encoded><![CDATA[<p>As I am quoted above (and somewhat selectively), I did feel I should probably mention here that Aaron and I are really talking about different things.  My perspective is much more from traditional software development; Aaron comes from more of a startup background (and admittedly that is more relevant here).</p>
<p>To be fair, Michael, I never suggested Facebook should have *started out* writing code in Java.  I am a huge fan of prototypes and I concur that PHP (like Rails) is a good prototyping framework.  I do, however, want to suggest the possibility that the PHP version also have been treated as a prototype.  I believe it&#8217;s important to be able to discard prototypes.  It feels like HipHop, more than anything else, is about holding on to a prototype.  (Granted that&#8217;s really unfair in FB&#8217;s case, given the amount of third-party code out their that&#8217;s written for that &#8220;prototype&#8221;.)</p>
<p>Anyway, while I&#8217;m ok with Aaron&#8217;s opinion of me being puritanical &amp; naive, I do want to make it clear that I&#8217;m not against HipHop or Facebook &#8212; or any of Facebook&#8217;s open-source tools.  I do think that it provokes some good discussion about prototyping and choosing the right tools for a job, though, and I feel those are worth discussing.</p>
<p>Deep down, I think I just feel strongly that the reason to choose PHP is the deployment paradigm and *not* the language.  So, I just don&#8217;t see a reason to use a tool like HipHop other than rescuing an ailing PHP application.</p>
<p>*Had* they started with Ruby, it does seem likely that they could have moved to leverage JRuby on the JVM and they could have used existing tools rather than having to rebuild the compiler/engine themselves.  At the end of the day that does /sound/ like it would have been cheaper.  Of course, hindsight is 20/20.  I&#8217;m more interested in how other people choose to use HipHop than how Facebook uses it; I&#8217;m sure it makes perfect sense for them.  I just think it&#8217;s important to say &#8220;prototypes should be thrown away&#8221;.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Aaron Brazell</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48142</link>
		<dc:creator>Aaron Brazell</dc:creator>
		<pubDate>Thu, 04 Feb 2010 16:53:21 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48142</guid>
		<description>I&#039;ve always said Rails is a good prototyping tool. It&#039;s when prototyping turns into production environment stuff that I get concerned.</description>
		<content:encoded><![CDATA[<p>I&#8217;ve always said Rails is a good prototyping tool. It&#8217;s when prototyping turns into production environment stuff that I get concerned.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Michael</title>
		<link>http://technosailor.com/2010/02/04/hiphop-php-and-the-evolution-of-language/comment-page-1/#comment-48141</link>
		<dc:creator>Michael</dc:creator>
		<pubDate>Thu, 04 Feb 2010 16:50:29 +0000</pubDate>
		<guid isPermaLink="false">http://technosailor.com/?p=8023#comment-48141</guid>
		<description>Hey Aaron - I think you&#039;re absolutely right about the virtues of a quick and agile prototype.  And for any startup, even on as successful as Facebook, the pressures to get to the very next stage are so substantial, that long term planning really never happens.  And it shouldn&#039;t either - my guess is Facebook would have never been successful if it were developed in Java, as Hans suggests, because it would have taken several times as much money and time.

I know you&#039;re a PHP guy, but I want to point out that Rails really does offer a tremendous advantage here.  While it is much more resource intensive than PHP, it can be compiled into Java relatively easily for instant, long term scalability.</description>
		<content:encoded><![CDATA[<p>Hey Aaron &#8211; I think you&#8217;re absolutely right about the virtues of a quick and agile prototype.  And for any startup, even on as successful as Facebook, the pressures to get to the very next stage are so substantial, that long term planning really never happens.  And it shouldn&#8217;t either &#8211; my guess is Facebook would have never been successful if it were developed in Java, as Hans suggests, because it would have taken several times as much money and time.</p>
<p>I know you&#8217;re a PHP guy, but I want to point out that Rails really does offer a tremendous advantage here.  While it is much more resource intensive than PHP, it can be compiled into Java relatively easily for instant, long term scalability.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

