<?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>Henrik Falck&#039;s blog &#187; javascript</title>
	<atom:link href="http://henrikfalck.com/blog/tag/javascript/feed" rel="self" type="application/rss+xml" />
	<link>http://henrikfalck.com/blog</link>
	<description>reinventing web 3.0</description>
	<lastBuildDate>Mon, 12 Apr 2010 00:33:33 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Localization support for language identifier</title>
		<link>http://henrikfalck.com/blog/2010/04/localization-support-for-language-identifier.html</link>
		<comments>http://henrikfalck.com/blog/2010/04/localization-support-for-language-identifier.html#comments</comments>
		<pubDate>Sun, 11 Apr 2010 03:18:40 +0000</pubDate>
		<dc:creator>Henrik Falck</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[improvements]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[language analyzer]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[web apps]]></category>

		<guid isPermaLink="false">http://henrikfalck.com/blog/?p=370</guid>
		<description><![CDATA[Something&#8217;s wrong when a language identifier doesn&#8217;t have localization support. So I cooked up a little localization code for What Language Is This?, which proved to be not as easy as one might guess. That&#8217;s because some of the textual content of the web app is in HTML, other is generated by PHP, and yet [...]]]></description>
			<content:encoded><![CDATA[<p>Something&#8217;s wrong when a language identifier doesn&#8217;t have localization support. So I cooked up a little localization code for <a href="http://whatlanguageisthis.com/" title="What Language Is This? Online language identifier"  target="_blank">What Language Is This?</a>, which proved to be not as easy as one might guess. That&#8217;s because some of the textual content of the web app is in HTML, other is generated by PHP, and yet other is generated in JavaScript. I wanted to have one single source of localized strings for all three output paths to simplify overviewing, translating, changing, and adding strings to the web app.</p>
<p>I&#8217;m not sure if there&#8217;s any good solution for this out there, but I cooked up my own. Each language translation has its strings in a text file formatted like an ini file with id keys and localized strings separated by an equals sign. You can view the <a href="http://whatlanguageisthis.com/strings-en.txt"  target="_blank">English</a> and <a href="http://whatlanguageisthis.com/strings-ja.txt"  target="_blank">Japanese</a> raw text files if you like. These are read into a PHP array (i.e. dictionary), after first looking at what language is specified by the URL (/en for English, /ja for Japanese or any other code), and if that is not specified then looking at what languages the browser is set to prefer via the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.4"  target="_blank">Accept-Language</a> HTTP header. If the requested language is not available then default to English.</p>
<p>To get the html output localized, the php script that reads through and configures the app (the plain html file itself is set up to run offline for debugging purposes only) looks for string ids enclosed in percent signs, i.e. like %strings id%. These are then replaced with the localized strings from the dictionary. The php-generated content is trivially changed to look up strings from the dictionary. On the JavaScript side, I wanted access to the same string dictionary that I had on the php side, so this is inserted into a &lt;script&gt; block of the generated html output as a JavaScript object (i.e. dictionary). String id lookups can then be done on this object from the JavaScript code just like on the php side. In other words, the php string dictionary is converted into JSON, which is used from the JavaScript side.</p>
<div id="attachment_371" class="wp-caption aligncenter" style="width: 310px"><a href="http://henrikfalck.com/blog/wp-content/uploads/2010/04/wlit-japanese.jpg" ><img class="size-medium wp-image-371" title="あれ何語？ What Language Is This? in 日本語" src="http://henrikfalck.com/blog/wp-content/uploads/2010/04/wlit-japanese-300x186.jpg" alt="あれ何語？ What Language Is This? in 日本語" width="300" height="186" /></a><p class="wp-caption-text">あれ何語？ What Language Is This? in 日本語</p></div>
<p>It all works pretty well and meets my goals. The only downside is that it relies on the server to do some processing, so when I develop on the offline version the strings aren&#8217;t available, instead I get to see the raw string ids, which can be useful too, but you have to rely on imagination to envision the end result. Isn&#8217;t programming always like that anyway, though?</p>
<p>The first translated version of What Language Is This? is of course <a href="http://whatlanguageisthis.com/ja" title="ウェブ上言語識別サービス"  target="_blank">Japanese</a>, done by myself and my wife (初めての共同作業? lol), not just because it&#8217;s easy for me to do, but also because when looking at the <a href="http://addthis.com/"  target="_blank">AddThis</a> stats, Japan is the top ranking country, and also as you know the average English skills in Japan are pretty bad, so I suspect there is a demand for a Japanese translation. Looking at the access stats, and discounting those with good English skills (India, Netherlands, Scandinavia, for example), next in line would most likely be Spanish, French, and German, in that order. Anyone feel like helping? Please drop me a comment in that case. I can offer proper credit and a link back from the site in return.</p>
]]></content:encoded>
			<wfw:commentRss>http://henrikfalck.com/blog/2010/04/localization-support-for-language-identifier.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>We&#8217;ll Always Have C</title>
		<link>http://henrikfalck.com/blog/2008/04/well-always-have-c.html</link>
		<comments>http://henrikfalck.com/blog/2008/04/well-always-have-c.html#comments</comments>
		<pubDate>Sat, 26 Apr 2008 04:02:00 +0000</pubDate>
		<dc:creator>Henrik Falck</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[C]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[programming languages]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[rant]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://henrikfalck.com/blog2/2008/04/well-always-have-c.html</guid>
		<description><![CDATA[The other day there was an interview in Dr. Dobb&#8217;s Journal with the managing director of TIOBE Software, who publishes the TIOBE Programming Community Index, a ranking of programming language popularity. It was also discussed on Slashdot.
The methodology used by TIOBE to calculate a language&#8217;s popularity is basically the good old google hits ad-hoc voodoo [...]]]></description>
			<content:encoded><![CDATA[<p>The other day there was an <a href="http://www.ddj.com/development-tools/207401593" >interview in Dr. Dobb&#8217;s Journal</a> with the <span style="font-weight: bold;">managing director of TIOBE Software</span>, who publishes the <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html" style="font-weight: bold;" >TIOBE Programming Community Index</a>, a ranking of <span style="font-weight: bold;">programming language popularity</span>. It was also <a href="http://tech.slashdot.org/article.pl?sid=08/04/24/1955257" >discussed on Slashdot</a>.</p>
<p>The <a href="http://www.tiobe.com/index.php/content/paperinfo/tpci/tpci_definition.htm" >methodology used by TIOBE</a> to calculate a language&#8217;s popularity is basically the <span style="font-weight: bold;">good old google hits ad-hoc voodoo index</span>, using &#8220;<language name="">[language] programming&#8221; as the query. This measures the <span style="font-weight: bold; font-style: italic;">&#8220;web presence&#8221;</span> of a programming language.</p>
<p>First of all, it&#8217;s obvious to you and me that this measures something, that something being the amount of web pages including the term &#8220;<language name="">[language] programming&#8221;, obviously. There&#8217;s nothing wrong with this method, as long as one is aware of what they&#8217;re measuring. But is it fair to call this the popularity of a language?</p>
<p></language></language><a href="http://blog.rvburke.com/wp-content/uploads/2006/10/gary-larson-oct-1987.gif" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" ><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://blog.rvburke.com/wp-content/uploads/2006/10/gary-larson-oct-1987.gif" alt="" border="0" /></a><br /><language name=""><language name=""><span style="font-weight: bold; font-style: italic;">Look at this blog, for example.</span> I mostly mention <span style="font-weight: bold;">JavaScript</span> and <span style="font-weight: bold;">PHP</span> here, just like everyone else. Throw in some <span style="font-weight: bold;">Ruby</span> and <span style="font-weight: bold;">Python</span> too to max out the buzz factor. There is no mention of relics such as C in this blog. <span style="font-weight: bold; font-style: italic;">But you know what language I use ten times more than any other?</span> C. I&#8217;d love to have a job hacking away in JavaScript, Ruby, and Python all days, <span style="font-weight: bold; font-style: italic;">but I&#8217;d have to settle with half the salary.</span> <span style="font-style: italic;">So here it goes:</span> <span style="font-weight: bold;">C programming</span>. Index that. <span style="font-style: italic;">Embedded, heavily multi-threaded, efficient, minimum memory, hardcore badass C programming</span>, that&#8217;s what I do, and I love doing it.</p>
<p></language></language><language name=""><language name="">Most coders can&#8217;t do C. <span style="font-weight: bold; font-style: italic;">That&#8217;s why you see all these Visual This and Dot That</span> and <span style="font-weight: bold;">scripting languages</span> on the ranking, because these kids blog about every little insignificant hobby project they manage to cut and paste together, just like I do. But let there be no mistake about it:<span style="font-weight: bold; font-style: italic;"> real programmers can code in C</span>. They do <span style="font-weight: bold; font-style: italic;">syntactically correct typedefs of function pointers in their sleep</span>. <span style="font-size:85%;">(just kidding that&#8217;s impossible.)</span></p>
<p></language></language><a href="http://existentialtype.net/wp-content/uploads/2007/05/im-in-ur-stackz-overflowing-ur-bufferz.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" ><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px;" src="http://existentialtype.net/wp-content/uploads/2007/05/im-in-ur-stackz-overflowing-ur-bufferz.jpg" alt="" border="0" /></a><br /><language name=""><language name=""><span style="font-weight: bold;">At work</span> I also hack in Python, Perl, and Makefile. <span style="font-weight: bold;">At home</span> it&#8217;s mostly JavaScript, PHP, Ruby, Python&#8230; <span style="font-weight: bold; font-style: italic;">Lately Python has replaced Ruby as my language of choice</span> for home hacking because of its <span style="font-weight: bold;">decent unicode support</span>. (Although I&#8217;ve had to hack the Python standard library in some places where it didn&#8217;t properly support unicode. I read the next version of Python (2.6?) will use unicode strings by default, which is great, and only ten years late.) I also sold my soul the other day and installed <span style="font-weight: bold;">Visual C# 2008 Express Edition</span> for some hobby hacking. Turned out not very fun though, but I haven&#8217;t given up yet.</p>
<p>At my previous job I used C++ for doing essentially the same thing as I do in C now. I&#8217;m completely convinced that C is the right tool for the job. <span style="font-weight: bold; font-style: italic;">I&#8217;m also convinced C does object orientation better than C++</span>, but that is a topic for another post. And I <span style="font-weight: bold;">used to be a Java fan</span>, but now I&#8217;m considering Java the best examples of software suckiness ever. It&#8217;s a volatile industry, technologies come and go, but <span style="font-weight: bold; font-style: italic;">no amount of blogging will convince me that the C programming language is anything but #1</span>.</p>
<p>I&#8217;m saying it because it&#8217;s true: <span style="font-weight: bold;">We&#8217;ll always have C.</span> Because we&#8217;ve got jobs to do.<br /></language></language></p>
]]></content:encoded>
			<wfw:commentRss>http://henrikfalck.com/blog/2008/04/well-always-have-c.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Reducing Bandwidth Usage when Deploying Web Applications</title>
		<link>http://henrikfalck.com/blog/2007/08/reducing-bandwidth-usage-when-deploying.html</link>
		<comments>http://henrikfalck.com/blog/2007/08/reducing-bandwidth-usage-when-deploying.html#comments</comments>
		<pubDate>Mon, 13 Aug 2007 10:44:00 +0000</pubDate>
		<dc:creator>Henrik Falck</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tricks]]></category>
		<category><![CDATA[web apps]]></category>
		<category><![CDATA[www]]></category>

		<guid isPermaLink="false">http://henrikfalck.com/blog2/2007/08/reducing-bandwidth-usage-when-deploying-web-applications.html</guid>
		<description><![CDATA[&#8230; by serving your JavaScript source code files as one big gzipped file. Nowadays when we&#8217;re getting more and more nice applications (and widgets, gadgets, mashups, and whatnots) running on the web, there&#8217;s a lot of talk about user experience and stuff, which involves the whole experience of using a web site. Good content, design, [...]]]></description>
			<content:encoded><![CDATA[<p><a rel="nofollow" href="http://media.urbandictionary.com/image/large/internet-24591.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" ><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 200px;" src="http://media.urbandictionary.com/image/large/internet-24591.jpg" alt="" border="0" /></a><br />&#8230; <span style="font-weight: bold; font-style: italic;">by serving your JavaScript source code files as one big gzipped file</span>. Nowadays when we&#8217;re getting more and more nice applications (and widgets, gadgets, mashups, and whatnots) running on the web, there&#8217;s a lot of talk about <span style="font-weight: bold;">user experience</span> and stuff, which involves the whole experience of using a web site. Good content, design, and fancy programming, of course make up the core of a good user experience. But we all wants sites to be quick and responsive to load too, right?</p>
<p>This trick is so simple and incredibly easy to pull off that you have no reason not to do it. There are essentially three things involved:
<ol>
<li>Make apache serve .gz.js files with gzip transfer encoding</li>
<li>Bundle up all your JavaScript files into one (or a few) big file(s)</li>
<li>Gzip your One Big File(s)</li>
</ol>
<p>Let&#8217;s go through these step by step&#8230;</p>
<p><span style="font-size:130%;">1. Make apache serve .gz.js files with gzip transfer encoding<br /></span><span style="font-weight: bold; font-style: italic;">Gzip transfer encoding is great!</span> The only bad thing about it is that on dynamic content, the web server will have to use up some processing power to compress the files on the fly, but in this case, we&#8217;re serving static JavaScript source files, so that&#8217;s not even an argument! (As for the client, if it&#8217;s got enough CPU to run your web app, it&#8217;s not gonna have any trouble doing a little unzipping&#8230;)</p>
<p>The easiest way to do this is to edit the <span style="font-weight: bold;">.htaccess</span> config file in the directory where you put your JavaScript files, or any directory above that one to make it more global. The only thing you have to do is <span style="font-weight: bold;">add the following line</span>:<br /><span style="font-family:courier new;">AddEncoding x-gzip gz</span></p>
<p>This adds the gzip transfer encoding to apache for files with a &#8220;gz&#8221; file extension.</p>
<p>Notice the title says &#8220;.gz.js&#8221; though: by adding &#8220;.js&#8221; at the end, <span style="font-weight: bold; font-style: italic;">the files will be served correctly with the text/javascript mime type</span>. Otherwise the browser might go berserk. That&#8217;s also why I wouldn&#8217;t recommend using &#8220;.js.gz&#8221;; it&#8217;ll get served with gzip transfer encoding alright, but not with the JavaScript mimetype.</p>
<p>This solution works even with clients that don&#8217;t support the gzip transfer encoding, because web browsers send an &#8220;accept-encoding&#8221; header that tells the server which encodings the client supports, so apache won&#8217;t use gzip transfer encoding if it&#8217;s not supported by the client.</p>
<p><span style="font-size:130%;">2. Bundle up your JavaScript source file into one (or a few) big file(s)</span><br />This means simply appending all your source files to one file. Or a few files. I usually bundle up the libraries/utility code etc, i.e. code that you don&#8217;t change very often, into one file and the rest of the app into one file that gets updated more often. You can do this by copy-pasting in your text editor if you like, or make a script that does it. I usually have the whole deployment process automated on the server, which I&#8217;ll write about some other time perhaps.</p>
<p>Another good way to do it is using <a href="http://alex.dojotoolkit.org/shrinksafe/" >Dojo ShrinkSafe</a>. ShrinkSafe will not only append all your source files into one big file, but also reduce the size even further by optimizing the JavaScript code. However, I have had problems with scripts not running correctly (in all browsers) after running them through ShrinkSafe, despite their claims of it being &#8220;safe&#8221;. I would especially recommend not using the &#8220;strip newline chars?&#8221; option. Anyway, the file size reduction the results from using ShrinkSafe is small compared to just gzipping the files (I&#8217;ll show you some numbers later) so if you&#8217;re afraid of regressions, don&#8217;t use it.</p>
<p><span style="font-size:130%;">3. Gzip your One Big File(s)</span><br />Now that you&#8217;ve got one or two or so JavaScript files, you need to gzip them into a gzip file. You can use the command-line gzip tool on the server to do this, like:<br /><span style="font-family:courier new;">gzip -n9c <span style="font-style: italic;">scriptfile</span>.js > <span style="font-style: italic;">scriptfile</span>.gz.js</span></p>
<p>The -n option means to not store the the original file name in the gzip file. No big deal if you do, but there&#8217;s no reason to do it either. -9 means maximum compression. I like doing things to the extreme! And -c means to write to standard output instead of modifying the source file, so we need to pipe it &#8220;>&#8221; to a .gz.js file at the end. Or you can use a UI tool such as <a href="http://www.7-zip.org/" >7-Zip</a> that supports gzip compression. That&#8217;s just damn easy.</p>
<p>Then upload the .gz.js script file to your server, and change all your old <span style="font-family:courier new;">&lt;script&gt;</span> tags for every file you had to one pointing to it. I.e. like:<br /><span style="font-family:courier new;">&lt;script type=&#8221;text/javascript&#8221; src=&#8221;<span style="font-style:italic;">scriptfile</span>.gz.js&#8221;&gt;&lt;/script&gt;</span><br />That&#8217;s all there is to it!</p>
<p><span style="font-size:130%;">Show Me The Numbers!</span><br />Let&#8217;s use my <a href="http://henrikfalck.com/minesweeper/" >Minesweeper</a> game for comparison. The code is served in two files: libs.gz.js containing Prototype and Scriptaculous core and Effects libraries, and minesweeper.gz.js containing the actual game. The breakdown of the files in these libraries before combining them is as follows (at the time of writing):</p>
<p><span style="font-weight: bold;">Original</span><br />libs.js: 95 kB + 3 kB + 38 kB = 135 kB<br />minesweeper.js: 3 + 9 + 9 + 4 + 2 = 25 kB</p>
<p><span style="font-weight: bold;">Shrunk</span><br />libs.js: 92 kB (32% smaller)<br />minesweeper.js: 13 kB (48% smaller)</p>
<p><span style="font-weight: bold;"></span><span style="font-weight: bold;">Gzipped</span><br />libs.js: 30 kB (78% smaller)<br />minesweeper.js: 7 kB (72% smaller)</p>
<p><span style="font-weight: bold;"></span><span style="font-weight: bold;">Shrunk + gzipped</span><br />libs.js: 27 kB (80% smaller)<br />minesweeper.js: 4 kB (84% smaller)</p>
<p><a href="http://www.stalltheball.com/media/users/johnstal/series_of_tubes.jpg" onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" ><img style="margin: 0pt 10px 10px 0pt; float: left; cursor: pointer; width: 200px;" src="http://www.stalltheball.com/media/users/johnstal/series_of_tubes.jpg" alt="" border="0" /></a>Now, add to that the fact that <span style="font-weight: bold; font-style: italic;">every HTTP request for a file incurs a 1 kB overhead</span> in HTTP headers, and you get an original total amount transferred of 135 + 25 + 8 = 168 kB compared to 27 + 4 + 2 = 33 kB, i.e. a total saving of 135 kB, i.e. <span style="font-size:130%;"><span style="font-weight: bold; font-style: italic;">80% less bandwidth used</span></span>, not to mention that making <span style="font-weight: bold; font-style: italic;">two http requests is much faster than making eight</span> http requests!</p>
<p>The next step would be to bundle up html, css, scripts, and everything you possibly can into one request&#8230; (In fact, I have scripts doing that automatically at runtime on some sites&#8230;) But you have to draw the line somewhere. There&#8217;s a definite trade off in maintainability, <a href="http://henrikfalck.com/blog/2007/07/caching-in-php.html" >cachability</a>, and compatibility of the site. So I&#8217;ll stop here.</p>
]]></content:encoded>
			<wfw:commentRss>http://henrikfalck.com/blog/2007/08/reducing-bandwidth-usage-when-deploying.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>A JavaScript messaging library</title>
		<link>http://henrikfalck.com/blog/2007/07/javascript-messaging-library.html</link>
		<comments>http://henrikfalck.com/blog/2007/07/javascript-messaging-library.html#comments</comments>
		<pubDate>Thu, 05 Jul 2007 12:03:00 +0000</pubDate>
		<dc:creator>Henrik Falck</dc:creator>
				<category><![CDATA[projects]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[messagelib]]></category>
		<category><![CDATA[paintmyblog]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[web apps]]></category>

		<guid isPermaLink="false">http://henrikfalck.com/blog2/2007/07/a-javascript-messaging-library.html</guid>
		<description><![CDATA[I&#8217;m working on a library for sending messages between browsers using JavaScript, XMLHttpRequest, and PHP/sqlite on a server. The idea is that even though it&#8217;s not possible to open a connection of sorts directly between the clients (i.e. web browsers viewing a page, or even different pages, or running a widget), you can pull for [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on a library for sending messages between browsers using JavaScript, XMLHttpRequest, and PHP/sqlite on a server. The idea is that even though it&#8217;s not possible to open a connection of sorts directly between the clients (i.e. web browsers viewing a page, or even different pages, or running a widget), you can pull for updates in a way that will make it seem like you have a connection open. Not only that, but all client listening on the same channel, so to speak, will receive the messages, so it&#8217;s like broadcasting. Technically this is nothing fancy, it&#8217;s just that you don&#8217;t see it much, and if implemented and packaged nicely I think it&#8217;ll be useful and fun to use.</p>
<p>How do I know this works? Because it&#8217;s based on a much cleaned up version of the code used on <a href="http://paintmyblog.com/" >paintmyblog.com</a> &#8211; which has proven itself already. I look forward to writing some cool apps using this library, and I hope other people will use it as well. Expect the first release next week.</p>
]]></content:encoded>
			<wfw:commentRss>http://henrikfalck.com/blog/2007/07/javascript-messaging-library.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Useful JavaScript Programming Sites</title>
		<link>http://henrikfalck.com/blog/2007/07/useful-javascript-programming-sites.html</link>
		<comments>http://henrikfalck.com/blog/2007/07/useful-javascript-programming-sites.html#comments</comments>
		<pubDate>Tue, 03 Jul 2007 10:21:00 +0000</pubDate>
		<dc:creator>Henrik Falck</dc:creator>
				<category><![CDATA[uncategorized]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[links]]></category>
		<category><![CDATA[programming]]></category>

		<guid isPermaLink="false">http://henrikfalck.com/blog2/2007/07/useful-javascript-programming-sites.html</guid>
		<description><![CDATA[There are some sites I tend to consult all the time while programming in JavaScript. Let&#8217;s see what they are&#8230;
Core JavaScript 1.5 Reference &#8211; Mozilla Developer CenterA thorough and complete reference for the JavaScript language and standard library, with examples and links to more information, etc. Really good.http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference
Gecko DOM Reference &#8211; Mozilla Developer CenterComplements the [...]]]></description>
			<content:encoded><![CDATA[<p>There are some sites I tend to consult all the time while programming in JavaScript. Let&#8217;s see what they are&#8230;</p>
<p><span style="font-weight: bold;">Core JavaScript 1.5 Reference &#8211; </span><span style="font-weight: bold;">Mozilla Developer Center</span><br />A thorough and complete reference for the JavaScript language and standard library, with examples and links to more information, etc. Really good.<br /><span style="font-size:85%;"><a href="http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference" >http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference</a></span></p>
<p><span style="font-weight: bold;">Gecko DOM Reference &#8211; </span><span style="font-weight: bold;">Mozilla Developer Center</span><br />Complements the above reference with a complete reference to the document object model, i.e. all the methods and classes that are available in JavaScript for manipulating the web page in the browser.<span style="font-size:85%;"><a href="http://developer.mozilla.org/en/docs/Gecko_DOM_Reference" ><br />http://developer.mozilla.org/en/docs/Gecko_DOM_Reference</a></span><br /><span style="font-weight: bold;"><br />Canvas Class Reference &#8211; </span><span style="font-weight: bold;">Apple Developer Connection</span><br />If you like playing with the canvas tag like I do, then this is the place to go for reference documentation on the 2d graphics context object. Complete and handy with all in one page.<br /><span style="font-size:85%;"><a rel="nofollow" href="http://developer.apple.com/documentation/AppleApplications/Reference/SafariJSRef/Classes/Canvas.html" >http://developer.apple.com/documentation/AppleApplications/Reference/SafariJSRef/Classes/Canvas.html</a></span></p>
<p><span style="font-weight: bold;">Prototype JavaScript Framework API</span><br />The reference documentation for the <span style="font-style: italic;">Prototype</span> framework. Of course, this is only useful if you&#8217;re using Prototype. But if you&#8217;re not, you better have a really good excuse&#8230; such as using some bloated alternative like the <a rel="nofollow" href="http://developer.yahoo.com/yui/" >Yahoo UI Library</a> or <a rel="nofollow" href="http://code.google.com/webtoolkit/" >Google Web Toolkit</a>.<br /><span style="font-size:85%;"><a href="http://www.prototypejs.org/api" >http://www.prototypejs.org/api</a><br /></span><span style="font-weight: bold;"><br />Dojo ShrinkSafe</span><br />Dojo ShrinkSafe shrinks the sizes of your JavaScript source files by removing whitespace and renaming local variables to shorter names, and some other stuff. Saves bandwidth and loading time without really giving much up, except debuggability. But you&#8217;re not doing debugging on your live site anyway, right? Riiight?!<span style="font-weight: bold;"><br /></span><span style="font-size:85%;"><a href="http://alex.dojotoolkit.org/shrinksafe/" >http://alex.dojotoolkit.org/shrinksafe/</a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://henrikfalck.com/blog/2007/07/useful-javascript-programming-sites.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
