<?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>Aaron As a Chimp &#187; Billy Hoffman</title>
	<atom:link href="http://sachimp.com/tag/billy-hoffman/feed/" rel="self" type="application/rss+xml" />
	<link>http://sachimp.com</link>
	<description>with a typewriter</description>
	<lastBuildDate>Thu, 15 Jul 2010 00:01:37 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Dr. JavaScript and Mr. PHP</title>
		<link>http://sachimp.com/2009/01/21/dr-javascript-and-mr-php/</link>
		<comments>http://sachimp.com/2009/01/21/dr-javascript-and-mr-php/#comments</comments>
		<pubDate>Thu, 22 Jan 2009 00:27:40 +0000</pubDate>
		<dc:creator>AaronAsAChimp</dc:creator>
				<category><![CDATA[Sachimp Labs]]></category>
		<category><![CDATA[Billy Hoffman]]></category>
		<category><![CDATA[Hak .5]]></category>
		<category><![CDATA[hybrid code]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://sachimp.com/?p=35</guid>
		<description><![CDATA[In my last post I wrote about JavaScript variables.  It stemmed from realizing that the dollar sign ($) was a valid character in JavaScript.  I struggled to find any use for all of these new characters – other than making code unreadable.  One thing stuck out in my mind.  An old episode of Hak .5 where [...]]]></description>
			<content:encoded><![CDATA[<p>In my <a title="The many lives of JavaScript variables" href="/2008/12/13/javascript-variables/">last post</a> I wrote about JavaScript variables.  It stemmed from realizing that the dollar sign ($) was a valid character in JavaScript.  I struggled to find any use for all of these new characters – other than making code unreadable.  One thing stuck out in my mind.  An <a href="http://www.hak5.org/episodes/episode-2x09-release">old episode of Hak .5</a> where Billy Hoffman described a <a href="http://en.wikipedia.org/wiki/Computer_worm">worm</a> that would be written in a hybrid of Perl and JavaScript.  A <em>Dr. Jekyll and Mr. Hyde</em> scenario where the worm would embed itself in a web page and search for a &#8220;host&#8221;, and then infect that host.  That host would then serve pages with the worm embedded in it, creating exponential growth.  Unfortunately at the time he didn&#8217;t have a proof of concept.</p>
<h3>Hybrid Means Better Gas Mileage</h3>
<p>Unlike Billy&#8217;s technique I chose to use PHP instead of Perl.  Many of the language constructs are identical between PHP and JavaScript.  However there are few snags.</p>
<ul>
<li>PHP scripts have to start and end with &#8216;&lt;?&#8217; and &#8216;?&gt;&#8217; respectively.</li>
<li>PHP variables must start with a &#8216;$&#8217;.</li>
<li>Most of JavaScript&#8217;s standard functions are wrapped in objects.  Math, String, etc.</li>
<li>PHP uses the &#8216;.&#8217; for concatenation, while JavaScript uses &#8216;+&#8217;.</li>
<li>PHP uses C++ style definition for objects, while JavaScript uses a prototype definition.</li>
<li>JavaScript uses the C++ style const keyword to define constants, while PHP uses the define() function.</li>
</ul>
<h3>The Lucky Ones</h3>
<p>Not all of these problems can be worked around, but enough of them can be worked around that functioning code can be written.</p>
<dl>
<dt>PHP scripts have to start and end with &#8216;&lt;?&#8217; and &#8216;?&gt;&#8217; respectively.</dt>
<dd>The workaround for this is to run the script using the eval() function.  The PHP&#8217;s eval() function doesn&#8217;t require the opening and closing tags as feature.</dd>
<dt>PHP variables must start with a &#8216;$&#8217;.</dt>
<dd>The dollar sign is a valid character in JavaScript variables, so starting them with the dollar sign poses no problem.</dd>
<dt>Most of JavaScript&#8217;s standard functions are wrapped in objects.  Math, String, etc.</dt>
<dd><a title="PHP.js" href="http://phpjs.org/">PHP.js</a> can be used to wrap the standard JavaScript functions.  Acting as a compatibility layer.</dd>
<dt>JavaScript uses the C++ style const keyword to define constants, while PHP uses the define() function.</dt>
<dd>PHP version 5.3.0 allows for the const keyword.</dd>
</dl>
<h3>Taking the Plunge</h3>
<p>As a proof of concept I wrote a small function to calculate  the <a href="http://en.wikipedia.org/wiki/Great-circle_distance">great circle distance</a>.  It computes the distance in both PHP and JavaScript.  You can find it <a href="http://code.sachimp.com/labs/dualcode/">here</a> and hybrid PHP / JavaScript code <a href="http://code.sachimp.com/labs/dualcode/dualcode.js">here</a>.</p>


<div class="shr-bookmarks shr-bookmarks-expand shr-bookmarks-center shr-bookmarks-bg-shr">
<ul class="socials">
		<li class="shr-comfeed">
			<a href="http://sachimp.com/2009/01/21/dr-javascript-and-mr-php/feed" rel="nofollow" class="external" title="Subscribe to the comments for this post?">Subscribe to the comments for this post?</a>
		</li>
		<li class="shr-delicious">
			<a href="http://delicious.com/post?url=http://sachimp.com/2009/01/21/dr-javascript-and-mr-php/&amp;title=Dr.+JavaScript+and+Mr.+PHP" rel="nofollow" class="external" title="Share this on del.icio.us">Share this on del.icio.us</a>
		</li>
		<li class="shr-digg">
			<a href="http://digg.com/submit?phase=2&amp;url=http://sachimp.com/2009/01/21/dr-javascript-and-mr-php/&amp;title=Dr.+JavaScript+and+Mr.+PHP" rel="nofollow" class="external" title="Digg this!">Digg this!</a>
		</li>
		<li class="shr-googlebuzz">
			<a href="http://www.google.com/buzz/post?url=http://sachimp.com/2009/01/21/dr-javascript-and-mr-php/&amp;imageurl=" rel="nofollow" class="external" title="Post on Google Buzz">Post on Google Buzz</a>
		</li>
		<li class="shr-stumbleupon">
			<a href="http://www.stumbleupon.com/submit?url=http://sachimp.com/2009/01/21/dr-javascript-and-mr-php/&amp;title=Dr.+JavaScript+and+Mr.+PHP" rel="nofollow" class="external" title="Stumble upon something good? Share it on StumbleUpon">Stumble upon something good? Share it on StumbleUpon</a>
		</li>
		<li class="shr-twitter">
			<a href="http://twitter.com/home?status=Dr.+JavaScript+and+Mr.+PHP+-+http://b2l.me/acup3&amp;source=shareaholic" rel="nofollow" class="external" title="Tweet This!">Tweet This!</a>
		</li>
		<li class="shr-technorati">
			<a href="http://technorati.com/faves?add=http://sachimp.com/2009/01/21/dr-javascript-and-mr-php/" rel="nofollow" class="external" title="Share this on Technorati">Share this on Technorati</a>
		</li>
</ul>
<div style="clear:both;"></div>
</div>

]]></content:encoded>
			<wfw:commentRss>http://sachimp.com/2009/01/21/dr-javascript-and-mr-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
