<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/'><id>tag:blogger.com,1999:blog-1078898499337496912.post5605712467992038512..comments</id><updated>2011-10-13T06:39:27.015-07:00</updated><category term='PHP'/><category term='Guest Author'/><category term='jQuery'/><category term='jTruncate'/><category term='Hibernate'/><category term='Kwicks'/><category term='Misc'/><category term='Asciible'/><category term='JavaScript'/><category term='Blogger'/><category term='Java'/><category term='Algorithms'/><category term='Politics'/><category term='Photoshop'/><title type='text'>Comments on jMar's Blog: Why PHP and JavaScript IDE's Suck</title><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://blog.jeremymartin.name/feeds/5605712467992038512/comments/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html'/><author><name>Jeremy Martin</name><uri>http://www.blogger.com/profile/03514319709844297772</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>21</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-2174912844937469526</id><published>2009-12-08T23:49:12.368-08:00</published><updated>2009-12-08T23:49:12.368-08:00</updated><title type='text'>I also forgot to mention that I have tried SEVERAL...</title><content type='html'>I also forgot to mention that I have tried SEVERAL other popular IDEs, such as the Eclipse-based line (Aptana Studio, PDT, Eclipse, and Zend Studio), phpDesigner, ActiveState Komodo, HTML-Kit, and a few others.&lt;br /&gt;&lt;br /&gt;All of them have their pros and cons.  But, for the most part, I don&amp;#39;t use them because they lack other program features that I desire (although they are tedios at best and do not seriously impact or hinder my abilities).  For now, Visual Studio 2010 Beta 2 and PhpED 5.9.5921 do it for me.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/2174912844937469526'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/2174912844937469526'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1260344952368#c2174912844937469526' title=''/><author><name>hyponiq</name><uri>http://www.blogger.com/profile/02672067510549130660</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_DvyGW7H1-PE/SAhJwSJrVwI/AAAAAAAAAAY/ur0n5BudvdI/S220/IMG000003.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-39880571'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-1250400183380013453</id><published>2009-12-08T23:38:10.393-08:00</published><updated>2009-12-08T23:38:10.393-08:00</updated><title type='text'>@Dracos: I, too, have recently acquired my taste f...</title><content type='html'>@Dracos: I, too, have recently acquired my taste for PhpED.  I tried it out several years ago when it was &amp;quot;young&amp;quot; and wasn&amp;#39;t too pleased with it.  Up until recently, I used Adobe (formerly Macromedia) Dreamweaver for all of my editing needs.  However, its lack of support for several dynamic languages, including those mentioned, lead me to explore other alternatives.  Hence, I found PhpED.  Now, when you made your comment is about when I purchased PhpED.  And, to that extend, at the time their JavaScript support was much more limited than it is now.  However, they&amp;#39;ve updated PhpED 8 times since I bought it and the JavaScript support has grown immensely.&lt;br /&gt;&lt;br /&gt;@Jeremy Martin: I already have/had experience with Visual Studio and used it quite freequently to program Windows applications as well ASP.NET, but never really fiddled with it much when it came to JavaScript because it didn&amp;#39;t have good enough support for it.  Now that the 2010 Beta 2 has been released, I&amp;#39;ve been testing it thoroughly with JavaScript.  It is a rather great tool, however it still lacks two things: proper &amp;quot;IntelliSense&amp;quot; and code folding.  One major pro of it, though, is that you can reference any JavaScript file inside another to include the (limited) IntelliSense for that document, such as the lovely and elegant jQuery library.  One workaround is to &amp;quot;VS Doc&amp;quot; a JavaScript file so that Visual Studio can interpret the return types of functions or the values of variables.  It does work a lot better, but from a developer&amp;#39;s point of view - unless the library is already VS Doc&amp;#39;ed - that is a rather daunting and unnecessary task.&lt;br /&gt;&lt;br /&gt;Proper code-completion for dynamic languages like PHP/JavaScript is a feature that most IDEs lack, although a vast majority of them do &amp;quot;read&amp;quot; project directories and create a cache of auto-completion libraries for JavaScript/PHP files in the project.&lt;br /&gt;&lt;br /&gt;So, PhpED is still my choice of IDEs.  It has rather extensive JavaScript support in that it does cache the project directories, has the ability to include outside directories into the project, run multiple projects in the same workspace, and, most importantly (for me), has great code-folding features.  However, its code-completion, as with all other IDEs, is rather lacking.  The most that it can do, for now, is return the function/method/variable/property list.  The actual implementation and/or use of each function/method/variable/property is very lacking.&lt;br /&gt;&lt;br /&gt;Again, as you said, an IDE would literally have to parse the entire JavaScript/PHP file and internally &amp;quot;run&amp;quot; it in order to figure out a dynamic variable&amp;#39;s actual definition/type.  That is a rather taxing and extensive procedure; an IDE that does this would most likely consume all available resources after so many hours of working through the same project (if not minutes).</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/1250400183380013453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/1250400183380013453'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1260344290393#c1250400183380013453' title=''/><author><name>hyponiq</name><uri>http://www.blogger.com/profile/02672067510549130660</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='24' src='http://bp2.blogger.com/_DvyGW7H1-PE/SAhJwSJrVwI/AAAAAAAAAAY/ur0n5BudvdI/S220/IMG000003.jpg'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-39880571'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-4802881791456424031</id><published>2009-07-02T08:55:01.511-07:00</published><updated>2009-07-02T08:55:01.511-07:00</updated><title type='text'>I realize that this is a tad bit behind the schedu...</title><content type='html'>I realize that this is a tad bit behind the schedule of this post&amp;#39;s comments, but have you tried the Komodo IDE series from ActiveState? True, its not a freebie, but it&amp;#39;s code intelligence for multiple dynamic languages is indeed quite good. (Perl, PHP and javascript as the the common ones I&amp;#39;m using it for)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/4802881791456424031'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/4802881791456424031'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1246550101511#c4802881791456424031' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-568769461'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-7404499583506534200</id><published>2009-05-27T16:43:18.995-07:00</published><updated>2009-05-27T16:43:18.995-07:00</updated><title type='text'>Just came across this blog as I am in the search f...</title><content type='html'>Just came across this blog as I am in the search for a Javascript IDE.  I will try some of the ones mentioned here.&lt;br /&gt;&lt;br /&gt;However I have been in PHP for quite sometime and have felt the same pangs of frustration on poor IDE's for php.  That is until I ran across Nusphere's PhpED.  I have never been happier writing PHP code.  Its autocomplete is not only very complete, it is fast.  It also understands when you are in a PHP part of HTML code, and switches it's "intellisense" accordingly from PHP to HTML and back.  I highly recommend it to any PHP developer.  The only drawback is its lack of Javascript capability.  They have plans to add it though.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/7404499583506534200'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/7404499583506534200'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1243467798995#c7404499583506534200' title=''/><author><name>Dracos</name><uri>http://www.blogger.com/profile/05527296661412556872</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1352449613'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-3591599972958059981</id><published>2009-02-28T17:56:00.000-08:00</published><updated>2009-02-28T17:56:00.000-08:00</updated><title type='text'>you are using the wrong tool... a good ide does th...</title><content type='html'>you are using the wrong tool... a good ide does the job well... take a look for instance at phpdesigner -&amp;gt; http://img13.imageshack.us/my.php?image=phpdesigner.jpg&lt;BR/&gt;&lt;BR/&gt;the same does Zend IDE... Dreamweaver is  &amp;quot;jack-in-all master-in-none&amp;quot; :)... and it&amp;#39;s not an IDE, just an editor. IDE&amp;#39;s have debuggers :P</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/3591599972958059981'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/3591599972958059981'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1235872560000#c3591599972958059981' title=''/><author><name>adormitu</name><uri>http://acrudulceag.info</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1284609529'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-2902871145797689142</id><published>2008-06-15T09:16:00.000-07:00</published><updated>2008-06-15T09:16:00.000-07:00</updated><title type='text'>@Jeremy&lt;br&gt;&lt;br&gt;Yes, all of these algorithms give c...</title><content type='html'>@Jeremy&lt;BR/&gt;&lt;BR/&gt;Yes, all of these algorithms give conservatively correct answers--in the sense that if it could be X or Y, the analysis might say it could be X or Y or Z.&lt;BR/&gt;&lt;BR/&gt;To determine the answer exactly in all cases would require a solution to the halting problem, so researchers have explored trade-offs between making the analysis fast and making the analysis precise.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/2902871145797689142'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/2902871145797689142'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1213546560000#c2902871145797689142' title=''/><author><name>Matt</name><uri>http://matt.might.net/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-313166442'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-1115217441540446571</id><published>2008-05-29T14:16:00.000-07:00</published><updated>2008-05-29T14:16:00.000-07:00</updated><title type='text'>Well..you use dreamweaver in the first post and re...</title><content type='html'>Well..you use dreamweaver in the first post and recently i have been using a few ide's. &lt;BR/&gt;PhpDesigner (seems promising although having to type everything to include such things as css files is rather annoying whereas in dreamweaver you can right click then include) And Eclipse + dreamweaver of course.I have just got into OOP in php and i was wondering.Dreamweaver 8 doesn't allow for completion of code such as "$foo-&gt;" and then it would give a function etc.But the main thing you have to be aware of is that no IDE can be perfect and if it was that would elimate the need for a human to actually write the code =/.&lt;BR/&gt;Peace.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/1115217441540446571'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/1115217441540446571'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1212095760000#c1115217441540446571' title=''/><author><name>Nick</name><uri>http://www.blogger.com/profile/14310865965114380417</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-33936828'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-5248949927580142912</id><published>2008-05-10T04:12:00.000-07:00</published><updated>2008-05-10T04:12:00.000-07:00</updated><title type='text'>Try using Quanta Plus(Linux: I use ubuntu 7+), It ...</title><content type='html'>Try using Quanta Plus(Linux: I use ubuntu 7+), It does have such autocomplete features..&lt;BR/&gt;&lt;BR/&gt;Even Not that is not so good!!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/5248949927580142912'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/5248949927580142912'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1210417920000#c5248949927580142912' title=''/><author><name>Raj</name><uri>http://araj.in/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1934527636'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-1513045622960850601</id><published>2008-05-02T08:32:00.000-07:00</published><updated>2008-05-02T08:32:00.000-07:00</updated><title type='text'>@First Matt&lt;br&gt;Ha - so that's a little embarrassin...</title><content type='html'>@First Matt&lt;BR/&gt;Ha - so that's a little embarrassing.  To much bouncing between languages yesterday.  Anyway, thanks for pointing that out - it's now updated.  The update makes no difference on the autocomplete, btw.&lt;BR/&gt;&lt;BR/&gt;@alexbl&lt;BR/&gt;I completely agree that these IDE's can make an educated guess (or even guarantee) in certain cases.  For example, in the following snippet...&lt;BR/&gt;&lt;BR/&gt;$foo = new Bar();&lt;BR/&gt;$foo-&gt; ...&lt;BR/&gt;&lt;BR/&gt;...the IDE can be certain that $foo is a Bar in the second line (although it can't be certain on the type definition of a Bar, since that can change at runtime).  So I agree with you insomuch as there is a lot of room for improvement.  Unfortunately, like you said, in many cases the best it can do is "probably" (although I'd say "possibly" is probably more accurate...).  Good points though - I definitely want to check out some of those Self papers.&lt;BR/&gt;&lt;BR/&gt;@Anonymous&lt;BR/&gt;[blank stare]&lt;BR/&gt;&lt;BR/&gt;@Second Matt&lt;BR/&gt;Well after a very brief look at your dissertation, I know better than to argue!  That's really interesting - I had never heard of most of these algorithms.&lt;BR/&gt;&lt;BR/&gt;So I'm still ignorant on the approach that these algorithms take, but is it correct for me to assert that the best an IDE can do is narrow a variable's type down to a discrete subset of possible matches?</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/1513045622960850601'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/1513045622960850601'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209742320000#c1513045622960850601' title=''/><author><name>Jeremy Martin</name><uri>http://www.blogger.com/profile/03514319709844297772</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-614393751'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-1593428835840386837</id><published>2008-05-02T08:10:00.000-07:00</published><updated>2008-05-02T08:10:00.000-07:00</updated><title type='text'>"Type inference" for dynamic languages like Scheme...</title><content type='html'>"Type inference" for dynamic languages like Scheme, JavaScript, PHP, Smalltalk, etc. is actually called "higher-order [control] flow analysis."&lt;BR/&gt;&lt;BR/&gt;Academics have developed a multitude of algorithms for solving this problem, including the k-CFA family (0CFA, 1CFA, CPA, poly/CFA), the unification-based techniques (Steensgard, Heinglein), and the demand-driven techniques (Spoon) to name a few.&lt;BR/&gt;&lt;BR/&gt;Despite being around for nearly two decades, few outside of academic research in programming languages know of these algorithms, and none of these people are developing IDEs.&lt;BR/&gt;&lt;BR/&gt;Lex Spoon's Ph.D. work on Chuck for   Squeak Smalltalk is probably the only one to get integrated into a working IDE.&lt;BR/&gt;&lt;BR/&gt;DrScheme has a MrFlow application that can do it for Scheme, but I've never tried it out.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/1593428835840386837'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/1593428835840386837'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209741000000#c1593428835840386837' title=''/><author><name>Matt</name><uri>http://matt.might.net/</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/openid16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-313166442'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-6064392607690742350</id><published>2008-05-02T01:55:00.000-07:00</published><updated>2008-05-02T01:55:00.000-07:00</updated><title type='text'>You are just too noob to talk about PHP IDEs</title><content type='html'>You are just too noob to talk about PHP IDEs</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/6064392607690742350'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/6064392607690742350'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209718500000#c6064392607690742350' title=''/><author><name>Anonymous</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-892698464'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-4226041917487779768</id><published>2008-05-01T16:37:00.000-07:00</published><updated>2008-05-01T16:37:00.000-07:00</updated><title type='text'>So, I'm going to take a stab at this one:&lt;br&gt;&lt;br&gt;$...</title><content type='html'>So, I'm going to take a stab at this one:&lt;BR/&gt;&lt;BR/&gt;$foo = get_bar();&lt;BR/&gt;&lt;BR/&gt;You raise the point that doing the inference here is a very expensive operation as the depth increases. I would suggest you consider statically typed languages like Haskell or O'Caml that use type inference to determine the type of a variable, usually some variation on Hendley-Milner (http://en.wikipedia.org/wiki/Type_inference).&lt;BR/&gt;&lt;BR/&gt;This technique makes it possible to calculate the return type(s) of a function (in the case of a more dynamic language we'd want to deal with types) in a rather quick way. If we can assure the runtime consistency of a function we can even memoize that result.&lt;BR/&gt;&lt;BR/&gt;Moving beyond these more static-typing methods (which still work for some instances of this case) one can also look at what Self did to speed up execution. You can read papers on many of the techniques the Self folks used at: http://research.sun.com/self/papers/papers.html  , particularly in the Implementation and Type Inference sections. Self is much like Javascript in that it's a prototypical-OO language that is massively dynamic. The self folks realized, that though they had a high degree of dynamism, in many cases they could do some type inference and just ignore the more expensive code paths (usually involving lots of lookups and message sends). This same technique, of saying this is probably an X could work for type inference in an IDE. We can at least provide an ordering that puts the most likely completions at the top, if not assume that only a certain set of completions are possible.&lt;BR/&gt;&lt;BR/&gt;This is even more powerful if we can attach a runtime environment to facilitate these guesses.&lt;BR/&gt;&lt;BR/&gt;Ok, off my soap box. This is an area I'm really interested in. :)</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/4226041917487779768'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/4226041917487779768'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209685020000#c4226041917487779768' title=''/><author><name>alexbl</name><uri>http://www.blogger.com/profile/07910313501358762052</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-876298357'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-429053653223188173</id><published>2008-05-01T14:51:00.000-07:00</published><updated>2008-05-01T14:51:00.000-07:00</updated><title type='text'>i think there is a problem with your php example s...</title><content type='html'>i think there is a problem with your php example screenshot. '.' is the concatenation operator, so of course after a period it will try to show every function because it has nothing to base a suggestion on. try '-&gt;' instead.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/429053653223188173'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/429053653223188173'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209678660000#c429053653223188173' title=''/><author><name>Matt</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-10943483'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-2193978791455920181</id><published>2008-05-01T14:17:00.000-07:00</published><updated>2008-05-01T14:17:00.000-07:00</updated><title type='text'>@Nick&lt;br&gt;Good to see you on here! I should know to...</title><content type='html'>@Nick&lt;BR/&gt;Good to see you on here! I should know to be more careful with smarter people like you out there...&lt;BR/&gt;&lt;BR/&gt;Anyway, I would have to agree with you that "dynamic" would be a better categorization, since that not only implies loose typing, but also the possibility of class augmentation and the like (which would also be relevant to this discussion).&lt;BR/&gt;&lt;BR/&gt;However, I think you would be embarking on a computational nightmare in trying to parse out all the possible "types" for a instance variable at a given point.  For example:&lt;BR/&gt;&lt;BR/&gt;$foo = get_bar();&lt;BR/&gt;&lt;BR/&gt;Now you have to go inspect get_bar(), and any methods that it calls.  You could always just put a limit on the "depth of analysis", but that limit would have to be sufficiently deep to allow for some of the more complex frameworks out there with levels upon levels of abstraction.&lt;BR/&gt;&lt;BR/&gt;And of course, going back to augmentation, you don't even have a guarantee that the runtime definition of a class matches the code time definition.&lt;BR/&gt;&lt;BR/&gt;Anyway, I certainly agree that this field is in it's infancy, and it will be interesting to see how the IDE developers address it.  I would be unforgivably naive to declare this as a hopeless cause...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/2193978791455920181'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/2193978791455920181'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209676620000#c2193978791455920181' title=''/><author><name>Jeremy Martin</name><uri>http://www.blogger.com/profile/03514319709844297772</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-614393751'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-5954834165428440852</id><published>2008-05-01T14:01:00.000-07:00</published><updated>2008-05-01T14:01:00.000-07:00</updated><title type='text'>I hate to nit-pick, but I think by &lt;i&gt;loosely-type...</title><content type='html'>I hate to nit-pick, but I think by &lt;I&gt;loosely-typed&lt;/I&gt; you mean &lt;I&gt;dynamic&lt;/I&gt;. &lt;I&gt;Loose&lt;/I&gt; vs. &lt;I&gt;strong&lt;/I&gt; typing is an argument that you don't want to touch with a ten foot pole, because those terms mean different things to different people. &lt;I&gt;Static&lt;/I&gt; and &lt;I&gt;dynamic&lt;/I&gt; are well-defined.&lt;BR/&gt;&lt;BR/&gt;That said, I think there's quite a bit more that can be done to improve the quality of IDEs for dynamic languages. Take the following, for example:&lt;BR/&gt;&lt;BR/&gt;if($_SESSION['foo'] == bar) {&lt;BR/&gt;$x = false;&lt;BR/&gt;/* here, the ide should be able to figure out that $x is a boolean */&lt;BR/&gt;} else {&lt;BR/&gt;$x = new Person();&lt;BR/&gt;/* here, the ide should be able to figure out that $x is a Person */&lt;BR/&gt;}&lt;BR/&gt;/* here, the ide should be able to figure out that $x is either a boolean or a Person, and can display options for both */&lt;BR/&gt;&lt;BR/&gt;On-the-fly code analysis is really the only way to do this. This field still seems to be in its infancy (at least when it comes to implementing it within an IDE), but great progress is being made.&lt;BR/&gt;&lt;BR/&gt;As dynamic languages gain more popularity, our IDEs will evolve. For certain problem classes, the benefits of using a dynamic language outweigh those of static languages, even though static languages currently make it easier to develop a good IDE.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/5954834165428440852'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/5954834165428440852'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209675660000#c5954834165428440852' title=''/><author><name>Nick Aceves</name><uri>http://nickandgrace.com/code</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-803114103'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-5815558794469944575</id><published>2008-05-01T13:54:00.000-07:00</published><updated>2008-05-01T13:54:00.000-07:00</updated><title type='text'>@Guebre&lt;br&gt;I assume you mean from a static context...</title><content type='html'>@Guebre&lt;BR/&gt;I assume you mean from a static context?  If it can do this on instance variables,  I would like to check it out...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/5815558794469944575'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/5815558794469944575'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209675240000#c5815558794469944575' title=''/><author><name>Jeremy Martin</name><uri>http://www.blogger.com/profile/03514319709844297772</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-614393751'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-3031317896009663933</id><published>2008-05-01T13:52:00.000-07:00</published><updated>2008-05-01T13:52:00.000-07:00</updated><title type='text'>i'm still using zend studio 5.2 ...&lt;br&gt;and the aut...</title><content type='html'>i'm still using zend studio 5.2 ...&lt;BR/&gt;and the autocomplete can browse ur classes ...</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/3031317896009663933'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/3031317896009663933'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209675120000#c3031317896009663933' title=''/><author><name>GUEBRE GILDAS</name><uri>http://www.blogger.com/profile/09333632775672768644</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1116870183'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-7672882025349009015</id><published>2008-05-01T13:23:00.000-07:00</published><updated>2008-05-01T13:23:00.000-07:00</updated><title type='text'>@Paul&lt;br&gt;Wow - that does look very promising.  Unf...</title><content type='html'>@Paul&lt;BR/&gt;Wow - that does look very promising.  Unfortunately, though, it still relies on comments in the code.  Try using that on a packed script!</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/7672882025349009015'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/7672882025349009015'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209673380000#c7672882025349009015' title=''/><author><name>Jeremy Martin</name><uri>http://www.blogger.com/profile/03514319709844297772</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-614393751'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-8532160260483956755</id><published>2008-05-01T13:13:00.001-07:00</published><updated>2008-05-01T13:13:00.001-07:00</updated><title type='text'>The new NetBeans support for javascript autocomple...</title><content type='html'>The new NetBeans support for javascript autocomplete is apparently pretty impressive.&lt;BR/&gt;&lt;BR/&gt;http://blogs.sun.com/tor/entry/javascript_type_inference</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/8532160260483956755'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/8532160260483956755'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209672780001#c8532160260483956755' title=''/><author><name>Paul</name><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img1.blogblog.com/img/blank.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-658041009'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-8043927226932721916</id><published>2008-05-01T13:13:00.000-07:00</published><updated>2008-05-01T13:13:00.000-07:00</updated><title type='text'>@leonsp&lt;br&gt;It's true that improvements can be made...</title><content type='html'>@leonsp&lt;BR/&gt;It's true that improvements can be made in some areas, but there is a hard fast wall that these IDE's run up against.  For example, consider the following PHP snippet:&lt;BR/&gt;&lt;BR/&gt;if($_SESSION['foo'] == bar) {&lt;BR/&gt;  $x = false;&lt;BR/&gt;} else {&lt;BR/&gt;  $x = new Person();&lt;BR/&gt;}&lt;BR/&gt;&lt;BR/&gt;The data type of $x upon leaving this conditional can only be determined at runtime - even in this simplest of cases, the IDE only has a 50/50 chance of getting it right.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/8043927226932721916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/8043927226932721916'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209672780000#c8043927226932721916' title=''/><author><name>Jeremy Martin</name><uri>http://www.blogger.com/profile/03514319709844297772</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-614393751'/></entry><entry><id>tag:blogger.com,1999:blog-1078898499337496912.post-2677989653514135470</id><published>2008-05-01T13:05:00.000-07:00</published><updated>2008-05-01T13:05:00.000-07:00</updated><title type='text'>This isn't a hard problem to solve. One just needs...</title><content type='html'>This isn't a hard problem to solve. One just needs to keep track of more information.&lt;BR/&gt;&lt;BR/&gt;PHP Development Tools for Eclipse does a decent job, for instance.</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/2677989653514135470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/1078898499337496912/5605712467992038512/comments/default/2677989653514135470'/><link rel='alternate' type='text/html' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html?showComment=1209672300000#c2677989653514135470' title=''/><author><name>leonsp</name><uri>http://www.blogger.com/profile/11471170209182513667</uri><email>noreply@blogger.com</email><gd:image xmlns:gd='http://schemas.google.com/g/2005' rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:in-reply-to xmlns:thr='http://purl.org/syndication/thread/1.0' href='http://blog.jeremymartin.name/2008/05/why-php-and-javascript-ides-suck.html' ref='tag:blogger.com,1999:blog-1078898499337496912.post-5605712467992038512' source='http://www.blogger.com/feeds/1078898499337496912/posts/default/5605712467992038512' type='text/html'/><gd:extendedProperty xmlns:gd='http://schemas.google.com/g/2005' name='blogger.itemClass' value='pid-1185049975'/></entry></feed>
