On Twitter:

Developers, programmers and tech companies on Twitter

PHP

Juriy Zaytsev

prototype.js core developer
Javascript maniac, Prototype developer, clean code junkie
ajax
http://twitter.com/kangax
http://perfectionkills.com/

kangax Well that was quick. Here's a more or less perfect explanation of Javascript quiz posted earlier — http://bit.ly/afis0D (thanks @cmsalvado )
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Today's browser stats on a blog show that FF 3.6 already surpassed previous versions. Nice update speed, but not quite as fast as Chrome.
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Javascript quiz (http://perfectionkills.com/javascript-quiz/). What's your score?
by Juriy Zaytsev, prototype.js core developer, ajax
kangax ES5 is slowly spreading around. FF 3.7 now has `Object.create` (also in WebKit) and `Array.isArray` (also in WebKit & Opera).
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Validome appears to be a more intelligent (X)HTML validator, comparing to W3C one or others — http://j.mp/b1ObBU
by Juriy Zaytsev, prototype.js core developer, ajax
kangax And @jdalton comes up with a version 41 chars less than mine :) (safer version — 25 less) http://gist.github.com/296128 Thanks, everyone!
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Shortened @rem 's html5 enabling script down by 29 chars (http://gist.github.com/296114). Can we do better?
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Garrett came up with a brilliant workaround for Safari 2 inability to fire "load" on SCRIPT elements— use image instead (http://j.mp/9slTco)
by Juriy Zaytsev, prototype.js core developer, ajax
kangax It's clear now that JSLint is not fully conforming ES parser. Fails: `x=/x/g//f` `x=1,2` `x=1/ /x/` `x=void 0` `throw x=1` `var \u005F=1`
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Completely forgot about Function Statements (thanks @abozhilov ), which explain Firebug's hoisting behavior (http://bit.ly/8OMnY).
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Firebug console doesn't hoist function declarations. `alert(typeof f); function f(){}` alerts "undefined". Lovely.
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Speaking of `arguments` performance, here's a simple example of how bad it is: http://j.mp/c50aqb (in at least Safari, Opera and FF <3.6)
by Juriy Zaytsev, prototype.js core developer, ajax
kangax It really seems like JSLint can't parse some valid ECMAScript programs. E.g.: `1/ /x/` terminates scanning, instead of returning `NaN`.
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Nice overview of Javascript speedups in FF 3.6 (http://bit.ly/bU8tSD). Btw, `arguments` are still very slow in many browsers.
by Juriy Zaytsev, prototype.js core developer, ajax
kangax There's a lot of ECMAScript parsers, but none written in ECMAScript itself? Narcissus doesn't count, as it relies on SpiderMonkey extensions
by Juriy Zaytsev, prototype.js core developer, ajax
kangax People seem to _love_ unrelated inference. Two popular client-storage libraries branch to IE's userData when ActiveXObject is present. Ugh.
by Juriy Zaytsev, prototype.js core developer, ajax
kangax We need smth. like PPK's compat. tables, but open sourced, to keep content up to date. 1/2-yr-old info is not too useful: http://j.mp/dyxKhR
by Juriy Zaytsev, prototype.js core developer, ajax
kangax ES committee is not planning to release HTML version of specs (http://bit.ly/98XbPK). I guess we'll have to do it ourselves :)
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Sad to see people leave comp.lang.javascript. If you don't participate, at least read the archives (that's how I truly learned most of JS).
by Juriy Zaytsev, prototype.js core developer, ajax
kangax .@philogb If Im not mistaken, Object.keys returns _enumerable_ properties only, whereas Object.getOwnPropertyNames — _all_ own properties.
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Too bad ES5 `Object.keys` (already in Chrome and WebKit) differs from Prototype's counterpart (ES5 one returns only _own_ properties)
by Juriy Zaytsev, prototype.js core developer, ajax
kangax And doesn't respect overwrites, transforming `Array = customArray; alert(new Array());` to `Array = customArray; alert([]);` :/
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Closure Compiler is still full of oversights. Transforms `new Array()` to `[]` but not `Array()` to `[]` or `new Array(1,2)` to `[1,2]`
by Juriy Zaytsev, prototype.js core developer, ajax
kangax Btw, shortest valid HTML 4.01 document is "" SGML SHORTTAG, ftw! </div> <div class="person who"> <a href="http://dvlprs.com/kangax/statuses/8313134142"><span class="timeago" title="2010-01-28T01:36:30-0500"></span></a> by <a href="/kangax">Juriy Zaytsev</a>, prototype.js core developer, <a href="/ajax">ajax</a> </div> </div> </div> <div class="status clearfix" id="8294977142"> <div class="status_content status_content_noimg"> <div class="text"> <strong><a href="/kangax">kangax</a></strong> It's strange that Chrome still doesn't support page cache (http://bit.ly/b9Ociq), and is missing out on such important optimization. </div> <div class="person who"> <a href="http://dvlprs.com/kangax/statuses/8294977142"><span class="timeago" title="2010-01-27T16:23:19-0500"></span></a> by <a href="/kangax">Juriy Zaytsev</a>, prototype.js core developer, <a href="/ajax">ajax</a> </div> </div> </div> </div> <div class="more-items"> <a href="javascript:void(0)" id="more-items">more tweets</a> <div id="more-items-loading"><img src="/images/btn-loading.gif" alt="loading" width="16" height="16" border="0" /></div> </div> <script> var skip = '25'; $(document).ready(function() { $('#more-items').click(function() { $('#more-items').hide(); $('#more-items-loading').show(); var url = '/expanding_list/more.json?c=Person_Permalink&m=_more_tweets&o=kangax&l=25&k=9832da572a8637e27308cbecd5079d2a&s='+skip; $.getJSON(url,function(data) { $('#more-items-loading').hide(); if (data.success) { skip = data.skip; $('.items').append(data.html); if (data.html != '') { $('#more-items').show(); } } }); }); }); </script> </div> </div> <div id="right_container" class="span-4 last"> <div class="right"> <style type="text/css" media="screen"> #sharethis_0 { display: block; padding-bottom: 6px; } </style> <script type="text/javascript" src="http://w.sharethis.com/button/sharethis.js#publisher=fb3b2efb-cca4-4b7e-9376-b7f950d1d80e&type=website&embeds=true;offsetLeft=-300;offsetTop=10"></script> <div class="person-box clearfix"> <a href="/jeresig"><img src="http://a1.twimg.com/profile_images/150604006/3450728563_69b0bd0743_normal.jpg" width="48" height="48" alt="John Resig" /></a> <div class="name"><a href="/jeresig">John Resig</a></div> <div class="title">Creator of jQuery</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">25240 followers</div> <a onclick="twitterclient.follow('jeresig')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <div class="person-box clearfix"> <a href="/snookca"><img src="http://a3.twimg.com/profile_images/552415081/me_normal.jpg" width="48" height="48" alt="Jonathan Snook" /></a> <div class="name"><a href="/snookca">Jonathan Snook</a></div> <div class="title">Co-author of Accelerated DOM Scripting with Ajax, APIs, and Libraries & The Art and Science of CSS</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">13658 followers</div> <a onclick="twitterclient.follow('snookca')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <div class="person-box clearfix"> <a href="/dalmaer"><img src="http://a1.twimg.com/profile_images/292949152/dionprofile_normal.png" width="48" height="48" alt="Dion Almaer" /></a> <div class="name"><a href="/dalmaer">Dion Almaer</a></div> <div class="title">Founder of Ajaxian / Developers for Mozilla's Open Web developer tools</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">5609 followers</div> <a onclick="twitterclient.follow('dalmaer')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <div class="person-box clearfix"> <a href="/thomasfuchs"><img src="http://a3.twimg.com/profile_images/663892623/thomas_normal.png" width="48" height="48" alt="Thomas Fuchs" /></a> <div class="name"><a href="/thomasfuchs">Thomas Fuchs</a></div> <div class="title">Scriptaculous author / Prototype member</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">4792 followers</div> <a onclick="twitterclient.follow('thomasfuchs')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <div class="person-box clearfix"> <a href="/rem"><img src="http://a3.twimg.com/profile_images/82806383/remysharp_normal.jpg" width="48" height="48" alt="Remy Sharp" /></a> <div class="name"><a href="/rem">Remy Sharp</a></div> <div class="title">Creator of jQueryForDesigners.com</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">4450 followers</div> <a onclick="twitterclient.follow('rem')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <div class="person-box clearfix"> <a href="/rworth"><img src="http://a3.twimg.com/profile_images/437693927/rworth_normal.jpg" width="48" height="48" alt="Richard D. Worth" /></a> <div class="name"><a href="/rworth">Richard D. Worth</a></div> <div class="title">jQuery UI Developer</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">3893 followers</div> <a onclick="twitterclient.follow('rworth')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <div class="person-box clearfix"> <a href="/reybango"><img src="http://a1.twimg.com/profile_images/558765234/reytwitter_normal.gif" width="48" height="48" alt="Rey Bango" /></a> <div class="name"><a href="/reybango">Rey Bango</a></div> <div class="title">Ajaxian writer / jQuery team member</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">2718 followers</div> <a onclick="twitterclient.follow('reybango')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <div class="person-box clearfix"> <a href="/sstephenson"><img src="http://a3.twimg.com/profile_images/71159281/sam-256_normal.jpg" width="48" height="48" alt="Sam Stephenson" /></a> <div class="name"><a href="/sstephenson">Sam Stephenson</a></div> <div class="title">Creator of prototype.js / Developer at 37signals</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">2056 followers</div> <a onclick="twitterclient.follow('sstephenson')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <div class="person-box clearfix"> <a href="/malsup"><img src="http://a3.twimg.com/profile_images/568044537/me2_normal.gif" width="48" height="48" alt="Mike Alsup" /></a> <div class="name"><a href="/malsup">Mike Alsup</a></div> <div class="title">jQuery developer</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">1198 followers</div> <a onclick="twitterclient.follow('malsup')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <div class="person-box clearfix"> <a href="/pbakaus"><img src="http://a1.twimg.com/profile_images/429348050/portrait_normal.jpg" width="48" height="48" alt="Paul Bakaus" /></a> <div class="name"><a href="/pbakaus">Paul Bakaus</a></div> <div class="title">Creator of jQuery UI</div> <div class="group"><a href="/ajax">ajax</a></div> <div class="stats">936 followers</div> <a onclick="twitterclient.follow('pbakaus')" class="likeit_button" href="javascript:void(0)">follow</a> </div> <p><a href="/ajax/people">View all</a></p> <h3>Trending on DVLPRS</h3> <p> <a href="/search/Vegas">Vegas</a><br/><a href="/search/Super+Bowl">Super Bowl</a><br/><a href="/search/Silverlight">Silverlight</a><br/><a href="/search/JavaScript">JavaScript</a><br/><a href="/search/Chrome">Chrome</a><br/><a href="/search/Ruby">Ruby</a><br/><a href="/search/Skype">Skype</a><br/><a href="/search/Flash">Flash</a><br/><a href="/search/%23perl">#perl</a><br/><a href="/search/Nexus+One">Nexus One</a><br/></p> <h3>Latest Links</h3> <ul class="sidebar-list"> <li><a href="http://glitch.com/">Glitch</a><br/><span class="small-annotation">(glitch.com)</span></li><li><a href="http://bit.ly/b9b6Ff">Symphonic Code - Here's to new beginnings...</a><br/><span class="small-annotation">(karlgrz.blogspot.com)</span></li><li><a href="http://www.codeproject.com/KB/HTML/ParamShapes.aspx">Interactive Web Graphics with VML - Parameterized Shapes in...</a><br/><span class="small-annotation">(www.codeproject.com)</span></li><li><a href="http://remysharp.com/html5-vs-flash">HTML5 vs. Flash</a><br/><span class="small-annotation">(remysharp.com)</span></li><li><a href="http://is.gd/7VR1s">Lou's Pseudo 3d Page</a><br/><span class="small-annotation">(www.gorenfeld.net)</span></li> </ul> <p><a href="/links">More</a></p> </div> </div> </div> <div class="span-24 last"> <div class="footer"> A <a href="http://sawhorsemedia.com">Sawhorse Media</a> Production — <a href="/about">About</a>  <a href="/about#contact">Contact</a> </div> </div> <script src="http://static.getclicky.com/102171.js" type="text/javascript"></script> <noscript><p><img alt="Clicky" width="1" height="1" src="http://static.getclicky.com/102171-db12.gif" /></p></noscript> </div> <script type="text/javascript"> var uservoiceJsHost = ("https:" == document.location.protocol) ? "https://uservoice.com" : "http://cdn.uservoice.com"; document.write(unescape("%3Cscript src='" + uservoiceJsHost + "/javascripts/widgets/tab.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> UserVoice.Tab.show({ /* required */ key: 'sawhorsemedia', host: 'sawhorsemedia.uservoice.com', forum: '27260', /* optional */ alignment: 'left', background_color:'#f00', text_color: 'white', hover_color: '#06C', lang: 'en' }); </script> </body> </html>