<?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>Lojic Technologies Blog &#187; javascript</title>
	<atom:link href="http://lojic.com/blog/tag/javascript/feed/" rel="self" type="application/rss+xml" />
	<link>http://lojic.com/blog</link>
	<description></description>
	<lastBuildDate>Fri, 25 Nov 2011 20:12:56 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Programming Language Popularity &#8211; Part Four</title>
		<link>http://lojic.com/blog/2011/09/22/programming-language-popularity-part-four/</link>
		<comments>http://lojic.com/blog/2011/09/22/programming-language-popularity-part-four/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 15:37:07 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[software]]></category>
		<category><![CDATA[arc]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scheme]]></category>
		<category><![CDATA[sml]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=866</guid>
		<description><![CDATA[I compiled some programming language popularity statistics in April 2009, October 2009 and October 2010 . Here&#8217;s an update for September 2011:
I made a number of Google searches of the forms below and summed the results (previous posts averaged the results):
"implemented in &#60;language&#62;"
  "written in &#60;language&#62;"
Naturally this is of very limited utility, and the [...]]]></description>
			<content:encoded><![CDATA[<p>I compiled some programming language popularity statistics in <a href="http://lojic.com/blog/2009/04/21/programming-language-popularity/">April 2009</a>, <a href="http://lojic.com/blog/2009/10/24/programming-language-popularity-part-two/">October 2009</a> and <a href="http://lojic.com/blog/2010/10/08/programming-language-popularity-%E2%80%93-part-three/">October 2010</a> . Here&#8217;s an update for September 2011:</p>
<p>I made a number of Google searches of the forms below and summed the results (previous posts averaged the results):</p>
<pre class="code">"implemented in &lt;language&gt;"
  "written in &lt;language&gt;"</pre>
<p>Naturally this is of very limited utility, and the numbers are only useful when comparing relatively within the same search since the number of results Google returns can vary greatly over time.<br />
<!-- use ML and SML --></p>
<table border="0">
<tbody>
<tr>
<th>Language</th>
<th style="text-align: left;">Total</th>
<th style="text-align: right;">Prev. Position</th>
<th style="text-align: right;"> Position Delta</th>
</tr>
<tr>
<td>C</td>
<td style="text-align: right;">10,360,000</td>
<td style="text-align: right;">2</td>
<td style="text-align: right;"><strong>1</strong></td>
</tr>
<tr>
<td>PHP</td>
<td style="text-align: right;">10,351,000</td>
<td style="text-align: right;">1</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>C++</td>
<td style="text-align: right;">6,495,000</td>
<td style="text-align: right;">3</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Python</td>
<td style="text-align: right;">5,759,000</td>
<td style="text-align: right;">5</td>
<td style="text-align: right;"><strong>1</strong></td>
</tr>
<tr>
<td>C#</td>
<td style="text-align: right;">5,335,000</td>
<td style="text-align: right;">4</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Java</td>
<td style="text-align: right;">4,890,000</td>
<td style="text-align: right;">8</td>
<td style="text-align: right;"><strong>2</strong></td>
</tr>
<tr>
<td>Perl</td>
<td style="text-align: right;">3,702,000</td>
<td style="text-align: right;">6</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>JavaScript</td>
<td style="text-align: right;">3,077,000</td>
<td style="text-align: right;">7</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>Ruby</td>
<td style="text-align: right;">1,654,000</td>
<td style="text-align: right;">9</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Lisp Family<sup>1</sup></td>
<td style="text-align: right;">1,022,870</td>
<td style="text-align: right;">11</td>
<td style="text-align: right;"><strong>1</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>FORTRAN</td>
<td style="text-align: right;">975,600</td>
<td style="text-align: right;">10</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>Tcl</td>
<td style="text-align: right;">594,500</td>
<td style="text-align: right;">12</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Lisp</td>
<td style="text-align: right;">486,000</td>
<td style="text-align: right;">14</td>
<td style="text-align: right;"><strong>1</strong></td>
</tr>
<tr>
<td>Haskell</td>
<td style="text-align: right;">450,500</td>
<td style="text-align: right;">16</td>
<td style="text-align: right;"><strong>2</strong></td>
</tr>
<tr>
<td>Erlang</td>
<td style="text-align: right;">419,700</td>
<td style="text-align: right;">13</td>
<td style="text-align: right;">-2</td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Lua</td>
<td style="text-align: right;">367,100</td>
<td style="text-align: right;">18</td>
<td style="text-align: right;"><strong>2</strong></td>
</tr>
<tr>
<td>ML Family<sup>2</sup></td>
<td style="text-align: right;">348,400</td>
<td style="text-align: right;">17</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>COBOL</td>
<td style="text-align: right;">308,270</td>
<td style="text-align: right;">15</td>
<td style="text-align: right;">-3</td>
</tr>
<tr>
<td>Common Lisp</td>
<td style="text-align: right;">254,900</td>
<td style="text-align: right;">19</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>OCaml</td>
<td style="text-align: right;">240,300</td>
<td style="text-align: right;">21</td>
<td style="text-align: right;"><strong>1</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>Prolog</td>
<td style="text-align: right;">224,000</td>
<td style="text-align: right;">20</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>Scala</td>
<td style="text-align: right;">203,400</td>
<td style="text-align: right;">23</td>
<td style="text-align: right;"><strong>1</strong></td>
</tr>
<tr>
<td>Scheme</td>
<td style="text-align: right;">184,700</td>
<td style="text-align: right;">22</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>Smalltalk</td>
<td style="text-align: right;">129,700</td>
<td style="text-align: right;">24</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Clojure</td>
<td style="text-align: right;">84,600</td>
<td style="text-align: right;">27</td>
<td style="text-align: right;"><strong>2</strong></td>
</tr>
<tr>
<td>&nbsp;</td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td>(S)ML<sup>3</sup></td>
<td style="text-align: right;">83,630</td>
<td style="text-align: right;">25</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>Forth</td>
<td style="text-align: right;">69,980</td>
<td style="text-align: right;">26</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>Caml</td>
<td style="text-align: right;">24,470</td>
<td style="text-align: right;">28</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Io</td>
<td style="text-align: right;">17,700</td>
<td style="text-align: right;">30</td>
<td style="text-align: right;"><strong>1</strong></td>
</tr>
<tr>
<td>Arc</td>
<td style="text-align: right;">12,670</td>
<td style="text-align: right;">29</td>
<td style="text-align: right;">-1</td>
</tr>
</tbody>
</table>
<p><sup>1</sup> combines Lisp, Scheme, Common Lisp, Arc &amp; Clojure<br />
<sup>2</sup> combines OCaml, (S)ML, Caml<br />
<sup>3</sup> summed separate searches for sml and ml</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2011/09/22/programming-language-popularity-part-four/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming Language Popularity – Part Three</title>
		<link>http://lojic.com/blog/2010/10/08/programming-language-popularity-%e2%80%93-part-three/</link>
		<comments>http://lojic.com/blog/2010/10/08/programming-language-popularity-%e2%80%93-part-three/#comments</comments>
		<pubDate>Fri, 08 Oct 2010 20:30:00 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[arc]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scheme]]></category>
		<category><![CDATA[sml]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=823</guid>
		<description><![CDATA[I compiled some programming language popularity statistics in April 2009 and October 2009 . Here&#8217;s an update for October 2010:
I made a number of Google searches of the forms below and averaged the results:
"implemented in &#60;language&#62;"
  "written in &#60;language&#62;"
Naturally this is of very limited utility, and the numbers are only useful when comparing relatively [...]]]></description>
			<content:encoded><![CDATA[<p>I compiled some programming language popularity statistics in <a href="http://lojic.com/blog/2009/04/21/programming-language-popularity/">April 2009</a> and <a href="http://lojic.com/blog/2009/10/24/programming-language-popularity-part-two/">October 2009</a> . Here&#8217;s an update for October 2010:</p>
<p>I made a number of Google searches of the forms below and averaged the results:</p>
<pre class="code">"implemented in &lt;language&gt;"
  "written in &lt;language&gt;"</pre>
<p>Naturally this is of very limited utility, and the numbers are only useful when comparing relatively within one column since the number of results Google returns can vary greatly over time.<br />
<!-- use ML and SML --></p>
<table border="0">
<tbody>
<tr>
<th>Language</th>
<th style="text-align: right;">Apr 2009</th>
<th style="text-align: right;">Oct 2009</th>
<th style="text-align: right;">Oct 2010</th>
<th style="text-align: right;"> Position Delta</th>
</tr>
<tr>
<td>PHP</td>
<td style="text-align: right;">680,000</td>
<td style="text-align: right;">5,083,500</td>
<td style="text-align: right;">14,096,000</td>
<td style="text-align: right;">+3</td>
</tr>
<tr>
<td>C</td>
<td style="text-align: right;">1,905,500</td>
<td style="text-align: right;">16,975,000</td>
<td style="text-align: right;">9,675,000</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>C++</td>
<td style="text-align: right;">699,000</td>
<td style="text-align: right;">6,270,000</td>
<td style="text-align: right;">6,510,000</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td><strong>C#</strong></td>
<td style="text-align: right;">349,700</td>
<td style="text-align: right;">2,125,000</td>
<td style="text-align: right;">5,132,000</td>
<td style="text-align: right;"><strong>+4</strong></td>
</tr>
<tr>
<td>Python</td>
<td style="text-align: right;">396,000</td>
<td style="text-align: right;">3,407,000</td>
<td style="text-align: right;">5,114,500</td>
<td style="text-align: right;">+1</td>
</tr>
<tr>
<td>Perl</td>
<td style="text-align: right;">365,500</td>
<td style="text-align: right;">3,132,500</td>
<td style="text-align: right;">4,675,000</td>
<td style="text-align: right;">+1</td>
</tr>
<tr>
<td><strong>JavaScript</strong></td>
<td style="text-align: right;">102,700</td>
<td style="text-align: right;">1,163,000</td>
<td style="text-align: right;">2,120,000</td>
<td style="text-align: right;"><strong>+4</strong></td>
</tr>
<tr>
<td>Java</td>
<td style="text-align: right;">850,000</td>
<td style="text-align: right;">5,118,000</td>
<td style="text-align: right;">1,495,500</td>
<td style="text-align: right;">-5</td>
</tr>
<tr>
<td><strong>Ruby</strong></td>
<td style="text-align: right;">99,650</td>
<td style="text-align: right;">227,000</td>
<td style="text-align: right;">1,426,000</td>
<td style="text-align: right;"><strong>+13</strong></td>
</tr>
<tr>
<td>FORTRAN</td>
<td style="text-align: right;"></td>
<td style="text-align: right;">1,621,000</td>
<td style="text-align: right;">770,850</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Lisp Family<sup>1</sup></td>
<td style="text-align: right;">176,507</td>
<td style="text-align: right;">3,489,650</td>
<td style="text-align: right;">399,685</td>
<td style="text-align: right;">-6</td>
</tr>
<tr>
<td><strong>Tcl</strong></td>
<td style="text-align: right;">44,800</td>
<td style="text-align: right;">382,000</td>
<td style="text-align: right;">313,400</td>
<td style="text-align: right;"><strong>+5</strong></td>
</tr>
<tr>
<td><strong>Erlang</strong></td>
<td style="text-align: right;">22,285</td>
<td style="text-align: right;">161,700</td>
<td style="text-align: right;">188,800</td>
<td style="text-align: right;"><strong>+12</strong></td>
</tr>
<tr>
<td>Lisp</td>
<td style="text-align: right;">61,900</td>
<td style="text-align: right;">486,500</td>
<td style="text-align: right;">174,050</td>
<td style="text-align: right;">+1</td>
</tr>
<tr>
<td><strong>COBOL</strong></td>
<td style="text-align: right;"></td>
<td style="text-align: right;">247,300</td>
<td style="text-align: right;">166,435</td>
<td style="text-align: right;"><strong>+6</strong></td>
</tr>
<tr>
<td><strong>Haskell</strong></td>
<td style="text-align: right;">22,550</td>
<td style="text-align: right;">280,500</td>
<td style="text-align: right;">157,150</td>
<td style="text-align: right;"><strong>+4</strong></td>
</tr>
<tr>
<td>ML Family<sup>2</sup></td>
<td style="text-align: right;">29,062</td>
<td style="text-align: right;">1,003,800</td>
<td style="text-align: right;">149,005</td>
<td style="text-align: right;">-5</td>
</tr>
<tr>
<td><strong>Lua</strong></td>
<td style="text-align: right;">13,065</td>
<td style="text-align: right;">131,800</td>
<td style="text-align: right;">128,150</td>
<td style="text-align: right;"><strong>+9</strong></td>
</tr>
<tr>
<td>Common Lisp</td>
<td style="text-align: right;">20,600</td>
<td style="text-align: right;">554,500</td>
<td style="text-align: right;">112,750</td>
<td style="text-align: right;">-5</td>
</tr>
<tr>
<td>Prolog</td>
<td style="text-align: right;">17,750</td>
<td style="text-align: right;">390,500</td>
<td style="text-align: right;">100,000</td>
<td style="text-align: right;">-4</td>
</tr>
<tr>
<td>OCaml</td>
<td style="text-align: right;">22,000</td>
<td style="text-align: right;">343,500</td>
<td style="text-align: right;">99,050</td>
<td style="text-align: right;">-3</td>
</tr>
<tr>
<td>Scheme</td>
<td style="text-align: right;">86,450</td>
<td style="text-align: right;">2,100,000</td>
<td style="text-align: right;">82,650</td>
<td style="text-align: right;">-13</td>
</tr>
<tr>
<td><strong>Scala</strong></td>
<td style="text-align: right;">3,570</td>
<td style="text-align: right;">66,250</td>
<td style="text-align: right;">65,950</td>
<td style="text-align: right;"><strong>+6</strong></td>
</tr>
<tr>
<td>Smalltalk</td>
<td style="text-align: right;">9,105</td>
<td style="text-align: right;">187,500</td>
<td style="text-align: right;">56,950</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>(S)ML<sup>3</sup></td>
<td style="text-align: right;">5,173</td>
<td style="text-align: right;">590,700</td>
<td style="text-align: right;">42,130</td>
<td style="text-align: right;">-12</td>
</tr>
<tr>
<td>Forth</td>
<td style="text-align: right;">6,465</td>
<td style="text-align: right;">146,450</td>
<td style="text-align: right;">25,880</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Clojure</td>
<td style="text-align: right;">782</td>
<td style="text-align: right;">62,200</td>
<td style="text-align: right;">23,525</td>
<td style="text-align: right;">+3</td>
</tr>
<tr>
<td>Caml</td>
<td style="text-align: right;">1,889</td>
<td style="text-align: right;">69,600</td>
<td style="text-align: right;">7,825</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Arc</td>
<td style="text-align: right;">6,775</td>
<td style="text-align: right;">286,500</td>
<td style="text-align: right;">6,710</td>
<td style="text-align: right;">-10</td>
</tr>
<tr>
<td>Io</td>
<td style="text-align: right;">1,760</td>
<td style="text-align: right;">198,500</td>
<td style="text-align: right;">3,025</td>
<td style="text-align: right;">-7</td>
</tr>
</tbody>
</table>
<p><sup>1</sup> combines Lisp, Scheme, Common Lisp, Arc &amp; Clojure<br />
<sup>2</sup> combines OCaml, (S)ML, Caml<br />
<sup>3</sup> summed separate searches for sml and ml</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2010/10/08/programming-language-popularity-%e2%80%93-part-three/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Programming Language Popularity &#8211; Part Two</title>
		<link>http://lojic.com/blog/2009/10/24/programming-language-popularity-part-two/</link>
		<comments>http://lojic.com/blog/2009/10/24/programming-language-popularity-part-two/#comments</comments>
		<pubDate>Sat, 24 Oct 2009 15:23:23 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[arc]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[forth]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[io]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[ocaml]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[scheme]]></category>
		<category><![CDATA[smalltalk]]></category>
		<category><![CDATA[sml]]></category>
		<category><![CDATA[tcl]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=781</guid>
		<description><![CDATA[I compiled some programming language popularity statistics in April and mentioned I&#8217;d update the results in 6 months, so here they are:
I made a number of Google searches of the forms below and averaged the results:
"implemented in &#60;language&#62;"
"written in &#60;language&#62;"



Language
# Results
Apr 09
# Results
Oct 09
Position
Delta


C
1,905,500
16,975,000
0


C++
699,000
6,270,000
+1


Java
850,000
5,118,000
-1


PHP
680,000
5,083,500
0


Lisp Family1
176,507
3,489,650
+3


Python
396,000
3,407,000
-1


Perl
365,500
3,132,500
-1


C#
349,700
2,125,000
-1


Scheme
86,450
2,100,000
+2


FORTRAN

1,621,000
N/A


JavaScript
102,700
1,163,000
-1


ML Family2
29,062
1,003,800
+3



(S)ML3
5,173
590,700
+12


Common Lisp
20,600
554,500
+5


Lisp
61,900
486,500
-2


Prolog
17,750
390,500
+4


Tcl
44,800
382,000
-3


OCaml
22,000
343,500
0


Arc
6,775
286,500
+4


Haskell
22,550
280,500
-4


COBOL

247,300
N/A


Ruby
99,650
227,000
-10


Io
1,760
198,500
+6


Smalltalk
9,105
187,500
-1


Erlang
22,285
161,700
-7


Forth
6,465
146,450
-1


Lua
13,065
131,800
-5


Caml
1,889
69,600
0


Scala
3,570
66,250
-2


Clojure
782
62,200
0



1 combines Lisp, Scheme, Common Lisp, Arc &#38; Clojure
2 [...]]]></description>
			<content:encoded><![CDATA[<p>I compiled some <a href="http://lojic.com/blog/2009/04/21/programming-language-popularity/">programming language popularity</a> statistics in April and mentioned I&#8217;d update the results in 6 months, so here they are:</p>
<p>I made a number of Google searches of the forms below and averaged the results:</p>
<pre class="code">"implemented in &lt;language&gt;"
"written in &lt;language&gt;"</pre>
<table border="0">
<tbody>
<tr>
<th>Language</th>
<th style="text-align: right;"># Results<br />
Apr 09</th>
<th style="text-align: right;"># Results<br />
Oct 09</th>
<th style="text-align: right;">Position<br />
Delta</th>
</tr>
<tr>
<td>C</td>
<td style="text-align: right;">1,905,500</td>
<td style="text-align: right;">16,975,000</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td><strong>C++</strong></td>
<td style="text-align: right;">699,000</td>
<td style="text-align: right;">6,270,000</td>
<td style="text-align: right;"><strong>+1</strong></td>
</tr>
<tr>
<td>Java</td>
<td style="text-align: right;">850,000</td>
<td style="text-align: right;">5,118,000</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>PHP</td>
<td style="text-align: right;">680,000</td>
<td style="text-align: right;">5,083,500</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td><strong>Lisp Family<sup>1</sup></strong></td>
<td style="text-align: right;">176,507</td>
<td style="text-align: right;">3,489,650</td>
<td style="text-align: right;"><strong>+3</strong></td>
</tr>
<tr>
<td>Python</td>
<td style="text-align: right;">396,000</td>
<td style="text-align: right;">3,407,000</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>Perl</td>
<td style="text-align: right;">365,500</td>
<td style="text-align: right;">3,132,500</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>C#</td>
<td style="text-align: right;">349,700</td>
<td style="text-align: right;">2,125,000</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td><strong>Scheme</strong></td>
<td style="text-align: right;">86,450</td>
<td style="text-align: right;">2,100,000</td>
<td style="text-align: right;"><strong>+2</strong></td>
</tr>
<tr>
<td>FORTRAN</td>
<td style="text-align: right;"></td>
<td style="text-align: right;">1,621,000</td>
<td style="text-align: right;">N/A</td>
</tr>
<tr>
<td>JavaScript</td>
<td style="text-align: right;">102,700</td>
<td style="text-align: right;">1,163,000</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td><strong>ML Family<sup>2</sup></strong></td>
<td style="text-align: right;">29,062</td>
<td style="text-align: right;">1,003,800</td>
<td style="text-align: right;"><strong>+3</strong></td>
</tr>
<p><!-- use ML and SML --></p>
<tr>
<td><strong>(S)ML<sup>3</sup></strong></td>
<td style="text-align: right;">5,173</td>
<td style="text-align: right;">590,700</td>
<td style="text-align: right;"><strong>+12</strong></td>
</tr>
<tr>
<td><strong>Common Lisp</strong></td>
<td style="text-align: right;">20,600</td>
<td style="text-align: right;">554,500</td>
<td style="text-align: right;"><strong>+5</strong></td>
</tr>
<tr>
<td>Lisp</td>
<td style="text-align: right;">61,900</td>
<td style="text-align: right;">486,500</td>
<td style="text-align: right;">-2</td>
</tr>
<tr>
<td><strong>Prolog</strong></td>
<td style="text-align: right;">17,750</td>
<td style="text-align: right;">390,500</td>
<td style="text-align: right;"><strong>+4</strong></td>
</tr>
<tr>
<td>Tcl</td>
<td style="text-align: right;">44,800</td>
<td style="text-align: right;">382,000</td>
<td style="text-align: right;">-3</td>
</tr>
<tr>
<td>OCaml</td>
<td style="text-align: right;">22,000</td>
<td style="text-align: right;">343,500</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td><strong>Arc</strong></td>
<td style="text-align: right;">6,775</td>
<td style="text-align: right;">286,500</td>
<td style="text-align: right;"><strong>+4</strong></td>
</tr>
<tr>
<td>Haskell</td>
<td style="text-align: right;">22,550</td>
<td style="text-align: right;">280,500</td>
<td style="text-align: right;">-4</td>
</tr>
<tr>
<td>COBOL</td>
<td style="text-align: right;"></td>
<td style="text-align: right;">247,300</td>
<td style="text-align: right;">N/A</td>
</tr>
<tr>
<td>Ruby</td>
<td style="text-align: right;">99,650</td>
<td style="text-align: right;">227,000</td>
<td style="text-align: right;">-10</td>
</tr>
<tr>
<td><strong>Io</strong></td>
<td style="text-align: right;">1,760</td>
<td style="text-align: right;">198,500</td>
<td style="text-align: right;"><strong>+6</strong></td>
</tr>
<tr>
<td>Smalltalk</td>
<td style="text-align: right;">9,105</td>
<td style="text-align: right;">187,500</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>Erlang</td>
<td style="text-align: right;">22,285</td>
<td style="text-align: right;">161,700</td>
<td style="text-align: right;">-7</td>
</tr>
<tr>
<td>Forth</td>
<td style="text-align: right;">6,465</td>
<td style="text-align: right;">146,450</td>
<td style="text-align: right;">-1</td>
</tr>
<tr>
<td>Lua</td>
<td style="text-align: right;">13,065</td>
<td style="text-align: right;">131,800</td>
<td style="text-align: right;">-5</td>
</tr>
<tr>
<td>Caml</td>
<td style="text-align: right;">1,889</td>
<td style="text-align: right;">69,600</td>
<td style="text-align: right;">0</td>
</tr>
<tr>
<td>Scala</td>
<td style="text-align: right;">3,570</td>
<td style="text-align: right;">66,250</td>
<td style="text-align: right;">-2</td>
</tr>
<tr>
<td>Clojure</td>
<td style="text-align: right;">782</td>
<td style="text-align: right;">62,200</td>
<td style="text-align: right;">0</td>
</tr>
</tbody>
</table>
<p><sup>1</sup> combines Lisp, Scheme, Common Lisp, Arc &amp; Clojure<br />
<sup>2</sup> combines OCaml, (S)ML, Caml<br />
<sup>3</sup> summed separate searches for sml and ml</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2009/10/24/programming-language-popularity-part-two/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>TriFunc.org</title>
		<link>http://lojic.com/blog/2009/07/22/trifuncorg/</link>
		<comments>http://lojic.com/blog/2009/07/22/trifuncorg/#comments</comments>
		<pubDate>Wed, 22 Jul 2009 14:15:42 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[arc]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scheme]]></category>
		<category><![CDATA[sml]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=635</guid>
		<description><![CDATA[I first became interested in functional programming when I was exposed to Python, Ruby &#038; JavaScript a number of years ago. Since then I&#8217;ve looked into Arc, Clojure, Common Lisp, Haskell, Logo, ML &#038; Scheme. I haven&#8217;t yet determined whether I&#8217;ll be more productive in any of them than I am with Ruby for developing [...]]]></description>
			<content:encoded><![CDATA[<p>I first became interested in functional programming when I was exposed to Python, Ruby &#038; JavaScript a number of years ago. Since then I&#8217;ve looked into Arc, Clojure, Common Lisp, Haskell, Logo, ML &#038; Scheme. I haven&#8217;t yet determined whether I&#8217;ll be more productive in any of them than I am with Ruby for developing web applications, but I do find them quite interesting.</p>
<p>After bumping into a number of local programmers who expressed an interest in functional programming, I thought it might be a good time to start a local group that focused on functional programming languages, so I did a couple days ago.</p>
<p><a rel="nofollow" href="http://TriFunc.org">TriFunc.org</a> is a group for programmers who are interested in functional programming languages and live near the Research Triangle area of North Carolina.</p>
<p>If you live in the area and have an interest in functional programming languages, feel free to dive in and start participating in the Google Group discussions. Once we reach a critical mass, I expect we&#8217;ll produce a meeting schedule, etc., but that will depend on where the group wants to take this.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2009/07/22/trifuncorg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Programming Language Popularity</title>
		<link>http://lojic.com/blog/2009/04/21/programming-language-popularity/</link>
		<comments>http://lojic.com/blog/2009/04/21/programming-language-popularity/#comments</comments>
		<pubDate>Tue, 21 Apr 2009 19:55:41 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[arc]]></category>
		<category><![CDATA[clojure]]></category>
		<category><![CDATA[common_lisp]]></category>
		<category><![CDATA[erlang]]></category>
		<category><![CDATA[forth]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[io]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[ocaml]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scala]]></category>
		<category><![CDATA[scheme]]></category>
		<category><![CDATA[smalltalk]]></category>
		<category><![CDATA[sml]]></category>
		<category><![CDATA[tcl]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=466</guid>
		<description><![CDATA[Despite the numerous ways in existence to quantify programming language popularity, I thought I&#8217;d throw yet another one into the mix. I made a number of Google searches of the forms below and averaged the results:

"implemented in &#60;language&#62;"
"written in &#60;language&#62;"

I&#8217;m very curious to see how these stats change over time, so I&#8217;ve added a calendar [...]]]></description>
			<content:encoded><![CDATA[<p>Despite the numerous ways in existence to quantify programming language popularity, I thought I&#8217;d throw yet another one into the mix. I made a number of Google searches of the forms below and averaged the results:</p>
<pre class="code">
"implemented in &lt;language&gt;"
"written in &lt;language&gt;"
</pre>
<p>I&#8217;m very curious to see how these stats change over time, so I&#8217;ve added a calendar item to recompute them in six months. Leave a comment if you&#8217;d like to add a programming language to the list, and I&#8217;ll update this article and it will be included in the recomputation six months from now.</p>
<table border="0">
<tbody>
<tr>
<th>Language</th>
<th># Results</th>
</tr>
<tr>
<td>C</td>
<td>1,905,500</td>
</tr>
<tr>
<td>Java</td>
<td>850,000</td>
</tr>
<tr>
<td>C++</td>
<td>699,000</td>
</tr>
<tr>
<td>PHP</td>
<td>680,000</td>
</tr>
<tr>
<td>Python</td>
<td>396,000</td>
</tr>
<tr>
<td>Perl</td>
<td>365,500</td>
</tr>
<tr>
<td>C#</td>
<td>349,700</td>
</tr>
<tr>
<td>Lisp Family<sup>1</sup></td>
<td>176,507</td>
</tr>
<tr>
<td>JavaScript</td>
<td>102,700</td>
</tr>
<tr>
<td>Ruby</td>
<td>99,650</td>
</tr>
<tr>
<td>Scheme</td>
<td>86,450</td>
</tr>
<tr>
<td>Lisp</td>
<td>61,900</td>
</tr>
<tr>
<td>Tcl</td>
<td>44,800</td>
</tr>
<tr>
<td>ML Family<sup>2</sup></td>
<td>29,062</td>
</tr>
<tr>
<td>Haskell</td>
<td>22,550</td>
</tr>
<tr>
<td>Erlang</td>
<td>22,285</td>
</tr>
<tr>
<td>OCaml</td>
<td>22,000</td>
</tr>
<tr>
<td>Common Lisp</td>
<td>20,600</td>
</tr>
<tr>
<td>Prolog</td>
<td>17,750</td>
</tr>
<tr>
<td>Lua</td>
<td>13,065</td>
</tr>
<tr>
<td>Smalltalk</td>
<td>9,105</td>
</tr>
<tr>
<td>Arc</td>
<td>6,775</td>
</tr>
<tr>
<td>Forth</td>
<td>6,465</td>
</tr>
<p><!-- use ML and SML --></p>
<tr>
<td>(S)ML<sup>3</sup></td>
<td>5,173</td>
</tr>
<tr>
<tr>
<td>Scala</td>
<td>3,570</td>
</tr>
<tr>
<td>Caml</td>
<td>1,889</td>
</tr>
<tr>
<td>Io</td>
<td>1,760</td>
</tr>
<tr>
<td>Clojure</td>
<td>782</td>
</tr>
</tbody>
</table>
<p><sup>1</sup> combines Lisp, Scheme, Common Lisp, Arc &amp; Clojure<br />
<sup>2</sup> combines OCaml, (S)ML, Caml<br />
<sup>3</sup> summed separate searches for sml and ml<br />
<strong>Update</strong> 4/23/09 added C#, Tcl per comment requests.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2009/04/21/programming-language-popularity/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>jQuery in Action</title>
		<link>http://lojic.com/blog/2009/01/20/jquery-in-action/</link>
		<comments>http://lojic.com/blog/2009/01/20/jquery-in-action/#comments</comments>
		<pubDate>Tue, 20 Jan 2009 21:49:58 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[books]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[book]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/?p=163</guid>
		<description><![CDATA[ I just finished &#8220;jQuery in Action&#8221; by Bear Bibeault and Yehuda Katz. It&#8217;s an excellent book on the jQuery JavaScript library. The book comes with a number of example labs to try out various jQuery/JavaScript techniques w/o having to write a lot of code.
There&#8217;s plenty of jQuery information online, but &#8220;jQuery in Action&#8221; easily [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/1933988355?ie=UTF8&#038;tag=lojiccom-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1933988355"><img src="http://lojic.com/blog/wp-content/uploads/2009/01/jquery_in_action.jpg" alt="jQuery in Action cover image" title="jquery_in_action" width="128" height="160" style="margin-bottom: 3px; margin-right: 11px; border-bottom: 1px solid #444; border-right: 1px solid #444;" align="left" /></a> I just finished <a href="http://www.amazon.com/gp/product/1933988355?ie=UTF8&#038;tag=lojiccom-20&#038;linkCode=as2&#038;camp=1789&#038;creative=9325&#038;creativeASIN=1933988355">&#8220;jQuery in Action&#8221;</a> by Bear Bibeault and Yehuda Katz. It&#8217;s an excellent book on the <a href="http://jquery.com/">jQuery</a> JavaScript library. The book comes with a number of example labs to try out various jQuery/JavaScript techniques w/o having to write a lot of code.</p>
<p>There&#8217;s plenty of jQuery information online, but &#8220;jQuery in Action&#8221; easily paid for itself in saved time in getting me up to speed quickly. It&#8217;s nicely organized, well written and the editing/quality control seems to be higher than many tech books (although that bar isn&#8217;t very high!). It also has a brief, 20 page, tutorial on JavaScript that you may find helpful.</p>
<p>jQuery may not satisfy the zealots on comp.lang.javascript, but I&#8217;ve found it to be an excellent JavaScript library thus far, and I think this book was the fastest way to becoming proficient.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2009/01/20/jquery-in-action/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>2008 Programming Language Plan</title>
		<link>http://lojic.com/blog/2008/01/17/2008-programming-language-plan/</link>
		<comments>http://lojic.com/blog/2008/01/17/2008-programming-language-plan/#comments</comments>
		<pubDate>Thu, 17 Jan 2008 22:12:17 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[c]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/2008/01/17/2008-programming-language-plan/</guid>
		<description><![CDATA[I&#8217;ve learned a number of programming languages since I began programming 25 years ago. Earlier in my career, my choice of which programming language to learn was largely driven by external factors such as a class or job requirement, or the expectation of job demand in the future.
More recently I&#8217;ve enjoyed learning new programming languages [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve learned a number of programming languages since I began programming 25 years ago. Earlier in my career, my choice of which programming language to learn was largely driven by external factors such as a class or job requirement, or the expectation of job demand in the future.</p>
<p>More recently I&#8217;ve enjoyed learning new programming languages both for the joy of learning something new, and for an increase in productivity.</p>
<p>While it&#8217;s true that no programming language is a <em><a href="http://en.wikipedia.org/wiki/No_Silver_Bullet">silver bullet</a></em>, I&#8217;ve found that the choice of programming language can provide a dramatic increase in productivity &#8211; much more so than many have asserted. The benefit can be direct, by allowing the creation of a solution to a particular problem with less time and effort than it would take using another language, or it can be an indirect by providing new ways to think about a solution.</p>
<p>Do you think language affects how we think?</p>
<p><strong>The Past</strong></p>
<p>In 1982, I spotted a Radio Shack Color Computer in a store window and immediately applied for a Radio Shack credit card which had a credit limit ($500) sufficient to purchase the computer which had 4K of RAM (I later upgraded to 16K) and no external storage (unless you count the ability to hook up a cassette recorder). Contrast the 16K RAM of that early machine with my current 2,097,152K RAM :)</p>
<p>That was the beginning of a life long interest in programming.</p>
<p>In the language list below, bold indicates a more significant professional involvement, and the year indicates when I first learned the language. I&#8217;ve also likely forgotten a few:</p>
<ol>
<li>1982 &#8211; Radio Shack Extended Color BASIC</li>
<li>1983 &#8211; 6809e Assembler</li>
<li>1983 &#8211; Pascal</li>
<li>1984 &#8211; HP 48SX RPL</li>
<li><strong>1984 &#8211; S/360 Assembler</strong></li>
<li>1985 &#8211; COBOL</li>
<li>1985 &#8211; dBase III / Metafile</li>
<li><strong>1985 &#8211; C</strong></li>
<li><strong>1985 &#8211; 8088/8086 Assembler</strong></li>
<li><strong>1986 &#8211; C++</strong></li>
<li><strong>1996 &#8211; Java</strong></li>
<li>1997 &#8211; Perl</li>
<li><strong>2002 &#8211; C#</strong></li>
<li>2004 &#8211; Python</li>
<li><strong>2005 &#8211; JavaScript</strong></li>
<li><strong>2006 &#8211; Ruby</strong></li>
<li>2007 &#8211; PHP</li>
</ol>
<p><strong>The Present</strong></p>
<p>Currently, I program primarily in Ruby, followed by JavaScript and the occasional PHP script. Ruby is the most productive programming language I&#8217;ve used thus far. The combination of power, pragmatism &#038; pleasure in programming is hard to beat. If it also had performance, it would be a truly great language.</p>
<p>I&#8217;ve also begun <a href="http://lojic.com/blog/2008/01/05/learning-logo-part-one/">learning Logo</a> as I teach my daughter how to program. Logo is a great introduction to the Lisp family, so I hope to leverage it as I learn Scheme and Common Lisp later this year.</p>
<p><strong>The Future</strong></p>
<p>After completing the Logo course with my daughter, I plan on moving on to Scheme as I go through <a href="http://www.amazon.com/gp/redirect.html?ie=UTF8&#038;location=http%3A%2F%2Fwww.amazon.com%2FStructure-Interpretation-Computer-Programs-Engineering%2Fdp%2F0262510871%3Fie%3DUTF8%26s%3Dbooks%26qid%3D1200604826%26sr%3D8-2&#038;tag=lojiccom-20&#038;linkCode=ur2&#038;camp=1789&#038;creative=9325">Structure and Interpretation of Computer Programs</a> which some have called the greatest computer science text ever written.</p>
<p>After Scheme I plan on learning Common Lisp which has the <em>potential</em> to replace Ruby as my primary programming language.</p>
<p>Beyond Logo/Scheme/Common Lisp, the following languages are of interest:</p>
<ul>
<li>Haskell</li>
<li>Erlang</li>
<li>Lua</li>
<li>ML</li>
<li>OCaml</li>
</ul>
<p>If you know of candidates for a future programming language, feel free to add it in a comment.</p>
<p>You may notice that Smalltalk is lacking from the lists above. Despite its prominence in programming language history, I currently don&#8217;t feel that Smalltalk is sufficiently better/different than Ruby to warrant an investment in learning it.</p>
<p>After focusing on <em>object oriented</em> for twenty years, I have more of an interest in the <em>functional</em> world of programming languages (and multiple dispatch is cool :) ).</p>
<p><strong>Update:</strong> I was just over at <a href="http://news.ycombinator.com">Hacker News</a> and saw something I&#8217;ve seen many times before. In a nutshell, some guy was stating that Paul Graham&#8217;s success with ViaWeb had little to do with his choice of programming language (Lisp) and more to do with him just being a good hacker. In other words, he could&#8217;ve written it in any language. I&#8217;m so glad Paul responded because his response confirms my thoughts on the matter:</p>
<blockquote><p>
What a weird situation. I keep trying to tell people Lisp is great, and they say, no, no, you guys were just really good programmers. But if I&#8217;m such a good programmer, why don&#8217;t they believe me?
</p></blockquote>
<p>Paul Graham has written <strong>a lot</strong> on Lisp and is one of the main factors in me becoming interested in Lisp (along with the fact that Ruby pulled a lot of good ideas from it), but the simple quote above communicates volumes IMO.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2008/01/17/2008-programming-language-plan/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Functional Features in JavaScript on Firefox</title>
		<link>http://lojic.com/blog/2007/10/07/functional-features-in-javascript-on-firefox/</link>
		<comments>http://lojic.com/blog/2007/10/07/functional-features-in-javascript-on-firefox/#comments</comments>
		<pubDate>Sun, 07 Oct 2007 05:01:31 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[functional]]></category>
		<category><![CDATA[javascript]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/2007/10/07/functional-features-in-javascript-on-firefox/</guid>
		<description><![CDATA[I was reading an article about adding code to JavaScript to make it more functional, and one of the blog commenters mentioned some built-in features that were added to JavaScript 1.6 &#038; 1.7 on Firefox, so I checked out the links (see below) &#8211; very cool stuff.


    Array methods

indexOf
lastIndexOf
every
filter
forEach
map
some


Array &#38; String generics
Generators [...]]]></description>
			<content:encoded><![CDATA[<p>I was reading an article about adding code to JavaScript to make it more functional, and one of the blog commenters mentioned some built-in features that were added to JavaScript 1.6 &#038; 1.7 on Firefox, so I checked out the links (see below) &#8211; very cool stuff.</p>
<ul>
<li>
    Array methods</p>
<ul>
<li>indexOf</li>
<li>lastIndexOf</li>
<li>every</li>
<li>filter</li>
<li>forEach</li>
<li>map</li>
<li>some</li>
</ul>
</li>
<li>Array &amp; String generics</li>
<li>Generators &amp; Iterators</li>
<li>Array Comprehensions</li>
<li>Block Scope w/ let</li>
<li>Destructuring Assignment</li>
<li>etc.</li>
</ul>
<p>They won&#8217;t help if you have to target IE also, but it should be possible to conditionally include your own code to implement the ones that don&#8217;t require syntactic changes for pages loaded from IE. That would reduce network load for customers using Firefox.</p>
<p><a href="http://developer.mozilla.org/en/docs/New_in_JavaScript_1.6">New in JavaScript 1.6 (Firefox 1.5)</a></p>
<p><a href="http://developer.mozilla.org/en/docs/New_in_JavaScript_1.7">New in JavaScript 1.7 (Firefox 2.0)</a></p>
<p>Hopefully IE will catch up someday, but if not, I can see taking advantage of Firefox specific JavaScript enhancements for niche applications. Firefox is so easy to install, that it should be easy to convince customers to use it for certain custom applications.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/10/07/functional-features-in-javascript-on-firefox/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logo, Ruby &amp; JavaScript</title>
		<link>http://lojic.com/blog/2007/08/31/logo-ruby-javascript/</link>
		<comments>http://lojic.com/blog/2007/08/31/logo-ruby-javascript/#comments</comments>
		<pubDate>Sat, 01 Sep 2007 01:02:54 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[programming]]></category>
		<category><![CDATA[haskell]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[lisp]]></category>
		<category><![CDATA[logo]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[scheme]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/2007/08/31/logo-ruby-javascript/</guid>
		<description><![CDATA[I&#8217;ve been teaching my eldest daughter to program in Logo over the summer. Brian Harvey has posted PDF files for a set of excellent books on learning to program in Logo on his web site. The Berkeley version of Logo he&#8217;s produced is really excellent. It&#8217;s not just your typical turtle graphics language; it has [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been teaching my eldest daughter to program in Logo over the summer. Brian Harvey has posted PDF files for a set of excellent books on learning to program in Logo on his <a href="http://www.cs.berkeley.edu/~bh/logo.html">web site</a>. The Berkeley version of Logo he&#8217;s produced is really excellent. It&#8217;s not just your typical turtle graphics language; it has arrays, macros, file processing, graphics, etc.</p>
<p>While perusing his site, I came across a tiny Logo program that demonstrates a little of its power. I was curious what it would look like in Ruby, so I ported it, then I had to see what it looked like in JavaScript.</p>
<p>The formatting is a little messed up due to Wordpress, but each of the three choices functions is 4 lines long.</p>
<p>If anyone wants to add other languages, that would be great!</p>
<p>See the <a href="http://www.cs.berkeley.edu/~bh/logo-sample.html">sample page</a> for example output.</p>
<p><strong>Logo</strong><br />
<code><br />
to choices :menu [:sofar []]<br />
&nbsp;&nbsp;if emptyp :menu [print :sofar stop]<br />
&nbsp;&nbsp;foreach first :menu [(choices butfirst :menu<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sentence :sofar ?)]<br />
end<br />
choices [[small medium large]<br />
&nbsp;&nbsp;[vanilla [ultra chocolate] lychee [rum raisin] ginger]<br />
&nbsp;&nbsp;[cone cup]]<br />
</code></p>
<p><strong>UPDATE 9/2/07</strong>: Got an even more concise solution from Brian Harvey:</p>
<pre>
to choices :menu
   foreach crossmap "sentence :menu "print
end
</pre>
<p><strong>Ruby</strong><br />
<code><br />
def choices menu, sofar=[]<br />
&nbsp;&nbsp;if menu.empty?: puts sofar.join(' ')<br />
&nbsp;&nbsp;else menu[0].each {|item| choices(menu[1..-1],<br />
&nbsp;&nbsp;&nbsp;&nbsp;sofar + [item]) } end<br />
end<br />
choices [['small', 'medium', 'large'],<br />
&nbsp;&nbsp;['vanilla', 'ultra chocolate', 'lychee', 'rum raisin', 'ginger'],<br />
&nbsp;&nbsp;['cone', 'cup']]<br />
</code></p>
<p><strong>JavaScript</strong><br />
<code><br />
function choices(menu, sofar) {<br />
&nbsp;&nbsp;if (emptyp(menu)) print(sofar);<br />
&nbsp;&nbsp;else foreach(menu[0],<br />
&nbsp;&nbsp;&nbsp;function (x) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;choices(menu.slice(1), sofar.concat(x)); });<br />
}<br />
choices([['small', 'medium', 'large'],<br />
&nbsp;&nbsp;['vanilla', 'ultra chocolate', 'lychee', 'rum raisin','ginger'],<br />
&nbsp;&nbsp;['cone', 'cup']], []);<br />
</code></p>
<p>I had to create a few helpers for the JavaScript version:<br />
<code><br />
function emptyp(a) {<br />
&nbsp;&nbsp;return a.length === 0;<br />
}<br />
function print(list) {<br />
&nbsp;&nbsp;foreach(list, function (x) { document.write(x + ' '); });<br />
&nbsp;&nbsp;document.write('&lt;br /&gt;');<br />
}<br />
function foreach(arr, f) {<br />
&nbsp;&nbsp;for (var idx in arr) { f(arr[idx]); }<br />
}<br />
</code></p>
<p><strong>UPDATE:</strong> Use &lt;pre&gt; &lt;/pre&gt; tags to allow easier formatting of code. Bummer, I just discovered that Wordpress strips the &lt;pre&gt; tags from normal users :( I&#8217;ll go ahead and wrap code with it as they come in, so if your comment looks bad at first, it&#8217;ll be cleaned up shortly.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/08/31/logo-ruby-javascript/feed/</wfw:commentRss>
		<slash:comments>35</slash:comments>
		</item>
		<item>
		<title>Greasemonkey Script for Netflix Half Star Ratings</title>
		<link>http://lojic.com/blog/2007/08/27/greasemonkey-script-for-netflix-half-star-ratings/</link>
		<comments>http://lojic.com/blog/2007/08/27/greasemonkey-script-for-netflix-half-star-ratings/#comments</comments>
		<pubDate>Mon, 27 Aug 2007 21:38:50 +0000</pubDate>
		<dc:creator>Brian Adkins</dc:creator>
				<category><![CDATA[internet]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[firefox]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[utility]]></category>

		<guid isPermaLink="false">http://lojic.com/blog/2007/08/27/greasemonkey-script-for-netflix-half-star-ratings/</guid>
		<description><![CDATA[I wrote an article back in May about a way to give half star ratings on Netflix. It had the advantage of working in any browser and not requiring any software installation, but it wasn&#8217;t very user friendly.
Since then, I&#8217;ve been doing a lot of JavaScript coding, so I thought I&#8217;d give Greasemonkey a try. [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote an article back in May about a way to give <a href="http://lojic.com/blog/2007/05/02/half-star-ratings-on-netflix/">half star ratings</a> on Netflix. It had the advantage of working in any browser and not requiring any software installation, but it wasn&#8217;t very user friendly.</p>
<p>Since then, I&#8217;ve been doing a lot of JavaScript coding, so I thought I&#8217;d give <a href="https://addons.mozilla.org/en-US/firefox/addon/748">Greasemonkey</a> a try. I found a script <a href="http://userscripts.org/scripts/review/8118">here</a> to give half-star ratings, but I didn&#8217;t care for the hover captions and JSLint pointed out a few issues, so I cleaned it up a little:</p>
<p><strong>Code</strong><br />
<code><br />
// ==UserScript==<br />
// @name          Netflix Half Stars<br />
// @description   allows half star user ratings on Netflix<br />
// @include       http://*netflix.com/*<br />
// ==/UserScript==<br />
// http://userscripts.org/scripts/review/8118<br />
// Modified by Brian Adkins</p>
<p>if (!unsafeWindow.sbHandler) { return; }</p>
<p>var sbHandler = unsafeWindow.sbHandler;<br />
sbHandler.sbOffsets = [8,18,27,37,46,56,65,75,84,94];</p>
<p>sbHandler.displayStrings[0.5] = ".5 stars";<br />
sbHandler.displayStrings[1.5] = "1.5 stars";<br />
sbHandler.displayStrings[2.5] = "2.5 stars";<br />
sbHandler.displayStrings[3.5] = "3.5 stars";<br />
sbHandler.displayStrings[4.5] = "4.5 stars";</p>
<p>sbHandler.sbImages[0.5] = new Image();<br />
sbHandler.sbImages[0.5].src = sbHandler.imageRoot+"stars_2_5.gif";</p>
<p>for(var i = 2; i < 11; i++) {<br />
  sbHandler.sbImages[i/2] = new Image();<br />
  sbHandler.sbImages[i/2].src = sbHandler.imageRoot + "stars_2_" +<br />
    (Math.floor(i/2)) + (i % 2 === 0 ? "0" : "5") + ".gif";<br />
}</p>
<p>sbHandler.getStarCount = function (evt) {<br />
  var x = unsafeWindow.getElementMouseCoordinate(evt, this.element);</p>
<p>  for(var ii = 0; ii < 10; ii++) {<br />
    if(x <= this.sbOffsets[ii]) { return (ii + 1) / 2; }<br />
  }</p>
<p>  return 0;<br />
};<br />
</code></p>
<p><strong>Installation</strong></p>
<p>Save the JavaScript code with .user.js extension e.g. netflix_halfstar.user.js and then open that file in Firefox and Greasemonkey should prompt you to install it.</p>
]]></content:encoded>
			<wfw:commentRss>http://lojic.com/blog/2007/08/27/greasemonkey-script-for-netflix-half-star-ratings/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

