<?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/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-4680694384539518358</id><updated>2011-12-14T16:42:48.394-08:00</updated><category term='VBScript'/><category term='cipher'/><category term='Visual Studio'/><category term='protocol'/><category term='solution'/><category term='super'/><category term='literal'/><category term='bug'/><category term='140'/><category term='crystal'/><category term='ArrayObject'/><category term='CommonJS'/><category term='String'/><category term='on'/><category term='conversion'/><category term='new'/><category term='revisited'/><category term='hghlight'/><category term='ElseIf'/><category term='require'/><category term='getElementsByClassName'/><category term='Apple'/><category term='upgrade'/><category term='JavaScript.XML'/><category term='Code'/><category term='make'/><category term='detection'/><category term='with'/><category term='N510'/><category term='not'/><category term='thoughts'/><category term='FatalError'/><category term='SPL'/><category term='Yahtzee'/><category term='defects'/><category term='mini'/><category term='Laptop'/><category term='write'/><category term='evil'/><category term='Apache'/><category term='xhtml'/><category term='setImmediate'/><category term='closures'/><category term='minifier'/><category term='friendly'/><category term='opera'/><category term='sort'/><category term='scripting'/><category term='recycle'/><category term='gif'/><category term='distributed'/><category term='type'/><category term='Shaders'/><category term='XSL'/><category term='Fart'/><category term='Hunspell'/><category term='CSS'/><category term='talk'/><category term='Unit Test'/><category term='in'/><category term='delirium'/><category term='Christmas'/><category term='leak'/><category term='hybrid'/><category term='effect'/><category term='exposed'/><category term='trim'/><category term='yal.js'/><category term='experiment'/><category term='OSX'/><category term='UK'/><category term='writable'/><category term='Elsewhere'/><category term='Dash'/><category term='anonymous'/><category term='bytes'/><category term='JavaScirpt'/><category term='Array'/><category term='LAB.js'/><category term='JSON.hpack'/><category term='obtrusive'/><category term='JSONH'/><category term='2.0'/><category term='power'/><category term='lightweight'/><category term='design'/><category term='Internet Explorer'/><category term='ubuntu'/><category term='CDN'/><category term='notification'/><category term='convertion'/><category term='Sizzle'/><category term='prevent'/><category term='compiler'/><category term='BJSpell'/><category term='this'/><category term='Aptana'/><category term='Internet Epxlorer'/><category term='Microsoft'/><category term='best'/><category term='ES6'/><category term='sessionStorage'/><category term='debugger'/><category term='W3C'/><category term='serialization'/><category term='jQuery UI'/><category term='SWF'/><category term='FX'/><category term='Harmony'/><category term='PAMPA-J'/><category term='define'/><category term='ctypes'/><category term='node'/><category term='response'/><category term='indexOf'/><category term='frameworks'/><category term='Chrome'/><category term='plugin'/><category term='Framework'/><category term='defineHybridProperty'/><category term='compressed'/><category term='new year'/><category term='Batch'/><category term='transitions'/><category term='transformer'/><category term='_super'/><category term='toISOString'/><category term='automator'/><category term='focus'/><category term='Object'/><category term='common'/><category term='cross'/><category term='tricks'/><category term='falsy'/><category term='JXON'/><category term='IE6'/><category term='arrow'/><category term='wru'/><category term='silverlight'/><category term='check'/><category term='constant'/><category term='fromCharCode'/><category term='ASCII'/><category term='area'/><category term='engine'/><category term='performances'/><category term='files'/><category term='size'/><category term='button'/><category term='ball'/><category term='readyState'/><category term='create'/><category term='Roundtable'/><category term='properties'/><category term='private'/><category term='JSLint'/><category term='Options'/><category term='PHP'/><category term='meta'/><category term='Mousetrap'/><category term='CoffeeShit'/><category term='interaction'/><category term='unload'/><category term='Ext JS'/><category term='CSS3'/><category term='Ruby'/><category term='getPrototypeOf'/><category term='log'/><category term='callee'/><category term='devpro.it'/><category term='outerHTML'/><category term='Frame'/><category term='Samsung'/><category term='jSmile'/><category term='intenret'/><category term='Sandbox'/><category term='expando'/><category term='assignment'/><category term='decimal'/><category term='Informations'/><category term='Pascal'/><category term='WorkerLocation'/><category term='btoa'/><category term='Unite'/><category term='mobile'/><category term='natural'/><category term='documentation'/><category term='html5'/><category term='characters'/><category term='Image'/><category term='C'/><category term='good'/><category term='imrovements'/><category term='relation'/><category term='method'/><category term='WebKit'/><category term='grant'/><category term='apply'/><category term='getElementsByTagName'/><category term='library'/><category term='convention'/><category term='Sprotector'/><category term='ES3'/><category term='IE10'/><category term='side'/><category term='base64'/><category term='Flash'/><category term='devices'/><category term='Trends'/><category term='save as'/><category term='standard'/><category term='Rhino'/><category term='function'/><category term='List'/><category term='isFunction'/><category term='injection'/><category term='swine flu'/><category term='limit'/><category term='banner'/><category term='safari'/><category term='broken'/><category term='Builder'/><category term='defineProperty'/><category term='jQuery'/><category term='defineProperties'/><category term='merits'/><category term='bad'/><category term='lightning'/><category term='attribute'/><category term='overload'/><category term='isCallable'/><category term='driven'/><category term='Revolution'/><category term='VS9'/><category term='scope'/><category term='MDC'/><category term='onload'/><category term='toolbar'/><category term='parody'/><category term='XML'/><category term='unpacked'/><category term='dataset'/><category term='language'/><category term='Ten Grand'/><category term='advanced'/><category term='slickspeed'/><category term='filter'/><category term='correct'/><category term='Else'/><category term='javascript 2'/><category term='Listener'/><category term='style'/><category term='var_export'/><category term='Map'/><category term='emulation'/><category term='for in'/><category term='Observer'/><category term='region'/><category term='polyfills'/><category term='tuscany'/><category term='software'/><category term='errors'/><category term='ie7'/><category term='Multiton'/><category term='begetObject'/><category term='ES5'/><category term='bit.ly'/><category term='Levenshtein'/><category term='Io'/><category term='postable'/><category term='compressor'/><category term='prototype'/><category term='recursion'/><category term='implicit cast'/><category term='node.js'/><category term='Twitter'/><category term='unobtrusive'/><category term='GWT'/><category term='technologies'/><category term='inline'/><category term='YAGNI'/><category term='connection'/><category term='restaurant'/><category term='outline'/><category term='Date'/><category term='getAttribute'/><category term='fast'/><category term='UPDATE'/><category term='benchmark'/><category term='gzip'/><category term='Formaldehyde'/><category term='User'/><category term='ambiguity'/><category term='TechHub'/><category term='Jam'/><category term='console'/><category term='js-ctypes'/><category term='download'/><category term='TaskSpeed'/><category term='8601'/><category term='CPU'/><category term='browser'/><category term='monitor'/><category term='class'/><category term='Macro'/><category term='script'/><category term='Object.create'/><category term='background'/><category term='debug_backtrace'/><category term='file'/><category term='JavaScriptCore'/><category term='default'/><category term='Application'/><category term='tesla'/><category term='fatal'/><category term='debug'/><category term='use strict'/><category term='crash'/><category term='batman'/><category term='unserialize'/><category term='gzipped'/><category term='patterns'/><category term='HTMLCollection'/><category term='stream'/><category term='essential'/><category term='random'/><category term='chain'/><category term='broadband'/><category term='reset'/><category term='PC Pro'/><category term='translator'/><category term='2010'/><category term='instance'/><category term='YUI'/><category term='removeAttribute'/><category term='constructor'/><category term='enumerable'/><category term='C#'/><category term='source'/><category term='Algorithm'/><category term='tests'/><category term='blogger'/><category term='TreePanel'/><category term='Mootools'/><category term='RegExp'/><category term='fixed'/><category term='call'/><category term='Agent'/><category term='shared'/><category term='basis'/><category term='upload'/><category term='runtime'/><category term='Singleton'/><category term='features'/><category term='vice-versa'/><category term='pattern'/><category term='VBClass'/><category term='maps'/><category term='Dart'/><category term='StringBuilder'/><category term='way'/><category term='valueOf'/><category term='scree'/><category term='avoid'/><category term='resize'/><category term='JSObject'/><category term='live'/><category term='arguments'/><category term='Apple iCloud and MobileMe'/><category term='development'/><category term='privileged'/><category term='watch'/><category term='Ajaxian'/><category term='floor'/><category term='Berlin'/><category term='self'/><category term='Math'/><category term='events'/><category term='parsing'/><category term='Windows'/><category term='resolution'/><category term='partial'/><category term='buzz'/><category term='module'/><category term='conflicts'/><category term='inheritance'/><category term='Relator'/><category term='JsonTV'/><category term='O3D'/><category term='bookmarklet'/><category term='stand alone'/><category term='spam'/><category term='Expressions'/><category term='jsc'/><category term='prototypal'/><category term='deflate'/><category term='WebReflection'/><category term='italia.it'/><category term='draft 76'/><category term='transform'/><category term='loader'/><category term='ExtJS'/><category term='trimRight'/><category term='LiveMonitor'/><category term='font-face'/><category term='bridge'/><category term='example'/><category term='UX'/><category term='DELAYED'/><category term='setAttribute'/><category term='Subclass'/><category term='memory'/><category term='lambda'/><category term='NWMatcher'/><category term='native'/><category term='record'/><category term='server side'/><category term='beta'/><category term='JavaScript Hijacking'/><category term='read'/><category term='execution'/><category term='dojo'/><category term='iPhone'/><category term='text'/><category term='280'/><category term='holidays'/><category term='practices'/><category term='optimization'/><category term='OOP'/><category term='responsive'/><category term='circle'/><category term='NHS'/><category term='Widget'/><category term='navigator'/><category term='grab'/><category term='epic'/><category term='binary safe'/><category term='project'/><category term='content'/><category term='Event'/><category term='Python'/><category term='es4'/><category term='operator'/><category term='slice'/><category term='challenge'/><category term='no flash'/><category term='support'/><category term='client'/><category term='Depiction About Automation Systems'/><category term='bin'/><category term='magic'/><category term='ISO'/><category term='JSConf'/><category term='XMLHttpRequest'/><category term='ActionScript'/><category term='eval'/><category term='input'/><category term='tag'/><category term='Portable'/><category term='London'/><category term='PyramiDOM'/><category term='Pure DOM'/><category term='instanceof'/><category term='png'/><category term='Libraries'/><category term='Object.createStatic'/><category term='PAMPA'/><category term='Spectrum'/><category term='Tokens'/><category term='Composite'/><category term='overloading'/><category term='no swf'/><category term='access'/><category term='canvas'/><category term='textarea'/><category term='statement'/><category term='configurable'/><category term='classical'/><category term='Storage'/><category term='blocked'/><category term='Components'/><category term='Comet'/><category term='JSON'/><category term='Ad 2.0'/><category term='Factory'/><category term='URLs'/><category term='promotion'/><category term='Satay'/><category term='recovery'/><category term='embedded'/><category term='Konami'/><category term='speed'/><category term='sourceIndex'/><category term='MyMin'/><category term='$super'/><category term='homogeneous'/><category term='recruiters'/><category term='hpack'/><category term='tweetcode'/><category term='deployment'/><category term='5.3.5'/><category term='ellipse'/><category term='steal'/><category term='Stack'/><category term='post'/><category term='packed'/><category term='Google'/><category term='ie'/><category term='replace'/><category term='coercion'/><category term='Internet Explorer 8'/><category term='setInterval'/><category term='JavaScript.document'/><category term='host objects'/><category term='JsonReader'/><category term='closure'/><category term='WebGL'/><category term='extras'/><category term='server'/><category term='If'/><category term='questions'/><category term='AMF'/><category term='Serializable'/><category term='haxe'/><category term='problem'/><category term='Rebecca Murphey'/><category term='Adapter'/><category term='JS.next'/><category term='IE9'/><category term='fireEvent'/><category term='Strict'/><category term='3site.it'/><category term='INSERT'/><category term='parent'/><category term='getter'/><category term='isNative'/><category term='packed.it'/><category term='syntax'/><category term='sub'/><category term='JavaScript.PHP'/><category term='Web'/><category term='firefox'/><category term='test'/><category term='values'/><category term='KISS'/><category term='DOM'/><category term='window'/><category term='tips'/><category term='link'/><category term='advertisement'/><category term='JScript'/><category term='bind'/><category term='multiple'/><category term='future'/><category term='buttons'/><category term='Lion'/><category term='MySQL'/><category term='XSLT'/><category term='WebSocket'/><category term='Nokia'/><category term='security'/><category term='mistakes'/><category term='look'/><category term='Douglas Crockford'/><category term='extend'/><category term='Xpath'/><category term='fuckn.es'/><category term='Collection'/><category term='nested'/><category term='editor'/><category term='YUICompressor'/><category term='protected'/><category term='custom'/><category term='JSONP'/><category term='CoffeeScript'/><category term='View'/><category term='bar'/><category term='Mouse'/><category term='escape'/><category term='Regular'/><category term='Tree'/><category term='base'/><category term='IE8'/><category term='Jaxer'/><category term='html'/><category term='EU'/><category term='scroll'/><category term='let'/><category term='quality'/><category term='selector'/><category term='fun'/><category term='trimLeft'/><category term='methods'/><category term='Phico'/><category term='encode'/><category term='JavaScript'/><category term='serialize'/><category term='request'/><category term='zlib'/><category term='uri'/><category term='ft2010'/><category term='out of order'/><category term='myth'/><category term='GeoLocation'/><category term='Template'/><category term='proxy'/><category term='asynchronous'/><category term='Sniff'/><category term='mock'/><category term='ECMAScript'/><category term='mjst'/><category term='load'/><category term='environment'/><category term='all'/><category term='unshared'/><category term='export'/><category term='Front'/><category term='cheat'/><category term='easy'/><category term='Ajax'/><category term='form'/><category term='compression'/><category term='LLVM'/><category term='bing'/><category term='toy'/><category term='is_a'/><category term='setter'/><category term='cross-browser'/><category term='__sleep'/><category term='domain'/><category term='impression'/><category term='spell'/><category term='Android'/><category term='Caja'/><category term='const'/><category term='subclassed'/><category term='setTimeout'/><category term='wrong'/><category term='element'/><category term='guide'/><category term='Cookie'/><category term='override'/><category term='convert'/><category term='RC4'/><category term='document'/><category term='programming'/><category term='static'/><category term='usable'/><category term='objects'/><category term='safe'/><category term='name'/><category term='single'/><category term='__wakeup'/><category term='expression'/><category term='JsonML'/><category term='first'/><category term='book'/><category term='blog'/><category term='Web 2.0'/><category term='Phomet'/><category term='Liquid'/><category term='position'/><category term='cross-platform'/><category term='ECMAScript 5'/><category term='isPrototypeOf'/><category term='Callback'/><category term='mode'/><category term='Number'/><category term='implicit'/><category term='NekoVM'/><category term='handshake'/><category term='JHP'/><category term='languages'/><category term='RitaliaCamp1'/><category term='exit'/><category term='Netbook'/><category term='Rant'/><category term='fail'/><category term='snow'/><category term='data'/><category term='progress'/><category term='reader'/><title type='text'>Technology</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><link rel='next' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default?start-index=101&amp;max-results=100'/><author><name>adoex</name><uri>http://www.blogger.com/profile/04333100509367374830</uri><email>noreply@blogger.com</email><gd:image 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>456</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-7698439241954259460</id><published>2011-11-30T11:28:00.000-08:00</published><updated>2011-12-02T18:14:22.459-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Array'/><category scheme='http://www.blogger.com/atom/ns#' term='Object'/><category scheme='http://www.blogger.com/atom/ns#' term='extras'/><category scheme='http://www.blogger.com/atom/ns#' term='prototype'/><title type='text'>Array extras and Objects</title><summary type='text'>When Array extras landed in JavaScript 1.6 I had, probably together with other developers, one of those HOORRAYYY moment ...What many libraries and frameworks out there still implement, is this sort of universal each method that supposes to be compatible with both Arrays and Objects.A Bit Messed UpWhat I have never liked that much about these each methods is that we have to know in advance in any</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/7698439241954259460/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/array-extras-and-objects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7698439241954259460'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7698439241954259460'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/array-extras-and-objects.html' title='Array extras and Objects'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4848660834024851153</id><published>2011-11-27T06:26:00.000-08:00</published><updated>2011-12-02T18:14:22.479-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='guide'/><category scheme='http://www.blogger.com/atom/ns#' term='style'/><title type='text'>About Felix's Style Guide</title><summary type='text'>Style guides are good as long as these are meaningful and a bit "open minded" because if one style is recognized as anti pattern then it must be possible to update/change it.The Felix's Node.js Style Guide is surely a meaningful one, but I hope it's open minded too.Why This PostBecause I write node.js code as well sometimes and I would like to write code accepted by the community. Since </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4848660834024851153/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/about-felix-style-guide.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4848660834024851153'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4848660834024851153'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/about-felix-style-guide.html' title='About Felix&amp;#39;s Style Guide'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-7314717260687985006</id><published>2011-11-26T03:52:00.000-08:00</published><updated>2011-12-02T18:14:22.499-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='JSONH'/><category scheme='http://www.blogger.com/atom/ns#' term='homogeneous'/><category scheme='http://www.blogger.com/atom/ns#' term='Collection'/><title type='text'>JSONH New schema Argument</title><summary type='text'>The freaking fast and bandwidth saver JSONH Project has finally a new schema argument added at the end of every method in order to make nested Homogeneous Collections automatically "packable", here an example:            var                // nested objects b property                // have same homogeneous collections                // in properties c and d                schema = ["b.c", "b.d"]</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/7314717260687985006/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/jsonh-new-schema-argument.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7314717260687985006'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7314717260687985006'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/jsonh-new-schema-argument.html' title='JSONH New schema Argument'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8532511389608253024</id><published>2011-11-25T12:41:00.000-08:00</published><updated>2011-12-02T18:14:22.518-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='performances'/><category scheme='http://www.blogger.com/atom/ns#' term='recycle'/><category scheme='http://www.blogger.com/atom/ns#' term='defineProperties'/><title type='text'>On Complex Getters And Setters</title><summary type='text'>A common use case for getters and setters is via scalar values rather than complex data.Well, this is just a programmer mind limit since data we could set, or get, can be of course much more complex: here an examplefunction Person() {}Person.prototype.toString = function () {    return this._name + " is " + this._age;};// the magic identity configuration objectObject.defineProperty(</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8532511389608253024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/on-complex-getters-and-setters.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8532511389608253024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8532511389608253024'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/on-complex-getters-and-setters.html' title='On Complex Getters And Setters'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-6232789460175656530</id><published>2011-11-20T18:19:00.000-08:00</published><updated>2011-12-02T18:14:22.610-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='scroll'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS'/><category scheme='http://www.blogger.com/atom/ns#' term='background'/><category scheme='http://www.blogger.com/atom/ns#' term='size'/><title type='text'>Differential Background Scrolling</title><summary type='text'>A quick one about this technique quite common in Flash sites but rarely seen on Web.Have a look at the example first so you can understand what I am talking about ... got it ?What Is This AboutLet's say we have a background, a big massive graphic background surely not suitable for mobile phones, due data roaming, but maybe cool for desktop and fast ADSL.The background-size CSS property is able to</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/6232789460175656530/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/differential-background-scrolling.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6232789460175656530'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6232789460175656530'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/differential-background-scrolling.html' title='Differential Background Scrolling'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1134169186069937851</id><published>2011-11-12T04:02:00.000-08:00</published><updated>2011-12-02T18:14:22.704-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><title type='text'>Few JavaScript Patterns</title><summary type='text'>Just to be clear and once again, JavaScript can emulate:classespublic and public static methods or propertiesprivate and private static methods or propertiespublic and private constantsprotected methods... you name it ...// duck typing ( maybe all you need )var me = {name: "WebReflection"};// basic classfunction Person() {}Person.prototype.getName = function () {    return this.name;};</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1134169186069937851/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/few-javascript-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1134169186069937851'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1134169186069937851'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/few-javascript-patterns.html' title='Few JavaScript Patterns'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1498989552076969710</id><published>2011-11-08T14:33:00.000-08:00</published><updated>2011-12-02T18:14:22.819-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='function'/><category scheme='http://www.blogger.com/atom/ns#' term='notification'/><category scheme='http://www.blogger.com/atom/ns#' term='monitor'/><category scheme='http://www.blogger.com/atom/ns#' term='Callback'/><category scheme='http://www.blogger.com/atom/ns#' term='test'/><title type='text'>Function.prototype.notifier</title><summary type='text'>There are way too many ways to stub functions or methods, but at the end of the day all we want to know is always the same:has that function been invoked ?has that function received the expected context ?which argument has been passed to that function ?what was the output of the function ?Update thanks to @bga_ hint about the output property in after notification, it made perfect senseThe </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1498989552076969710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/functionprototypenotifier.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1498989552076969710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1498989552076969710'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/11/functionprototypenotifier.html' title='Function.prototype.notifier'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-9116882309147775728</id><published>2011-10-31T12:52:00.000-07:00</published><updated>2011-12-02T18:14:22.912-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Sniff'/><category scheme='http://www.blogger.com/atom/ns#' term='User'/><category scheme='http://www.blogger.com/atom/ns#' term='Agent'/><title type='text'>On User Agent Sniffing</title><summary type='text'>Oh well, who was following me on twitter today is already bored about this topic (I guess) but probably other developers would like to read this too so ...What Is UA SniffingUserAgent sniffing means that a generic software is relying into a generic string representation of the underlying system. The User Agent is basically considered a unique identifier of "the current software or hardware that </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/9116882309147775728/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/on-user-agent-sniffing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/9116882309147775728'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/9116882309147775728'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/on-user-agent-sniffing.html' title='On User Agent Sniffing'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-538273590948886468</id><published>2011-10-25T12:51:00.000-07:00</published><updated>2011-12-02T18:14:23.030-08:00</updated><title type='text'>JS getCSSPropertyName Function</title><summary type='text'>I was re-checking @LeaVerou talk at jsconf.eu looking forward to see mine there too to understand how to improve and specially what the hell I have said for 45 minutes :DLea made many valid points in her presentation but as is for supports.property case, you never want to go too deep into a single point of your talk so ... here I come.getCSSPropertyName FunctionThis function aim is to understand </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/538273590948886468/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/js-getcsspropertyname-function.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/538273590948886468'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/538273590948886468'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/js-getcsspropertyname-function.html' title='JS getCSSPropertyName Function'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4997859566086834436</id><published>2011-10-20T12:25:00.000-07:00</published><updated>2011-12-02T18:14:23.131-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='wru'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScirpt'/><category scheme='http://www.blogger.com/atom/ns#' term='easy'/><title type='text'>My BerlinJS Slides</title><summary type='text'>It was a great event today at @co_up in @berlinjs meet-up and here are my sides about wru which accordingly with today meeting means where are you, directly out of SMS syntax.Enjoy ;)</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4997859566086834436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/my-berlinjs-slides.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4997859566086834436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4997859566086834436'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/my-berlinjs-slides.html' title='My BerlinJS Slides'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4378748398367524361</id><published>2011-10-19T22:32:00.000-07:00</published><updated>2011-12-02T18:14:23.144-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='fun'/><category scheme='http://www.blogger.com/atom/ns#' term='DOM'/><title type='text'>Playing With DOM And ES5</title><summary type='text'>A quick fun post about "how would you solve this real world problem".The ProblemGiven a generic array of strings, create an unordered list of items where each item contains the text of the relative array index without creating a singe leak or reference during the whole procedure.As plus, make each item in the list clickable so that an alert with current text content occur once clicked.The </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4378748398367524361/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/playing-with-dom-and-es5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4378748398367524361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4378748398367524361'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/playing-with-dom-and-es5.html' title='Playing With DOM And ES5'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-616003060335086835</id><published>2011-10-18T16:05:00.000-07:00</published><updated>2011-12-02T18:14:23.239-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Object'/><category scheme='http://www.blogger.com/atom/ns#' term='configurable'/><category scheme='http://www.blogger.com/atom/ns#' term='enumerable'/><category scheme='http://www.blogger.com/atom/ns#' term='writable'/><category scheme='http://www.blogger.com/atom/ns#' term='defineProperty'/><title type='text'>Do You Really Know Object.defineProperty ?</title><summary type='text'>I am talking about enumerable, configurable, and writable properties of a generic property descriptor.enumerablemost likely the only one we all expect: if false, a classic for/in loop will not expose the property, otherwise it will. enumerable is false by default.writablejust a bit more tricky than we think. Nowadays, if a property is defined as non writable, no error will occur the moment we'll </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/616003060335086835/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/do-you-really-know-objectdefineproperty.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/616003060335086835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/616003060335086835'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/do-you-really-know-objectdefineproperty.html' title='Do You Really Know Object.defineProperty ?'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1434576163371754563</id><published>2011-10-16T04:49:00.000-07:00</published><updated>2011-12-02T18:14:23.258-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='LLVM'/><category scheme='http://www.blogger.com/atom/ns#' term='languages'/><category scheme='http://www.blogger.com/atom/ns#' term='scripting'/><title type='text'>The Missing Tool In Scripting World</title><summary type='text'>Few days ago I was having beers with @aadsm and @sleistner and we were talking about languages and, of course, JavaScript too.That night I have realized there is a missing process, or better tool, that could open new doors for JavaScript world.The Runtime NightmareThe main difference between scripting languages and statically typed one is the inability to pre optimize or pre compile the code </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1434576163371754563/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/missing-tool-in-scripting-world.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1434576163371754563'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1434576163371754563'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/missing-tool-in-scripting-world.html' title='The Missing Tool In Scripting World'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3648881695907528692</id><published>2011-10-15T05:27:00.000-07:00</published><updated>2011-12-02T18:14:23.351-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='define'/><category scheme='http://www.blogger.com/atom/ns#' term='defineProperties'/><title type='text'>Object.prototype.define Proposal</title><summary type='text'>Somebody may think that defineProperties is boring and I kinda agree on that.The good news is that JavaScript is flexible enough to let you decide how to do that ... and here I am with a simple proposal that does not hurt, but can make life easier and more intuitive in modern JS environments.Unobtrusive Object.prototype.defineHow ToWell, the handy way you expect.The method returns the object </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3648881695907528692/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/objectprototypedefine-proposal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3648881695907528692'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3648881695907528692'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/objectprototypedefine-proposal.html' title='Object.prototype.define Proposal'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8223269791753049729</id><published>2011-10-13T01:11:00.000-07:00</published><updated>2011-10-13T01:11:16.184-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Depiction About Automation Systems'/><title type='text'>Depiction About Automation Systems</title><summary type='text'>
Automation system is the use of control system and information technologies to reduce the need for human work in the production of goods and services. Pad printing, laser printing, home automation etc. are automation systems.

Pad printing process is mainly using for move a 2D image on to a 3D object. It is an indirect offset printing process, where an image is transferred via a soft silicone </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8223269791753049729/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/depiction-about-automation-systems.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8223269791753049729'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8223269791753049729'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/depiction-about-automation-systems.html' title='Depiction About Automation Systems'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/-4hByAWR1IpA/Tpac6mrT3BI/AAAAAAAABDs/gE-DNRUdGLs/s72-c/b.jpeg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-292738285842733735</id><published>2011-10-13T01:07:00.000-07:00</published><updated>2011-10-13T01:07:46.655-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Apple iCloud and MobileMe'/><title type='text'>The Stark Differences Between Apple iCloud and MobileMe</title><summary type='text'>Are you curious about the differences between the iCloud and MobileMe? After all, aren't they both cloud services?

MobileMe is Apple's current cloud software and it's a paid service that isn't very popular at the moment. Apple iCloud completely revamps the service and offers many more features. For one 5 GB of free cloud storage is available for every IOS account with IOS 5. MobileMe customers </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/292738285842733735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/stark-differences-between-apple-icloud.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/292738285842733735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/292738285842733735'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/stark-differences-between-apple-icloud.html' title='The Stark Differences Between Apple iCloud and MobileMe'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-syo_G0gDHA4/TpacGm2KY0I/AAAAAAAABDk/cgoG2XuBHyU/s72-c/125px-Apple-logo.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-9155905864276370733</id><published>2011-10-12T22:23:00.000-07:00</published><updated>2011-12-02T18:14:23.445-08:00</updated><title type='text'>about JS VS VBScript VS Dart</title><summary type='text'>You can take it as a joke since this is not a proper comparison of these web programming languages.                                JS      Dart    VBScripttypes                           √       √       sort ofgetters and setters             √       √       √immutable objects               √       √       √prototypal inheritance          √simulated classes               √"real" classes</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/9155905864276370733/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/about-js-vs-vbscript-vs-dart.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/9155905864276370733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/9155905864276370733'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/about-js-vs-vbscript-vs-dart.html' title='about JS VS VBScript VS Dart'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3002784714802636800</id><published>2011-10-12T21:18:00.000-07:00</published><updated>2011-12-02T18:14:23.540-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Dart'/><category scheme='http://www.blogger.com/atom/ns#' term='questions'/><title type='text'>about that post</title><summary type='text'>I have been blamed and insulted enough so I removed the possibility to comment and I also invite you again to do not stop reading the title of a generic post here or anywhere around the net.I would like to summarize few parts of that post:on real world we should use the proper flag in order to generate files where only necessary parts of the library is included...I agree that at this stage can be</summary><link rel='related' href='http://webreflection.blogspot.com/2011/10/what-is-wrong-about-17259-lines-of-code.html' title='about that post'/><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3002784714802636800/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/about-that-post.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3002784714802636800'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3002784714802636800'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/about-that-post.html' title='about that post'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-587076806485635293</id><published>2011-10-11T22:34:00.000-07:00</published><updated>2011-12-02T18:14:23.636-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='first'/><category scheme='http://www.blogger.com/atom/ns#' term='look'/><category scheme='http://www.blogger.com/atom/ns#' term='Dart'/><title type='text'>What Is Wrong About 17259 Lines Of Code</title><summary type='text'>Is the most popular, somehow pointless, and often funny gist of these days.It's about Dart, the JavaScript alternative proposed by Google.Why So Many Lines Of CodeThe reason a simple "Hello World" contains such amount of code is because:the whole library core is included and not minified/optimized but on real world we should use the proper flag in order to generate files where only necessary </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/587076806485635293/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/what-is-wrong-about-17259-lines-of-code.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/587076806485635293'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/587076806485635293'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/what-is-wrong-about-17259-lines-of-code.html' title='What Is Wrong About 17259 Lines Of Code'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8137072079953253269</id><published>2011-10-09T03:45:00.000-07:00</published><updated>2011-12-02T18:14:23.659-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='function'/><category scheme='http://www.blogger.com/atom/ns#' term='batman'/><title type='text'>Taking The Bat-Formula To The Next Level</title><summary type='text'>When you wake up on Sunday morning with upside-down stomach and batcode in mind, you may realize it's time to rest a bit.with (/*Bat*/Math) Array(16).join(  pow(/*JOK*/E/*R*/, cos, E/*vil*/)) + "batman";The output is the same produced by the original bat-formula:'NaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNNaNbatman'Have a nice Sunday.</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8137072079953253269/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/taking-bat-formula-to-next-level.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8137072079953253269'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8137072079953253269'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/taking-bat-formula-to-next-level.html' title='Taking The Bat-Formula To The Next Level'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3463774718068398120</id><published>2011-10-09T02:48:00.000-07:00</published><updated>2011-12-02T18:14:23.754-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='is_a'/><title type='text'>A Better is_a Function for JS</title><summary type='text'>In 2007 I have posted about get_class and is_a functions in JavaScript in order to simulate original PHP functions.Well ... that was crap, since a much simpler and meaningful version of the is_a function can be easily summarized like this:var is_a = function () {  function verify(what) {    // implicit objet representation    // the way to test primitives too    return this instanceof what;  }  </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3463774718068398120/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/better-isa-function-for-js.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3463774718068398120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3463774718068398120'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/better-isa-function-for-js.html' title='A Better is_a Function for JS'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3732587241712891319</id><published>2011-10-06T02:36:00.000-07:00</published><updated>2011-12-02T18:14:23.854-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='node.js'/><category scheme='http://www.blogger.com/atom/ns#' term='require'/><category scheme='http://www.blogger.com/atom/ns#' term='implicit'/><title type='text'>implicit require in node.js</title><summary type='text'>playing with Harmony Proxy I came out with a simple snippet:The aim of above snippet is to forget the usage of require ... here some example:module.sys.puts("Hello implicit require");var fs = module.fs;fs.stat( ... );It's compatible with nested namespaces too and if there are non JS chars in the middle ... well:var Proxy = module["node-proxy"];</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3732587241712891319/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/implicit-require-in-nodejs.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3732587241712891319'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3732587241712891319'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/implicit-require-in-nodejs.html' title='implicit require in node.js'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-649146303848528453</id><published>2011-10-05T03:27:00.000-07:00</published><updated>2011-12-02T18:14:23.952-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='function'/><category scheme='http://www.blogger.com/atom/ns#' term='call'/><category scheme='http://www.blogger.com/atom/ns#' term='apply'/><category scheme='http://www.blogger.com/atom/ns#' term='bind'/><category scheme='http://www.blogger.com/atom/ns#' term='prototype'/><title type='text'>bind, apply, and call trap</title><summary type='text'>quick one out of ECMAScript mlvar    // used to trap function calls via bind    invoke = Function.call,    // normal use cases    bind = invoke.bind(invoke.bind),    apply = bind(invoke, invoke.apply),    call = bind(invoke, invoke);What Is ItThis is a way to trap native functions method in a handy way. Used in a private scope, it can address these methods once so that we can rely nobody can </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/649146303848528453/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/bind-apply-and-call-trap.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/649146303848528453'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/649146303848528453'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/bind-apply-and-call-trap.html' title='bind, apply, and call trap'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8954910351694822967</id><published>2011-10-03T00:17:00.000-07:00</published><updated>2011-12-02T18:14:24.052-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ES6'/><category scheme='http://www.blogger.com/atom/ns#' term='CoffeeScript'/><title type='text'>Dear Brendan, Here Was My Question</title><summary type='text'>I had the honor to personally shake the hand of the man that created my favorite programming language: Brendan Eich!I also dared to ask him a question about ES6 and I would like to better explain the reason of that question.I have 99 problems in JS, syntax ain't oneI don't know who said that but I completely agree with him.Here the thing: one of the main ES6 aim is to bring new, non breaking, </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8954910351694822967/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/dear-brendan-here-was-my-question.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8954910351694822967'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8954910351694822967'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/dear-brendan-here-was-my-question.html' title='Dear Brendan, Here Was My Question'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1737705068884762799</id><published>2011-10-02T02:53:00.000-07:00</published><updated>2011-12-02T18:14:24.156-08:00</updated><title type='text'>Me At JSConf.EU 2011</title><summary type='text'>About my JSConf.EU Talk.Here my JSConf EU 2011 Slides, and here again the speaker rate (only if you have seen the talk, pls).update I forgot to mention lazy features detection oject proposal!Thanks everybody, it has been a great week end :)</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1737705068884762799/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/me-at-jsconfeu-2011.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1737705068884762799'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1737705068884762799'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/10/me-at-jsconfeu-2011.html' title='Me At JSConf.EU 2011'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4255093028109529655</id><published>2011-09-28T11:14:00.000-07:00</published><updated>2011-12-02T18:14:24.247-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quality'/><category scheme='http://www.blogger.com/atom/ns#' term='thoughts'/><category scheme='http://www.blogger.com/atom/ns#' term='random'/><category scheme='http://www.blogger.com/atom/ns#' term='software'/><title type='text'>RIA VS OS</title><summary type='text'>... have you ever thought about it ? I did few times in my 11+ years of RIA centric career!Even if it's like comparing potatoes with tomatoes I'd like to share my thoughts about it, would you mind ?What we always laughed about OSthe blue/gray screen with an incomprehensible error messagethe Message Box with some rant about some memory address failurethe unresponsive OS due some broken application</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4255093028109529655/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/09/ria-vs-os.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4255093028109529655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4255093028109529655'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/09/ria-vs-os.html' title='RIA VS OS'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-6131875087527982416</id><published>2011-09-26T10:22:00.000-07:00</published><updated>2011-12-02T18:14:24.340-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='EU'/><category scheme='http://www.blogger.com/atom/ns#' term='JSConf'/><title type='text'>About Me At JSConf EU</title><summary type='text'>I know I am not in the list of speakers page yet, but I am actually in the official schedule already.It's about jsconf.eu and my talk on Sunday morning at 10:45 entitled ...Buzz It For Real ! ... the tortuous road to Mobile HTML5 AppsFor the very first time in my life I will not represent just myself during a conference. This time I will talk about few ideas, problems, and solutions, we have </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/6131875087527982416/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/09/about-me-at-jsconf-eu.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6131875087527982416'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6131875087527982416'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/09/about-me-at-jsconf-eu.html' title='About Me At JSConf EU'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1636760731790690540</id><published>2011-09-16T23:04:00.000-07:00</published><updated>2011-12-02T18:14:24.434-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='C'/><category scheme='http://www.blogger.com/atom/ns#' term='ctypes'/><category scheme='http://www.blogger.com/atom/ns#' term='JS.next'/><category scheme='http://www.blogger.com/atom/ns#' term='js-ctypes'/><title type='text'>An Introduction to JS-Ctypes</title><summary type='text'>UpdateIf you have time follow the whole story in es-discuss mailing list while if you don't have time here the quick summary:js-ctypes purpose is different from JS.next typed structs/arrays so it looks like it was my mistake to compare tomatoes and potatoes.I bet everybody else in this world could have compared these two different beasts due identical name, look, and similar usage.If ctypes are </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1636760731790690540/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/09/introduction-to-js-ctypes.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1636760731790690540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1636760731790690540'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/09/introduction-to-js-ctypes.html' title='An Introduction to JS-Ctypes'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3864275573492119259</id><published>2011-09-10T01:03:00.000-07:00</published><updated>2011-12-02T18:14:24.524-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Dash'/><category scheme='http://www.blogger.com/atom/ns#' term='Rant'/><category scheme='http://www.blogger.com/atom/ns#' term='Fart'/><category scheme='http://www.blogger.com/atom/ns#' term='Dart'/><title type='text'>My New Programming Language</title><summary type='text'>yeah, you read it correctly ... we all need another better programming language because everything we've done until now sucks.What Sucksthe fact we don't learn by mistakes, which means all of us should instantly try to create a new "secretly open source programming language" so that the rest of the world can only endure it once it's out, rather than contribute to make it better/needed as it's </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3864275573492119259/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/09/my-new-programming-language.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3864275573492119259'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3864275573492119259'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/09/my-new-programming-language.html' title='My New Programming Language'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1358337262857834661</id><published>2011-08-27T02:38:00.000-07:00</published><updated>2011-12-02T18:14:24.614-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maps'/><category scheme='http://www.blogger.com/atom/ns#' term='OSX'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='Nokia'/><category scheme='http://www.blogger.com/atom/ns#' term='Lion'/><category scheme='http://www.blogger.com/atom/ns#' term='automator'/><title type='text'>OS X Lion Automator And Mobile NOKIA Maps</title><summary type='text'>When I have read this article about Making Desktop Webapps in Lion my first thought was "cool!" instantly followed by "what about an experiment with Mobile NOKIA Maps WebApp?" ... and here I come :)m.maps.nokia.comis the beta project I am working on right now together with a bounce of HTML5 geeks :P in order to bring the mature NOKIA Maps experience on Android 2.2+, iOS4+, and others already </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1358337262857834661/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/os-x-lion-automator-and-mobile-nokia.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1358337262857834661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1358337262857834661'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/os-x-lion-automator-and-mobile-nokia.html' title='OS X Lion Automator And Mobile NOKIA Maps'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8844096749871779705</id><published>2011-08-24T11:35:00.000-07:00</published><updated>2011-12-02T18:14:24.706-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='data'/><category scheme='http://www.blogger.com/atom/ns#' term='mock'/><category scheme='http://www.blogger.com/atom/ns#' term='uri'/><category scheme='http://www.blogger.com/atom/ns#' term='injection'/><category scheme='http://www.blogger.com/atom/ns#' term='script'/><title type='text'>Simulate Script Injection Via Data URI</title><summary type='text'>Well, not only downloads on the fly, the data uri works for almost everything ( only iOS 5 beta does not want to work with inline data uri AUDIO sources .... but this is another story ... ) ... so ... How To Simulate Script injectionLet's say you want a test but you don't want to bother a server. However, you want to be sure the test is asynchronous and it simulates the server.var    head = </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8844096749871779705/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/simulate-script-injection-via-data-uri.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8844096749871779705'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8844096749871779705'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/simulate-script-injection-via-data-uri.html' title='Simulate Script Injection Via Data URI'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4441436287834251276</id><published>2011-08-21T10:34:00.000-07:00</published><updated>2011-12-02T18:14:25.150-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Rhino'/><category scheme='http://www.blogger.com/atom/ns#' term='essential'/><category scheme='http://www.blogger.com/atom/ns#' term='wru'/><category scheme='http://www.blogger.com/atom/ns#' term='node.js'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Framework'/><title type='text'>wru, unit tests have ever been that easy</title><summary type='text'>Do you remember my good old wru project? It has been refactored, readapted for both client and server side environment such node.js and Rhino and, most important, it landed in github ;)Please spend few minutes to read the documentation and you'll realize why I chose this title for this post.Have fun with JavaScript Unit Tests!</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4441436287834251276/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/wru-unit-tests-have-ever-been-that-easy.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4441436287834251276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4441436287834251276'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/wru-unit-tests-have-ever-been-that-easy.html' title='wru, unit tests have ever been that easy'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-5077736477953831335</id><published>2011-08-20T01:39:00.000-07:00</published><updated>2011-12-02T18:14:25.242-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='operator'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='class'/><category scheme='http://www.blogger.com/atom/ns#' term='Ruby'/><category scheme='http://www.blogger.com/atom/ns#' term='new'/><category scheme='http://www.blogger.com/atom/ns#' term='ES5'/><category scheme='http://www.blogger.com/atom/ns#' term='Python'/><category scheme='http://www.blogger.com/atom/ns#' term='in'/><title type='text'>Overloading the in operator</title><summary type='text'>In all its "sillyness", the CoffeeShit project gave me a hint about the possibilities of an overloaded in operator.The Cross Language AmbiguityIn JavaScript, the in operator checks if a property is present where the property is the name rather than its value."name" in {name:"WebReflection"}; // trueHowever, I bet at least once in our JS programming life we have done something like this, expecting</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/5077736477953831335/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/overloading-in-operator.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5077736477953831335'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5077736477953831335'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/overloading-in-operator.html' title='Overloading the in operator'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8862545693166884780</id><published>2011-08-19T08:53:00.000-07:00</published><updated>2011-12-02T18:14:25.339-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CoffeeShit'/><category scheme='http://www.blogger.com/atom/ns#' term='CoffeeScript'/><category scheme='http://www.blogger.com/atom/ns#' term='parody'/><title type='text'>CoffeeShit, The CoffeeScript Parody</title><summary type='text'>    ... because script happens!This silly project does not want to offend the CoffeeScript creator neither any CoffeeScript user, hoping both have sense of humor :DAboutEvery cult movie has one or more parodies ... well, every cult technology as well (or at least it should)!This idiotic project is on github with a better explanation, a suite of unit tests, and both source code and the partially </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8862545693166884780/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/coffeeshit-coffeescript-parody.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8862545693166884780'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8862545693166884780'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/coffeeshit-coffeescript-parody.html' title='CoffeeShit, The CoffeeScript Parody'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-7167902761490423645</id><published>2011-08-18T06:10:00.000-07:00</published><updated>2011-12-02T18:14:25.432-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='server'/><category scheme='http://www.blogger.com/atom/ns#' term='download'/><category scheme='http://www.blogger.com/atom/ns#' term='base64'/><category scheme='http://www.blogger.com/atom/ns#' term='link'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='btoa'/><category scheme='http://www.blogger.com/atom/ns#' term='avoid'/><title type='text'>HTML5: How To Create Downloads On The Fly</title><summary type='text'>this is a quick one I have implemented already in fuckn.es in the create angry memory button logic ...The New Download AttributeHopefully soon, most updated browser will implement the download attribute in hypertext links (aka: &lt;a&gt; tag)The quick summary is this one:The download attribute, if present, indicates that the author intends the hyperlink to be used for downloading a resource. The </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/7167902761490423645/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/html5-how-to-create-downloads-on-fly.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7167902761490423645'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7167902761490423645'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/html5-how-to-create-downloads-on-fly.html' title='HTML5: How To Create Downloads On The Fly'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-6146866234266105779</id><published>2011-08-17T06:00:00.000-07:00</published><updated>2011-12-02T18:14:25.528-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='objects'/><category scheme='http://www.blogger.com/atom/ns#' term='JSONH'/><category scheme='http://www.blogger.com/atom/ns#' term='Collection'/><category scheme='http://www.blogger.com/atom/ns#' term='hybrid'/><title type='text'>JSONH And Hybrid JS Objects</title><summary type='text'>I have already described JSONH and now I also have the proof that it's as safe as native JSON is but on average 2X faster than native JSON operations with both small (10 objects), medium (100 objects), and massive (5000 objects and not a real world case, just a stress test to see how much JSONH scales) homogenous collections.Wherever it's not faster it's just "as fast" but the best part is that </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/6146866234266105779/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/jsonh-and-hybrid-js-objects.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6146866234266105779'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6146866234266105779'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/jsonh-and-hybrid-js-objects.html' title='JSONH And Hybrid JS Objects'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-2162603737855459187</id><published>2011-08-16T07:00:00.000-07:00</published><updated>2011-12-02T18:14:25.620-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='unpacked'/><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='homogeneous'/><category scheme='http://www.blogger.com/atom/ns#' term='packed'/><category scheme='http://www.blogger.com/atom/ns#' term='hpack'/><category scheme='http://www.blogger.com/atom/ns#' term='Collection'/><title type='text'>Last Version Of JSON Hpack</title><summary type='text'>Update created github repository with (currently) JavaScript, PHP5 and Python versions.Update after quick chat on twitter with @devongovett who pointed out there is a similar standard called JSONDB I have created a JSONH(Flat) version. It looks slightly faster on mobile so I may opt for this one rather than Array of keys at index 0.The whole array is flat and it changes from [{a:"A"},{a:"B"}] to </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/2162603737855459187/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/last-version-of-json-hpack.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2162603737855459187'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2162603737855459187'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/last-version-of-json-hpack.html' title='Last Version Of JSON Hpack'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-2757651763976605176</id><published>2011-08-14T08:05:00.000-07:00</published><updated>2011-12-02T18:14:25.711-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CDN'/><category scheme='http://www.blogger.com/atom/ns#' term='loader'/><category scheme='http://www.blogger.com/atom/ns#' term='LAB.js'/><category scheme='http://www.blogger.com/atom/ns#' term='yal.js'/><title type='text'>Once Again On Script Loaders</title><summary type='text'>It's a long story I would like to summarize in few concrete points ...Three Ways To Include A Script In Your PageFirst of all, you may not need loaders at all.Most likely you may need an easy to go and cross platform build process, and JSBuilder is only one of them.The Most Common PracticeThis way lets users download and visualize content first but it lets developers start the JS logic ASAP as </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/2757651763976605176/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/once-again-on-script-loaders.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2757651763976605176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2757651763976605176'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/once-again-on-script-loaders.html' title='Once Again On Script Loaders'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-5282390001181975872</id><published>2011-08-13T00:11:00.000-07:00</published><updated>2011-12-02T18:14:25.805-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='notification'/><category scheme='http://www.blogger.com/atom/ns#' term='JSONP'/><category scheme='http://www.blogger.com/atom/ns#' term='static'/><category scheme='http://www.blogger.com/atom/ns#' term='CDN'/><category scheme='http://www.blogger.com/atom/ns#' term='request'/><title type='text'>How To JSONP A Static File</title><summary type='text'>Update I have discussed this object a part and I agree that the url could be used as unique id as well.In this case the server should use the static url as unique id:StaticJSONP.notify("http://cdn.com/static/article/id.js",{..data..});So that on client side we can use the simplified signature:StaticJSONP.request(    "http://cdn.com/static/article/id.js",    function (uid, data) {    });The </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/5282390001181975872/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/how-to-jsonp-static-file.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5282390001181975872'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5282390001181975872'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/how-to-jsonp-static-file.html' title='How To JSONP A Static File'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8336563814797459518</id><published>2011-08-08T08:03:00.000-07:00</published><updated>2011-12-02T18:14:25.905-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='default'/><category scheme='http://www.blogger.com/atom/ns#' term='correct'/><category scheme='http://www.blogger.com/atom/ns#' term='way'/><category scheme='http://www.blogger.com/atom/ns#' term='assignment'/><title type='text'>Please Stop Reassigning For No Reason!</title><summary type='text'>I swear it is was a short one but a must write and yes, once again, since I keep seeing this kind of mistake everywhere!This is not about JavaScript, this is about programming whatever language you want ... if you do this, you are doing it wrong!The ProblemJS Engines developers are desperate! They are even posting how to help JIT compilers to go faster and developers seem to be so lazy that even </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8336563814797459518/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/please-stop-reassigning-for-no-reason.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8336563814797459518'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8336563814797459518'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/please-stop-reassigning-for-no-reason.html' title='Please Stop Reassigning For No Reason!'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3801482358439751300</id><published>2011-08-01T06:18:00.000-07:00</published><updated>2011-12-02T18:14:26.003-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bookmarklet'/><category scheme='http://www.blogger.com/atom/ns#' term='bit.ly'/><title type='text'>bit.ly bookmarklet</title><summary type='text'>bit.ly offers a proper sidebar bookmarklet but you need to sign in so, if you are really lazy and you want an easy way to shorten whatever page you are visiting, drag and drop next link into bookmarks and click it once whenever you want.bit.ly shortenerenjoy :)</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3801482358439751300/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/bitly-bookmarklet.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3801482358439751300'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3801482358439751300'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/08/bitly-bookmarklet.html' title='bit.ly bookmarklet'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-2127526691119281850</id><published>2011-07-29T05:24:00.000-07:00</published><updated>2011-12-02T18:14:26.095-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='limit'/><category scheme='http://www.blogger.com/atom/ns#' term='arguments'/><category scheme='http://www.blogger.com/atom/ns#' term='apply'/><category scheme='http://www.blogger.com/atom/ns#' term='fromCharCode'/><category scheme='http://www.blogger.com/atom/ns#' term='String'/><title type='text'>About JavaScript apply arguments limit</title><summary type='text'>Just a quick one from ECMAScript ml ... it is true that browsers may have a limited number of arguments per function. This may be actually a problem, specially when we use apply to invoke a generic function that accepts arbitrary number of arguments.String.fromCharCodeThis is a classic example that could fail with truly big collection of char codes and here my suggestion to avoid such limit:var </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/2127526691119281850/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/07/about-javascript-apply-arguments-limit.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2127526691119281850'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2127526691119281850'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/07/about-javascript-apply-arguments-limit.html' title='About JavaScript apply arguments limit'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4975556414519548807</id><published>2011-07-28T00:11:00.000-07:00</published><updated>2011-12-02T18:14:26.189-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Application'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS3'/><category scheme='http://www.blogger.com/atom/ns#' term='fuckn.es'/><category scheme='http://www.blogger.com/atom/ns#' term='stand alone'/><category scheme='http://www.blogger.com/atom/ns#' term='embedded'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><title type='text'>because shit happens</title><summary type='text'>When you spend half week of holidays recovering because of a dislocated shoulder, when you come back and spend 1 month recovering after a shoulder surgery, or for any other smaller or bigger shitty situation life could offer us, there is now a customisable way to express our anger: fuckn.es !100% Embedded HTML5 ApplicationOne project that always fascinated me is py2exe, an utility able to convert</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4975556414519548807/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/07/because-shit-happens.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4975556414519548807'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4975556414519548807'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/07/because-shit-happens.html' title='because shit happens'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-7000177174757288658</id><published>2011-07-11T12:39:00.000-07:00</published><updated>2011-12-02T18:14:26.284-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='setImmediate'/><category scheme='http://www.blogger.com/atom/ns#' term='CSS3'/><category scheme='http://www.blogger.com/atom/ns#' term='transitions'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='setTimeout'/><title type='text'>Random Rant On CSS3 Transitions</title><summary type='text'>UpdateThanks to @gregersrygg for his link and hints, this is a hackish way to solve the problem apparently cross browser and trustable ... still a hack!// this save one char, how cool is that!!function(document){        // (C) WebReflection (As It Is) - Mit Style        // we all love function declarations    function redraw() {                // clientHeight returns 0 if not present in the DOM</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/7000177174757288658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/07/random-rant-on-css3-transitions.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7000177174757288658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7000177174757288658'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/07/random-rant-on-css3-transitions.html' title='Random Rant On CSS3 Transitions'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-7889215169241924993</id><published>2011-07-05T12:23:00.000-07:00</published><updated>2011-12-02T18:14:26.377-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='base64'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='inline'/><title type='text'>Online Base 64 Converter</title><summary type='text'>Update apparently I am more than late since datauri.com does similar stuff ... oh well, better two options than nothing, right? Thanks @mathias for the update.Right, you may think this is the most useless thing ever but actually embedded content is freaking cool and this is the reason I have created a truly simple page in 3site.eu/base64.What The Hack Is ThatNothing truly special, you choose a </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/7889215169241924993/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/07/online-base-64-converter.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7889215169241924993'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7889215169241924993'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/07/online-base-64-converter.html' title='Online Base 64 Converter'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4843624081996389927</id><published>2011-06-24T08:13:00.000-07:00</published><updated>2011-12-02T18:14:26.475-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='JHP'/><category scheme='http://www.blogger.com/atom/ns#' term='experiment'/><title type='text'>JavaScript Hypertext Preprocessor</title><summary type='text'> well, the doctor said I can remove the tutor that was blocking my painful dislocated shoulder so here I am to test a "writing session" under pain killers from my bed!With such post title you may think that doctor was a shrink ... well, I let you figure it out after reading ;)About Hybrid Programming LanguagesWe all know CoffeScript, right? As well as Traceur Compiler ... right? These are what I </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4843624081996389927/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/06/javascript-hypertext-preprocessor.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4843624081996389927'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4843624081996389927'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/06/javascript-hypertext-preprocessor.html' title='JavaScript Hypertext Preprocessor'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-7530133358249219900</id><published>2011-06-05T10:05:00.000-07:00</published><updated>2011-12-02T18:14:26.566-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='use strict'/><category scheme='http://www.blogger.com/atom/ns#' term='ES5'/><category scheme='http://www.blogger.com/atom/ns#' term='ES3'/><title type='text'>ES5 and use strict</title><summary type='text'>UpdateThere was another article about it which has less examples but more complementary points or descriptions.Moreover, that page links to a specific use strict compatibility page, right now green only with Firefox Aurora and Google Chrome Canary.However, another page shows more use strict cases as well and Canary seems to miss one check while Webkit Nightly shows all green YES. Opera Next is </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/7530133358249219900/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/06/es5-and-use-strict.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7530133358249219900'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7530133358249219900'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/06/es5-and-use-strict.html' title='ES5 and use strict'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8832674460711632341</id><published>2011-06-03T03:31:00.000-07:00</published><updated>2011-12-02T18:14:26.664-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='partial'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='polyfills'/><title type='text'>Partial Polyfills</title><summary type='text'>This is a quick one already discussed during my recent workshop in Warsaw, a concept rarely considered or adopted from JS developers.What Are PolyfillsIf we are updated enough to know ECMAScript 5th Edition, we probably know all possible shims and fallbacks for Array extras as well (e.g. Array.prototype.forEach).Polyfills are simply snippets able to bring features already available for most </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8832674460711632341/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/06/partial-polyfills.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8832674460711632341'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8832674460711632341'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/06/partial-polyfills.html' title='Partial Polyfills'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4849355693506604024</id><published>2011-05-27T15:04:00.000-07:00</published><updated>2011-12-02T18:14:26.757-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JSLint'/><title type='text'>My Last Comments On JSLint</title><summary type='text'>PrefaceI have been working with many teams and I have used JSLint on daily basis. This post is not about the tool itself, neither against Douglas work, this post is about developers often too religious about this tool.Finally, if you follow this blog you have already read tons of other reasons to think rather than "suffer silently this tool".It's my last post about it and I hope "it will not hurt</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4849355693506604024/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/05/my-last-comments-on-jslint.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4849355693506604024'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4849355693506604024'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/05/my-last-comments-on-jslint.html' title='My Last Comments On JSLint'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-7268578509598832121</id><published>2011-05-24T15:56:00.000-07:00</published><updated>2011-12-02T18:14:26.853-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='YUICompressor'/><category scheme='http://www.blogger.com/atom/ns#' term='closure'/><category scheme='http://www.blogger.com/atom/ns#' term='Builder'/><category scheme='http://www.blogger.com/atom/ns#' term='Google'/><category scheme='http://www.blogger.com/atom/ns#' term='compiler'/><title type='text'>JavaScript Builder from Falsy Values</title><summary type='text'>Update: uglify-js as third optionThanks to @kitgoncharov JSBuilder now includes the option to run uglify-js through Rhino ... still cross platform, a builder for any taste.as promised during my workshop, I have created a Google Code Project with the builder used to demonstrate most advanced and common techniques to make a library, application, snippet, small and fast.What Is JSBuilderIt's a truly</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/7268578509598832121/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/05/javascript-builder-from-falsy-values.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7268578509598832121'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7268578509598832121'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/05/javascript-builder-from-falsy-values.html' title='JavaScript Builder from Falsy Values'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4780459820767459470</id><published>2011-05-24T10:06:00.000-07:00</published><updated>2011-12-02T18:14:26.947-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='arguments'/><category scheme='http://www.blogger.com/atom/ns#' term='setInterval'/><category scheme='http://www.blogger.com/atom/ns#' term='setTimeout'/><title type='text'>setTimeout and setInterval with extra arguments ... once again!</title><summary type='text'>Funny discussion today on twitter about "why on Earth IE still does not support extra arguments with setTimeout and setInterval" ... oh, well ...The execScript BehaviourSomebody in IE team thinks that the rest of the world should avoid extra arguments because of a bloody edge case as the third argument in IE is:// ... seriously ...setTimeout("Msgbox('WTF')", 0, "VBScript");What IE Users Could </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4780459820767459470/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/05/settimeout-and-setinterval-with-extra.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4780459820767459470'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4780459820767459470'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/05/settimeout-and-setinterval-with-extra.html' title='setTimeout and setInterval with extra arguments ... once again!'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-2174487353811417459</id><published>2011-05-22T10:58:00.000-07:00</published><updated>2011-12-02T18:14:27.038-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Twitter'/><category scheme='http://www.blogger.com/atom/ns#' term='140'/><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><category scheme='http://www.blogger.com/atom/ns#' term='bytes'/><title type='text'>size maniacs or just twitterable examples ?</title><summary type='text'>maybe both, but I like the idea!Many times I have added something like #tweetcode at the end of a tweet created with the single goal to be small enough for ... well, a tweet!@jedschmidt bought a spanish domain called 140byt.es based over github forks in order to provide all sort of tweets that may solve a specific problem in an efficient way: it kinda work on copy and paste!Kinda ... because </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/2174487353811417459/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/05/size-maniacs-or-just-twitterable.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2174487353811417459'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2174487353811417459'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/05/size-maniacs-or-just-twitterable.html' title='size maniacs or just twitterable examples ?'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8288845316971291351</id><published>2011-04-17T23:36:00.000-07:00</published><updated>2011-12-02T18:14:27.129-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='buzz'/><category scheme='http://www.blogger.com/atom/ns#' term='WebGL'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='IE10'/><category scheme='http://www.blogger.com/atom/ns#' term='IE9'/><title type='text'>Native HTML5, the new IE6, and bla bla bla ...</title><summary type='text'>I don't know about you guys, but I am kinda bored by all these news and tweets against Microsoft ... don't get me wrong please, you may have realized over these years I have rarely been that nice with M$ products, but there is time to complain, and time time to move forward and appreciate, at least, what we have now compared with what it was 10 years ago.IE6 is Death, Long Life to IE6Back in time</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8288845316971291351/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/04/native-html5-new-ie6-and-bla-bla-bla.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8288845316971291351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8288845316971291351'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/04/native-html5-new-ie6-and-bla-bla-bla.html' title='Native HTML5, the new IE6, and bla bla bla ...'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-6411897548842123756</id><published>2011-04-08T15:06:00.000-07:00</published><updated>2011-12-02T18:14:27.219-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='falsy'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='performances'/><category scheme='http://www.blogger.com/atom/ns#' term='values'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScirpt'/><title type='text'>ES5 NOW! ... or better, @falsyvalues</title><summary type='text'>Update more than a person asked me more details and here I am: The workshop will be Thursday 19th of May on Track 3 and from 9am to 5pm. Registrations open at 8am and to be sure everything I have written is correct, please double check the schedule.This time is not about my uncle, this time is about my workshop in Warsaw, during Falsy Values Event, and this is its description:Massive rumours </summary><link rel='related' href='http://falsyvalues.com/speakers.html#andrea-giammarchi' title='ES5 NOW! ... or better, @falsyvalues'/><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/6411897548842123756/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/04/es5-now-or-better-falsyvalues.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6411897548842123756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6411897548842123756'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/04/es5-now-or-better-falsyvalues.html' title='ES5 NOW! ... or better, @falsyvalues'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4388216801180134221</id><published>2011-04-02T01:54:00.000-07:00</published><updated>2011-12-02T18:14:27.317-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='KISS'/><category scheme='http://www.blogger.com/atom/ns#' term='restaurant'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='YAGNI'/><category scheme='http://www.blogger.com/atom/ns#' term='tuscany'/><category scheme='http://www.blogger.com/atom/ns#' term='London'/><title type='text'>See You There HTML5</title><summary type='text'>My uncle Paolo opened an Italian Restaurant in London, New Barnet, and I have been there few weeks ago to visit him and bring him my congratulations.While this is absolutely not technical, the story I would like to tell you is ...The Real Beauty Of The WebHTML5 is probably the most overrated buzz word since the Web started existing, most likely even more misunderstood than Ajax therm </summary><link rel='related' href='http://see-you-there.co.uk/' title='See You There HTML5'/><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4388216801180134221/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/04/see-you-there-html5.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4388216801180134221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4388216801180134221'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/04/see-you-there-html5.html' title='See You There HTML5'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3521581343222713370</id><published>2011-03-29T13:05:00.000-07:00</published><updated>2011-12-02T18:14:27.413-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='VBScript'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='VBClass'/><category scheme='http://www.blogger.com/atom/ns#' term='getter'/><category scheme='http://www.blogger.com/atom/ns#' term='setter'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScirpt'/><title type='text'>Rewind: getters &amp; setters for all IE with cross browser VBClass!</title><summary type='text'>spoiler: if once again everybody knew except me, you guys should do something to be better indexed in Google ... while if this is totally new and cool, well, you are welcome :)Sometimes I am stubborn, so stubborn, that even if it was me writing this post, and this one after, I have never given up about IE &lt; 9 getters and setters ... "there must be a way", I have thought during last days, and ... </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3521581343222713370/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/03/rewind-getters-setters-for-all-ie-with.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3521581343222713370'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3521581343222713370'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/03/rewind-getters-setters-for-all-ie-with.html' title='Rewind: getters &amp;amp; setters for all IE with cross browser VBClass!'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4168728232258522355</id><published>2011-03-16T04:09:00.000-07:00</published><updated>2011-12-02T18:14:27.511-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='defineHybridProperty'/><category scheme='http://www.blogger.com/atom/ns#' term='ES5'/><category scheme='http://www.blogger.com/atom/ns#' term='ES3'/><category scheme='http://www.blogger.com/atom/ns#' term='defineProperty'/><title type='text'>Object.defineHybridProperty</title><summary type='text'>Update Yes, I did it: getters and setters for IE &lt; 9 and other browsersAfter my early Hooorrayyyy! about compatible IE &lt; 9 getters and setters, I have been experimenting a bit more on how to solve the JSObject to VBVariant and vice-versa assignment and the result was an horrendous monster loads of potential memory leaks and performances implications for the already slow bounce of browsers such </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4168728232258522355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/03/objectdefinehybridproperty.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4168728232258522355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4168728232258522355'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/03/objectdefinehybridproperty.html' title='Object.defineHybridProperty'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-2397334611459380290</id><published>2011-02-23T10:32:00.000-08:00</published><updated>2011-12-02T18:14:27.605-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='IE8'/><category scheme='http://www.blogger.com/atom/ns#' term='ie'/><category scheme='http://www.blogger.com/atom/ns#' term='getter'/><category scheme='http://www.blogger.com/atom/ns#' term='setter'/><category scheme='http://www.blogger.com/atom/ns#' term='Object.createStatic'/><category scheme='http://www.blogger.com/atom/ns#' term='ie7'/><category scheme='http://www.blogger.com/atom/ns#' term='IE6'/><title type='text'>...btw, getters &amp; setters for IE 6, 7, and 8 (almost!) : Object.createStatic</title><summary type='text'>Update Yes, I did it: getters and setters for IE &lt; 9 and other browsersUpdate apparently Dojo framework explored this stuff before meRe-Update: More limitations!!!Apparently I have said "Hooray!" too early, @_bga told me that this way is compatible with primitives only since the moment we have a property with an object or a function, this will converted into string.So: don't return objects or </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/2397334611459380290/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/02/btw-getters-setters-for-ie-6-7-and-8.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2397334611459380290'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2397334611459380290'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/02/btw-getters-setters-for-ie-6-7-and-8.html' title='...btw, getters &amp;amp; setters for IE 6, 7, and 8 (almost!) : Object.createStatic'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-303671944891119474</id><published>2011-02-16T10:55:00.000-08:00</published><updated>2011-12-02T18:14:27.697-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='JSONP'/><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='essential'/><title type='text'>All You Need for JSONP</title><summary type='text'>I have just uploaded a truly simple, still robust, function able to do generic JSONP without pretending too much magic.The concept is simple, we pass the url, including the parameter name used to communicate the callback name, and a callback as second argument ... that's it, 202 216 bytes minified and gzipped ( many thanks @jdalton for the catch )Here an example:&lt;!-- the generic HTML page --&gt;&lt;</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/303671944891119474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/02/all-you-need-for-jsonp.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/303671944891119474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/303671944891119474'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/02/all-you-need-for-jsonp.html' title='All You Need for JSONP'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1729593054649423614</id><published>2011-01-30T02:18:00.000-08:00</published><updated>2011-12-02T18:14:27.789-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='5.3.5'/><category scheme='http://www.blogger.com/atom/ns#' term='PAMPA-J'/><category scheme='http://www.blogger.com/atom/ns#' term='upgrade'/><title type='text'>PHP 5.3.5 Update on PAMPA-J</title><summary type='text'>Quick post, for one of those 7000 developers that use PAMPA, there is a new zip upgrade to download able to bring PHP 5.3.5 in your PAMPA folder.The structure inside this zip is the same one, the service should be stopped or quitted before you can extract and replace all files.Please backup your current php.ini file, inside PAMPA/config folder, in order to eventually update the new version or </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1729593054649423614/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/01/php-535-update-on-pampa-j.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1729593054649423614'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1729593054649423614'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/01/php-535-update-on-pampa-j.html' title='PHP 5.3.5 Update on PAMPA-J'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8221363832623564676</id><published>2011-01-25T00:09:00.000-08:00</published><updated>2011-12-02T18:14:27.880-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Harmony'/><category scheme='http://www.blogger.com/atom/ns#' term='ES6'/><category scheme='http://www.blogger.com/atom/ns#' term='let'/><category scheme='http://www.blogger.com/atom/ns#' term='ES5'/><title type='text'>ES6, Harmony, and JS++</title><summary type='text'>... where JS++ is simply metaphoric, in the meaning of "empowered JS" :)Here the slides I have showed last friday during another team meeting, enjoy!</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8221363832623564676/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/01/es6-harmony-and-js.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8221363832623564676'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8221363832623564676'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/01/es6-harmony-and-js.html' title='ES6, Harmony, and JS++'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-7662386724336491072</id><published>2011-01-21T15:59:00.000-08:00</published><updated>2011-12-02T18:14:27.973-08:00</updated><title type='text'>What I Will Never Get ...</title><summary type='text'>... is why non technical people are often making technical decisions. And this is, my developer friend, what you may face during your path ...An unusual topic for this tech blog, a hopefully real case scenario for all those developers out there: don't believe in the startup concept, as well as don't believe in the corporate concept too much; just feel your skills, and move forward!</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/7662386724336491072/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2011/01/what-i-will-never-get.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7662386724336491072'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7662386724336491072'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2011/01/what-i-will-never-get.html' title='What I Will Never Get ...'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-221613549206938005</id><published>2010-12-27T14:30:00.000-08:00</published><updated>2011-12-02T18:14:28.064-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Adapter'/><category scheme='http://www.blogger.com/atom/ns#' term='Listener'/><category scheme='http://www.blogger.com/atom/ns#' term='Observer'/><category scheme='http://www.blogger.com/atom/ns#' term='Builder'/><category scheme='http://www.blogger.com/atom/ns#' term='pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='Multiton'/><category scheme='http://www.blogger.com/atom/ns#' term='Composite'/><category scheme='http://www.blogger.com/atom/ns#' term='prototype'/><category scheme='http://www.blogger.com/atom/ns#' term='Factory'/><category scheme='http://www.blogger.com/atom/ns#' term='Singleton'/><title type='text'>ES5 Common Design Patterns Examples - Part 1</title><summary type='text'>// Abstract Factory/* ({}).createInstance()  (function (a, b, c) {  this.sum = a + b + c; }).createInstance([1, 2, 3]) */Object.defineProperty( // (C) WebReflection - Mit Style License Object.prototype, "createInstance", {  value: (function (create) {   return function createInstance(args) {    var     self = this,     isFunction = typeof self == "function",     obj = create(isFunction ? </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/221613549206938005/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/12/es5-common-design-patterns-examples.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/221613549206938005'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/221613549206938005'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/12/es5-common-design-patterns-examples.html' title='ES5 Common Design Patterns Examples - Part 1'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4031495205827330710</id><published>2010-12-26T01:24:00.000-08:00</published><updated>2011-12-02T18:14:28.155-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='file'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScirpt'/><category scheme='http://www.blogger.com/atom/ns#' term='canvas'/><category scheme='http://www.blogger.com/atom/ns#' term='resize'/><category scheme='http://www.blogger.com/atom/ns#' term='Image'/><title type='text'>100% Client Side Image Resizing</title><summary type='text'>... I know, I have said "Happy Holidays" already, but yesterday, after a (annoying) picture upload in Facebook, I had a an idea ... why on earth I should have a Java plugin to perform images resizes on Facebook? Why on earth if I don't have such plugin I have to wait the possibly extremely long upload, up to 10x slower for high quality images, stressing Facebook servers for such "simple" </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4031495205827330710/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/12/100-client-side-image-resizing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4031495205827330710'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4031495205827330710'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/12/100-client-side-image-resizing.html' title='100% Client Side Image Resizing'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3356507942500782759</id><published>2010-12-24T09:17:00.000-08:00</published><updated>2011-12-02T18:14:28.253-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='FX'/><category scheme='http://www.blogger.com/atom/ns#' term='snow'/><category scheme='http://www.blogger.com/atom/ns#' term='new year'/><category scheme='http://www.blogger.com/atom/ns#' term='holidays'/><title type='text'>Happy Holidays</title><summary type='text'>I'd like to recycle this good old experiment to wish all WR readers nice holidays, if any :DSee you soon next year with new web development adventures ;)</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3356507942500782759/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/12/happy-holidays.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3356507942500782759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3356507942500782759'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/12/happy-holidays.html' title='Happy Holidays'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-801603983534979247</id><published>2010-12-24T01:43:00.000-08:00</published><updated>2011-12-02T18:14:28.360-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Web'/><category scheme='http://www.blogger.com/atom/ns#' term='mobile'/><category scheme='http://www.blogger.com/atom/ns#' term='performances'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>The Status of Mobile Browsing</title><summary type='text'>In this year I have done more tests than ever over all these tiny and shiny portable devices and I'd like to share with the Web community the result of my experiments at the end of this 2010. "why not before xmas, ffs?" ... because whatever you bought as present for you or your relatives, will hopefully be updated soon with latest systems and related browsers :)The Dedicated WebKit ... Nightmare!</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/801603983534979247/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/12/status-of-mobile-browsing.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/801603983534979247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/801603983534979247'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/12/status-of-mobile-browsing.html' title='The Status of Mobile Browsing'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1290872039824595829</id><published>2010-11-01T15:22:00.000-07:00</published><updated>2011-12-02T18:14:28.460-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><category scheme='http://www.blogger.com/atom/ns#' term='epic'/><category scheme='http://www.blogger.com/atom/ns#' term='UX'/><category scheme='http://www.blogger.com/atom/ns#' term='navigator'/><category scheme='http://www.blogger.com/atom/ns#' term='language'/><title type='text'>UX vs IP Based Language</title><summary type='text'>I start being sick of this epic fail and many famous website do this ... I am Italian, I am living in Germany, but my OS as every software or device I have is in English ( and I don't know German yet ) !The ProblemIf you live in your country and you have software in your own language, you probably never spotted what I am talking about. Actually, what you have probably appreciated instead, is the </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1290872039824595829/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/11/ux-vs-ip-based-language.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1290872039824595829'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1290872039824595829'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/11/ux-vs-ip-based-language.html' title='UX vs IP Based Language'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-2714309063865869085</id><published>2010-10-25T11:05:00.000-07:00</published><updated>2011-12-02T18:14:28.559-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='coercion'/><category scheme='http://www.blogger.com/atom/ns#' term='myth'/><title type='text'>JavaScript Coercion Demystified</title><summary type='text'>This post is another complementary one for my front-trends slides, about performances and security behind sth == null rather than classic sth === null || sth === undefined.I have already discussed about this in my JSLint: The Bad Part post but I have never gone deeper into this argument.Falsy ValuesIn JavaScript, and not only JavaScript, we have so called falsy values. These are respectively: 0, </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/2714309063865869085/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/javascript-coercion-demystified.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2714309063865869085'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2714309063865869085'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/javascript-coercion-demystified.html' title='JavaScript Coercion Demystified'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8359936766354360795</id><published>2010-10-24T12:33:00.000-07:00</published><updated>2011-12-02T18:14:28.655-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Libraries'/><category scheme='http://www.blogger.com/atom/ns#' term='performances'/><category scheme='http://www.blogger.com/atom/ns#' term='mini'/><category scheme='http://www.blogger.com/atom/ns#' term='opera'/><category scheme='http://www.blogger.com/atom/ns#' term='browser'/><title type='text'>The Layer ... Of The Layer ... Of The Layer ...</title><summary type='text'>When I read tweets like this one I cannot avoid a quick comment but the reason I am posting, is simply to explain that every time we write a web page/application, we are dealing with at least 4 different layers.Moreover, this post is complementary for few slides I have introduced at front-trends, specially regarding the "avoid classic OOP emulation when not necessary" point.Layer #1: JavaScript </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8359936766354360795/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/layer-of-layer-of-layer.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8359936766354360795'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8359936766354360795'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/layer-of-layer-of-layer.html' title='The Layer ... Of The Layer ... Of The Layer ...'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-6321906831318022235</id><published>2010-10-21T04:37:00.000-07:00</published><updated>2011-12-02T18:14:28.751-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Trends'/><category scheme='http://www.blogger.com/atom/ns#' term='ft2010'/><category scheme='http://www.blogger.com/atom/ns#' term='2010'/><category scheme='http://www.blogger.com/atom/ns#' term='Front'/><category scheme='http://www.blogger.com/atom/ns#' term='WebReflection'/><category scheme='http://www.blogger.com/atom/ns#' term='talk'/><title type='text'>Front Trends 2010 - My Talk</title><summary type='text'>My talk is finished, there were probably too stuff to talk about and it was hard to make a clear point, but I am willing to better explain myself posting here about main points.Slides without me trying to show stuff online do not probably make much sense but these are here: ft2010 WebReflection SlidesThe benchmark I have showed that should run in any browser ( at least those A grade ) is here. </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/6321906831318022235/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/front-trends-2010-my-talk.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6321906831318022235'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6321906831318022235'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/front-trends-2010-my-talk.html' title='Front Trends 2010 - My Talk'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-2720091615545345140</id><published>2010-10-17T02:09:00.000-07:00</published><updated>2011-12-02T18:14:28.842-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='grant'/><category scheme='http://www.blogger.com/atom/ns#' term='reader'/><category scheme='http://www.blogger.com/atom/ns#' term='access'/><category scheme='http://www.blogger.com/atom/ns#' term='scree'/><category scheme='http://www.blogger.com/atom/ns#' term='html5'/><category scheme='http://www.blogger.com/atom/ns#' term='GeoLocation'/><category scheme='http://www.blogger.com/atom/ns#' term='meta'/><title type='text'>Pre Authorization Meta Tag Proposal</title><summary type='text'>Under the HTML5 flag, browsers are bringing to our desktops or devices exciting features such GeoLocation, File, and many others such camera, microphone, system access, etc ...The ProblemWhile this is good from possibilities point of view, the activation approach historically sucks. Flash and it's video or microphone activation shows a dialog that asks the user to authorize media access while </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/2720091615545345140/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/pre-authorization-meta-tag-proposal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2720091615545345140'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2720091615545345140'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/pre-authorization-meta-tag-proposal.html' title='Pre Authorization Meta Tag Proposal'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4496707657620745490</id><published>2010-10-15T12:33:00.000-07:00</published><updated>2011-12-02T18:14:28.936-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='patterns'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='advanced'/><category scheme='http://www.blogger.com/atom/ns#' term='programming'/><category scheme='http://www.blogger.com/atom/ns#' term='book'/><title type='text'>Technical Reviews: Bestsellers!</title><summary type='text'>Just a quick one about two technical reviews out of two I have recently done for @stoyanstefanov and @cjno for these completely different books: JavaScript Patterns and Test-Driven JavaScript Development.Right now these are both Top 10 Bestsellers and trust me: other JavaScript Jedis have been involved, you won't regret these lectures! ;-)</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4496707657620745490/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/technical-reviews-bestsellers.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4496707657620745490'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4496707657620745490'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/technical-reviews-bestsellers.html' title='Technical Reviews: Bestsellers!'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-6284341987267554436</id><published>2010-10-05T13:31:00.000-07:00</published><updated>2011-12-02T18:14:29.029-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bin'/><category scheme='http://www.blogger.com/atom/ns#' term='jsc'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScriptCore'/><category scheme='http://www.blogger.com/atom/ns#' term='console'/><title type='text'>JavaScriptCore via Terminal</title><summary type='text'>Just a quick one, maybe only for a new Mac comer as I am, I found truly annoying I have already Python, Ruby, and even PHP everywhere available in my command line but not JavaScript?What The FuckEven Windows runs .js files natively and since ages, I wonder why on earth after I have downlaoded the whole XCode SDK "my JavaScript" was not there available for all my needs.OK, OK, node.js is already </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/6284341987267554436/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/javascriptcore-via-terminal.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6284341987267554436'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6284341987267554436'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/javascriptcore-via-terminal.html' title='JavaScriptCore via Terminal'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3782215650467283607</id><published>2010-10-02T08:28:00.000-07:00</published><updated>2011-12-02T18:14:29.124-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fail'/><category scheme='http://www.blogger.com/atom/ns#' term='mini'/><category scheme='http://www.blogger.com/atom/ns#' term='Macro'/><category scheme='http://www.blogger.com/atom/ns#' term='Apple'/><title type='text'>Apple UX Fails with Mac Mini</title><summary type='text'>UpdateFollowing Daniel suggestion (first comment), I have grabbed a cabled keyboard and a cabled mouse from a colleague and I have been able to finish the initial procedure. Happy to be a Mac Mini user now, it works like a charm!as tweeted already, apparently there's no way I can buy a dishwasher. Last time I almost came back home with a pretty cool Samsung Blue Ray Player ... but I bought </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3782215650467283607/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/apple-ux-fails-with-mac-mini.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3782215650467283607'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3782215650467283607'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/apple-ux-fails-with-mac-mini.html' title='Apple UX Fails with Mac Mini'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-2923717460999518744</id><published>2010-10-02T03:52:00.000-07:00</published><updated>2011-12-02T18:14:29.214-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='wru'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><category scheme='http://www.blogger.com/atom/ns#' term='Framework'/><title type='text'>wru against wru: version 1 ready</title><summary type='text'>This shot has been token on 13th September 1923, when W.H. Murphy demonstrated the efficiency of his bulletproof vest, the one that sold later to NY Police Department.Above image has been historically used for different topics and the current one is "how much we trust what we sell".Do You Trust Your UT Framework?I wasn't kidding that much when I wrote about "test the testing framework" in my </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/2923717460999518744/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/wru-against-wru-version-1-ready.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2923717460999518744'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2923717460999518744'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/10/wru-against-wru-version-1-ready.html' title='wru against wru: version 1 ready'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-5043856348789897656</id><published>2010-09-27T15:24:00.000-07:00</published><updated>2011-12-02T18:14:29.308-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='host objects'/><category scheme='http://www.blogger.com/atom/ns#' term='broken'/><category scheme='http://www.blogger.com/atom/ns#' term='opera'/><title type='text'>Opera, Inevitably Unexpected</title><summary type='text'>UpdateOpera fellas works at speed light, the problem described in this post has been patched already, great stuff and thanks!Just a quick one, about what I have discovered with Opera 10.62 when I have tested wru against this browser ...// host objectvar xhr = new XMLHttpRequest;// this is truealert("addEventListener" in xhr);// this is undefined// not even null// simply undefined!!!alert(</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/5043856348789897656/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/opera-inevitably-unexpected.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5043856348789897656'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5043856348789897656'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/opera-inevitably-unexpected.html' title='Opera, Inevitably Unexpected'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1598367921421743724</id><published>2010-09-27T11:54:00.000-07:00</published><updated>2011-12-02T18:14:29.401-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Unit Test'/><title type='text'>WRU: My New Tiny Unit Test Library</title><summary type='text'>The last and only developer able to let me fully appreciate the beauty of Test-Driven JavaScript Development has been @cjno, but regular "fights" with @mrgnrdrck and @sleistner have always helped me as well ;)This post is about my tiny wru library and general thoughts about JavaScript Unit Test Frameworks.WRU: Essentials Asynchronous TestsThe wru library is a copy and paste matter, and it is </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1598367921421743724/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/wru-my-new-tiny-unit-test-library.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1598367921421743724'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1598367921421743724'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/wru-my-new-tiny-unit-test-library.html' title='WRU: My New Tiny Unit Test Library'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-6292439632829115832</id><published>2010-09-26T16:13:00.000-07:00</published><updated>2011-12-02T18:14:29.497-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='JSConf'/><category scheme='http://www.blogger.com/atom/ns#' term='Berlin'/><title type='text'>@jsconfeu after parties epilogue</title><summary type='text'>too bad I wasn't planning to be in Berlin this week end for this conference, and too cool I have been able at least to meet such crowd of JS pirates after the conference!This post is about what I have found in JSConf.eu "after events", and I do believe it should be shared.Great To Meet You AllHeroes, colleagues, "just developers", it does not really matter! Everybody I have talked with was in the</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/6292439632829115832/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/jsconfeu-after-parties-epilogue.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6292439632829115832'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6292439632829115832'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/jsconfeu-after-parties-epilogue.html' title='@jsconfeu after parties epilogue'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-2873327513799080076</id><published>2010-09-26T10:31:00.000-07:00</published><updated>2011-12-02T18:14:29.594-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='promotion'/><category scheme='http://www.blogger.com/atom/ns#' term='MDC'/><title type='text'>Promote JS!</title><summary type='text'>From JSConf.eu a nice initiative to better promote JSINJ thanks to MDC documentation.I would like to share my thoughts about the initiative:it's time for developers to understand that if they know a library (e.g. jQuery) it does not mean they know JavaScript. Too often I have talked with "JS Developers" unable to add a simple DOM listener in a W3/IE way. This initiative may eventually bring to </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/2873327513799080076/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/promote-js.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2873327513799080076'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/2873327513799080076'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/promote-js.html' title='Promote JS!'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-112931833019767703</id><published>2010-09-20T12:08:00.000-07:00</published><updated>2011-12-02T18:14:29.685-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Shaders'/><category scheme='http://www.blogger.com/atom/ns#' term='Ajax'/><category scheme='http://www.blogger.com/atom/ns#' term='WebGL'/><category scheme='http://www.blogger.com/atom/ns#' term='load'/><category scheme='http://www.blogger.com/atom/ns#' term='asynchronous'/><title type='text'>Fragment and Vertex Shaders: My Way To Load</title><summary type='text'>I have finally received the fifth and amazing version of the OpenGL SuperBible book and I have already started digging into it, really well done for what I can tell.The book is mainly focused on "real OpenGL development", something surely more suitable for tough C/C++ developers rather than Web Monkeys like me but since the book includes an OpenGL ES 2.0 related part, and since latter spec is </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/112931833019767703/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/fragment-and-vertex-shaders-my-way-to.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/112931833019767703'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/112931833019767703'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/fragment-and-vertex-shaders-my-way-to.html' title='Fragment and Vertex Shaders: My Way To Load'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4137183771862501437</id><published>2010-09-15T12:51:00.000-07:00</published><updated>2011-12-02T18:14:29.788-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='challenge'/><category scheme='http://www.blogger.com/atom/ns#' term='Rebecca Murphey'/><title type='text'>The Rebecca Murphey's Challenge</title><summary type='text'>What is the best/easiest way to understand if a {{ProgrammingLanguage}} developer is a {{ProgrammingLanguage}} dev and not simply a CV bloater?A Technical TestNothing simpler than this, and this is what @rmurphey has recently done with a nice JavaScript challenge published on GitHub.Unfortunately in some country (Italy as example) IT is still a matter of piece of paper for whatever {{</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4137183771862501437/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/rebecca-murphey-challenge.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4137183771862501437'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4137183771862501437'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/rebecca-murphey-challenge.html' title='The Rebecca Murphey&amp;#39;s Challenge'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1071519218714007957</id><published>2010-09-09T11:31:00.000-07:00</published><updated>2011-12-02T18:14:29.889-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='protected'/><category scheme='http://www.blogger.com/atom/ns#' term='scope'/><category scheme='http://www.blogger.com/atom/ns#' term='properties'/><category scheme='http://www.blogger.com/atom/ns#' term='private'/><title type='text'>JavaScript Protected Properties</title><summary type='text'>Imagine this simple piece of code:var obj = {    _name: "protected",    gimmeName: function () {        return this._name;    }};obj.gimmeName(); // "protected"obj._name; // throws new Errrornow, imagine I have the simplest solution ever, compatible with both ES5 and ES3 genric implementations ... now please keep reading to know a bit of background :)The JS Meaning Of ProtectedJS developers know </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1071519218714007957/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/javascript-protected-properties.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1071519218714007957'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1071519218714007957'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/09/javascript-protected-properties.html' title='JavaScript Protected Properties'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3542440588365744924</id><published>2010-08-20T05:31:00.000-07:00</published><updated>2011-12-02T18:14:29.983-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='type'/><category scheme='http://www.blogger.com/atom/ns#' term='check'/><category scheme='http://www.blogger.com/atom/ns#' term='defineProperty'/><category scheme='http://www.blogger.com/atom/ns#' term='Strict'/><title type='text'>Object.defineProperty ... but Strict!</title><summary type='text'>In my precedent post entitled A Pascal record via JavaScript I have showed a basic function able to emulate type hints behavior via JavaScript.Even if that was a proof of concept, I consider other languages simulation of unsupported features an error, first of all because the behavior will rarely be exactly the expected one, secondly because our curent programming language may already have </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3542440588365744924/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/08/objectdefineproperty-but-strict.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3542440588365744924'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3542440588365744924'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/08/objectdefineproperty-but-strict.html' title='Object.defineProperty ... but Strict!'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-109079944040940281</id><published>2010-08-18T05:32:00.000-07:00</published><updated>2011-12-02T18:14:30.080-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='record'/><category scheme='http://www.blogger.com/atom/ns#' term='Pascal'/><category scheme='http://www.blogger.com/atom/ns#' term='emulation'/><title type='text'>A Pascal record via JavaScript</title><summary type='text'>... all right, I am off for holidays and I won't have probably time to write the post I have twitted a few days ago since it could take a whole day ... however, I am "cleaning" my good old room here in Italy and I have found an Italian book titled "ALGORITMI IN PASCAL" (Pascal Algorithms) a back in 1987 IT book for secondary school.I could not resist to read it entirely, just to see what kind of </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/109079944040940281/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/08/pascal-record-via-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/109079944040940281'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/109079944040940281'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/08/pascal-record-via-javascript.html' title='A Pascal record via JavaScript'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-7627572947391160328</id><published>2010-07-31T10:08:00.000-07:00</published><updated>2011-12-02T18:14:30.172-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='tesla'/><category scheme='http://www.blogger.com/atom/ns#' term='lightning'/><category scheme='http://www.blogger.com/atom/ns#' term='FX'/><category scheme='http://www.blogger.com/atom/ns#' term='effect'/><title type='text'>Tesla Experiment, aka JavaScript Lightnings</title><summary type='text'>Hardware Accelerated Browsers are a great step forward for Web potentials, but not all of them are able to accelerate properly the canvas element.When it comes to performances, we should be aware about those practices able to slow down consistently not that powerful devices such Netbooks and smart pad or phones.The Tesla ExperimentThis demo has a mere entertainment purpose and it is specially </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/7627572947391160328/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/07/tesla-experiment-aka-javascript.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7627572947391160328'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/7627572947391160328'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/07/tesla-experiment-aka-javascript.html' title='Tesla Experiment, aka JavaScript Lightnings'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4021217858317769742</id><published>2010-07-27T13:16:00.000-07:00</published><updated>2011-12-02T18:14:30.265-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='injection'/><category scheme='http://www.blogger.com/atom/ns#' term='prototype'/><title type='text'>Constructorification</title><summary type='text'>... he he, I know the title could not be worst, but after my last post about Arrayfication I have thought: "... hey, the Thing.ify(object) could be more than handy in many occasions such mixins and duck typing ...".So, let me introduce the Function.prototype method that nobody will ever use:Function.prototype.ify = function (o) {    for (var        self = this,        p = self.prototype,        /</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4021217858317769742/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/07/constructorification.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4021217858317769742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4021217858317769742'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/07/constructorification.html' title='Constructorification'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-555099248640265405</id><published>2010-07-26T15:13:00.000-07:00</published><updated>2011-12-02T18:14:30.355-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Array'/><category scheme='http://www.blogger.com/atom/ns#' term='prototype'/><category scheme='http://www.blogger.com/atom/ns#' term='convertion'/><category scheme='http://www.blogger.com/atom/ns#' term='slice'/><title type='text'>Array.prototype.slice  VS Arrayfication</title><summary type='text'>One of the most common operations performed on daily basis directly or indirectly via frameworks and libraries is Array.prototype.slice calls over non Array elements such HTMLCollection, NodeList, and Arguments.Why We Perform Such OperationThe Function.prototype.apply works only with object created through the [[Class]] Array or Arguments.In latter case we may like to avoid ES3 arguments and </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/555099248640265405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/07/arrayprototypeslice-vs-arrayfication.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/555099248640265405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/555099248640265405'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/07/arrayprototypeslice-vs-arrayfication.html' title='Array.prototype.slice  VS Arrayfication'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8292345905590973038</id><published>2010-07-01T10:12:00.000-07:00</published><updated>2011-12-02T18:14:30.455-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='fatal'/><category scheme='http://www.blogger.com/atom/ns#' term='exit'/><category scheme='http://www.blogger.com/atom/ns#' term='errors'/><category scheme='http://www.blogger.com/atom/ns#' term='FatalError'/><title type='text'>JavaScript FatalError</title><summary type='text'>just in case at some point you decide to break everything, regardless possible try catches around ...function FatalError(message, file, line){    function toString() {        throw e;    }    var e = this;    e["@message"] = message;    e["@file"] = file || e.file || e.fileName;    e["@line"] = line || e.line || e.lineNumber;    if ("__defineGetter__" in e) {        e.__defineGetter__("message", </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8292345905590973038/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/07/javascript-fatalerror.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8292345905590973038'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8292345905590973038'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/07/javascript-fatalerror.html' title='JavaScript FatalError'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8024508781868671425</id><published>2010-06-30T11:02:00.000-07:00</published><updated>2011-12-02T18:14:30.546-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='practices'/><category scheme='http://www.blogger.com/atom/ns#' term='bad'/><category scheme='http://www.blogger.com/atom/ns#' term='performances'/><title type='text'>JavaScript Random Hints</title><summary type='text'>Update some point has been made more clear, thanks to Dmitry Soshnikov for suggestions.Forget the global undefinedToo many developers relies into undefined variable in ES3, and all they should do is to set undefined = true on global scope and see if the application or all unit tests break or not. I am going to demonstrate how simple is, at least in ES3, to redefine by mistake the global undefined</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8024508781868671425/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/06/javascript-random-hints.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8024508781868671425'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8024508781868671425'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/06/javascript-random-hints.html' title='JavaScript Random Hints'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4782310495113461122</id><published>2010-06-03T16:19:00.000-07:00</published><updated>2011-12-02T18:14:30.641-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='handshake'/><category scheme='http://www.blogger.com/atom/ns#' term='WebSocket'/><category scheme='http://www.blogger.com/atom/ns#' term='draft 76'/><title type='text'>WebSocket Handshake 76 Simplified</title><summary type='text'>updatethere was a superfluous CR+LN with char 0x00 that was causing buffer troubles, now fixedI am working during my free time (... recently extremely hard to have ...) over a little project that I'd like to show at the Front Trends event this October and WebSocket is the key of this project.While 2 days ago I eventually found a way to communicate in few lines of php with a WebSocket, yesterday </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4782310495113461122/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/06/websocket-handshake-76-simplified.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4782310495113461122'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4782310495113461122'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/06/websocket-handshake-76-simplified.html' title='WebSocket Handshake 76 Simplified'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-6476368562529630338</id><published>2010-05-02T08:47:00.000-07:00</published><updated>2011-12-02T18:14:30.732-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='Application'/><category scheme='http://www.blogger.com/atom/ns#' term='Event'/><category scheme='http://www.blogger.com/atom/ns#' term='Listener'/><category scheme='http://www.blogger.com/atom/ns#' term='driven'/><title type='text'>Event driven application and the most basic Listener module</title><summary type='text'>Event driven programming is a common technique particularly common in JavaScript applications.WhenThe most classic application is the one with DOM and assigned listeners.We have basically no idea about "what happens when" and we delegate asynchronous logic to our listeners, waiting for user actions.This kind of approach could be implemented in whatever application creating a chain of events or </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/6476368562529630338/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/05/event-driven-application-and-most-basic.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6476368562529630338'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6476368562529630338'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/05/event-driven-application-and-most-basic.html' title='Event driven application and the most basic Listener module'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-6841222004631896904</id><published>2010-04-28T11:06:00.000-07:00</published><updated>2011-12-02T18:14:30.823-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='onload'/><category scheme='http://www.blogger.com/atom/ns#' term='Object'/><category scheme='http://www.blogger.com/atom/ns#' term='defineProperty'/><category scheme='http://www.blogger.com/atom/ns#' term='window'/><title type='text'>Object.defineProperty - A Missed Opportunity</title><summary type='text'>Just a quick post about some clever hack we should probably forget ... make old scripts less obtrusive using new ES5 features.I am talking bout those guys out there that use scripts with a classic:onload = function () { ... };// orthis.onload = ...// orwindow.onload ...// orself.onload ...// etc etcApparently WebKit Nightly fires an error when we try to define getters and setters via </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/6841222004631896904/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/04/objectdefineproperty-missed-opportunity.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6841222004631896904'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/6841222004631896904'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/04/objectdefineproperty-missed-opportunity.html' title='Object.defineProperty - A Missed Opportunity'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4232129091420401600</id><published>2010-04-25T10:13:00.000-07:00</published><updated>2011-12-02T18:14:30.913-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='serialize'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='unserialize'/><category scheme='http://www.blogger.com/atom/ns#' term='__wakeup'/><category scheme='http://www.blogger.com/atom/ns#' term='PHP'/><category scheme='http://www.blogger.com/atom/ns#' term='JSON'/><category scheme='http://www.blogger.com/atom/ns#' term='Serializable'/><category scheme='http://www.blogger.com/atom/ns#' term='__sleep'/><category scheme='http://www.blogger.com/atom/ns#' term='magic'/><title type='text'>JSON __sleep, __wakeup, serialize and unserialize</title><summary type='text'>The JSON protocol is a de facto standard used in many different environments to transport objects, included arrays and Dates plus primitives such: strings, numbers, and booleans ... so far, so good!Since this protocol is widely adopted but it has not the power that a well known function as is the PHP serialize one has, we are often forced to remember how data has been stored, what does this data </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4232129091420401600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/04/json-sleep-wakeup-serialize-and.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4232129091420401600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4232129091420401600'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/04/json-sleep-wakeup-serialize-and.html' title='JSON __sleep, __wakeup, serialize and unserialize'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-5410844589746275671</id><published>2010-03-28T08:22:00.000-07:00</published><updated>2011-12-02T18:14:31.006-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='inheritance'/><category scheme='http://www.blogger.com/atom/ns#' term='performances'/><category scheme='http://www.blogger.com/atom/ns#' term='new'/><category scheme='http://www.blogger.com/atom/ns#' term='Object.create'/><title type='text'>new Constructor VS Object.create</title><summary type='text'>just a quick post about ES5 Object.create performances. While in More ES5 Friendly Patterns paragraph I have described how to use new ES5 features to create instances in a better way, I have never tested directly performances against classic ES3 pattern.The Benchmark LogicPretty simple, create a new object with a "privileged property" plus an inherited one. The test prototype looks like this </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/5410844589746275671/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/03/new-constructor-vs-objectcreate.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5410844589746275671'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5410844589746275671'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/03/new-constructor-vs-objectcreate.html' title='new Constructor VS Object.create'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-4595713368763124264</id><published>2010-03-16T15:44:00.000-07:00</published><updated>2011-12-02T18:14:31.105-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='function'/><category scheme='http://www.blogger.com/atom/ns#' term='convention'/><category scheme='http://www.blogger.com/atom/ns#' term='ambiguity'/><category scheme='http://www.blogger.com/atom/ns#' term='expression'/><category scheme='http://www.blogger.com/atom/ns#' term='new'/><title type='text'>Anonymous Style</title><summary type='text'>When a function is to be invoked immediately, the entire invocation expression should be wrapped in parens so that it is clear that the value being produced is the result of the function and not the function itself.I have already commented the popular JavaScript Code Convention article, but latest cited sentence is probably the only one I have never been sure about.Why BotherActually, I have </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/4595713368763124264/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/03/anonymous-style.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4595713368763124264'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/4595713368763124264'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/03/anonymous-style.html' title='Anonymous Style'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3427210884255595040</id><published>2010-03-08T11:38:00.000-08:00</published><updated>2011-12-02T18:14:31.206-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='CommonJS'/><category scheme='http://www.blogger.com/atom/ns#' term='require'/><category scheme='http://www.blogger.com/atom/ns#' term='client'/><title type='text'>CommonJS - A YAGNI Based "require"</title><summary type='text'>I am very busy these days with my last (hopefully) moving into my new and completely empty rented flat ... and while I am building home utilities and preparing my last post about A Better JS Class, with some extra case where common libraries fail with their parent implementations, I would like to quickly share this require function I wrote days ago but just recently came back in front of my </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3427210884255595040/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/03/commonjs-yagni-based.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3427210884255595040'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3427210884255595040'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/03/commonjs-yagni-based.html' title='CommonJS - A YAGNI Based &amp;quot;require&amp;quot;'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-8467709103320568641</id><published>2010-02-23T12:30:00.000-08:00</published><updated>2011-12-02T18:14:31.298-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='pattern'/><category scheme='http://www.blogger.com/atom/ns#' term='override'/><title type='text'>JavaScript Override Patterns</title><summary type='text'>Once we have understood JavaScript Overload Patterns, a good start point to write efficient base classes, it comes natural to wonder about How To Override.First of all, please let me quote one of my favorite sentences from Mr D.I have been writing JavaScript for 8 years now, and I have never once found need to use an uber  function. The super idea is fairly important in the classical pattern, but</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/8467709103320568641/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/02/javascript-override-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8467709103320568641'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/8467709103320568641'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/02/javascript-override-patterns.html' title='JavaScript Override Patterns'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-5990545040342226549</id><published>2010-02-20T09:31:00.000-08:00</published><updated>2011-12-02T18:14:31.396-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='function'/><category scheme='http://www.blogger.com/atom/ns#' term='bind'/><category scheme='http://www.blogger.com/atom/ns#' term='prototype'/><title type='text'>Function.prototype.bind</title><summary type='text'>Quick post about a fast Function.prototype.bind implementation.Function.prototype.bindfunction bind(context:Object[, arg1, ..., argN]):Function {    return a callback able to execute this function    passing context as reference via this}In few words, if we have a generic object, we don't necessary need to attach a function to create a method:// a generic functionfunction name(name) {    if (name</summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/5990545040342226549/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/02/functionprototypebind.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5990545040342226549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/5990545040342226549'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/02/functionprototypebind.html' title='Function.prototype.bind'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-1730967786252070539</id><published>2010-02-20T06:02:00.000-08:00</published><updated>2011-12-02T18:14:31.487-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='overload'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='pattern'/><title type='text'>JavaScript Overload Patterns</title><summary type='text'>Update I have continued with patterns into JavaScript Override Patterns.We all know JavaScript does not implement a native methods overload concept and what we usually do on daily basis is to emulate somehow this Classic OOP behavior.There are several ways to do it, all of them with pros and cons, but what is the best way to implement it?A common situationLet's imagine we would like to have a </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/1730967786252070539/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/02/javascript-overload-patterns.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1730967786252070539'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/1730967786252070539'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/02/javascript-overload-patterns.html' title='JavaScript Overload Patterns'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-4680694384539518358.post-3983360093989153615</id><published>2010-02-16T11:27:00.000-08:00</published><updated>2011-12-02T18:14:31.582-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='quality'/><category scheme='http://www.blogger.com/atom/ns#' term='JavaScript'/><category scheme='http://www.blogger.com/atom/ns#' term='convention'/><category scheme='http://www.blogger.com/atom/ns#' term='JSLint'/><category scheme='http://www.blogger.com/atom/ns#' term='Code'/><title type='text'>JSLint: The Bad Part</title><summary type='text'>Every programming language has somehow defined its own standard to write code. To be honest, as long as code is readable, clear, and indented when and if necessary, I think we do not need so many "code style guides" and, even worst, sometimes these "code standards" let us learn less about the programming language itself, helping if we are beginners, sometimes simply annoying if we are </summary><link rel='replies' type='application/atom+xml' href='http://tom-sanford.blogspot.com/feeds/3983360093989153615/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://tom-sanford.blogspot.com/2010/02/jslint-bad-part.html#comment-form' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3983360093989153615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/4680694384539518358/posts/default/3983360093989153615'/><link rel='alternate' type='text/html' href='http://tom-sanford.blogspot.com/2010/02/jslint-bad-part.html' title='JSLint: The Bad Part'/><author><name>Admin</name><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
