| Mashable posts huge list of web development resources |
[19 Oct 2007|01:43am] |
12:00 16.10.2007
Mashable posts huge list of web development resources
Mashable.com is best known for their up-to-minute reporting on trendy websites and social networking news. Along with their standard news, they regularly make posts that list out great resources for different web technologies. Well, it looks like Mashable's Sean P. Aune spent the whole weekend on a new post because he's listed out 250+ tools and resources for coding the web.
While many of the sites will certainly be familiar to Ajaxian readers, there's sure to be plenty of new reading material and tools for all to enjoy. I personally had never heard of Load Info - Gif Generator, a site providing Ajax indicators, and I'm sure I'll find even more great sites as I scan all 250 listings.

Included are links for Ajax, CSS, ActionScript and JavaScript tools as well as sites catering to server-side technologies.
read more at Ajaxian
|
|
| GroupsWiki and Protoedit |
[19 Oct 2007|01:43am] |
12:55 16.10.2007
GroupsWiki and Protoedit
Ben Nolan has open sourced GroupsWiki (which we first talked about almost a year ago). GroupsWiki is a visual wiki, and doesn't require users to learn a special wiki markup.
Part of the release is Ben's editor (tentatively named protoedit) which is a minimalist rich text editor written using Prototype. (The editor is in /javascripts/application.js). I haven't had a chance to pull out the editor in a standalone example - but it's relatively straightforward to wire up. The editor is small (<15k of javascript), clean and object-oriented - and Safari 2 compatible.
Ben did a presentation at Railsconf on using functional javascript (the enumerable functions in prototype.js) and show some examples from the rich-text-editor in his slides.
read more at Ajaxian
|
|
| Ajaxian Featured Tutorial: When is your page ready? |
[19 Oct 2007|01:43am] |
13:00 16.10.2007
Ajaxian Featured Tutorial: When is your page ready?
In this tutorial, Patrick Hunlock takes us through a page's ready states and shows how to write JavaScript code to determine when a page's DOM elements are loaded and available:
The problem with window.onload is that it assumes that no other script or library will want to attach an onload event of its own. And in this day of booming frameworks and endless pre-written snippets, that is no longer a certainty. Indeed, as your Javascript applications become larger you my find yourself stumbling over your own code!
Patrick provides step-by-step explanations and code that shows how to register events so they don't conflict with other libraries or code snippets down the road:
startStack=function() { }; // A stack of functions to run onload/domready
registerOnLoad = function(func) {
var orgOnLoad = startStack;
startStack = function () {
orgOnLoad();
func();
return;
}
}
var ranOnload=false; // Flag to determine if we've ran the starting stack already.
if (document.addEventListener) {
// Mozilla actually has a DOM READY event.
document.addEventListener(\"DOMContentLoaded\", function(){if (!ranOnload) {ranOnload=true; startStack();}}, false);
} else if (document.all && !window.opera) {
// This is the IE style which exploits a property of the (standards defined) defer attribute
document.write(\"[ Error: Irreparable invalid markup ('<scr [...] \"src>') in entry. Owner must fix manually. Raw contents below.] <lj-raw><small>13:00 16.10.2007</small><br>
<b><a href="http://feeds.feedburner.com/~r/ajaxian/~3/170636257/ajaxian-featured-tutorial-when-is-your-page-ready">Ajaxian Featured Tutorial: When is your page ready?</a></b><br>
<p>In this tutorial, <a href="http://www.hunlock.com/blogs/Are_you_ready_for_this">Patrick Hunlock takes us through a page's ready states</a> and shows how to write JavaScript code to determine when a page's DOM elements are loaded and available:</p> <blockquote><p>The problem with window.onload is that it assumes that no other script or library will want to attach an onload event of its own. And in this day of booming frameworks and endless pre-written snippets, that is no longer a certainty. Indeed, as your Javascript applications become larger you my find yourself stumbling over your own code!</p></blockquote> <p>Patrick provides step-by-step explanations and code that shows how to register events so they don't conflict with other libraries or code snippets down the road:</p> <pre>startStack=function() { }; // A stack of functions to run onload/domready registerOnLoad = function(func) { var orgOnLoad = startStack; startStack = function () { orgOnLoad(); func(); return; } } var ranOnload=false; // Flag to determine if we've ran the starting stack already. if (document.addEventListener) { // Mozilla actually has a DOM READY event. document.addEventListener(\"DOMContentLoaded\", function(){if (!ranOnload) {ranOnload=true; startStack();}}, false); } else if (document.all && !window.opera) { // This is the IE style which exploits a property of the (standards defined) defer attribute document.write(\"<scr \" + \"ipt id='DOMReady' defer=true \" + \"src=//:>< \/scr\" + \"ipt>\"); document.getElementById(\"DOMReady\").onreadystatechange=function(){ if (this.readyState==\"complete\"&&(!ranOnload)){ ranOnload=true; startStack(); } } } var orgOnLoad=window.onload; window.onload=function() { if (typeof(orgOnLoad)=='function') { orgOnLoad(); } if (!ranOnload) { ranOnload=true; startStack(); } }</scr></pre> <div class="feedflare"> <a href="http://feeds.feedburner.com/~f/ajaxian?a=Fws8eEus"><img src="http://feeds.feedburner.com/~f/ajaxian?i=Fws8eEus" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=g1z5PKHH"><img src="http://feeds.feedburner.com/~f/ajaxian?i=g1z5PKHH" border="0"></img></a> <a href="http://feeds.feedburner.com/~f/ajaxian?a=53beITue"><img src="http://feeds.feedburner.com/~f/ajaxian?i=53beITue" border="0"></img></a> </div>
<br clear="all">
<p></p><small><a href="http://feeds.feedburner.com/~r/ajaxian/~3/170636257/ajaxian-featured-tutorial-when-is-your-page-ready">read more</a> at <a href="http://ajaxian.com">Ajaxian</a></small></lj-raw><div align="right"><small><a href="http://hiero.ru/rss2lj/" rel="nofollow">rss2lj</a></small></div>
|
|
| Moo on Us: Survey Update |
[19 Oct 2007|01:43am] |
20:14 16.10.2007
Moo on Us: Survey Update
We goofed in our recent survey story; we left out MooTools from the "Frameworks" category. While it wasn't an option in the original survey, over 11% of those surveyed wrote it in. If we'd actually included Moo as an option, it's likely to have scored even higher.
Many apologies for the gaffe; those responsible have been sacked, spat upon, flogged, and keel-hauled. We updated the PDF with this information as well as the number of respondents: 826.
read more at Ajaxian
|
|
| Prototype 1.6.0 RC1: Changes to the Class and Event APIs, Hash rewrite, and bug fixes |
[19 Oct 2007|01:43am] |
22:56 16.10.2007
Prototype 1.6.0 RC1: Changes to the Class and Event APIs, Hash rewrite, and bug fixes
Sam Stephenson has announced Prototype 1.6.0 RC1 which has "fixed a handful of bugs and made some changes to the Class and Event APIs in response to your feedback. We’ve also addressed a long-standing issue with the Hash class."
For example, they show how they changed from:
JAVASCRIPT:
-
-
var Foo = Class.create();
-
Class.extend(Foo, { /* instance methods */ });
-
to:
JAVASCRIPT:
-
-
var Foo = Class.create();
-
Foo.addMethods({ /* instance methods */ });
-
Other changes are:
- Completely rewriten of the Hash class
- Changes to the Event API
- Element#wrap now returns the newly created wrapper element instead of the element being wrapped.
- document.getElementsByClassName and Element#getElementsByClassName are now deprecated, since native implementations of these methods return a live NodeList, while we can only return a static Array. Please use $$ or Element#select instead.
read more at Ajaxian
|
|
| Humanized Messages Library |
[19 Oct 2007|01:43am] |
07:52 17.10.2007
Humanized Messages Library
Michael Heilemann has created a jQuery plugin, Humanized Messages, that implements Aza Raskins transparent messages pattern:
Transparent messages are the brainchild of Jef Raskin. It’s simply a large and translucent message that’s displayed over the contents of your screen. They fade away when the user takes any action (like typing or moving the mouse). In practice, the message is both noticeable yet unobtrusive. And because the message is transparent, you can see what’s beneath it. It’s just humane
You wire it up in a simple way, as shown in this demo:
JAVASCRIPT:
-
-
jQuery(document).ready(function() {
-
jQuery('a.showmessage').click(function() {
-
humanMsg.displayMsg('<strong>Success:</strong> <span class="indent">You clicked \''+jQuery(this).text()+'\'</span>');
-
return false;
-
})
-
-
jQuery('a.showmessage:last').click(function() {
-
humanMsg.displayMsg('"Your <strong>Earth</strong> will be reduced to a burned-out cinder."');
-
return false;
-
})
-
})
-
read more at Ajaxian
|
|
| Dealing with the Flexibility of JavaScript |
[19 Oct 2007|01:43am] |
12:47 17.10.2007
Dealing with the Flexibility of JavaScript
Neil Roberts has written a piece on Dealing with the Flexibility of JavaScript which delves into functions that are overloaded based on signature.
For example:
JAVASCRIPT:
-
-
connect = function(/*...*/){
-
if(arguments.length == 1){
-
var ao = arguments[0];
-
}else{
-
var ao = interpolateArgs(arguments, true);
-
}
-
if(isString(ao.srcFunc) && (ao.srcFunc.toLowerCase() == "onkey")){
-
// ...
-
}
-
if(isArray(ao.srcObj) && ao.srcObj!=""){
-
// ...
-
}
-
}
-
Commentors on the story had varied opinions.
Isabelle likes bridges:
JAVASCRIPT:
-
-
function clicked(event){ processById(event.target.id); }
-
function processById(id){ }
-
Simon Willison and Dylan Schieman discussed how jQuery and Dojo do different things depending on not only arguments, but even the contents of strings that were passed in.
read more at Ajaxian
|
|
| Lombardi Blueprint Process Mapping Tool |
[19 Oct 2007|01:43am] |
14:05 17.10.2007
Lombardi Blueprint Process Mapping Tool
A case study of the Lombardi Blueprint process mapping tool was recently posted to the GWT
developer blog:
Blueprint is a multi-thousand line Web 2.0 application that developed over the last year or so. After trying and abandoning Flash and Dojo based versions of the app, we settled on GWT for its far superior ease of debugging, code size, and execution speed. The refactoring support we get from being able to code in Java and use IntelliJ/Eclipse made it a slam dunk.
The challenge handed to us was to create a tool that the average business user could use to document and manage their business processes. It had to be easy to use, encourage collaboration between team members, and provide a shared repository for all of a company's process documentation. Workflow functionality had to be on par with our competitors: Microsoft Visio, IDS Scheer's ARIS, IBM's WebSphere Business Modeler, and other desktop modeling tools. But we also wanted wiki & shared whiteboard capabilities to store information. Editing should use the drag and drop interaction users of desktop apps are familiar with.
The case study has details on the full experience building the application, which you can see in action here:
read more at Ajaxian
|
|
| MTV & Adobe team up for AIR contest |
[19 Oct 2007|01:43am] |
16:47 17.10.2007
MTV & Adobe team up for AIR contest
MTV and Adobe have teamed to put on a contest to choose the AIR app which makes the coolest use of MTV's assets.
So you want to make an Adobe® AIR™ application, awesome. We're looking for three great ideas - they could be anything. Go simple and practical or complex and addictive. It's up to you! First, download Adobe® AIR™. Then check out all of the MTV assets available to pull in to your application - everything from MTV.com RSS feeds, Video & Podcast mRSS Feeds, and MTV Blog Feeds to and outlandish MTV art.
They're offering up some sweet prizes including:
Total Request Application - Grand Prize
- Two night trip for two to New York City
- MTV "VIP" Night On the Town
- "Pitch Session" with MTV Networks Product Development Team
- Adobe Creative Suite 3 Master Collection
- MP3 Player & One Year Subscription to Rhapsody Music Service
Pimp My Assets: Mashup - Finalist
- One night trip for one to New York City
- "Pitch Session" with MTV Networks Product Development Team
- Adobe Creative Suite 3 Master Collection
- MP3 Player & One Year Subscription to Rhapsody Music Service
Making The Wildcard - Finalist
- One night trip for one to New York City
- "Pitch Session" with MTV Networks Product Development Team
- Adobe Creative Suite 3 Master Collection
- MP3 Player & One Year Subscription to Rhapsody Music Service
Full details for the contest and registration can be found on the MTV contest webpage.
read more at Ajaxian
|
|
| Sun has rewritten the browser Java plugin |
[19 Oct 2007|01:43am] |
01:21 18.10.2007
Sun has rewritten the browser Java plugin
Ben and I are sitting in a Sun briefing where Ken Russell of Sun is announcing that they have ground up rewritten the Java plugin in the browser. The features of the rewrite are:
- Improved scripting support (java/javascript integration is better)
- Improved reliability
- Supports more powerful applets (applets can ask for more memory)
- Better windows vista support (signed applets)
- Enterprise features (run one applet in a particular JRE version)
This will be released via a Java 6 update beta and they will have the new plugin turned off by default, and you will be able to turn it on via a switch in the Java control panel. It has been tested in IE 6, 7, Firefox 3 alpha, and they are hoping that Mozilla back ports the fixes to Firefox 2.
read more at Ajaxian
|
|
| Companion.JS: IE Debugging, now supports console.log |
[19 Oct 2007|01:43am] |
06:23 18.10.2007
Companion.JS: IE Debugging, now supports console.log
Jean-Fabrice Rabaute has released Companion.JS, an IE debugger that features:
- Detailled javascript error reporting (call stack and real file name where the error occured).
- "Firebug"-like Console API feature.
- Javascript console feature useful to inspect javascript objects at runtime.
- A toolbar icon to open the Companion.JS panel.
read more at Ajaxian
|
|
| PackR: Rails Packing |
[19 Oct 2007|01:43am] |
11:26 18.10.2007
PackR: Rails Packing
James Coglan has produced a Rails plugin to handle Dean Edwards Packer.
PackR allows you to programatically compress:
RUBY:
# Create a new instance of Packr first
packr = Packr.new
compressed = packr.pack(script)</p>
# Pass options to control the type of compression
compressed = packr.pack(script, :shrink_vars => true)
compressed = packr.pack(script, :base62 => true)
compressed = packr.pack(script, :shrink_vars => true, :base62 => true)
or you can use the rake task:
rake packr:pack_libs
read more at Ajaxian
|
|
| Enunciate your web APIs |
[19 Oct 2007|01:43am] |
11:59 18.10.2007
Enunciate your web APIs
Enunciate is an open source framework that allows you to automatically build, package, deploy, and to clearly, accurately deliver your Web service API on the Java platform.
It will automatically give you multiple endpoints (SOAP, REST, JSON, GWT-RPC, etc.), generate client code, and give you full documentation.
The new 1.4 release also includes support for publishing your JAX-WS endpoints as GWT-RPC endpoints, including generating the GWT client-side code for invoking the endpoints via Ajax.
Features
Full User Documentation
Enunciate will generate full user-level documentation to describe your web API. The content for the documentation is
taken from the documentation of the original source code (i.e. Javadoc),
consolidating the maintenance of your entire Web service contract to a single place.
Consolidated, Annotated WSDL and Schemas</p>
The common WS stack will provide a WSDL for an endpoint when queried. Generally, the WSDL is generated at runtime, the
associated schema is inline, the semantic constructs (i.e. namespaces, message names, argument ids, etc.) are awkward
and inconsistent, and the scope is limited to that specific endpoint. The XML contract is difficult to interpret (especially
when being consumed for client-side stubs) and doesn’t give a consolidated picture of the whole API because it has no reference
to other endpoints and schema data that service the same namespace
(click here for a more
complete discussion).
Enunciate generates the formalized XML contract at compile-time, providing for a consolidated, efficient XML definition.
Core schema data is consolidated into a single set of schema documents (grouped by namespace), and multiple endpoints
that service the same namespace are put into a single WSDL. This allows for a wider, cleaner picture of the formal contract
and relieves the consumer of the consolidation work.
Multiple Endpoints: SOAP, REST, JSON, GWT-RPC, etc.</p>
Enunciate will publish your endpoint class as a SOAP endpoint as defined by the JAX-WS annotations (powered by XFire). By supplying additional metadata, the same endpoint class will be published
as a XML REST endpoint at a different URL. Furthermore, certain REST endpoints will be automatically available as JSON
endpoints at yet another URL. See the REST module documentation for more information.
Also, by enabling the GWT module, your endpoints will be published via
GWT-RPC along with the client-side GWT code for invoking those endpoints via AJAX.
Client Code Generation</p>
Enunciate will generate client code for multiple platforms to interface remotely with your published API. Not only is
the generated code fully documented, but it is simple, elegant and efficient. Enunciate does not generate
client code from the WSDL but instead reflects it from the original source code, allowing code documentation to be carried over
and preserving valuable information like method signatures, class structure, and variable names.
Currently, Enunciate generates code for the Java 1.4 platform and the Java 5 platform, but has plans to add modules that
generate code for the .NET and C/C++ platforms in the future. Consult the roadmap for
information on other modules in the pipe and how you can help.
Full App Packaging</p>
Enunciate packages your API, extended with each of the above features, into a single web application archive (war file). Drop the war
file into your favorite J2EE container, and consider your web API enunciated.
read more at Ajaxian
|
|
| Google Analytics expands tracking capabilities |
[19 Oct 2007|01:43am] |
12:00 18.10.2007
Google Analytics expands tracking capabilities
VentureBeat is reporting that Google has updated their popular Google Analytics service to begin tracking Ajax and Flash-based requests:
The new additions reflect a growing feeling on the web that pageviews are a less important metric than they used to be. Google Analytics is opening a feature for beta testing that tracks user engagement with elements that have become common with Web 2.0 services, including Javascript, Ajax and Flash applications, widgets and gadgets, and downloadable pages.
With many sites reliant on selling advertising based on page views, this update will allow developers to leverage Ajax, JavaScript and/or Flash without the worry of losing valuable stats data:
While small web companies will be the primary beneficiaries of the new features, the move could also prove meaningful for online advertising. Experts have suggested for some time that advertising rates should reflect elements beyond the simple standard used so far, page views.
Full article here.
read more at Ajaxian
|
|
| Ken Russell on the new Java Plugin |
[19 Oct 2007|01:43am] |
15:00 18.10.2007
Ken Russell on the new Java Plugin
After we posted about the news that Sun has rewritten the browser Java plugin system, we got a chance to sit down with the lead engineer on the project, Ken Russell.
He got to tell us about the fun implementation issues behind the rewrite. It turns out that the new system is mostly written in Java itself, and there is a very thin bridge to the browser. The JVM also runs in its own OS process, so if the JVM crashes it doesn’t affect the browser.
There were also other tidbits, such as having JNLP working natively in the browser, and how this could be used to allow other scripting engines such as JRuby to run in the browser. One JNLP extension, and everyone can share JRuby.
read more at Ajaxian
|
|
| Do you make a distinction between typos and misspellings, or is... |
[19 Oct 2007|07:03am] |
16:26 17.10.2007
Do you make a distinction between typos and misspellings, or is...
Do you make a distinction between typos and misspellings, or is that just me? For example, "regualr" is a typo while "refridgerator" is a misspelling. The former is a mechanical error while the latter demonstrates a lack of specific knowledge. Both are signs of sloppy writing which might be why people don't often distinguish the two. (link) (Comment on this)
read more at kottke.org
|
|
| Dr. James Watson, Nobel laureate: He says that he is... |
[19 Oct 2007|07:03am] |
17:21 17.10.2007
Dr. James Watson, Nobel laureate: He says that he is...
Dr. James Watson, Nobel laureate:
He says that he is "inherently gloomy about the prospect of Africa" because "all our social policies are based on the fact that their intelligence is the same as ours - whereas all the testing says not really", and I know that this "hot potato" is going to be difficult to address. His hope is that everyone is equal, but he counters that "people who have to deal with black employees find this not true". He says that you should not discriminate on the basis of colour, because "there are many people of colour who are very talented, but don't promote them when they haven't succeeded at the lower level". He writes that "there is no firm reason to anticipate that the intellectual capacities of peoples geographically separated in their evolution should prove to have evolved identically. Our wanting to reserve equal powers of reason as some universal heritage of humanity will not be enough to make it so".
Watson's comments have caused some controversy. (thx, demetrice, who says "this makes Wes Anderson look like Medgar Evers") (link)
read more at kottke.org
|
|
| A pair of well-to-do auto enthusiasts named Alex Roy and... |
[19 Oct 2007|07:03am] |
18:21 18.10.2007
A pair of well-to-do auto enthusiasts named Alex Roy and...
A pair of well-to-do auto enthusiasts named Alex Roy and Dave Maher set the unofficial record for crossing the US by car: 31 hours, 4 minutes, faster than the old record of 32 hours, 7 minutes.
According to Yates and his fellow Cannonballers, trying to beat that record today is pointless. Their argument goes something like this: Cannonball records were set back when the free-wheelin' '70s hooked up with the greed-is-good '80s for fat lines of cocaine and unprotected sex. But these, brother, are Patriot Act days - executive-privilege end times in which no rogue deed goes untracked, no E-ZPass unlogged, no roaming cell phone unmonitored by perihelion satellite. Big Brother is definitely watching. Big Speed, the old Cannonballers say, is a quaint, 20th-century idea, like pay phones or print magazines.
Roy was inspired to take up fast driving by the short film C'était un Rendez-vous, where Claude Lelouch races through Paris at breakneck speeds to meet his sweetheart in Montmartre. Here's the route they took, another piece on the record in the NY Times, and a book by Roy on his exploits. This is the sort of thing that is really, really cool up until the moment Roy's tricked out BMW makes contact with a family minivan at 120mph...and then, not so much.
Update: Here's a video of the pair zooming along on the freeway. Comment on YouTube:
Those guys look like they're doing about 90-95... BFD. You see that all the time going up and down I-5 and I-95.. I once was doing about 90 down I-95 and got passed by a HOUSE on a flatbed truck. (yawn) (link)
read more at kottke.org
|
|
|
|