Web Info & Tutorials

November 9th, 2006

ZIMBRA DEMONSTRATES OFFLINE AJAX

I know that the network will catch up, but in today’s world people want to be able to access their data when they are offline, whether it be on a plane, or just when the darn cable connection does out again.

Zimbra demonstrated taking their Ajax collaboration app offline today:

The design goal is to have the same user experience with Zimbra both online and offline. Technically the Zimbra Offline client is the same AJAX client UI but now connecting to a local sync’d cache of the data and more importantly the ability to search, tag, organize, etc without network access. The two way sync of mail, calendar, contacts, and documents will allow Zimbra user’s to take their collaboration data together with the Zimbra AJAX experience with them on the road or in places without a network connection and when they come back online - all of the changes made while offline (like composing, deleting, moving, creating messages, contacts, events or folders) are sync’d back to the cloud. Just like traditional offline mail clients - messages pending to be sent are stored in an Outbox where you can edit and view them until re-connected. You’ll notice in the screenshots that both POP accounts and RSS feed folders are sync’d when in offline mode just as when online. RSS folders have been part of Zimbra for a while. POP aggregation will be part of our next major release and IMAP will be added shortly after that. Mail identities allows you to respond with the FROM and REPLY-TO addresses that the mail come with - responding to mail POP’d from gmail; Zimbra will automatically set the FROM address to your @gmail.com account. This feature is also useful for people who would like to respond as support@company.com when responding on behalf of a support team mail list for example. Mail identities will also be part of Zimbra’s next major release. Watch this space for more on the architecture of the offline sync cache - meanwhile below are some screenshots.

I haven’t heard what implementation they are using. In the past they use the localhost proxy (so you could always connect) but that is an install, which is a pain. Now they could be using browser storage?

November 9th, 2006

ENDLESS PAGELESS: KEEP SCROLLING FOR MORE CONTENT

Pete Forde has taken the Pageless implementation seen in the Humanized Reader, implement it with Prototype, and write this piece on it.

They implemented the feature on their Live Filter demo, so now as you scroll down you see more results coming back at you automatically. No next, previous, or Gooooooooooooooooooogle (for SEO you will want a solution so the crawlers can find the content via deep linking).

Implementation

The key to creating your own Pageless is to always know how far into the page a user has read. We create event handlers that trigger an Ajax request if the user comes within an adjustable distance from the bottom of the screen. Using the setTimeout function built into JavaScript, we can create a very responsive control loop that scans the current browser scrollTop attribute at tight intervals. By setting the onmousedown and onmouseup we prevent any sudden, unwelcome screen jerking.

As we move down the screen we save our current location to a temporary cookie, which allows us to resume our place on the page if we return to the results using the browser’s Back button. The trick is to define an empty, invisible DIV element which is programatically moved down the page to your previous location at page load. It acts like a magical cursor, triggering all necessary content loading as it scrolls down the page. After a brief delay, the page state has been restored without breaking the Back button.

On the server we set up a function to respond to the Ajax calls for more pages of content. It will need to accept the required page as a parameter, and it should pass the corresponding rendered HTML snippet back to the client, at which point you will append it to the bottom of the content already rendered. Thankfully, implementation of the innerHTML attribute is consistent across all major browsers.

Most of the logic for making this work is performed on the client side. The good news for you is that all of the hard work has been done for you; go ahead and use search.js in your projects! We make use of the Prototype JavaScript library that is a part of Rails, but it could be modified to use another Ajax library, if necessary.

On the results page you must render values into several hidden INPUT elements: history_index, total_pages, and page_id. history_index will start off empty, and get modified by the client script. total_pages needs to be the total number of pages that the user’s query could theoretically return at n records per page. Rails gives us this number automatically when we perform a paginated find call. Finally, history_index is just a unique number; we fill it with the number of milliseconds since 1970. There are also several DIVs, initially hidden, which you will modify to suit your application.

One caveat is that you need to make sure your server side function returns a signal to the client if no records are found. The way that the Ajax class in prototype works, you will need to receive at least one character for it to be properly handled.

We are seeing this pattern more and more, such as on the mobile with the latest Gmail Mobile application that was just released.

November 9th, 2006

FJAX: SWITCHING THE A TO F MEANS WHAT?

Jay and Steve McDonald didn’t aforementioned tralatitious Ajax (the libraries, the XML parsing (even though you crapper ingest JSON of course)) and definite that they could create “smoother, more desktop-like scheme experiences that AJAX promises”, as they said in an discourse at juxtaviews.com.

What is Fjax?

Website: “Fjax is an open, lightweight, cross-browser epistemology for Ajax-style scheme 2.0 development
Fjax is a support convergent on drastically streamlining the XML direction place of scheme 2.0 applications. Picture Ajax’s XML parsing and direction with inferior than 65 lines of code! It’s not a equal for toolsets that wage presentation-layer seeable gizmos. Think of it as a newborn engine to place low the cowl of every the enthusiastic widgets that are already discover there.”

Interview:

Jay: Flash. XML. Approachable. Dynamic. Content.
Steve: fun, easy, compiled, creative, secure.

The website is of instruction finished in Fjax and follows a azygos tender covering family (apart from whatever pages that do intend url changes so you crapper charge them). To intend instruction that impact you requirement to utter “Permalink this page”. This is the aforementioned supply as you hit in the connatural Ajax concern when you are swapping discover noesis dynamically of course.

The discourse asks diplomatist and Steve about:

  • They feature “necessity is the care of invention”. Is that genuine with FJAX? Was that your undergo in reaching up with this support as an AJAX alternative?
  • Have you utilised FJAX extensively in your possess organisation work? Have you seen another grouping ingest the profession effectively?
  • What’s been the large contest in transfer FJAX to the open consciousness? How has the utilization accord responded?
  • Are you hunt whatever variety of stylemark for the constituent “FJAX” and hit you contacted Adobe most FJAX?
  • With advancements in moving video, css integration, and xml parsing Flash has dead embellish a goods in the concern of Web 2.0. However, this takes whatever of the “open source” ism discover of Web 2.0 utilization and creates a dependency on a advertizement tool. Do you hit whatever thoughts on Flash’s ordinal life?
  • What are Flash’s weaknesses and what kinds of improvements would you attain if you were nous of creation utilization at Adobe?
  • You’ve been featured in Wired.com for your support and you hit a website sacred to FJAX. Has your brainstorm of FJAX, and the ensuant attention, strained your underway design/consulting business?
  • In your opinion, what’s the most elating abstract most the Web today?

This could be a pleasant cushy to ingest framework, and Flash isn’t as scary as it utilised to be (politically as substantially as technically). Personally, we conceive that Fjax IS ease Ajax, modify if it isn’t AJAX.

Flax

November 9th, 2006

NOTTR: MORE WEB 2.0 NOTES

Web 2.0 notes seems to be the hot thing. The Ajax chat of 2006 if you will.

Thiago Jackiw, developer of the acts_as_solr plugin for Ruby on Rails, has just
launched his latest Ajax'd project, Nottr.com.

Nottr.com is a free website where you can write your notes and:

  • Share them through the web in a "blogish" style
  • Create tags to keep them organized
  • Send them to your or your friends' cellphone or email (coming soon)
  • Schedule reminders (SMS/Email) for those important notes (coming soon)
  • Add friends so you can easily read their shared notes
  • Bookmark (where available) websites, articles, etc directly to your Nottr account

Nottr 1

Nottr 2

November 9th, 2006

PYTHON IN ASP.NET

Darryl sculpturer reported that “In a word at the DevConnections word here, king Ebbo, an creator on Microsoft’s CLR (Common Language Runtime) impulsive module team, and Jeff King, a information trainer in the Microsoft Developer Division, discussed how Microsoft has implemented IronPython on the company’s ASP.NET platform.”

In addition, Ebbo said his aggroup has delivered a image of a “secret project” titled Simplified Data Scenarios where developers crapper “easily physique data-bound applications from scratch” play exclusive with a database.

The image enables users to make applications declaratively using ASP.NET or programmatically using IronPython, Ebbo said.

Meanwhile, King said IronPython is “really meet the prototypal of a program of impulsive languages” Microsoft module support. “We’re hunting at Ruby, PowerShell, JScript” and others, he said.

Ebbo said the Simplified Data Scenarios hold module impact with another impulsive languages as well. “We’ll hit it prototypal on IronPython, but it module impact with others,” he said.

It is enthusiastic to wager impulsive languages run into the crowning platforms: The JVM, the CLR, and the JavaScript VM. Tooling hold is something that is necessary for some of the impulsive platforms, so if vendors crapper support there, we module be in a beatific place.