Possible implementations
* iFrame (causes display of undesirable visual effects, browser memory grows infinitely)
* client side: iFrame contains a script tag. response also containing a script tag is written out to iFrame
XHR long-polling (reconnects are expensive - ok for some applications)
Maintain intermittent persistent connection, re-establish on data
client side: XHR based recursive call
XHR streaming (bad browser support)
Maintains persistent connection
client side: waits for readyState 3.
Binary Socket Bridge (relies on plugin, no iPhone)
Use a plugin (Flash, Silverlight, Java) to stream events
At least as good as XHR streaming.
HTML5 Server-sent DOM events (not yet implemented)
Native Comet/Push channel
client side:
From Transports to APIs
* Dojo has cometd, a Pub/Sub model - but this half-duplex (why?)
* HTML5 Web Sockets define a full duplex communication channel.
* Ultimately, don't need middleware at all. Can have JS communicate directly with XMPP/IMAP/POP/SMTP/etc
= State of AJAX 12 - 13 =
Two excellent presenters from Ajaxian.
Making users happy
* Expectations change in industries (gaming, movies)
* First function, but now we are stages of "wow"
* Ex. Apple online store, Google maps
AJAX raises the bar, increases user expectation on the web.
Old Taxonomy:
* Prototype: lightweight AJAX/JS helpers
* GWT: Hate JavaScript? Use Java
* jQuery: DOM-centric JS helper
* dojo: Pretty much everything! Big heavyweight solution
New Taxonomy: Dojo Core, jQuery, Prototype.js are more popular so should be used.
Why use a JS library?
* Cross browser
* Simplifies doing AJAX requests
* CSS and Animations
* DOM interaction convenience (and abstracts browser differences)
GUI Toolkits for the web: browsers as universal run times
* jQuery UI/ExtJS/dijit/script.acu.lous
* Scriptaculous/Objective-J
General UI ideas:
* Responsiveness! After 0.1s, user perceives sluggishness. After 1s, user's flow of thought is interrupted.
* Use worker pools! They won't affect the UI thread directly.
* Unlike threads, they don't have access to the program state.
Blurring boundaries between various apps (Gears, etc)
* Take traditional stack of web apps and put them offline
* Also allow integration with OS services.
Demo of dynamically extended 37signals Campfire:
* Using fluid.showGrowlNotification()
Interesting idea of writing iPhone apps with the canvas element.
= Browser Panel 11-12 =
HTML5: the spec is still in draft. what is implemented, what isn't?
Mozilla: canvas, offline support, web workers (javascript runs in background threads, no memory sharing, allows to exploit multi-core parallel hardware)
Google: WebKit supports a bunch of HTML5, gears transformed into offline support, UI specs are exciting (custom scrollbars, etc). Google plans to extends WebKit
Microsoft: the spec isn't ready yet... ? taking their time because of the immaturity of the HTML5 draft. basically waiting for others to implement it first, and then look at their code :)
To Mozilla: does mozilla exist in the midst of corp competition?
Hard to do OSS right.
To Microsoft: why don't you implement canvas? cause of silverlight?
Not suggesting that you use silverlight instead of vector graphics ever.
Planned for the future
To Google: what's the focus of Chrome?
To increase reliability of web applications, and make life of web dev easier
Down the road to support HTML5
Audience question: how dead is SVG?
Mozilla: SVG isn't dead. Mozilla implements it. Mocked ACID3 test. Wants to see harmony between Canvas and SVG
MS: Yeah.
Google: SVG isn't used that much.
AQ: Debugging tools?
Mozilla: Firebug is only the beginning
MS: Try IE8 beta 2 - it's good
Google: chrome has two debugging tools: V8 Debugger and WebKit inspector. WebKit nightlies++
AQ: Browser as an OS? When/if primary way desktop apps are made will be for the browser?
Google: browser != OS, but can foresee something like camera interfacing directly with picasa
Mozilla: browsers have already invaded desktop app realms.
AQ: Cross browser development sucks. How to fix?
MS: trying to tackle the problem by creating a large test suite and contributing to W3C. also providing compat mode.
AQ: Will chrome ever use the data that they have on you? Will this be exposed to developers?
Already does. Used in the Omni Box
Unlikely to be exposed to developers for privacy reasons
AQ: Browser addons. Will you support it?
Google: will support them, but working on getting them stable first
Mozilla: working on isolation techniques
IE: addons have existed for a while. difficult to write, since they must be COM objects
AQ: Browser geolocation stuff? User scripts?
MS: Privacy concerns for both questions. But otherwise, very excited about it.
= Thursday =
== The Sequel to SQL ==
Pretty basic tech overview of the existing cloud solutions in the Cloud.
Intro:
* RDBMS are ubiquitous, but annoying to deal with, since we deal with objects
* Object databases tend to be too slow and lacking in tools
* Key/Value data structures like berkeleyDB are very fast
* Object relational mapping is all over the place
The Cloud:
* Cloud stack:
* Software as a Service (SalesForce)
* Platform as a Service (AppEngine)
* Tools as a Service (Amazon SimpleDB)
* Hardware as a Service (Amazon EC2)
* Unlocalized and anonymous computing service
* Benefits: cheaper, smaller barrier to entry, serve customs locally, "elastic" availability
The problem?
* Need duplication and partitioning. So data needs to be partitioned and replicated across multiple nodes
* Sharding data: how to join tables?
Google BigTable
* Large scale storage of Entities (sets of name/value pairs called properties)
* Indexes are required for all queries
* Immediately consistent :)
* But there are limitations
Amazon SimpleDB
* Tabular store of Domains (like tables) with Items (set of attribute/value pairs)
* Auto indexing
* Eventually consistent :(
* Everything is a string :(
10gen Mongo:
* Dynamic language ODBMS targeted for the cloud
* Lots more details which I don't really care about since it's completely unproven
Look at AppJet, Drizzle and CouchDB
Hadoop
* Distributed File System
* Map/Reduce Engine (distributed calculations across large dataset)
== SEO for Web Developers ==
Introduction:
* Up to 30% of page views originate from search engines
* Up to 87% for e-commerce
* Cloaking: showing one page to users and another to search engines.