<?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>harmonics</title>
	<atom:link href="http://blog.harmonize.fm/index.php/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.harmonize.fm</link>
	<description>The official harmonize.fm weblog</description>
	<lastBuildDate>Tue, 02 Sep 2008 20:21:57 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Compatible with Google Chrome!</title>
		<link>http://blog.harmonize.fm/index.php/2008/09/compatible-with-google-chrome/</link>
		<comments>http://blog.harmonize.fm/index.php/2008/09/compatible-with-google-chrome/#comments</comments>
		<pubDate>Tue, 02 Sep 2008 20:21:57 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://blog.harmonize.fm/?p=7</guid>
		<description><![CDATA[At harmonize, we like to keep up with the latest and greatest in this brave new world of web technology. As such, I was pretty excited to see how harmonize&#8217;s player performs with Google&#8217;s new browser, Google Chrome. In short, it works great. I have yet to come across any glitches at all, which is [...]]]></description>
			<content:encoded><![CDATA[<p>At harmonize, we like to keep up with the latest and greatest in this brave new world of web technology. As such, I was pretty excited to see how <a href="http://harmonize.fm/player">harmonize&#8217;s player</a> performs with Google&#8217;s new browser, <a title="Google Chrome" href="http://www.google.com/chrome">Google Chrome</a>. In short, it works great. I have yet to come across any glitches at all, which is incredible for a new browser. This is probably due to their use of <a href="http://webkit.org/">WebKit</a>, the same core as Apple&#8217;s <a href="http://www.apple.com/safari/">Safari</a> browser, but the performance enhancements are impressive in themselves. Our normally crippling shuffle feature barely causes a blip. Resizing the queue with thousands of songs displayed works far faster than any other browser.</p>
<p><strong>Update:</strong> It seems to have major performance issues when it runs out of real memory. However, it&#8217;s not crashing, and pages that use less memory are responding very well. It seems like they might have some interactions to smooth out, but the architecture seems remakably stable for a 1.0 release.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.harmonize.fm/index.php/2008/09/compatible-with-google-chrome/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Outside Lands</title>
		<link>http://blog.harmonize.fm/index.php/2008/08/outside-lands/</link>
		<comments>http://blog.harmonize.fm/index.php/2008/08/outside-lands/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 17:00:18 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[harmonize.fm]]></category>
		<category><![CDATA[Festivals]]></category>
		<category><![CDATA[Music]]></category>
		<category><![CDATA[Outside Lands]]></category>

		<guid isPermaLink="false">http://blog.harmonize.fm/?p=6</guid>
		<description><![CDATA[This past weekend, I had the privilege of going to the Outside Lands music and arts festival in Golden Gate park, in San Francisco. It was a blast and I got to see a ton of great bands in the process.
Before I get into some of the bands, I should mention that San Francisco had [...]]]></description>
			<content:encoded><![CDATA[<p>This past weekend, I had the privilege of going to the <a title="http://sfoutsidelands.com/" href="http://">Outside Lands</a> music and arts festival in Golden Gate park, in San Francisco. It was a blast and I got to see a ton of great bands in the process.</p>
<p>Before I get into some of the bands, I should mention that San Francisco had some real logistical problems supporting this festival. Usually you can camp at a festival of this size (excepting Lollapalooza), but you cannot camp in San Francisco city limits. I&#8217;m not sure how camping is different from sleeping on the streets, which thousands of bums do nightly, but it&#8217;s not allowed. Due to these restrictions, people had to figure out how to get to from one side of the city to the other.</p>
<p>There was very little parking available and on Friday there were not enough trains or busses running to meet the demand. The cabbies had a field day, and it took many people many hours to get back to where they came from. The festival did not have enough will call lines set up on Friday either, so it took over an hour from finally getting to the festival to getting in the gates. This was especially troubling for me, since my train broke down on the way to the festival and I was very late in getting to the will call line. In the end, all I saw on Friday was Radiohead, the headliner.</p>
<p>In addition to transportation bandwidth issues, there were also cell tower bandwidth issues. There are hardly ever that many people on that side of the city, and the cell towers could not handle the load. I rarely could get through to anybody I wanted to call, and texts were often returned to me undelivered.  An interesting phenomenon I had yet to experience, and I&#8217;m not sure if cell companies can do anything to help the problem. Does anybody know if it&#8217;s possible to temporarily increase cell capacity to a locality?</p>
<p>All of those things aside, the music was brilliant. I am going to do a series of entries describing the awesome artists everybody should be checking out. I think I&#8217;ll split it up Headliners, the Others parts 1 and 2, and the Side Stage shows. Stay tuned!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.harmonize.fm/index.php/2008/08/outside-lands/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>JavaScript Inheritance</title>
		<link>http://blog.harmonize.fm/index.php/2008/07/javascript-inheritance/</link>
		<comments>http://blog.harmonize.fm/index.php/2008/07/javascript-inheritance/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 17:28:54 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[harmonize.fm]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Programming Languages]]></category>

		<guid isPermaLink="false">http://blog.harmonize.fm/?p=5</guid>
		<description><![CDATA[Here at harmonize, we think about languages a lot. Usually not for any good reason, but when you are writing code for as many hours as we do, you tend to think about how it might be easier or cleaner if the language did things a little bit differently.
One thing I&#8217;ve thought a lot about [...]]]></description>
			<content:encoded><![CDATA[<p>Here at harmonize, we think about languages a lot. Usually not for any good reason, but when you are writing code for as many hours as we do, you tend to think about how it might be easier or cleaner if the language did things a little bit differently.</p>
<p>One thing I&#8217;ve thought a lot about recently is inheritance in JavaScript. We use the <a href="http://extjs.com">ExtJS</a> library, which is an outstanding JavaScript library. Inside of this library is a mechanism for achieving inheritance in JavaScript. It&#8217;s pretty simple, and is essentially just a nice wrapper for manipulating standard JavaScript function prototypes. For instance, to extend the Ext.Panel class to check to make sure the &#8216;neveradd&#8217; component is never inserted into a panel, you would do the following:</p>

<div class="wp_syntax"><div class="code"><pre class="javascript javascript" style="font-family:monospace;">NewClass <span style="color: #339933;">=</span> Ext.<span style="color: #660066;">extend</span><span style="color: #009900;">&#40;</span>Ext.<span style="color: #660066;">Panel</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
    add<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>component<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
        <span style="color: #000066; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>component.<span style="color: #660066;">id</span> <span style="color: #339933;">!=</span> <span style="color: #3366CC;">'neveradd'</span><span style="color: #009900;">&#41;</span>
             NewClass.<span style="color: #660066;">superclass</span>.<span style="color: #660066;">constructor</span>.<span style="color: #660066;">call</span><span style="color: #009900;">&#40;</span>
                 <span style="color: #000066; font-weight: bold;">this</span><span style="color: #339933;">,</span> component<span style="color: #009900;">&#41;</span>;
       <span style="color: #009900;">&#125;</span>
   <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span>;</pre></div></div>

<p>A bit silly, perhaps, but you get the idea. NewClass is exactly the same as Ext.Panel except for the overridden add function.</p>
<p>At harmonize we have been very strict about making object members public. Usually we will only assign a function to &#8220;this&#8221; if it will be needed by an external object. This makes our code safe and non-cluttered. When you look at an object, you only see the members you&#8217;re supposed to be using. A trivial example is below.</p>

<div class="wp_syntax"><div class="code"><pre class="javascript javascript" style="font-family:monospace;"><span style="color: #003366; font-weight: bold;">function</span> MyClass<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
     <span style="color: #006600; font-style: italic;">//This is private by virtue of lexical scoping</span>
     <span style="color: #003366; font-weight: bold;">var</span> myvar <span style="color: #339933;">=</span> <span style="color: #CC0000;">1</span>;
     <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">member</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">2</span>; <span style="color: #006600; font-style: italic;">//this is public</span>
&nbsp;
     <span style="color: #009966; font-style: italic;">/* This is private. */</span>
     <span style="color: #003366; font-weight: bold;">function</span> private_method<span style="color: #009900;">&#40;</span>arg<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
           <span style="color: #006600; font-style: italic;">//Do private stuff ;)</span>
     <span style="color: #009900;">&#125;</span>
&nbsp;
     <span style="color: #009966; font-style: italic;">/* This is public */</span>
     <span style="color: #000066; font-weight: bold;">this</span>.<span style="color: #660066;">method</span> <span style="color: #339933;">=</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>value1<span style="color: #339933;">,</span> value2<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
          <span style="color: #006600; font-style: italic;">//Do stuff</span>
     <span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span></pre></div></div>

<p>However, as I deal more with inheritance, I&#8217;m beginning to see flaws in this model. For one, because private functions are lexically scoped, there is no way for a derived class to override its parents private functions. This is generally bad. Sometimes you might want to ensure nobody ever touches a function for any reason, but it&#8217;s rare that a programer has the insight to say with confidence &#8220;This function will never in the history of the world need to be overridden for any reason&#8221;.</p>
<p>In addition, because lexically scoped functions are recreated every time an instance of the object is constructed, they end up using far more memory. The Ext inheritance system uses function prototypes in the background, which means that any function that is not overridden is used by every instance of a class. Functions that are not overridden are not created more than once.</p>
<p>So we&#8217;ve happened upon some of the fundamental limitations of JavaScript. It&#8217;s very difficult to implement an efficient, clean inheritance system in JavaScript. It&#8217;s unfortunate, but as memory consumption and our own flexibility become increasingly important at harmonize, I will probably be creating classes in the Ext style more and more.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.harmonize.fm/index.php/2008/07/javascript-inheritance/feed/</wfw:commentRss>
		<slash:comments>-1</slash:comments>
		</item>
		<item>
		<title>Welcome to harmonics!</title>
		<link>http://blog.harmonize.fm/index.php/2008/06/welcome-to-harmonics/</link>
		<comments>http://blog.harmonize.fm/index.php/2008/06/welcome-to-harmonics/#comments</comments>
		<pubDate>Sat, 28 Jun 2008 09:13:13 +0000</pubDate>
		<dc:creator>justin</dc:creator>
				<category><![CDATA[harmonize.fm]]></category>

		<guid isPermaLink="false">http://blog.harmonize.fm/?p=4</guid>
		<description><![CDATA[This is the official harmonize.fm weblog. We are in a very interesting space at an interesting time, so stop by every once in a while to read about how things are going, and maybe a bit about what we think about things.
]]></description>
			<content:encoded><![CDATA[<p>This is the official harmonize.fm weblog. We are in a very interesting space at an interesting time, so stop by every once in a while to read about how things are going, and maybe a bit about what we think about things.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.harmonize.fm/index.php/2008/06/welcome-to-harmonics/feed/</wfw:commentRss>
		<slash:comments>-1</slash:comments>
		</item>
	</channel>
</rss>
