Ajaxian.com
Ext JS 3.2 beta: stores, components, transitions, and themes
by Ajaxian on Mar.11, 2010, under Ajaxian.com, Web development
The Ext JS team have announced the 3.2 beta which includes new components and goodness.
Take the animated DataView transitions for example:
On top of that, the release includes:
- Multiple sorting and filtering on Ext.data.Store
- Composite Fields
- Slider improvements
- Toolbar plugins: ToolbarReorderer and ToolbarDroppable
- New Accessibility Theme: compliant with Section 508 of the Disabilities Act.
- Quality Assurance: Unit Testing: over 180 bug fixes and enhancements over 3.1
CSS3 Please! Instant results… Thank You
by Ajaxian on Mar.10, 2010, under Ajaxian.com, Web development

Paul Irish and Jonathan Neal have created a fun example of various CSS tweaks that you can make, and see the results instantly.
CSS3, Please! lets you play with fancy new rules such as:
- border-radius
- box shadow
- gradients
- rgba support in backgrounds
- transforms
- font-face
Really nice way to make tweaks inline in the page….. nicely done. Hope to see some other examples out there :)
HTML Minification
by Ajaxian on Mar.10, 2010, under Ajaxian.com, Web development
Good old Kangax has been playing with HTML minification and has shared his new tool in an early stage.

What does it do?
Kangax has forked John Resig’s HTML parser which parses the HTML and sends that into the Minifier. This has rules that do things like whitespace optimization, comment removal, and collapsing boolean attributes (e.g. disabled=”true” -> disabled).
He also has a linter going:
While working on minifier, I realized that oftentimes the most wasteful part of the markup is not white space, comments or boolean attributes, but inline styles, scripts, presentational or deprecated elements and attributes. None of these can be simply stripped, as that could affect state of the document and is just too obtrusive. What can be done, however, is reporting of these occurences to the user. HTMLLint is even a smaller script, whose job is exactly that—to log any deprecated or presentational elements/attributes encountered during parsing. Additionally, it detects event attributes (e.g. onclick, onmouseover, etc.). The rationale for this is that moving contents of event attributes to external script allows to take advantage of resource caching.
Harmony: Canvas Drawing Tool
by Ajaxian on Mar.10, 2010, under Ajaxian.com, Web development
Harmony is a new drawing tool, a HTML5/Canvas experiment with great potential. It provides some unique brush styles, and can produce some great-looking charcoal pencil style sketches, among other things. Better to try it out than explain it in words.
Creator Mr. Doob (Richard Cabello) explains how he used Canvas to make it darker the more you draw over it:
The whole thing is quite modular so I can keep adding more brush styles whenever I get inspired. During the process I found out that, for some reason (apparently lack of hardware acceleration), Firefox and Opera do not support context.globalCompositeOperation = ‘darker’. This was on the HTML5 spec before but got removed. Just so you know what I’m talking about, this is like the “multiply” blending in Photoshop. Webkit does support it tho. I hope they put it back on the specs and all browsers support it.
You can also save images using data URI encoding.
As it works on webkit, he made sure it worked on the mobile Android and iPhone browsers. No multi-touch as yet, but the touch UI still makes a nice input mechanism.
(Thanks FND)
Spectrum Visualization with the HTML5 Audio Data API
by Ajaxian on Mar.09, 2010, under Ajaxian.com, Web development
The HTML5 specification introduces the
The above quote is from the Audio Data API extension that joins a bunch of juicy developer work in Firefox 3.7.
Thomas Sturm has taken that API and created a spectrum visualization a kin to some of the great work by Scott Schiller (using Flash).
There is a new onaudiowritten attribute:
-
-
<audio src="song.ogg" controls="true"
-
onaudiowritten="audioWritten(event);">
-
</audio>
-
that lets you get access to info such as the spectrum:
-
-
function audioWritten(event) {
-
spectrum = event.mozSpectrum;
-
-
var specSize = spectrum.length, magnitude;
-
-
// Clear the canvas before drawing spectrum
-
ctx.clearRect(0,0, canvas.width, canvas.height);
-
-
for ( var i = 0; i <specSize; i++ ) {
-
magnitude = spectrum.item(i) * 4000; // multiply spectrum by a zoom value
-
-
// Draw rectangle bars for each frequency bin
-
ctx.fillRect(i * 4, canvas.height, 3, -magnitude);
-
}
-
}
-
Add to that the ability to write audio....
-
-
var audioOutput = new Audio();
-
audioOutput.mozSetup(2, 44100, 1);
-
-
var samples = [0.242, 0.127, 0.0, -0.058, -0.242, ...];
-
audioOutput.mozAudioWrite(samples.length, samples);
-
Nice work all around.
modulr: a CommonJS module implementation in Ruby for client-side JavaScript
by Ajaxian on Mar.08, 2010, under Ajaxian.com, Web development
modulr is a CommonJS module implementation in Ruby for client-side JavaScript
Ruby? what does that have anything to do with it? Ah, its from one of those Prototype guys isn't it.... Yup, Tobie is at it again, this time with modulr:
modulr accepts a singular file as input (the program) on which is does static analysis to recursively resolve its dependencies.
The program, its dependencies and a small, namespaced JavaScript library are concatenated into a single js file.
The bundled JavaScript library provides each module with the necessary require function and exports and module free variables.
This can also help sharing that CommonJS code. I recently did just that and had some:
-
-
// check to see if you are running inside of node.js and export if you are
-
if (typeof GLOBAL == "object" && typeof GLOBAL['node'] == "object") {
-
exports.Appetite = Appetite;
-
}
-
modulr: a CommonJS module implementation in Ruby for client-side JavaScript
by Ajaxian on Mar.08, 2010, under Ajaxian.com, Web development
modulr is a CommonJS module implementation in Ruby for client-side JavaScript
Ruby? what does that have anything to do with it? Ah, its from one of those Prototype guys isn't it.... Yup, Tobie is at it again, this time with modulr:
modulr accepts a singular file as input (the program) on which is does static analysis to recursively resolve its dependencies.
The program, its dependencies and a small, namespaced JavaScript library are concatenated into a single js file.
The bundled JavaScript library provides each module with the necessary require function and exports and module free variables.
This can also help sharing that CommonJS code. I recently did just that and had some:
-
-
// check to see if you are running inside of node.js and export if you are
-
if (typeof GLOBAL == "object" && typeof GLOBAL['node'] == "object") {
-
exports.Appetite = Appetite;
-
}
-
Friday fun: Let’s translate YUI3 to jQuery
by Ajaxian on Mar.05, 2010, under Ajaxian.com, Web development
I just came across this wonderful Gist on gitHub:
-
-
var $;
-
YUI().use('*', function(Y){
-
$ = Y.get;
-
for(var p in Y) {
-
$[p] = Y[p];
-
}
-
});
-
-
// test
-
$('body').append("boo!");
-
In case you want to use YUI3 but really really like jQuery syntax :) OK, it breaks the whole sandboxing idea of YUI3, but that's a small price to pay, right?
Firefox gets hardware acceleration in early stage
by Ajaxian on Mar.05, 2010, under Ajaxian.com, Web development
Bass Schouten is a cool name, and the Mozillan has presented Direct2D hardware acceleration.
You have to grab Firefox nightly, do the about:config / gfx.font_rendering.directwrite.enabled game, but then you get to see it in action.
IE9 showed off how they will support hardware rendering, and I am sure we will see more at MIX, but it is very cool to see this across the board.
CSS Transforms/Transitions/Animations are going to feel like butter in 2010!
Color Picker: Works even in IE6
by Ajaxian on Mar.04, 2010, under Ajaxian.com, Web development
Works even in IE6
Love that quote from the color picker over at RaphaelJS land. This plugin by Dmitry Baranovskiy gives you an easy color picker in short order:
-
-
var icon = Raphael("picker", 23, 23).colorPickerIcon(11, 11, 10);
-
-
icon.attr({cursor: "pointer"}).node.onclick = function () {
-
document.getElementById("benefits").style.visibility = "visible";
-
var out = document.getElementById("output");
-
out.style.visibility = "visible";
-
-
// this is where colorpicker created
-
var cp = Raphael.colorpicker(document.body.offsetWidth / 2 - 150, 250, 300, "#eee", document.getElementById("picker2"));
-
-
out.onkeyup = function () {
-
cp.color(this.value);
-
};
-
// assigning onchange event handler
-
cp.onchange = function (clr) {
-
out.value = clr;
-
document.body.style.background = clr;
-
document.body.style.color = Raphael.rgb2hsb(clr).b <.5 ? "#fff" : "#666";
-
};
-
// that’s it. Too easy
-
-
icon.node.onclick = null;
-
};
-


Greetings weary traveller to my personal website.