Archive for the ‘javascript’ Category

Please Don’t Touch the Slow Parts

Saturday, May 8th, 2010

I spoke at Better Software 2010, together with Fullo, about speeding up web applications. The talk draws heavily from Steve’s work, but it’s a little bit different from current literature because it tries to organize best practices not as flat list but under macro-areas emerged as “slow parts”. Also, i concluded with my obsession that complexity inherently introduced by performance optimizations should not be dealt with by programmers directly, but by means of automation and abstraction.

Here it is.

update: now i am linking to the extended version which i gave at phpday 2010

Javascript Performance: Make the Browser Happy (and You Sad)

Sunday, November 15th, 2009

BENDERThe browser is emerging as the best platform for applications, so a large community is growing to address its final weakness: speed. Google, Yahoo and various independent programmers are all pushing a bunch of clever techniques to boost performance and please end users. That’s nice, yet as Mark Twain once said, half of the results of good intentions are evil and i see potential danger in many of the suggestions made. Here a representative short list of them:

  • Avoid for-in and forEach in favor of optimized while loops
  • Before making modifications to a DOM node remove it and then re-insert it
  • To insert multiple DOM nodes, first insert them into a Document Fragment and then add it to the DOM
  • Join all scripts into a single file
  • Load javascript files on demand

Let’s make it clear for once, execution speed is not a human problem, that’s what computers are for, they execute our commands fast. The human problem is programming speed and writing down clear, readable, maintainable commands aka programs. forEach loops make sense to me, they say “i want to do something on each item”, optimized while loops make sense to computers. If i want to add DOM nodes or modify one, i don’t care of removing it or document fragments, browsers care. To me it’s just noise. Almost all of the problems addressed by those techniques stem from lack of smartness in the browser, and that’s where fixes belong to, on the machine side. The fact that there are inept browser makers is no excuse. Fixes still belong to the machine, they’re repeatable and can be made automatic. We have a long history of programs automatically converting human friendly code to machine friendly code. They’re called compilers and the output either machine code or optimized javascript doesn’t matter.

So, learn about javascript performance since knowledge is always the way, but don’t turn yourself into a machine, you’d be an awful one. Use the tools and wait for browsers to catch up.

Refactoring to Unobtrusive Javascript

Monday, September 28th, 2009

I’ve been thinking for a while about techniques to enforce maximum separation of concerns in the client-side web technology stack. Even though, total separation of presentation, content and business logic may well be a utopia, the list of refactorings i collected over time are generally good to improve code quality and the whole concept of refactoring unusually applied to javascript is quite interesting per se. Here’s a talk about it i gave at Javascript Camp 2009.

Javascript the good parts Talk

Sunday, May 17th, 2009

js1I’m just back from phpDay 2009 in Verona, where i gave a revised edition of my “Javascript the Good Parts” talk, based on Douglas Crockford‘s great material (first edition being one i gave at PHPCon in march). It’s been a pleasure to stay there along with nice people such as Gabriele, Fullo and many others. Also I found out a growing interest in the javascript language which may end up in some sort of italian javascript focused conference or barcamp. Now that would be nice. If anyone out there would be interested in such event, feel free to e-mail me.

In the mean time, here comes a list of resources for those who want to deepen their knowledge about content of the talk:

Books

People

  • Douglas Crockford - Senior JavaScript Architect at Yahoo! and JSON father – Listen and read EVERYTHING
  • John Resig – JavaScript Evangelist for the Mozilla Corporation and jQuery author – Listen and read EVERYTHING
  • Brendan Eich – Mozilla CTO and Javascript Father – Greatest historical figure
  • Peter-Paul Koch – quirksmode.com – King of compatibility matters
  • Steve Souders – Google employee and author of “High Performance Web Sites” – King of performance matters (together with Resig)

Videos

Articles

Reference