PHP Class 'IMC Objects' released
Grok Headline matches for PHP Class 'IMC Objects' released
PHP Class 'HTML Forms Objects' released
PHP Class 'HTML Forms Objects' released
10/31/2003 07:24 PMThe class HtmlFormsObjects is meant to generate an HTML dropdown list.
It is only necessary to call the method GenerateDropDownList and
passing its parameters like is shown in the example on bottom of the
class file.
PHP Class 'PHP or Java Class Code
Generator' released
PHP Class 'PHP or Java Class Code
Generator' released
03/06/2004 02:00 AMThis package is meant is automate the generation of classes to access
databases in Java beans style.
It uses the Fast Template engine to process template files that define
the skeleton of functions and variables of classes that store and
retrieve data object property values from a given database table,
getter and setter functions to access those properties and a function
to delete a data object row from the respective database table.
The package comes with templates to generate classes either in PHP or
Java. The PHP template defines code to access data objects in a MySQL
database. The Java template defines code to access data objects in any
database supported by JDBC.
PHP Class 'Convert Class To HTML Table'
released
PHP Class 'Convert Class To HTML Table'
released
02/10/2004 02:46 AMThis class is meant to display the structure of any class as an HTML
table.
The class being displayed can have variables that contain objects of
other classes or arrays and treats those variables each accordingly.
PHP Class 'Bs_CsvUtil.class.php'
released
PHP Class 'Bs_CsvUtil.class.php'
released
11/08/2002 08:17 PMFeatures:
supports any separator char sequence, default is semicolon ";".
supports separator characters in the values. eg you use a ; as
separator, your line may look like
blah;hello world;"foo";"foo;bar";"this is a ""string""";got it?;foo
as you can see, the values can be in "quotes". if your text uses
quotes itself as in the "string"
example, they are escaped in ms-style with 2 quotes. and by using
quotes we can even have your
separator inside the text (example "foo;bar").
line breaks. a csv line may spread over multiple lines using crlf in a
field value.
see the checkMultiline param and the _checkMultiline() method.
PHP Class 'Bs_StopWatch.class.php'
released
PHP Class 'Bs_StopWatch.class.php'
released
11/07/2002 07:59 PMYou can take times during a code run and at the end get a time table
as HTML or text table. The output will contain total and as delta
between each take in microseconds.
Free Code; This Class is part of the BlueShoes PHP Application
Framework, see blueshoes.org.
PHP Class 'calend.class.php' released
PHP Class 'calend.class.php' released
01/03/2003 07:52 PMThis class generates HTML calendars in the portuguese language.
In portuguese:
Esta classe gera um calendário em português em HTML.
Business Objects' Vision on Track
Business Objects' Vision on Track
01/27/2004 01:44 PMComplete integration with crystal planned.
Managed Objects' Database Goes Federated
with nLayers
Managed Objects' Database Goes Federated
with nLayers
04/18/2005 04:44 PMThe company's configuration-management database correlates enterprise
network data to map IT service configurations.
Business Objects' Crystal Enterprise To
Support Linux (TechWeb)
Business Objects' Crystal Enterprise To
Support Linux (TechWeb)
06/09/2004 02:40 AMTechWeb - The update is designed to let IT managers integrate
reporting functionality into Linux applications.
PHP Class 'My Db' released
PHP Class 'My Db' released
06/09/2004 06:55 PMThis package is a SQL database wrapper supporting MySQL, Interbase and
MS SQL server.
It can establish database server connections, execute SQL queries,
retrieve query results into arrays and display query results as HTML
tables.
PHP Class 'My DB' released
PHP Class 'My DB' released
02/15/2004 07:40 PMThis class is a simple wrapper around MySQL database acess functions.
It provides wrapper functions around most of the PHP MySQL extension
function like database, connection, queries execution and result data
access, error message retrieval, database creation and locking of
tables.
PHP Class 'CTable' released
PHP Class 'CTable' released
10/21/2002 08:35 PMThis class helps aid in the generation of table output from a database
recordset, or other form of data source.
PHP Class 'Stack' released
PHP Class 'Stack' released
10/22/2002 07:55 PMThe Stack class advantage over the array_push and array_pop function
is Stack::pop() pops the stack and returns a reference to the popped
element. There is also a top function that returns a reference to the
top element.
PHP Class 'UBBCode' released
PHP Class 'UBBCode' released
10/20/2002 08:09 PMReplaces the UBB tags listed below with HTML tags, and vice versa.
Also keeps the line feeds in the text and removes all HTML tags.
UBB Tags:
[b]...[/b] bold
[i]...[/i] italic
[code]...[/code] source code
[img], [/img] images
[quote]...[/quote] blockquote
[url]http//www.link[/url] links
[url=http//www.link]name[/url] links
[email]me@home.de[/email] email link
[email=me@home.de]name[/email] email link
Additional Tags:
[u]...[/u] underline
[center]..[/center] center
[color=name]...[/color] colors
For a description of ubbcodes see:
http://community.infopop.net/infopop/ubbcode.html
FUNCTIONS:
function encode($str)
function decode($str)
function listCodes()
PHP Class 'CGrid' released
PHP Class 'CGrid' released
10/23/2002 08:16 PMProperties
+---- table // Instance of recordset
+---- titles // Array with titles of columns
+---- colsSize // Size of each colum
+---- colsOrder // Name of fields to ORDER BY SQL
+---- titlesBgColor // BgColor of Titles
+---- titlesOnColor // BgColor of selected title
+---- titlesOffColor // BgColor of non selected
+---- listColor // Color of content
+---- overRow // Color of mouse over line
+---- eraseCol // 1 to show erase colum
Function
+---- show( $sql ) // Show grid
PHP Class 'StyleMenu' released
PHP Class 'StyleMenu' released
10/25/2002 07:23 AMClass based on HTML Table (Dimitris Kossikidis ). This class provides
a fast form to create and to maintain blocks of menus. It allows to
use styles and format of table with very few lines of code.
PHP Class 'CSV' released
PHP Class 'CSV' released
10/25/2002 07:23 AMThis class enable you a databse-likely access to comma separated (csv)
and fixed length files. Is useful for import from csv to db.
PHP Class 'Tag' released
PHP Class 'Tag' released
10/25/2002 07:23 AMA simple way to create XML/HTML tags with name, attributes, attribute
values and content inside the tag. This class can be extended to make
custom tag classes easily. Have fun!
PHP Class 'CMC_form_validation' released
PHP Class 'CMC_form_validation' released
10/25/2002 07:34 PMWith this class you can have PHP automatically generate form
validation in JavaScript.
Currently supports the following validation types:
1. Required Field
2. Numerical Characters only.
3. Alphnumerical Characters only.
This class is extremly easy to use and has been designed in a way to
allow for additional validation types to be added.
PHP Class 'XSLT' released
PHP Class 'XSLT' released
10/19/2002 07:49 PMPHP class which will hopefully make it a little bit easier to work
with PHPs XSLT extension
PHP Class 'Smileys' released
PHP Class 'Smileys' released
10/18/2002 07:30 PMThis class replaces smiley tags with smiley images.
Useful for forums or guestbooks.
When created it reads the smiley definitions and can be called
afterwards.
FUNCTIONS:
function smileys($url)
function getSmileys()
function insertSmileys($str)
function _resetSmileys($str)
PHP Class 'bstCountdown' released
PHP Class 'bstCountdown' released
10/15/2002 07:15 AMDisplay a list of 'days until' a set of events, includes a simple
example and a more complex one as child classes. Could easily be
extended to multi-user and notifications via email by adding a user
table and owner columns. Written to MySQL but db access is simple
enough to adapt.
PHP Class 'rhc' released
PHP Class 'rhc' released
10/15/2002 07:15 AMRHC is actually a few files which give the user the ability to do
custom error handling, debugging, and handle database abstraction
(currently only through Informix).
PHP Class 'URLHelper' released
PHP Class 'URLHelper' released
10/15/2002 07:15 AMThis class give you access to the http header information and provides
some help for retrieving and parsing urls.
FUNCTIONS:
function isURLAvailable($url)
function isValidURLFormat($url, $strict=false)
function addHTTPtoURL($url)
function getHTTPStatusCode($url)
function getRealURL ($url, $simple = true, $method = "HEAD")
function getHTTPHeader($url)
function getMD5FromURL($url, $estFilesize=500000)
function _openHTTPConnection($url, $method = "HEAD")
PHP Class 'color' released
PHP Class 'color' released
10/15/2002 07:15 AMThese class converts colortypes.
It supports the following colors formats and types:
- CMYK
- RGB
- Pantone
- HEX Codes for HTML
PHP Class 'BarcodeI25' released
PHP Class 'BarcodeI25' released
10/15/2002 07:15 AMHTML Barcode generator for Interleaved 2 of 5 Codes.
Código de barras fator Intercalado 2 de 5, padrão FEBRABAN (BRASIL).
PHP Class 'cellroll_lib' released
PHP Class 'cellroll_lib' released
10/15/2002 08:29 PMVery simple class for faster building of table-rollovers (changing
bgcolor for rows or cells) js-scripts
PHP Class 'MyTemplate' released
PHP Class 'MyTemplate' released
10/15/2002 08:29 PMMyTemplate is very powerful template engine. It allows including a
nested template file directly into another template file and
automaticaly parse it in any template in set.
Working with dinamic blocks is so easy. Only assign block variables
and get result. You do not need to parse each block 'manualy'.
Automaticaly parses PHP constant and global variables into templates.
Supports multiply template directories.
You'll like it :) Your code will become shorter :)
PHP Class 'FTP' released
PHP Class 'FTP' released
05/09/2004 06:24 PMThis is a simple wrapper class meant to send a file to a directory of
an FTP server using the PHP FTP extension.
PHP Class 'mysqldb' released
PHP Class 'mysqldb' released
10/16/2002 07:47 PMmysql_db provides access to MySQL using these methods:
open() - connects to database
query() - runs SQL query against the connected database
last_id() - gets last insert id for the connection
close() - close database connection
Errors are handled via properties $db->errtype and $db->errstr, which
can be tested for.
PHP Class 'utilsClass' released
PHP Class 'utilsClass' released
10/16/2002 07:47 PMUtils class for phpLib, provide 4 methods to select, insert, update
and delete data from database. It requires phpLib properly installed.
It's really a simple work, but it was helpful to me, so I thought to
make it available.
PHP Class 'DB Layer' released
PHP Class 'DB Layer' released
05/09/2004 06:24 PMThis package is database abstraction layer to access all supported
databases using a single calling convention. It supports multiple
databases using dedicated sub-classes.
It features:
- Error handler.
- Result Pagination
- Supported databases: MySQL , PostegreSQL.
PHP Class 'BookmarkParser' released
PHP Class 'BookmarkParser' released
10/17/2002 08:03 AMThis class parses IE, Netscape and Opera bookmark files and returns
arrays with the bookmark / folder information.
STILL BETA!
FUNCTIONS:
function parseOpera($url, $folderID, $urlFunction,
$folderFunction)
function parseNetscape($url, $folderID, $urlFunction,
$folderFunction)
function parseInternetExplorer($url, $folderID, $urlFunction,
$folderFunction, $firstCall = true)
PHP Class 'PWGen' released
PHP Class 'PWGen' released
10/17/2002 08:13 PMCreates random character passwords, and outputs them to text, html, or
as images. Also a demo of image verification code ala Yahoo account
sign up. Based on Kevin Gilbertson's PasswordGenerator class.
PHP Class 'preditor' released
PHP Class 'preditor' released
10/26/2002 07:53 PMPreditor is a class for file editing and copying. It makes editing
easier by allowing you to load a file, enter a piece (string) you want
changed, and a replacement string, whether it only occurs once, or a
bunch of times, and it will go through the file and change each
occurence. You can also save the file to a directory. Copy non-text
based files to different directories. (more options to come)
PHP Class 'page_handle' released
PHP Class 'page_handle' released
10/28/2002 08:29 PMA template engine geared to be able to display data without much
hassle in PHP code, just fetching of data and giving it to the
template engine. Create HTML templates with the data's keywords
PHP Class 'mimetype' released
PHP Class 'mimetype' released
10/28/2002 08:29 PMThis class enables PHP scripts to determine the mime type of a file
based on file extension, useful for PHP versions without access to
other utilities that determine mime type. Built from the Apache mime
type file.
PHP Class 'PageLogic' released
PHP Class 'PageLogic' released
11/18/2002 08:04 PMI have written modules for webservers with so many php/html files that
I lost track, so I come out with this simple module to simplify the
logic among pages.
Imagine my module is a book, with many chapter inside.
-- The book is the main page, normally index.html or index.php.
-- The module comprises of many files, each file performs some
functions.
Thus file is equivalent to a chapter.
-- Each file may contain several functions. This are the sections in
the
chapter.
Imagine if I can say goto this book, this chapter and this section. I
will need a content page to look up the pages. Thus the idea is
formed.
The content pages is stored in an .ini format and read in using my
INIPARSER class. It will be in the form:
[]
=
=,
=, , ...
If I hit the page with the action text embedded through
index.php?action="..."
or
The index.php will just call up the function I want.
I hope that this will help to modularize your php codes as well.
PHP Class 'designer_stats' released
PHP Class 'designer_stats' released
11/27/2002 07:45 PMThis is not a full blown web traffic anaylsis tool that records
everything about everybody, everywhere. It does not access web logs,
require or keep them.
This is a system to get straight to the heart of what we need to know
as web designers/developers.
* How backwards compatable to we need to go?
* What version of flash can we get away with?
* What browser/multimedia technology does our target audience use?
* Do we need to look at a multi-lingual version?
* What percent of our audience need to download plugin?
* Do I really need to test on browser on platform?
Grok Description matches for PHP Class 'IMC Objects' released
GrokA matches for PHP Class 'IMC Objects' released
"XMLHttpRequest & Ajax Working Examples"
"XMLHttpRequest & Ajax Working Examples"
04/07/2005 10:28 AMAJAX Wrapper for .Net (v1.1) Released
AJAX Wrapper for .Net (v1.1) Released
04/12/2005 11:57 PMMichael Schwarz, a .NET developer in Germany has released the latest
version of his Ajax .NET Wrapper. This class library simplifies the
use of XMLHttp by providing .NET objects that generate the necessary
Javascript code.
So Ajax it is...
So Ajax it is...
03/19/2005 02:31 AMI guess I'll have to accept "Ajax" as the official term of the new
breed of webapps. In Monday's Wall...
AJAX
AJAX
03/22/2005 04:58 PM
I am playing with AJAX
myself
but I see many problems with AJAX as the next generation DHTML
application platform.
AJAX applications are more expensive to build, test, and
update than traditional
DHTML applications.
Frankly, I am not even sure whether current crop of popular web
browsers can support
AJAX because they weren't built with the expectation that a signle
web page might
stay up for as long as GUI applications. When even small
carefully written DHTML
apps can cause enough browser resource leaks to require frequent
browser restarts,
I think good stable AJAX applications will be rarer than the
picture recent hype paints.
And by the time engineers discover the cost of AJAX first-hand,
.NET-based ClickOnce
applications will look much more attractive than AJAX-based
applications can ever
be.

AJAX Framework
AJAX Framework
04/15/2005 03:55 PMAJAX Framework 1.0 Released
PHP Everywhere: Will Ajax Catch On?
PHP Everywhere: Will Ajax Catch On?
03/19/2005 03:26 AMIf you'll remember a while back, we posted something about
Ajax, a new technology from
Adaptive Path that combines
XML and Javascript to make a new "rich DHTML application".
Now just call it "AJAX"
Now just call it "AJAX"
03/14/2005 05:25 PMLast year we wrote about how some applications -- notably Google Mail
and Suggest -- were taking advantage of Javascript plus XML-over-HTTP
for richer interfaces. Now Jesse James Garrett of Adaptive Path has
written a nice summary and (perhaps more imporantly) come up with a
new name for the approach: "AJAX." Some CMS vendors are beginning to
use AJAX methodologies, although from what we have seen mostly in a
tentative way (if you're a vendor using AJAX, do tell where and how.
Asynchronous communication with the server has tremendous potential to
make heretofore very linear authoring and workflow procedures in a CMS
much more fluid and therefore more, well, lifelike......
Why the term Ajax is useful
Why the term Ajax is useful
04/18/2005 09:55 PMSoftware design patterns are useful mainly because they
provide a shared vocabulary: rather than discussing the intimate
details of a three layered application architecture, we say "MVC".
Rather than describing an object that tracks your progress while
looping over a collection, we say "Iterator".
The same is true for Ajax. While the techniques it describes have been around for
years, grouping them under a single term is extremely valuable for
raising the level of discussion about them. No longer will we have to
explain XMLHttpRequest / hidden iframes / crazy cookie tricks in depth
when discussing sites which pull fresh information from the server
without reloading the whole page. Instead, we can say "Ajax" and move
on to more interesting things.
Matthew Haughey says it's all about
marketing. I disagree; it's about smarter and more effective
conversations.
HTML-Ajax-0.02
HTML-Ajax-0.02
04/08/2005 03:14 PMHTML-Ajax-0.01
HTML-Ajax-0.01
04/01/2005 03:15 PMAJAX in Flash
AJAX in Flash
03/30/2005 09:01 PM
As I pointed out in my AJAX post,
I think difficulties of writing AJAX make it a poor web application
platform, particularly
since there are easier alternatives.
Flash, for example, is a better platform for some applications than
AJAX because it
offers similar capabilities (i.e. XMLHttpRequest in DHTML) and
comparable, if not
better, level of availability along with much better graphics
capability. Flash
tool developers such as Lazlo and Xamlon makes
it easy to develop interactive web application.
Just take a look at
this Google
Maps like demo built
over a weekend using Xamlon's upcoming tool.
Note that AJAX in Flash is inappropriate for web applications that
manipulate DHTML
DOM extensively and has a number of issues that makes it
prohibitively expensive for
uses beyond demos and small tightly-focused
applications. For example,
you can't built PhotoShop with it without abandoning usability.
Beyond Flash, .NET looms with superior functionalities and
flexibilities. The
only thing it lacks is the availability in several sense.

Catalyst-Plugin-Ajax-0.02
Catalyst-Plugin-Ajax-0.02
03/23/2005 12:21 AMWill AJAX help Google clean up?
Will AJAX help Google clean up?
03/19/2005 02:41 AMFeatures: Errors and AJAX
Features: Errors and AJAX
06/05/2005 11:54 PMAJAX is hot, but is it real? How mature are the techniques, and can
you use them right now? Joshua Gitlin offers a method for trapping
client-side JavaScript errors and logging them, server-side, with
AJAX.
Catalyst-Helper-Ajax-0.01
Catalyst-Helper-Ajax-0.01
03/19/2005 02:50 AMCatalyst-Plugin-Ajax-0.03
Catalyst-Plugin-Ajax-0.03
04/01/2005 03:15 PMCatalyst-Plugin-Ajax-0.01
Catalyst-Plugin-Ajax-0.01
03/22/2005 10:13 PMSome AJAX Information Pointers for You
and Me
Some AJAX Information Pointers for You
and Me
06/05/2005 11:21 PMAJAX AJAX AJAX. Every time I turn around I hear AJAX. This is as bad
as 2002 when every time turned around I heard RSS. Except in 2002 I
had...
Will Ajax Hurt Usability?
Will Ajax Hurt Usability?
03/29/2005 01:28 AMI'm curious what effect Ajax will
have on usability. With this technique, the unspoken nature of Web
apps is changing, and apps using Ajax will likely do things that users
don't expect.
When I first starting using client-side HTTP requests back in 1999
(long before the snazzy name), I did it really badly. I wrote an
intranet phone directory which used background HTTP calls from the
browser to retrieve the data and load it into a DIV on the interface
without re-loading the page. It worked great, but if the users wanted
to find another phone number, they always pressed the "Back"
button...and got sent backwards, out of the phone lookup system.
Web users have a "user model" of how forms work (we discussed user
models in this post). Web users are accustomed to the fact
that nothing happens on a form until they hit a button called "Submit"
or "Save," and that this gives them a new page, so they can usually
hit "Back" to get back to their form input. I broke this user model,
and the user paid the price.
With Ajax, it's easy to break the model of stateless request and
response that users are subconciously aware of. You shouldn't do this
lightly or you're going to get some confused users.
Here's a current example:
37 Signals' great Ta Da Lists use Ajax to "check
off" items in a list. If you click the box next to an item, it's
immediately removed from the list in the interface and a request is
dispatched in the background to change the item's status on the
server.
I understand this and it's quite slick, but what about people who
don't spend as much time with this stuff as I do? I know a lot of
people that look at a list of checkboxes and think, "I can check a
bunch of boxes, then review my selections before finding and
clicking a button called 'Submit' that's got to be around here
somewhere."
This is the user model that a lot of people have for Web forms.
They get to do whatever they want, and nothing counts until they
press "Submit." I like Ta Da Lists, but I think 37 Signals made a
mistake here. I'd be curious what feedback they've gotten about
it.
Where we're going with Ajax is to allow developers to really mess
with the unspoken "rules" that users have gotten used to. Ajax is
great and provides a revolutionary way to do things, but I know some
people will take it too far, too fast. User confusion won't be far
behind.
The anatomy of an AJAX framework
The anatomy of an AJAX framework
06/05/2005 11:20 PM I just read an interesting post from Bjoern on the impact that AJAX
can have on your existing applications.
As I understand things, Bjoern makes two major points:
That you can’t rely on AJAX being a workable solution because
XMLHttpRequest requires ActiveX on Windows
And that AJAX will force you to completely revise your development
strategy because its [...]
Ajax: A New Approach to Web Applications
Ajax: A New Approach to Web Applications
03/25/2005 06:56 AMAjax: A New Approach to Web Applications by Jesse James
Garretthttp://www.adaptivepath.com/publications/essays/archives/000385.p
hpAjax isn’t a technology. It’s really several
technologies, each flourishing in its own right, coming together in
powerful new ways. Ajax incorporates: 1) standards-based presentation
using XHTML and CSS; 2) dynamic display and interaction using the
Document Object Model; 3) data interchange and manipulation using XML
and XSLT; 4) asynchronous data retrieval using XMLHttpRequest; and 5)
JavaScript binding everything together. This essay by Jesse Garrett
explains Ajax and what the future holds for this exciting application.
This has been added to
eCommerce Resources
Subject Tracer™ Information Blog.
ProNet: Using Ajax with TypeKey
ProNet: Using Ajax with TypeKey
04/12/2005 05:16 PMSince anything worth doing on the web is worth doing with Ajax, Joe
D'Andrea's written up his technique for using Ajax with TypeKey. It's
a clean and simple implementation of the authentication service, and
it's found a good home on...
Ajax info and pointers
Ajax info and pointers
06/06/2005 12:10 AMTara asks: I'm looking for doofus-level (that's me!) introductions to
AJAX functionality and perhaps a tutorial or two. Since this stuff
seems so JavaScript heavy, and since for all JavaScript wisdom I look
to Dori, I'm hoping she'll chime in...
ProNet: So you'd like to make an Ajax
map
ProNet: So you'd like to make an Ajax
map
06/06/2005 12:12 AMOur own Mark Paschal just visited Linden Lab, the creators of the
popular online gaming community Second Life, and he was inspired to
create a new app called Landmarker. From Mark's description: At Cienna
Rand's suggestion, I've been building a...
Catalyst-Plugin-Ajax-0.04
Catalyst-Plugin-Ajax-0.04
04/08/2005 03:14 PMAJAX Considered Harmful
AJAX Considered Harmful
03/17/2005 02:49 AMI intend for this to post to be constructive, so I will focus on two
specific suggestions which hopefully will serve as the seed for the
development of a set of best practices for AJAX. Here are the
two
humble suggestions on things that people should standardize on ...
ProNet: Rico AJAX library
ProNet: Rico AJAX library
06/17/2005 02:07 PMSabre's development team has just released Rico, a javascript library
for creating rich applications using AJAX technologies. Available
under an Apache license, a lot of common visual and data-manipulation
functions are bundled into this cross-browser AJAX implementation. The
offering comes...
Manipulate Your TV Listings with
TiVo+Ajax
Manipulate Your TV Listings with
TiVo+Ajax
04/17/2005 06:51 PMCould Ajax Wash Away 'Smart Clients'?
Could Ajax Wash Away 'Smart Clients'?
03/19/2005 03:05 AMThere's more than one way to write a powerful client app. Just ask the
Google and Flickr folks.
The Ajax reality distortion field
The Ajax reality distortion field
04/14/2005 03:33 PMDavid
Temkin raps it out.
WE spent five years trying to build a "Laszlo-like" rich media
interface platform inside of Javascript and tehbrowser. Believe me
this is one subject I know about.
I LOVE ODDpost and the Google Maps thingie and what people are
doing with D HTML nowadays. Our weboutliner is in D
HTML.
But lordy lordy lordy - do these folks have a reality distortion
field up. David Temkin agrees. Or shall I say - I agree with
him.
Ajax, Ajax, Ajax -- the buzzword has taken the Web world by storm.
As it's been presented, A
jax ("Asynchronous JavaScript + XML") is a new way of creating
rich Internet applications by means of "standard, mature, and
well-understood technologies" -- i.e., DHTML. This is the big draw of
Ajax, and is the core of the hype.
It is indeed possible (and sometimes even desirable!) to create
rich Internet applications using DHTML; I've been talking about this
for some
time. But the idea that DHTML technology is standard,
mature and well-understood is accurate in only a
theoretical way.
Until very recently, it was commonplace knowledge that DHTML
doesn't work consistently across browsers, isn't maintainable,
requires code forking, delivers limited fidelity and so on. And while
perhaps this is still common knowledge among level-headed developers,
somehow the introduction of the "Ajax" buzzword has induced Web-wide
amnesia, and people are now under the illusion that creating
full-scale applications in JavaScript is a simple proposition -- just
throw in a little script here and there, and you have an app suitable
for Web deployment. No new learning required, just a few clever
hacks.
Welcome to the Ajax reality distrortion field.
This one post
about replacing Flickr's Flash UI with a DHTML UI seems to sum up
these contradictions rather concisely:
First, the developer, Neil Kandalgaonkar, writes that this DHTML
version of the Flickr UI will work in more places that the Flash UI
that Flickr uses:
"So what's wrong with Flickr's perfectly good Flash interface?
Nothing. But maybe...you often use operating systems where Flash
doesn't work, or doesn't work well."
But later in the post, Neil goes on to write:
"This is a hack that works in just one browser, Firefox.
Developing cross-platform DHTML is much harder and more
painful. Flash has a lot of advantages over DHTML; it's truly
cross-platform, and can do much more special effects. If that works
for Flickr, more power to them."
Well, that sounds rather different! Finally, when explaining why
someone might be interested in what he's done, Neil writes:
"...you're a web developer and you are interested in this
bleeding-edge Ajax stuff."
I'm confused. Isn't Ajax/DHTML "standard, mature, and
well-understood"?
Just to be clear: I think what Neil has done is cool. But cool,
bleeding edge, difficult and incompatible isn't what Ajax is supposed
to be all about.
I sometimes think of how developers look at DHTML apps in terms of
grading on a curve. A Laszlo-, Flash-, or Java-based RIA will
typically receive all sorts of complaints from Web standards
vigilantes about non-standard UI, accessibility issues, problems with
bookmarking and deep linking, and incomptibility with search engine
crawlers. But a similar app built using DHTML -- excuse me, "Ajax" --
elicits enthusiastic responses from the very same crowd like "Wow!
Look at how cool this DHTML site is! Isn't that UI great?"
Of course a full Ajax/DHTML app has nearly identical issues with UI, accessibility,
bookmarking, and search engines that other RIA technologies do; but
they have the veneer of being "standard". And just to state the
obvious, lest we forget: HTML as a standard for Web applications is in
a precarious position, with the leading browser vendor actively
working to define its own all-new markup language for networked applications, and other
browser vendors creating a splinter group
that diverges from the W3C to promote their own standards for Web
applications.
Theoretically, DHTML is a standard. But to quote
Yogi Berra: "In theory, there is no difference between theory and
practice. But, in practice, there is."
[David
Temkin]
I couldn't have said it any better myself.
PHP Class 'IMC Objects' released