Monday, March 31, 2008
Mobile Applications, RIP
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Michael Mace, a former Palm VP, says the business of native mobile apps is dying. He includes a quote from Palm veteran Elia Freedman summarizing why some of us have found mobile application development to be a deeply frustrating experience.
From the technical perspective, there are a couple of big issues. One is the proliferation of [...]
Ext Releases v2.0.2 with Adobe AIR Support
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
To coincide with the release of Adobe's AIR v1.0, the Ext team released v2.0.2 of the Ext framework with enhanced support for the new AIR runtime. The Ext and Adobe teams collaborated during the AIR beta process to ensure that support for the updated AIR API and security sandbox would be available to Ext users [...]
How JavaScript Timers Work
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
It is so great that John is blogging concepts from his upcoming book before it goes out. What a treat for us, and hopefully great marketing for his book!
In How JavaScript Timers Work, John takes us through the actual mechanics of setInterval and setTimeout:
This enables us to grok the difference between:
PLAIN TEXT
JAVASCRIPT:
setTimeout(function(){
/* [...]
Gaia Tranquility - Ajax Components for .Net
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Gaiaware, developers of Gaia .Net Ajax suite of components, have released a new version of their suite called Tranquility. The release focuses heavily on improving the overall quality and performance of the framework with much client-side refactoring done. They've also upgraded to the latest release of Prototype and Scipt.aculo.us.
We have refactored the client side JavaScript [...]
Adobe AIR v1.0 & Flex 3.0 Released; New Adobe Open Source Site Launched
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Continuing their march into the RIA space, Adobe announced today the official release of AIR v1.0 and Flex 3.0.
Adobe has taken the beta off of the wrapper as their have released both AIR 1.0 and Flex 3.0.
As Ajax developers, Adobe is trying hard to get us developing applications, not just Flash folks. They [...]
Sunday, March 30, 2008
IE8 Beta 1 is focused on the developer community
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
“IE8 Beta 1 is focused on the developer community”. That is from an email on the private beta of IE 8 that some folk have been getting. This is meant to ramp up for a public beta, and something will be seen at MIX in a few weeks. The unveiling is coming.
Greetings from the Internet [...]
Ojay - a chaining wrapper for the YUI
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
JavaScript is a language that can be approached from many angles. Historically it was UI-driven web developers that started playing with it, but lately and with the advent of large JS applications "the world's most misunderstood programming language" is also written by people that feel much more at home in higher programming languages. The nature [...]
Saturday, March 29, 2008
Gears PubTools: Offline Enable Content in Minutes
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Gears gives you all of the components that you need to take your application offline. If you have the type of application that for now wants to just take some of its content offline, that should be trivial to do right?
That was Brad Neuberg's position, so he created Gears PubTools as a way to make [...]
Hello World: yesterday, today and tomorrow
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Vlad Shamgin sent in this little history on "Hello World" on the Web.
1998
PLAIN TEXT
HTML:
<font><b>Hello World</b></font>
2000
PLAIN TEXT
JAVASCRIPT:
var myText = "Hello World";
var _textNodeParent;
var docNodes = document.childNodes[1].lastChild.childNodes;
for(var j=0; j<document .childNodes.length; j++){
if(document.childNodes[j].lastChild){
for(var i=0; i<docNodes.length; i++){
if('div' == docNodes.item(i).nodeName.toLowerCase()){
if('layer_main' == docNodes.item(i).id.toLowerCase()){
if (null != document.getElementById('bparent')) { [...]
Feature Detection and Cross-Browser Widgets
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Peter Michaux has done some very thorough work on feature detection in the browser and cross browser widgets.
In his feature detection article he walks through a myriad of approaches with pros and cons:
Feature testing is not easy and there is no one right answer. From a practical stand point, the more strict your tests are [...]
Motionbox EventHandler: Event Subscription and Delegation
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
The developers of MotionBox have written a custom Prototype.js based library to handle event delegation and they decided to open source their work.
They told me:
As you know, the technique of listening to events high in the DOM adds a lot of benefits. The two most notable are:
The ability to bind to events before the elements [...]
DOMAssistant 2.6 Released
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
DOMAssistant 2.6 has been released and the team focused on performance for this version.
They have their own version of slickspeed which includes their library.
The CSS changes include:
Where querySelectorAll and getElementsByClassName aren’t available, DOMAssistant resorts to XPath to select elements, which is an approach that also has very impressive performance results, not to mention native web [...]
Slickspeed Adds Dojo
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
The MooTools folks have added Dojo 1.0.2 to the set of tests on their Slickspeed. It is actually quite cool of them to put up this test and compare other frameworks.
I just ran it on Firefox beta 3 on the Mac and the final results (for what it is worth) were:
Dojo 1.0.2: 145 ms
JQuery 1.2.3: [...]
YUI 2.5 released - Layout Manager, File Uploader and graphical JavaScript Profiler - and that is just the start
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Version 2.5 of the Yahoo User Interface Library (YUI) was released today. You can get all the details on the official blog post, but here’s the “change log”:
The new Layout Manager allows you to create multi-pane user interfaces that are collapsible and resizable.
The Flash-enhanced File Uploader control might be known to you from Flickr and [...]
Measuring the state of Mobile Ajax Performance
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Reposted from Thesis: A thorough study on the state of Mobile Ajax Performance on devphone
Mikko Pervilä has released a thesis for his MSci at the University of Helsinki titled Performance of Ajax Applications on Mobile Devices:
This thesis evaluates the presentational capability and measures the performance of five mobile browsers on the Apple iPhone and [...]
Gears 0.2 is in the wild, in production
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
We have talked before about Google Gears 0.2. Now, it has been fully released and has been updated on users machines so you can rely on the APIs. The API changes include:
New modules: HttpRequest and Timer. The main reason for these modules was that developers told us they wanted to make HTTP requests and create [...]
Friday, March 28, 2008
Dojo rating widget with dojo.gfx
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Tobias von Klipstein has created a Dojo rating component that uses dojo.gfx:
This example should demonstrate a case, where geometric forms can be combined with other widgets and how simple it is to achieve a widget using vector graphics. dojox.gfx was a great help, because it prints the appropriate vector format for you (svg/vml/canvas) and the [...]
Air on Rails…. the Euro kind
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Mike and the Air team have announced that the Adobe Bus tour is moving to europe, just without the bus. Instead, they will be doing it like the europeans do, and jumping on the train. Far better for the environment :)
As you may have noticed, we have just updated the on AIR tour website, with [...]
Ajax-based social bookmark widget
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Sometimes the smallest and simplest widgets are the absolutely coolest. In this case, mooSocialize fits that description. Similar in concept to the social bookmarking toolbar from AddThis.com, mooSocialize allows you to consolidate submission links for various networks in a neat little slidedown/out panel:
mooSocialize uses the MooTools JavaScript library to generate the fluid effects and is [...]
Thursday, March 27, 2008
Shooting browsers: Threat or Menace?
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Two articles were shot onto A List Apart this morning. We have Jeffrey Zeldman on the threat or menace of version targeting. Then we have Jeremy Keith on browser shooting.
Both are opinions on the version targeting issue that has blown up on the Web recently.
Jeremy concludes:
Version targeting is not a bad idea. The choice [...]
Cursing with JavaScript: Three Random Tips
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
I ran across a few posts in a row in my news reader that were each mini tips that involved Prototype, Firefox, and IE.
Prototype Custom Events
Howard Lewis Ship is making sure that Tapestry 5 will have 50% more Ajax, and has been playing with Prototype. He found a nagging bug to do with a ':':
Here's [...]
Create annotated walk-throughs with Step by Step
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Finding ways to help your users leverage your application's full potential can be a challenge and UX experts rack their brains daily trying to figure out new ways of improving this experience. One useful technique is the use of annotated walk-throughs which help guide users via detailed textual indicators (eg: popups). Chris Heilmann has created [...]
Lightview 2: Not just images, now on Prototype.Latest
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Nick Stakenburg has released Lightview 2, an update of his lightbox-esque library:
With the first released of Lightview I aimed to make overlaying images as elegant as possible, rethinking what we know as Lightbox. With Lightview 2.0 I'm going a step further, doing the same for
video (Quicktime), swf, Ajax, iframe and inline content.
You can do most [...]
Jack is back: Ext for Air and Vista
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Jack had posted a couple of entries back to back in the world of Ext.
First, he has been playing with Air again, and quickly wrapped the Ext 2.0 docs in Air, which would have been helpful when I was hacking the Ext toy on the plane:
Second, he has been playing with Vista gadgets and Ext [...]
.Net and Ext: Coolite has the Answer
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
The Ext team has posted about a new community initiative that has been kicked off by Coolite, the same guys that brought you the cool ninja-inspired DateJS parsing library.
Coolite Studio, a suite of professional ASP.NET Web Controls built on the Ext JavaScript Framework, aims to make it easy for .Net developers to use Ext's UI [...]
Wednesday, March 26, 2008
Audible Ajax Episode 24: Aptana Jaxer Talk
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
I had the opportunity to sit down with three fine gents from Aptana to discuss their recent launch of Jaxer, the “server side Ajax framework”.
Paul Colton, Uri Sarid, and Kevin Hakman all sat with me to chat about things. I have already played with Jaxer, and created the Google Gears wrapper which can be used [...]
Self Printing JavaScript Literals
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Are you ever sick of seeing Object get printed out when you try to output a variable to your console.
Oliver Steele talks about Self Printing JavaScript Literals where you can clean that up with a toString:
PLAIN TEXT
JAVASCRIPT:
function makeLiteral(name) {return {toString:function(){return name}}}
var L1 = makeLiteral("L1");
var L2 = makeLiteral("L2");
L1
//>>> L1
L2
//>>> L2
Kangax takes it further to support nesting:
PLAIN [...]
Liberator Comet Platform: Free Edition
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Caplin Systems, creator of the Liberator Comet platform have announced a free version which can be used for non-commercial applications and for evaluation.
Liberator includes a high-performance Comet server, a JavaScript client library, and a Java server integration library.
There are many examples such as the subscriptions sample which shows a page with realtime updating information for [...]
Facebook Style Input Box
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
If you used Facebook on a regularly basis, you’ve probably come across their cool autocomplete method of adding multiple recipients to messages. For those that haven’t seen it, here’s a pic:
Guillermo Rauch set out to build something similar and he did a very good job of mimicking this behavior using MooTools v1.2:
While working on my [...]
Using setTimeout to Solve DOMContentLoaded?
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Stuart Colville was reading the following info on setTimeout() from JavaScript the Definitive Guide:
“In practice, setTimeout() tells the browser to invoke the function when it has finished running the event handlers for any currently pending events and has finished updated the current state of the document”
He then thought, does setTimeout solve the DOMContentLoaded problem?.
He tested [...]
newjs: JavaScript Project Creation
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
When you start a new JavaScript library, how do you layout the source files, the tests, the distribution files? Do you have support scripts to generate distributions from source files? Run your JavaScript unit tests? Generators to create new unit test HTML files?
This is why Dr. Nic created newjs, a Ruby script that sets you [...]
Dual-Side Templating for 2010
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Michael Mahemoff is bullish on templating that runs all over the shop, and explained the progression in his Dual-Side Templating piece:
c. 1995: Server-Side Templating. This is the standard templating used in Java’s JSP, Perl’s Mason, PHP, ASP, etc. ie some html code with <?= “language” ?> code embedded in it.
c. 2005: Browser-Side Templating. This is [...]
Nextpoint: Taking Ajax to Court
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
I used to work in the healthcare sector, and was always amazed to see the amount of paperwork that was required. Literally paper work that is. The industry was full of drawers overflowing with paper.
I imagine that the legal profession has its fair share of this too, but one company Nextpoint, is trying to [...]
Tuesday, March 25, 2008
Moo.rd: Extensions to MooTools
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Moo.rd is an extension library to MooTools that brings you more effects, and helpers for tables, lists, and lightboxes.
You can see examples of the new extensions including:
Custom Alert
Custom Confirm
Smooth Scrolling
The new Custom.Alert and Custom.Confirm classes are modal, fixed, and can be draggable, like the standards. But they are “Custom”, so we can give them our [...]
OnionML: Server Side JavaScript Layout Engine
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Marcello Bastéa-Forte has developed OnionML, a layout template language that uses server side JavaScript with Rhino and E4X on the back end.
The high-level goal of the template engine is to be something with utility not unlike CSS, but for intended layout and composition. The actual functionality is similar to XSLT, but with the design [...]
AjaxDataControls v1.0 Ajax Extensison for .Net
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
We’ve been trying to get more .Net-related content on Ajaxian and luckily we were contacted by the AjaxDataControls team about their new v1.0 release.
The AjaxDataControls is a DotNetSlackers.com’s open source project built on top of Microsoft Asp.net Ajax Extension. Currently it contains GridView, DataList, Repeater and Pager controls. The main goal of this project is [...]
MooTools Swiff: Communicate with Flash
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
MooTools core team member Michelle Steigerwalt has a writeup about the MooTools 1.2 Swiff object which allows communication between Flash movie (.swf) files and a page's JavaScript. The Swiff object makes it substantially easier to interact with ActionScript allowing you to pass values or manipulate the Flash movie using JavaScript and MooTools:
Unless you're a diehard [...]
Prototype Deprecation.js: 1.5 to 1.6 made easier
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Tobie Langel has developed a deprecation script to help you move from Prototype 1.5 to 1.6:
When your code calls a method that’s been deprecated, replaced, or modified, the script will log a warning or error to your Firebug console. Clicking its hyperlink will take you to the deprecation script itself, which isn’t all that [...]
Is easy implementation the same as good code?
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
I've just come across a solution for badges on web sites that makes it terribly easy for implementers. The idea is that the implementer could add a badge wherever they want in an HTML document, choose the look and feel and add a message to be shown. The implementation code is the following:
PLAIN TEXT
HTML:
<script src="badge.js" [...]
Monday, March 24, 2008
Sun.com Behaviour Registration Library
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Greg Reimer has followed up and posted on the new event delegation library that he is using on Sun.com.
The library provides one object, reg which lets you hook behaviour via:
PLAIN TEXT
JAVASCRIPT:
reg.click('ul.foo> li> a.bar', myFunction);
What is happening
Once that bit of code runs, regardless of whether the entire DOM has finished loading into the browser, click events [...]
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Greg Reimer has followed up and posted on the new event delegation library that he is using on Sun.com.
The library provides one object, reg which lets you hook behaviour via:
PLAIN TEXT
JAVASCRIPT:
reg.click('ul.foo> li> a.bar', myFunction);
What is happening
Once that bit of code runs, regardless of whether the entire DOM has finished loading into the browser, click events [...]
Crazy way to change third party scripts
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Paul Irish posted a crazy method for tweaking third party scripts. His problem was that he was using MultiMap (online Mapping API) and wanted to internationalize the information, but it was hard coded in the JavaScript.
To get around the problem he does this:
PLAIN TEXT
JAVASCRIPT:
// WARNING!! This is such a massive hack. Oh-so-hackalicious
// Problem: Multimap [...]
jQuery API Browser Update
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Remy Sharp has revived the jQuery API browser at a new location. The old API browser hadn't
been updated since 1.1.3 and most other API browsers were running from the old doc structure (e.g. gotapi.com/jquery).
Remy added live searching and direct linking.
Extending dojo.query()
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
Alex Russell has taken some time to share the path you take when you go the Dojo Way and “build with, not on”. He posted an example of how to extend dojo.query() which walks through the steps:
Step 1: grok dojo.NodeList
dojo.NodeList is the Array subclass which all dojo.query() calls return an instance of. Therefore, to extend [...]
Book review: Advanced Ajax by Lauriat
Because Ajax moves so much application logic from the server to the client, it forces many developers to master a wider range of web technologies than ever before. To work effectively on Ajax projects, front-end developers have to concern themselves with database performance, business logic and other server-side concerns. Back-end and middleware developers, meanwhile, have [...]
Dojo Roundup: A/V, Animation, and a lot more
A lot of news came together at the Dojo Developer Days event.
Below is my meta-roundup based on Alex’s wrapup, and other news.
Animation
Eugene Lazutkin (SitePen) has been a busy man. His impressive work on dojox.gfx, dojox.gfx3d, and dojox.charting made Dojo 1.0 the best tool around for portably drawing vector graphics in a browser without plugins, and [...]
Below is my meta-roundup based on Alex’s wrapup, and other news.
Animation
Eugene Lazutkin (SitePen) has been a busy man. His impressive work on dojox.gfx, dojox.gfx3d, and dojox.charting made Dojo 1.0 the best tool around for portably drawing vector graphics in a browser without plugins, and [...]
Sunday, March 23, 2008
LINQ to JSON
James Newton-King has posted a new bit of code called LINQ to JSON which is a .NET LINQ style API over JSON.
For example, here is how you could get out categories and how often they are used:
PLAIN TEXT
JAVASCRIPT:
var categories =
from c in rss.PropertyValue<jobject>("channel")
.PropertyValue<jarray>("item")
[...]
For example, here is how you could get out categories and how often they are used:
PLAIN TEXT
JAVASCRIPT:
var categories =
from c in rss.PropertyValue<jobject>("channel")
.PropertyValue<jarray>("item")
[...]
Ajax Interceptor: Have someone clean for you
José Manuel Alarcón Aguín has written AJAXInterceptor, a JavaScript library that you add which takes over form submissions and makes them happen asynchronously with XHR.
You can also control progress indicators and request cancelation via code such as:
PLAIN TEXT
HTML:
<div id="progress">
<img src="progressimgs/bigrotation2.gif" alt="Loading..." align="middle" hspace="10" /> Loading...
<input type="button" value="Cancel" onclick="AI_CancelRequest();" />
</div>
<script language="javascript" type="text/javascript" src="AJAXInterceptor_r.js"></script>
<script language="javascript" [...]
The parseInt gotcha
Guyon Morée has posted the old chesnut parseInt gotcha, so I thought I should put it up here as a quick tip:
I was working on some stuff in javascript which involved some date/string parsing when one morning it failed. "That's weird, yesterday it worked fine!"
After some debugging with FireBug I found parseInt() was failing on [...]
I was working on some stuff in javascript which involved some date/string parsing when one morning it failed. "That's weird, yesterday it worked fine!"
After some debugging with FireBug I found parseInt() was failing on [...]
GWT Ext 2.0 Released
When making ChartMaker on the plane, I was tempted to use GWT Ext, but it didn’t support Ext 2.0 yet so I held off. However, at JavaPolis I was told about the work being done by Sanjiv Jivan, and he has just released GWT Ext 2.0 which “is a powerful widget library that provides rich [...]
JSJaC: JavaScript Jabber Client Library
JSJaC is a JavaScript Jabber Client Library that was built "to ease implementation of web based jabber clients. For communication with a jabber server it needs to support either HTTP Polling or HTTP Binding."
To use the library you can check out examples to see how you can do things like send a message:
PLAIN TEXT
JAVASCRIPT:
function sendMsg(aForm) [...]
To use the library you can check out examples to see how you can do things like send a message:
PLAIN TEXT
JAVASCRIPT:
function sendMsg(aForm) [...]
Native CSS selectors with querySelector
David Smith of WebKit posted about their native implementation of querySelector and querySelectorAll from the W3C Selectors API.
Native CSS selectors in the browsers is going to be a huge boon for us and the Ajax libraries that will be able to use them.
You can use the standard via:
PLAIN TEXT
JAVASCRIPT:
/*
* Get all the elements [...]
Native CSS selectors in the browsers is going to be a huge boon for us and the Ajax libraries that will be able to use them.
You can use the standard via:
PLAIN TEXT
JAVASCRIPT:
/*
* Get all the elements [...]
Cross Window Messaging with HTML 5 postMessage
John Resig has written a Cross-Window Messaging sample using Firefox 3, which implements the current postMessage API in HTML 5. Opera 9 implements a slightly older version, and a new release will fix that of course:
This particular API adds a new method to every window (including the current window, popups, iframes, and frames) that allows [...]
This particular API adds a new method to every window (including the current window, popups, iframes, and frames) that allows [...]
Saturday, March 22, 2008
Heroku: Web based Rails Hosting
Heroku is a new YCombinator startup that joins the growing number of “use your browser to build your apps” type of applications.
You can create new Rails applications, and they are magically hosted up in the cloud. You can import your own Rails application, or you can use the inline editor and tools to built the [...]
You can create new Rails applications, and they are magically hosted up in the cloud. You can import your own Rails application, or you can use the inline editor and tools to built the [...]
Interaction08: IxD’s in Savannah; Alan Cooper
I’m trying to masquerade as a hip and trendy designer-type today at IxDA’s Interaction08 conference, but I fear my geeky ways will betray my role on the implementation side of the aisle. We know that many Ajaxian readers are designers or interested in creating well-designed products. Indeed, Ajax has been about empowering us to create [...]
jQuery 1.2.3: Support for AIR, Namespacing
The jQuery team announced today the release of jQuery v1.2.3. Primarily a bug fix for v1.2.2, this new release also includes new features to make it compatible with the Adobe AIR runtime and SDK:
The primary purpose of this release was to fix a couple outstanding bugs from the jQuery 1.2.2 release. Specifically, this release is [...]
The primary purpose of this release was to fix a couple outstanding bugs from the jQuery 1.2.2 release. Specifically, this release is [...]
ArcLite: Arc for JavaScript
Jonathan Tang has fallen into the Arc fun and took some time to fully implement it in JavaScript.
It differs from Paul's implementation:
Supports Unicode, at least as well as JavaScript supports it.
There are very few I/O primitives - the ones that do exist write to the string "Eval.stdout", which can be tested and reset as necessary.
I [...]
It differs from Paul's implementation:
Supports Unicode, at least as well as JavaScript supports it.
There are very few I/O primitives - the ones that do exist write to the string "Eval.stdout", which can be tested and reset as necessary.
I [...]
Refactoring your JavaScript for fun and profit
Our newest Ajaxian Chris Heilmann - London Yahoo! - has written a piece on his blog covering five things to do to a script before handing it over to the next developer.
He walks through a refactoring experience:
Let’s say the job was to add small link to every DIV in a document with the class collapsible [...]
He walks through a refactoring experience:
Let’s say the job was to add small link to every DIV in a document with the class collapsible [...]
Hide an image in html?
Erik Kastner created something a little bizarre at 2am (beer involved?). He built an image hider using the CSS3 ::selection pseudo-element.
You mouse over the text and a hidden image reveals itself. Time for some silly hide and seek games!
You mouse over the text and a hidden image reveals itself. Time for some silly hide and seek games!
Friday, March 21, 2008
Django Template Language in JavaScript
I am learning at lot at the Dojo Developers Day one. Whenever I met Dojo folks I get the impression that there are 55 gems in the library that I have no idea about!
One of them is Neil Roberts implementation of the Django template language in JavaScript.
His work lives in dojox.dtl and you can [...]
One of them is Neil Roberts implementation of the Django template language in JavaScript.
His work lives in dojox.dtl and you can [...]
JavaScript Library Loading Speed
John Resig has analyzed JavaScript library loading speed by looking into the recent PbWiki testing results.
He delves into the fact that file size != speed and puts out the simple formula:
Total_Speed = Time_to_Download + Time_to_Evaluate
We also seem to obsess about packing and minification, where it often does give us that much since the act of [...]
He delves into the fact that file size != speed and puts out the simple formula:
Total_Speed = Time_to_Download + Time_to_Evaluate
We also seem to obsess about packing and minification, where it often does give us that much since the act of [...]
jQuery UI and jQuery Enchant Alpha Versions Released Today
The jQuery UI team announced today the release of alpha versions of jQuery UI 1.5a and jQuery Enchant 1.0a! The projects aim to address the need for a strong set of UI controls and effects to complement the jQuery JavaScript library.
I'm very happy to announce the first alpha release of both jQuery UI 1.5 and [...]
I'm very happy to announce the first alpha release of both jQuery UI 1.5 and [...]
Security Focus: JavaScript Global Namespace Pollution
Security should always be a concern when developing client-side applications as time and time again, sites have been compromised by a lack for forethought into how users, especially malicious ones, interact with your site. GNUCitizen.org is an excellent site for staying abreast of new security exploits and the team constantly pushes the boundaries of how [...]
iPhone Cachability: Watch your weight
Reposted from devphone.
Wayne Shea and Tenni Theurer have continued their performance series by delving into the iPhone and its poor little cache.
I always wonder why the cache is so small. It is typical Apple to not allow an expert mode where you can tweak it. I would rather have a few less songs and have [...]
Wayne Shea and Tenni Theurer have continued their performance series by delving into the iPhone and its poor little cache.
I always wonder why the cache is so small. It is typical Apple to not allow an expert mode where you can tweak it. I would rather have a few less songs and have [...]
OpenAjax Alliance Launches Its Second Wave
The 100+ members of OpenAjax Alliance recently approved the release of OpenAjax Hub 1.0, including the OpenAjax Hub 1.0 Specification, an open source reference implementation at SourceForge, and a complete test suite. OpenAjax Hub 1.0 is a small JavaScript library (<3K) that allows multiple Ajax toolkits to work together on the same browser frame. The [...]
Thursday, March 20, 2008
Server Side JavaScript Databases Access
Reposted from my personal blog
As soon as I started to play with Aptana Jaxer, I saw an interesting opportunity to port the Google Gears Database API (note the Gears in the logo!)
If I could use the same API for both client and server side database access, then I can be enabled to do things like:
Use [...]
As soon as I started to play with Aptana Jaxer, I saw an interesting opportunity to port the Google Gears Database API (note the Gears in the logo!)
If I could use the same API for both client and server side database access, then I can be enabled to do things like:
Use [...]
Firebug 1.1 and getfirebug.com
John J Barton has been working hard on Firebug 1.1, but the work has been in the dark a little unless you are paying attention.
He has been putting releases up, and Kris Zyp has been kind enough to host
I have talked to a few people recently who keep Firefox 2 around just “because Firebug needs [...]
He has been putting releases up, and Kris Zyp has been kind enough to host
I have talked to a few people recently who keep Firefox 2 around just “because Firebug needs [...]
Kevin Lynch promoted to become Adobe CTO
I met this really nice bloke at the first Ajax get together, put on a few years back, by O’Reilly and Adaptive Path. Ben and I were arguing about something or other and this guy politely told us that we were totally wrong. It turned out to be Kevin. He is a really nice chap, [...]
Canvas Pie Chart from datatable
I love it when a plan comes together (removes cigar): After I played with Google charts and porting the idea of generating charts from accessible table data over to YUI charts Stoyan Stevanof had to use the same idea to generate his own, home-made Canvas-driven charts:
His solution shows in a few lines not only [...]
His solution shows in a few lines not only [...]
MySpace Announces Developer Platform
In an obvious move to counter FaceBook’s expanding developer platform, MySpace, the top trafficked social network announced today the availability of the MySpace Developer Platform. News of the imminent release had been circulating for weeks and MySpace finally gave developers the keys to its playground.
The MySpace Developer Platform (MDP) allows developers to create applications [...]
The MySpace Developer Platform (MDP) allows developers to create applications [...]
Collaborative Drawing with Sketch
Roberto Saccon has taken the Dojo example program sketch, which itself “fully implements the idea of pipelining the drawing process based on sequential commands for adding, modifying or deleting objects” and has Cometized it:
Very little additional code was necessary to combine the chat app and the drawing app into a collaborative example app. I [...]
Very little additional code was necessary to combine the chat app and the drawing app into a collaborative example app. I [...]
Wednesday, March 19, 2008
Continous Integration for the Front End
Gareth Rushgrove has posted on continous integration for the front end.
He talks about a new site, inursite.com that does one thing:
The premise is simple; enter a few of your sites and inursite will visit them once a day and run a markup validation service over the page. You then get a feed of the pass [...]
He talks about a new site, inursite.com that does one thing:
The premise is simple; enter a few of your sites and inursite will visit them once a day and run a markup validation service over the page. You then get a feed of the pass [...]
Random thoughts from a Firefox
Robert O’Callahan has a nice recap of BaaCamp down under.
Robert talks about various talks that he went too, for example on AIR which touted:
features that can and should be provided by browsers too, possibly via extensions like Gears for the laggards, ideally via standard APIs like HTML5.
Robert feels like there is still a bit difference [...]
Robert talks about various talks that he went too, for example on AIR which touted:
features that can and should be provided by browsers too, possibly via extensions like Gears for the laggards, ideally via standard APIs like HTML5.
Robert feels like there is still a bit difference [...]
OpenSocial 0.7: Coming to prime time
The latest version of the OpenSocial spec has been released, 0.7:
The best news is that, based on numerous discussions with both app developers as well as container sites, we believe OpenSocial 0.7 has all the necessary pieces to launch OpenSocial apps to users at scale. In fact, both hi5 and orkut will be using OpenSocial [...]
The best news is that, based on numerous discussions with both app developers as well as container sites, we believe OpenSocial 0.7 has all the necessary pieces to launch OpenSocial apps to users at scale. In fact, both hi5 and orkut will be using OpenSocial [...]
Super Tuesday: Ajax Endorsements
TechCrunch got political and got into the endorsement business, apparently based on their tech policy.
So, surely Ajaxian needs to get in on this action. How better to do so than take a look at what toolkits are used by the top runners:
Barack Obama
Barack is trying to be inclusive by weilding Prototype, Scriptaculous, and jQuery [...]
Ext JS IDE Support Roundup
There’s been a lot of talk lately about the different IDEs and the support they offer for the various JavaScript libraries. Ext’s uber-coder, Jack Slocum, has put up a blog entry explaining which IDEs support the Ext JS framework:
The Ext 2.0 API is very extensive and remembering all of the functions, properties or configs available [...]
The Ext 2.0 API is very extensive and remembering all of the functions, properties or configs available [...]
Adobe Tamarin Tracing JIT for JavaScript
Chris Double attended the Tamarin Tech summit, and gives us some information about Tamarin Tracing the new trace based JIT experiment:
‘Tamarin Tracing’ is an implementation that uses a ‘tracing jit’. This type of ‘just in time compiler’ traces code executing during hotspots and compiles it so when those hotspots are entered again the compiled code [...]
‘Tamarin Tracing’ is an implementation that uses a ‘tracing jit’. This type of ‘just in time compiler’ traces code executing during hotspots and compiles it so when those hotspots are entered again the compiled code [...]
Tuesday, March 18, 2008
Functional Programming with JavaScript and Dojo
Eugene Lazutkin has written a piece on Functional fun in JavaScript with Dojo where he delves into the land of functional and how it is available in JavaScript.
Eugene maps out some of the helpful functions that JavaScript itself has added over time:
JS 1.6 (in Firefox 1.5) introduced
so-called Array extras:
special Array methods, which help to [...]
Eugene maps out some of the helpful functions that JavaScript itself has added over time:
JS 1.6 (in Firefox 1.5) introduced
so-called Array extras:
special Array methods, which help to [...]
Low Pro for jQuery
Dan Webb has ported Low Pro to jQuery and along the way discusses differences between Prototype and jQuery:
The one big reason was that, while jQuery was super simple and concise when working on smaller projects, it offered no help in structuring larger applications. All you get in jQuery, aside from Ajax methods and a handful [...]
The one big reason was that, while jQuery was super simple and concise when working on smaller projects, it offered no help in structuring larger applications. All you get in jQuery, aside from Ajax methods and a handful [...]
Namespaced made easy with Prototype
kangax keeps up his "Prototype by example"-ness by showing a use of Enumerable#inject.
He shows us namespacing made easy:
PLAIN TEXT
JAVASCRIPT:
String.prototype.namespace = function(separator) {
this.split(separator ¦¦ '.').inject(window, function(parent, child) {
return parent[child] = { };
});
}
And then you can use it via:
PLAIN TEXT
JAVASCRIPT:
// Default separator is '.'
'foo.bar.baz.quux'.namespace();
foo.bar.baz.quux = 'Nothing special...'; // => "Nothing special..."
// Or using [...]
He shows us namespacing made easy:
PLAIN TEXT
JAVASCRIPT:
String.prototype.namespace = function(separator) {
this.split(separator ¦¦ '.').inject(window, function(parent, child) {
return parent[child] = { };
});
}
And then you can use it via:
PLAIN TEXT
JAVASCRIPT:
// Default separator is '.'
'foo.bar.baz.quux'.namespace();
foo.bar.baz.quux = 'Nothing special...'; // => "Nothing special..."
// Or using [...]
ErlyJS: JavaScript on Erlang
Roberto Saccon has written ErlyJS, a compiler that takes JavaScript and makes it run on the Erlang VM.
It is very early days, and supports:
Support of a tiny little Subset of Javascript
Compilation to Erlang beam files
Global Javascript variables are stored at runtime in the Erlang process dictionary (therefore: don't use global variables !)
Local Javascript variables are [...]
JavaScript Trim Optimizations
Simon found this gem. Steven Levithan wrote about optimizing a JavaScript trim.
As Simon nicely puts it: “it turns out that while regular expressions are great for removing leading whitespace you can do a lot better at trailing whitespace by manually looping backwards from the end of the string.”
Since the differences between the implementations cross-browser and [...]
As Simon nicely puts it: “it turns out that while regular expressions are great for removing leading whitespace you can do a lot better at trailing whitespace by manually looping backwards from the end of the string.”
Since the differences between the implementations cross-browser and [...]
Cartoon Comic Fun
I have been having a bit of fun with cartoons recently. There are a few good Ajax sites that help you do cartoons such as Toonlets, Toondoo (From AdventNet, the Indian company behind Zoho and others), and Pixton.
And a bunch more over here.
Got some fun ideas for Ajax related comics?
And a bunch more over here.
Got some fun ideas for Ajax related comics?
Monday, March 17, 2008
Ajaxian Roundup for January, 2008: JavaScript Turtles and IE 8
January has started the month out in some style. We are seeing a lot of news that shows the Web may actually be moving forward a little. One sign of that is the trickle of news that comes out of Redmond on IE 8. IE8 Compatibility with X-UA-Compatible sparked debate throughout the entire Web community, [...]
CSS sprite generator source code released
Want to use CSS sprites but you are too lazy to create them in Photoshop? Edward Eliot and Stuart Colville released a CSS Sprite generator quite a while ago that does the job for you.
Now they topped this by releasing the source code of the generator on launchpad (get the tar file), in case [...]
Now they topped this by releasing the source code of the generator on launchpad (get the tar file), in case [...]
Google Social Graph API Released
Reposted from my blog
Would you like to be able to make a quick call to get a JSON response that ties together a social graph made up of resources available on the Web?
Brad Fitzpatrick, Kevin Marks, and others at Google have released a new Social Graph API that does just that:
The new Social Graph API [...]
Would you like to be able to make a quick call to get a JSON response that ties together a social graph made up of resources available on the Web?
Brad Fitzpatrick, Kevin Marks, and others at Google have released a new Social Graph API that does just that:
The new Social Graph API [...]
jQuery UI Lead is hired by Liferay
Liferay, authors of a popular open source Java portal, have hired Paul Bakaus lead on jQuery UI to work on it full time.
Liferay’s plans are to standardize all their products to use jQuery and its plugins for the future (you’ll still be able to use other libraries at the same time) - it’s therefore in [...]
Liferay’s plans are to standardize all their products to use jQuery and its plugins for the future (you’ll still be able to use other libraries at the same time) - it’s therefore in [...]
Seek or Show: Two Design Paradigms for Lots of Data
Bill Scott clued me in to this interesting first post from Theresa Neil on two design paradigms for handling large amounts of data:
The Seek Paradigm: Have the user ask for what they want.
The Show Paradigm: Display everything up front, and let the user explore and organize it.
“The first is usually more prevalent on the web. [...]
The Seek Paradigm: Have the user ask for what they want.
The Show Paradigm: Display everything up front, and let the user explore and organize it.
“The first is usually more prevalent on the web. [...]
Yahoo! Released ASTRA Flash and Flex components
The Flash-y folks at Yahoo! have released a slew of Flash and Flex components in their ASTRA suite:
New Flash components:
AlertManager — a user interface component that creates alert windows and manages their queue.
AudioPlayback — a set of controls for audio playback.
MenuBar — a component that renders hierarchical data as a row of buttons with nested [...]
Sunday, March 16, 2008
Design issues from Aza Raskin
Aza Raskin has been chatting about a couple of things now that he is at Mozilla.
First, Enso 2.0 is on the horizon which will be nice and free. Aza just added his design thoughts for the new version.
I am interested in seeing how Enso could do more within the browser. You can already do things [...]
First, Enso 2.0 is on the horizon which will be nice and free. Aza just added his design thoughts for the new version.
I am interested in seeing how Enso could do more within the browser. You can already do things [...]
Book: Practical DWR 2
Frank Zammetti has authored the first book dedicated to DWR, Practical DWR 2 (Amazon).
Joe Walker wrote a foreward which he posted, and here is Frank’s personal message:
Ajax represents a brave, new(ish) world of web development where coding on the client is just as important as on the server side. Hundreds of libraries exist that [...]
Favicon access via JavaScript
Michael Mahemoff has released an update to his JavaScript library that gives you access to play with favicons from script.
The main point of this library is to update the favicon via Javascript, but at a higher level, its main objective is to provide some support for notifying the user of events in another tab. For [...]
Secure String Interpolation in JavaScript
Mike Samuel of the Google Caja team (and much more) has a fantastically detailed document on the choices for secure String interpolation in JavaScript.
He spends a lot of time discussing:
Cataloging the most common vulnerabilities
Various alternatives such as templating, DOM manipulation, and tainting
Goals and Non-Goals
Design and Implementation
Benchmarking the choices
There are a large number of examples a [...]
He spends a lot of time discussing:
Cataloging the most common vulnerabilities
Various alternatives such as templating, DOM manipulation, and tainting
Goals and Non-Goals
Design and Implementation
Benchmarking the choices
There are a large number of examples a [...]
DomAPI 4.5: New, improved, and more free
DomAPI has been around for ever but the package has been updated:
DomAPI version 4.5 has a new lower price and a simplified licensing plan.
In a nutshell, there are now 2 license types, 'Free' and 'Pro'. Both types can be used on commercial sites, in any capacity, with no restrictions. The benefits of the pro [...]
Most Relevant Browsers of 2009
John has taken a shot at listing the most relevant browsers of 2009:
IE 7
IE 6
Firefox 3
Safari 3
Opera 9.5
I think that Firefox 3 and Safari 3 may end up tieing, and if you frame it as rendering engines, Webkit will probably beat Gecko as it is also being used by iPhone, AIR, Android, and Nokia (they [...]
IE 7
IE 6
Firefox 3
Safari 3
Opera 9.5
I think that Firefox 3 and Safari 3 may end up tieing, and if you frame it as rendering engines, Webkit will probably beat Gecko as it is also being used by iPhone, AIR, Android, and Nokia (they [...]
Saturday, March 15, 2008
JSON 2.0: Libraries and browser support
John is at it again, writing a piece on recent news surrounding JSON.
He links to an updated library by Douglas Crockford,
He links to an updated library by Douglas Crockford,
jQuery Validation Plugin v1.2 Updated
Jörn Zaefferer went absolutely feature crazy when he decided to update his jQuery Validation plugin. Update is putting it mildly with "overhaul" coming immediately to mind.
Here are some of the cool new features added in:
AJAX-captcha validation example (based on http://psyrens.com/captcha/)
Support for "remote" ajax-validation. In other words: Remote validation is now possible and very easy [...]
Here are some of the cool new features added in:
AJAX-captcha validation example (based on http://psyrens.com/captcha/)
Support for "remote" ajax-validation. In other words: Remote validation is now possible and very easy [...]
jQuery Validation Plugin v1.2 Updated
Jörn Zaefferer went absolutely feature crazy when he decided to update his jQuery Validation plugin. Update is putting it mildly with "overhaul" coming immediately to mind.
Here are some of the cool new features added in:
AJAX-captcha validation example (based on http://psyrens.com/captcha/)
Support for "remote" ajax-validation. In other words: Remote validation is now possible and very easy [...]
Here are some of the cool new features added in:
AJAX-captcha validation example (based on http://psyrens.com/captcha/)
Support for "remote" ajax-validation. In other words: Remote validation is now possible and very easy [...]
Book Review: Ajax Security by Billy Hoffman
Brian Dillard of Agile Ajax has a review of Billy Hoffman's new book "Ajax Security". If you've not picked this book up, you really need to. It's received rave reviews and is quickly becoming the must-have security book for client-side development. As Brian can attest:
The book itself, of course, documents dozens more specific security vulnerabilities [...]
The book itself, of course, documents dozens more specific security vulnerabilities [...]
Lipsiadmin: Rails 2.0 Ext Admin
Lipsiadmin is a framework that generates Ext 2.0 views on top of your Rails 2.0 application, a compelling duo indeed.
You can strap into your migrations to add menus such as:
PLAIN TEXT
RUBY:
# I will create also my menu
menu = Menu.create(:name => "Articles", :admin => true, :position => 1)
# And my
menu.menuitems.create(:name => "New Article", :url => "/admin/articles/new",
[...]
YUI Grid CSS and Grid Builder
Jeremy Zawodny of Yahoo! just found the YUI Grid Builder that does what you would imagine... gives you a tool to generate your CSS layout.
Will Duff took that and made YahooPages which adds even more WYSIWYG fun.
Will Duff took that and made YahooPages which adds even more WYSIWYG fun.
Friday, March 14, 2008
Adobe AIR is on Fire
Adobe AIR, the platform that lets you create desktop apps using web technologies, continues to garner attention. With Beta 3 just recently released and a host of companies coming out with new apps, AIR is building up a ton of steam just prior to it’s official v1.0 release.
First up, Adobe’s Kevion Hoyt gives us [...]
First up, Adobe’s Kevion Hoyt gives us [...]
Prototype: new cheat sheet and in place editor
The maintainer of scripteka, the Prototype extensions library, has produced a new cheat sheet for the recent 1.6.0.2 release.
He also has his own widgets such as Proto.IPS an unobtrusive in-place-select widget that mimics the Gmail chat ability to drop down and select, or type in your own new content.
He also has his own widgets such as Proto.IPS an unobtrusive in-place-select widget that mimics the Gmail chat ability to drop down and select, or type in your own new content.
Thursday, March 13, 2008
Do you have a pretty date?
John Resig has created a little script to give you pretty dates that Web 2.0 know and love (thanks Rails):
PLAIN TEXT
JAVASCRIPT:
prettyDate("2008-01-28T20:24:17Z") // => "2 hours ago"
prettyDate("2008-01-27T22:24:17Z") // => "Yesterday"
prettyDate("2008-01-26T22:24:17Z") // => "2 days ago"
prettyDate("2008-01-14T22:24:17Z") // => "2 weeks ago"
The library is short and sweet:
PLAIN TEXT
JAVASCRIPT:
/*
* JavaScript Pretty Date
* Copyright (c) 2008 John Resig [...]
PLAIN TEXT
JAVASCRIPT:
prettyDate("2008-01-28T20:24:17Z") // => "2 hours ago"
prettyDate("2008-01-27T22:24:17Z") // => "Yesterday"
prettyDate("2008-01-26T22:24:17Z") // => "2 days ago"
prettyDate("2008-01-14T22:24:17Z") // => "2 weeks ago"
The library is short and sweet:
PLAIN TEXT
JAVASCRIPT:
/*
* JavaScript Pretty Date
* Copyright (c) 2008 John Resig [...]
Less maintenance code tutorials with Ajax Code Display
One of my main annoyances with writing code tutorials is that you need to maintain code in several locations: the code itself and the examples in the tutorial document. This is not really a problem when you can use a scripting language or print out the tutorials from a CMS, but when you just want [...]
Audience Measurement Demo
Laurent Nicolas has created an analytics solution, using GWT, that tracks fine grain access from users on a page.
It tracks:
The time spent on the site in various areas
Visibility: what was visible when
Content: Know if an ad was seen
There is also a nifty widget that allows you to shrink and grow the div size of comments.
It tracks:
The time spent on the site in various areas
Visibility: what was visible when
Content: Know if an ad was seen
There is also a nifty widget that allows you to shrink and grow the div size of comments.
Graceful Degradation of Firebug Console Object
Paul Irish saw the following graceful degradation of Firebug code in the Yahoo! media player:
PLAIN TEXT
JAVASCRIPT:
// code yanked from the Yahoo media player. Thanks, Yahoo.
if (! ("console" in window) ¦¦ !("firebug" in console)) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group"
, [...]
PLAIN TEXT
JAVASCRIPT:
// code yanked from the Yahoo media player. Thanks, Yahoo.
if (! ("console" in window) ¦¦ !("firebug" in console)) {
var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", "group"
, [...]
A Study of Ajax Performance Issues
Coach Wei, of Nexaweb and Apache, has published a study of Ajax performance issues in browsers, and they won't surprise you:
Obviously, we would like to see browser vendors take a serious look into the following issues and put them on their roadmap:
In all major browsers, performance with Array and HTML DOM needs improvement in general.
Browsers [...]
Obviously, we would like to see browser vendors take a serious look into the following issues and put them on their roadmap:
In all major browsers, performance with Array and HTML DOM needs improvement in general.
Browsers [...]
O’Reilly Maker
Kiichi Takeuchi has created a cheeky little site called O'Reilly Maker that let's you create silly O'Reilly book covers in a live preview style using jQuery and Django.
Surely, Tim will get these guys to rename (remember Web 2.0 conferences?).
I am sure you can come up with funnier ones that I can, so add them to [...]
Surely, Tim will get these guys to rename (remember Web 2.0 conferences?).
I am sure you can come up with funnier ones that I can, so add them to [...]
Subscribe to:
Posts (Atom)