jsquery - AJAX JavaScript ResultSet with securable JDBC server side component
October 31, 2005
This is a very FAST AJAX implementation using server generated javascript and eval() as opposed to XML.
Site includes full source code distribution with working examples.
An implementation of an AJAX JavaScript data generation server, http client, and client result set
Uses a JavaScript http client to dynamically map the results of data requests from a Java application server to a web browser HTML form without requiring refresh or page submit (similar to Google Suggest). Server side data can be SQL via JDBC, an object relational mapping using a tool such as Hibernate, returned from a server connecting a group of peers or pipelined from another source like a SOAP server.
Adding Persistent Searches to GMail via Greasemonkey (& Ajax)
October 27, 2005

This is pretty cool. Say you have an often-performed search on your GMail archive - you can store that as a Persistent Search via a Greasemonkey plugin to Firefox.
More details:
Persistent searches (a.k.a. smart folders or saved searches) seem to be the feature du jour of email clients. Thunderbird has them, Evolution has them, and Mail.app soon will. On the other hand, Gmail is the web mail app to use. While one doesn’t normally think of web apps as having such advanced power user features, it recently occurred to me that it should be possible to add persistent searches to Gmail.
WebORB Message Server Chat (with Google Maps)
October 26, 2005
If you really want to see a cool “Web 2.0″ application, look no further than this sweet visual world / global chat system built by The Midnight Coders. It pretty much freaking rocks.

From the site:
This example demonstrates bi-directional messaging between heterogeneous (Flash and AJAX) clients and WebORB Message Server. The server performs additional processing to geolocate chat users, injects necessary information in messages so users can plotted on the map.
Type your message in the text field below and press Enter or click Send to broadcast the message to the channel. To share your map with a user, select the user in the list and click the ‘Share Map’ button. The user has to accept map sharing and you will be notified when it happen. Once the map is shared, you pan, zoom and switch map types. All of these actions are immediately replicated with the other user.
WebORB Message Server Chat (with Google Maps)
AJAX: Dawn of a new developer - Good introductory article on JavaWorld.com
October 18, 2005
Dave Johnson presents an excellently written introduction to Ajax over at JavaWorld.com. Besides calling Ajax the “crown jewel in the current Web evolution that has been dubbed Web 2.0″ (a position we would not necessarily disagree with…), Johnson presents a good case (especially directed towards Java developers) for the use of Ajax. He also gets into some good patterns to use and development tips. All in all, an excellent Ajax article, especially if you’re a Java developer.
Summary
The recently coined term AJAX (Asynchronous JavaScript with XML) has given new life to Web development and spurred the advance of Web 2.0. This article looks at the current state of AJAX and how it is changing the Web developer’s job description. In particular, Dave Johnson identifies some of the more important AJAX technologies and tools and how these are introducing new usability and development issues for Web developers.
Read the entire article: AJAX: Dawn of a new developer
Tiny Tiny RSS - Another online Ajax RSS feed reader - GPL
October 16, 2005
Similar in some ways to Orangoo.com (see our recent review of Orangoo here), Tiny Tiny RSS is a sweet and simple RSS reader. Add keyboard-based navigation of the feeds and this is a very solid project. GPL licensed, too, so that’s pretty great. You can download the source and run it on your own server.
tiny tiny rss
Rationale
For years I’ve been searching for a perfect RSS aggregator. I tried desktop ones (Straw, Blam!, Liferea) - while nice programs they usually lacked something or were overencumbered with features. Also, desktop aggregators can’t solve the problem of keeping read feeds in sync between different machines.
I tried server-side aggregators, several ones. Unfortunately, I didn’t find anything that felt usable, they had all the problems of classical web applications - clunky interface, no realtime updates, just not designed the way I like it, etc.
Well, then the obvious solution was to write an aggregator myself. I also felt the need to exercise in simple XmlHttpRequest web application programming, so TT-RSS was born. While obviously being on early stages on development and pretty much unfinished it offers a lot of functionality of desktop application while staying on server-side with all the benefits it provides.
Description
Server-side RSS feed aggregator written in PHP and heavily based on XmlHttpRequest and related technologies for user interface and operation.
License
GPL.
Requirements
* Magpie RSS feed parser;
* PostgreSQL or MySQL (InnoDB and version 4.1 required);
Notice the distinct lack of using the term Ajax. No Ajax for this guy–he’s hardcore XMLHttpRequest all the way, baby!
He has written a lot of neat stuff there. Go check it out!
Visit his site: http://bah.spb.su/~fox/tt-rss/
Via eHub
AjaxBlog.com Review: Orangoo - Ajax-enabled RSS Feed Reader
October 11, 2005
AjaxBlog.com Review: Orangoo - Ajax-enabled RSS Feed Reader
http://www.orangoo.com/
Summary
Orangoo is an online RSS and Atom feed reader that utilizes Ajax to deliver a smooth user experience for reading feeds though it still has some rough spots to iron out.
Ajax RSS feed reader
Ajax is a natural technology for something like online RSS feed reading, since you want quickly updating content. So we were excited to try another online feed reader - Orangoo, written by Amir Salihefendic.

Easy sign-up
The sign up process was painless. Simply enter your email address and a password. You can select a RSS feed content pack (a nice idea) to get started. Note that the lack of a Privacy Policy will be concerning to many people.

Familiar interface
After signing in, you see your feeds in a classic, similar to email style 3 pane window. Click on a feed on the left to view the items in the feed. The items fill in above the main viewing area.

Subscribe to feeds
A list of feeds you can subscribe to “out of the box” are provided. Subscribing to these is dead-easy. Just click on the feed to subscribe. It doesn’t get easier that this. There are some good ones there, too, which is nice.

Subscribing to a custom feed
Subscribing to a custom feed URL didn’t seem to be working 100%. When we tried subscribing to the AjaxBlog.com RSS feed (http://ajaxblog.com/feed/) we got an error. We suspect this may be due to us using Feedburner to deliver our feeds, which involves a redirection, which maybe Orangoo doesn’t support yet? Entering the direct Feedburner feed URL did work, however. It also appears that Orangoo was only displaying the excerpt from our Feedburner feed, although we publish full-text in the feed. Weird.

Room for improvement
There are a couple of areas that suggest improvement:
No stated Privacy Policy
Everyone needs a privacy policy, especially when you are collecting people’s email addreses.
No key commands
One really nice thing about Google’s feed reader is that you can advance to the next item by clicking j or to the previous one by pressing k. That would be a nice addition to this feed reader.
Syntax errors
We got occasional random javascript “Syntax Error” dialog boxes popping up. Also, when we tried certain things we got other errors. This seems to still be a little rough around the edges in this department.
del.icio.us integration
The del.icio.us integration seemed to not be working 100% smoothly. In addition, while we were testing the application it seemed to change (maybe we caught it right in the middle of a release?) The potential for integration is definitely there. Looking forward to a good implementation.
Summary
Orangoo is a promising web-based RSS feed reader that leverages Ajax to provide a smooth user experience for reading feeds. It is very similar to reading your email, and requires a mouse to navigate. There are still some rough spots to the application, but it’s worth checking out nonetheless.
Go to Orangoo.com
Thanks to eHub for the pointer to Orangoo.
Update: Just found another review over at AjaxReview.com. Go check it out.
Particletree · The Hows and Whys of Degradable Ajax
October 9, 2005
It’s been a long time since I turned Javascript off. This is a good article about building gracefully degrading Ajax-enabled web applications. Basically, make sure you have at the core of your application a regular web-page, minus any scripting or onclick events. Then, build your Ajax features back in from there.
Particletree · The Hows and Whys of Degradable Ajax
How to Approach Degradable Ajax
The general strategy here is to start by creating a page that works like a normal site—processing information on page loads and refreshes. Then, if JavaScript is enabled, we have our scripts bypass this normal functionality and replace it with sweet Ajax functionality.
Now, creating a degradable Ajax site is a bit different from a creating a site with unlimited Ajax potential. Here are some strategies I’ve come up with to help you build a degradable Ajax page.
JavaScript: Start with JavaScript turned off. Doing this forces you to make sure you structure your page to work without JavaScript enabled. This does not mean that you can’t add slick Ajax animations in later, but it does keep you focused on the goal. It also means that we are temporarily removing “onclick” from our toolbox.
Markup: If you design a project with no JavaScript from the start (and therefore no “onclick”), you will realize the only elements that perform an action and are “clickable” places for user interaction are the
<a>elements and the<input type="submit"/>elements. What you are sacrificing then, is the ability to make divs and other common elements clickable. I have, however, noticed that most of your general web 2.0 effects can be accomplished no problem with just these two elements. It’s sort of like in CSS when you have to make sure an element doesn’t have a fixed width AND left or right padding to insure it doesn’t create problems with browsers that don’t follow the box model properly. It’s not hard, just requires a little extra creative problem solving effort.Noscript: And let’s not forget that when you’re creating an interface, there’s a W3C ordained element meant specifically for allowing users access to content that wouldn’t be available if a browser has scripting disabled.
Via del.icio.us
AJAX Proxy 0.1
August 5, 2005
If you’ve read any of the posts I’ve been dumping here, you’ll know I’m critical of the way AJAX is frequently being used on the grounds that the network / server (and their inherant instability) aren’t being considered. Specifically have the feeling alot of AJAX development is happening @localhost so these problems simply aren’t showing up.
Enter AJAX Proxy, which is meant as a tool to simulate network / server delays by sitting between your browser and your web server and delaying things.
The first version is up here and currently in very hacky form. It’s based on HTTP Debugging Proxy which in turn was based on TinyHTTPProxy. To get it to run on Windows, got some help from rgutils.async, which I used to replace the signal calls. Also, with a little hacking, got it to support a proxy itself (if you’re behind one) - see globals at start of ajaxproxy.py.
To run it, unzip the source somewhere, make sure you have Python installed then from the command line;
[code]
$ ajaxproxy.py 8080
[/code]
The argument is the port number it should run on (defaults to port 8000).
You then need to reconfigure your browser to use it as a proxy server (Firefox > Tools > Options > Connection Settings > Manual Configuration: http proxy = localhost, port = whatever port you used). Also make sure localhost (if that’s where you server is) is not listed in the “No Proxy For” field.
If you now make a request to localhost, you should see the request and response headers logged to your command prompt (TODO: extend this logging to include the payloads)
By default it won’t interrupt anything. To get it to delay / interrupt the request or response, right now you need to hack the source code (TODO: mini language to make this easier). In ajaxproxy.py, check out the following functions;
[code lang=”python”]
def beforeRequest():
“”"This function is executed before the request happens”"”
#Constant sleep
#time.sleep(2)
# Random sleep
# r = random.Random(time.time())
# time.sleep(r.choice((0,5)))”"”
# return 0 # Request never happens
return 1
def afterResponse():
“”"This function is executed after response is received
but before it’s given to the browser”"”
#Constant sleep
#time.sleep(2)
# Random sleep
# r = random.Random(time.time())
# time.sleep(r.choice((0,5)))”"”
# return 0 # Response not sent to browser
return 1
[/code]
It doesn’t support HTTPS (or FTP or anything but plain old HTTP) but if you’re confident to hack a little python, it’s hopefully good enough to get a feeling for what your AJAX app is like when delays start happening.
More as it evolves…
Backbase - Rich Internet App Framework
July 8, 2005
Backbase provides “Rich Internet Application (RIA) software that radically improves the usability and effectiveness of online applications, and increases developer productivity. With Backbase you can build web applications with a richer and more responsive user experience.”
Why Backbase?
- Based on Web Standards: XHTML, CSS and DOM
- Powerful XML-based User Interface language
- Zero install: no plug-ins, no Java required
- Cross-browser compatible, multi-platform
- Easy to learn & fun to work with
Javascript static variables
June 2, 2005
Something I find strange about Javascript;
[code lang=”javascript”]
function Foo(){};
Foo.prototype = {
bar: [], // or ‘new Array()’ or ‘new Object()’
set: function(val) {
this.bar.push(val);
},
displayBar: function() {
alert (this.bar);
}
}
var foo = new Foo();
foo.set(1);
foo.set(2);
// Alert displays 1,2
foo.displayBar();
// Destoy the object
foo = null;
// Create a new one…
var x = new Foo();
// What does this display?
x.displayBar();
[/code]
By declaring the bar property to be an Array, it seems to make it static to values assigned to the array are in effect updating the class definition - later objects inherit those values. The same works for Objects and both Moz and IE behave the same way, so this would seem to be a feature. The only way to really free the memory is to modify the prototype e.g. Foo.prototype.bar = null;
Anyway haven’t seen it discussed before before - perhaps a useful feature or otherwise a path to eat up memory and forget to free it.






