Archive for the 'JavaScript' Category

Non-onload-blocking async JS

Jun 28th, 2012

Update Oct 2013: for a more bulletproof version, tested in the wild, IE and all, check Philip’s snippet at Asynchronous JS is cool but it still blocks window.onload event (except in IE before 10). That’s rarely a problem, because window.onload is increasingly less important, but still… At my Velocity conference talk today Philip “Log […]


YSlow development: getting started

Jun 17th, 2012

Since version 2.0, YSlow is no longer just a tool, it’s a platform. You can create your own rules (performance or otherwise), combine them into rulesets, tweak scores to your liking and so on. Once Marcel took over and did version 3.0. YSlow can now run in many many environments: as a Firebug extension (like […]


Anaconda Limousine: the guitar parts

Jun 17th, 2012

I’m part of a band that has an album out now. I know, right? (links: excuse-for-a-site, amazon, itunes). I wanted to put up all the songs on the site, but seems like there’s a little dissonance in the band whether this is a good idea. Plan B: 30s samples. Like the bigwigs do on Amazon […]



Jun 16th, 2012

So I was flipping through recent slides from Steve Souders and came across a reference to a nice post from Pat Meenan explaining how he setup and how you can edit your hosts file to send third party scripts to the black hole simulating a firewall-blocked or down third party and the effect on […]


Canvas pixels #3: getUserMedia

Jun 13th, 2012

getUserMedia() is a proposal for one of the most desired device APIs that can give HTML and JS access to the user’s camera and microphone. It’s already available in Chrome Canary in the form of navigator.webkitGetUserMedia(). It’s also available in Opera without a prefix. In part #1 of this miniseries I talked about manipulating pixels […]


Canvas pixels #2: convolution matrix

Jun 11th, 2012

In the previous post I talked about manipulating and changing pixels in an image (using JavaScript and canvas) one at a time. We took a single pixel and messed around with its R, G, B or A values. This time let’s look into taking account not only the single pixel but the pixels around it. […]


Async JavaScript callbacks

Jun 3rd, 2012

Ah, asynchronous JavaScripts. Love ’em, hate ’em, but you gotta use them! I have quite a few posts here on this blog about this stuff. Starting with something I considered an interesting hack to emulate PHP’s require(). This was posted in 2005. (2005! That’s ancient. That’s only a year after gmail was introduced, and you […]


Ajax with images

Jun 2nd, 2012

So you can do Ajaxy stuff with XMLHttpRequest or or iframes or dynamic JavaScript tags or… how about simple images. This is best used for simple stuff where you can have a limited number of predefined responses, such as “success” and “oops”. All you do is create an image and set its source and this […]


Simple music player

Apr 18th, 2012

I put up a few MP3s on, in simple a hrefs. While modern browsers will let you click and display some sort of player in a new page, why not play them in-page without a refresh? Simple enough. Plus we have HTML5 audio. Problem is, old IEs don’t support HTML5 audio and you need […]


The Truth about semicolons in JavaScript

Apr 16th, 2012

jk is live though. Enjoy and feel free to add more next time. (image from wikipedia)


Social button BFFs

Sep 27th, 2011

TL;DR: Loading JavaScript asynchronously is critical for the performance of your web app. Below is an idea how to do it for the most common social buttons out there so you can make sure these don’t interfere with the loading of the rest of your content. After all people need to see your content first, […]


Lazy HTML evaluation

Jun 8th, 2011

#7 This post is part of the Velocity countdown series. Stay tuned for the articles to come. Some time ago Google talked about using a sort of lazy JavaScript evaluation which especially helps mobile devices. The idea was to comment out a chunk of JavaScript you don’t need right away and serve it this way. […]


HTTPWatch automation with JavaScript

Apr 10th, 2011

Background HTTPWatch (automation) …with PHP (and again and again, and response) JavaScript shell scripting I gave this short presentation at the recent Yahoo FE summit’s open mic, here are the slides and some notes. Slides and screencast vid JavaScript shell scripting View more presentations from Stoyan Stefanov Screencast to see the thing in motion: Notes […]


JavaScript-style object literals in PHP

Mar 20th, 2011

The object literal notation in JavaScript looks like: var fido = {name: "Fido", barks: true}; or var fido = {}; = "Fido"; fido.barks = true; From assoc arrays to objects In PHP you would call that an associative array. $fido = array( ‘name’ => "Fido", ‘barks’ => true ); And you can easily make […]


cssmin.js in windows shell

Oct 29th, 2010

JavaScript can run virtually anywhere, including as a windows exe and the windows command line. Say you have a JavaScript function foo() function foo(input) { var output = input; // .. unicorns return output; } In order to make this a windows shell script you add at the and a way to read standard input […]


Preload, then execute

Oct 23rd, 2010

I talked before about using an object element to load scripts and styles without executing/applying them to the current document. And this is nice for preloading assets – faster and less error-prone than simple inclusion if the document or iframe. But what about preloading assets (scripts) and then executing them on the current page? Turns […]


The European Tour 2010

Oct 2nd, 2010

So it’s been pretty quiet around here. I’m still alive and very much so. Just awfully busy. Bulgaria I took a long trip in Bulgaria. About 1 month and 20 days. Including the traditional around-Bulgaria let’s-get-drunk-in-different-cities-every-day tour de force with the gang. With unusual amount of guitar playing this time. Not all fun and roses, […]


JavaScript JS Array Documentation (#jsonf, #promotejs)

Sep 26th, 2010

Join me in the initiative to promote proper JavaScript documentation from MDC. It’s embarrassing the quality of links that pop up in search engines when searching JavaScript general questions. Let’s help connect newcomers to JavaScript with better reading. will give you a unique code.


Preload CSS/JavaScript without execution

Apr 21st, 2010

Preloading components in advance is good for performance. There are several ways to do it. But even the cleanest solution (open up an iframe and go crazy there) comes at a price – the price of the iframe and the price of parsing and executing the preloaded CSS and JavaScript. There’s also a relatively high […]


Publishing 5 books this year

Apr 1st, 2010

So I’ll be publishing 5 books this year. Isn’t that incredible? Is it even possible? And good quality books at that? It’s a nice challenge (my last year’s challenge failed, I didn’t even bother to count how bad it failed). I think it’s possible, especially if you bend a little bit the meaning of “5”, […]


YUICompressor’s CSSMin

Mar 10th, 2010

Honored to be a part of the YUI project, I am now helping with the maintenance of the CSSMin part of the YUICompressor. My changes are now part of the trunk on github, so I’m official. Next on the agenda is documenting the thing, so that’s what I’ll try to do here, maybe in a […]


One-click Minifier Gadget (OMG) – initial checkin

Jan 31st, 2010

So I’ve been thinking and talking to folks about this idea of having one-stop shop for all your minification needs. Minification of JS and CSS as well as image optimization helps site performance by reducing download sizes. This is good. But not a lot of people do it. People don’t do it, because it’s a […]


Extreme JavaScript optimization

Dec 20th, 2009

2010 update: Lo, the Web Performance Advent Calendar hath moved Dec 20 This article is part of the 2009 performance advent calendar experiment. Today’s article is a second contribution from Ara Pehlivanian (here’s the first). There’s a Belorussian translation provided by Patricia. Thanks! Ara Pehlivanian has been working on the Web since 1997. He’s been […]


The new game show: “Will it reflow?”

Dec 19th, 2009

2010 update: Lo, the Web Performance Advent Calendar hath moved Dec 19 This post is part of the 2009 performance advent calendar experiment. Stay tuned for the articles to come. Intrigued by Luke Smith’s comment and also Alois Reitbauer’s comment on the previous post about rendering I did some more testing with dynaTrace and SpeedTracer. […]


DOM access optimization

Dec 18th, 2009

2010 update: Lo, the Web Performance Advent Calendar hath moved Dec 18 This post is part of the 2009 performance advent calendar experiment. Stay tuned for the articles to come. This blog series has sailed from the shores of networking, passed down waterfalls and reflows, and arrived in ECMAScriptland. Now, turns out there’s one bridge […]