The Internet Archive discovers and captures web pages through many different web crawls.
At any given time several distinct crawls are running, some for months, and some every day or longer.
View the web archive through the Wayback Machine.
Christopher Lukic has created an iPhone application that has been optimized with the network issues in mind.
It's a bar and subway finder for New York City, and I implement a number of techniques to overcome some of the short coming of AT&T's edge network. Virtually the entire site is composed from a single javascript file of just under 25k. By reusing components and keeping server refreshes to an absolute minimum while pulling data in via ajax, I was able to create a pretty responsive component that feels like it belongs on the iPhone (i hope!).
Are you writing classic ASP pages and want to join in the Ajax revolution too? Really? Well, Ajaxed is for you. The framework is simialr to xajax for PHP, in that it allows you to tie in to a named function on th eserver side.
June has been a busy month, and the focus has been around the release of Google Gears, and the Apple iPhone. Both have shaken up the market showing the the future for Ajax is bright and expanding. It is reaching to the desktop, and the phone.
Offline: Gears and AIR
Shortly after Gears was released we saw a flurry of activity that consisted of apps being ported to work offline and libraries being extended to support offline use:
The hype around the iPhone is almost unprecedented. We have tried to keep from joining in, but there has been a lot of interesting work done around Ajax support, and the iPhone is pushing the bounds on Mobile Ajax, just by getting users online. The users will demand more, and vendors will have to step up. We will then have to deliver the applications that they deserve. In the US there isn't the luxury of a top notch network, so we need to deliver it in a smart way too.
With Safari for Windows being announced there has been a lot of talk around browsers. We also got some good news with significant IE memory leaks being fixed.
The jQuery team has a new release, jQuery 1.1.3. The main features are:
Improved speeds, with DOM traversal over 800% faster than in 1.1.2
A re-written event system, with more graceful handling of keyboard events
A re-written effects system (with an accompanying fx test suite), featuring faster execution and better cross-platform support
New selectors: Unicode, Escape, Inequality, and more
Animation Improvements: You can run more simultaneous animations without incurring any speed hits
$("div").is(":visible, :first")
jQuery.browser.version
jQuery UI
Today, we’re also pleased to announce a secret project that we’ve been working on: jQuery UI. This project, being written by Paul Bakaus, is a whole new Drag & Drop library being developed from the ground up with speed and extensibility taken into consideration. Additionally, great care is being taken to have the code be fully documented and tested — allowing many other developers to use and help extend it.
This library will contain full code for Draggables, Droppables, Sortables, Resizables, and a Slider.
NOTE: At the San Francisco Ajax Experience, John Resig will be giving an introductory overview to jQuery followed by an advanced jQuery talk. Glen Lipka will be giving a talk on designing with jQuery.
It is no surprise that a bunch of news over the weekend has been related to developers spending time with the iPhone. We aren't interested in "i love the iPhone" posts, but there are some interesting ones such as Firebug for iPhone.
Joe Hewitt was sick thinking about debugging with alert() again, and didn't want to use Firebug Lite for screen real estate issues, so he created Firebug for iPhone as a proxy.
When your JavaScript console.log()'s away, it send the info to your computer which is running a nice 30" monitor for you to debug on.
As another option I would like a Firebug Lite on the iPhone itself though. What if I could do a finger gesture flip and have the debug window show up to play with. Pelle has it working via a double tap.
This all goes to show that whatever you think of the iPhone itself, the biggest gift that has been given to us is the focus on mobile Ajax applications.
The user adds your gadget to their igoogle portal, or codes it into their own website, by specifying this URL (it may be done indirectly - via the gadget registry. You'll appear in the registry if you've submitted your gadget to igoogle.)
The gadget is rendered as an iframe, so you have all the usual security constraints which stop you borking the portal and other gadgets. This also means you can't communicate with other Gadgets other than via than remote calls to a common third-party server (or has anyone tried hooking them together using the iframe-fragment identifier hack? ).
It's based on a Digg Roundup tool, where the gadget show Digg stories according to user preferences such as topic and whether to go for popular or upcoming stories.
Now we can get our hands on an iPhone, developers are testing out Safari to see what is actually available. How is the DOM? What events get fired? How does the keyboard send onkey* events? How is scrolling handled? How is the JavaScript support?
Poking around the DOM, I don’t see any special objects, with the possible exception of window.offscreenBuffering (set to true).
Bookmarklets work, although you have to go through the bookmarks menu to get to them.
Safari crashes are handled gracefully - the main screen fades back in, and you can jump right back into Safari. It will then load page you were visiting when it crashed.
Drag and drop, and other behaviors based on picking up mousemove events, don’t work. CSS-based element drag and drop doesn’t work either. Dragging one finger around the iPhone’s version of Safari causes the window to scroll, and that’s it. I assume that scroll events do work. I’m sure somebody is already working on a version of drag and drop based on window scrolling.
For documents with no width set, the iPhone uses a default width of 980px.
My first task has been exploring the DOM events that you can handle. You do not get "mousedown" when you touch the screen. You get "mousedown" and "mouseup" at the same time when you release your finger. The "mousemove" event does not seem to fire at all. There is no way to handle double-clicking because that is the action for zooming, and calling event.preventDefault() doesn't seem to override that.
If Safari is the current SDK, we need help as developers to build, and debug, applications.
Adeel Khan has created another HTTP shell called htsh using PHP on the backend and jQuery for the front end. It currently supports most common commands, like cd, chmod, cp, edit, exit, ls, mkdir, mv, rm, rmdir, touch, unzip, and zip. It is also very easy to add your own commands. It even supports tab-completion.
There is a demo to play with that doesn't have all of the commands enabled for security reasons.
Engin Bozdag, Ali Mesbah, and Arie van Deursen of the Delft University of Technology have compiled a technical report on various push versus pull techniques of building Ajax applications based on an example application that they built.
They concluded that:
In this paper we have compared pull and push solutions for achieving web-based real time event notification. The contributions of this paper include the experimental design, a reusable implementation of a sample application in push and pull style as well as a measurement framework, and the experimental results.
Our experiment shows that if we want high data coherence and high network performance, we should choose the push approach. However, push brings some scalability issues; the server application CPU usage is 7 times higher as in pull. According to our results, the server starts to saturate at 350-500 users. For larger number of users, load balancing and server clustering techniques are unavoidable.
We’ve released the first beta of our iPhone Development Plugin for the Aptana IDE. Since ‘Web 2.0’ is the development model of choice for the iPhone, and that is what the Aptana IDE is all about, it made sense that we’d support it in every way we could. For this first beta, here are the features we have (and some that are coming):
Preview of your iPhone projects in horizontal or vertical mode
iPhone Project contains starter files to get you going easily on your iPhones apps
Several example apps that leverage the iPhone form factor
Easy import of Ajax libraries into iPhone projects
Integrated content assist for iPhone-specific APIs (coming soon)
Scriptor will have iPhone support released by Friday.
No matter what you think about the "SDK" issues (I am sure you can get some Cocoa going in the future) it is amazing to see how fast these vendors have jumped in, and how fast developers have built applications. And, this is still before the phone is released.
Ryan Johnson has developed PhotoFolder, a simple library that "scans a given folder for JPEG files with any number of thumbnail sizes per image. If the resized images do not yet exist, it will automatically create the thumbnails for you. The result is that your workflow for adding new images to an application built with PhotoFolder is a simple as putting named JPEG files in a directory."
In Episode 20, we chat with Kevin Lynch, Brendan Eich, Alex Russell and others to find out more about
Project Tamarin, the high-speed JavaScript engine donated by Adobe to the Mozilla Foundation.