Keynote - EffectiveUI - Anthony Franco. - anthonyfranco.wordpress.com
Year of 2008 - RIA


Whats the value of RIA?
Is it useful??

More important.

-Talk to your customers!!

- Demo of websites of target and starbucks which suck!

- Web 2.0 = utility + community + engaging experiences.

- A good example of a usable website - 37signals.com
They do it right because they are the audience of the product
they build which is so unlike other products.

- iphone - may not be simple but it is engaging.
So the key is not being simple but being engaging.
Designers need to buckle up to the trend, listen to the customers.

- AJAX is good.. but not good enough?!

- There needs to be a lot of interaction between designers and developers to make
good products.

- Good usability counts
"Advertising yields 5$ for 1$ invested in return. But 60$ for a good user experience."


Grails - Agile web 2.0 the easy way - jeff brown G2one director.
-----------------------------------------------------


Grails
- full stack mvc framework for web apps for jvm.
- exploits power of groovy.
- Leverages tech. like hibernate, spring, sitemesh.
- You never see hibernate in your app unless you are gonna do complex things.
- Grails takes care of that for you. Same with spring.
- Grails Very useful for data driven web sites.

Demo of creating a very simple grails app.

You can create a war file from the grails environment and deploy it in any
servlet container you want. Jetty is default for development environment.
Working for default deploy on glassfish.

Configuration files are specified in a .groovy files in conf/ directory.
Looks like an alternative to xml files.

Grails - start with a object model and schema is a product of that.
Ruby - Start with a schema and the object model is a product of that.


Some commands:
grails help
Commands for grails using Gant "Groovy ant".

Scaffolding for grails controller class -
Dynamic scaffolding and generated scaffolding.

You can make changes to your classes and reload and see it at runtime. It can be
in your controller class or your UI page (.gsp pages).

In groovy, the last expression evaluated in a block is a return statement.

IDE - IntelliJ has excellent groovy and grails support.

Query support ex: Person.findAllByAgeLessThan(<age>;) or findAllByLastName(<age>;)
etc. Works by introspection. Hibernate works inside all this.



Desktop in browser - Coach Wei - CTO Nexaweb Technologies Inc. & Bob Buttone - chief architect
-----------------------------------------------------------------------------------------------

Right now, a lot of development has with ajax widgets and single page refresh applications.
But the real user experience lies in desktop/offline applications.


Successful apps need "continuous experience".
Its about good user experience and good developer experience.

Nexaweb enterprsise web 2.0 platform utilizes all of existing web2.0 stuff like
ajax (dojo, jquery etc) and java+xml.

Different technologies abstracted with common tooling. So skillsets need not be
honed for each technology.

Moving apps to browser in enterprise is the way to go. You can use the technologies
you like like dojo, flash etc in your app. But having a common IDE which abstracts
the technology you use really helps.


Dreamface - The ultimate web 2.0 framework - Oliver Popuney
-----------------------------------------------------------

Helps you do enterprise web 2.0 applications. Can do mashups.

Fully web based development. No IDE involved.It is open source.
You can add widgets from the internet like youtube widgets, google widgets.
You can make communications between widgets visually.No js code from the developer
needed.

Layouts of the webpage also done visually (seems to be specified via the row, column format)

Visual workflow available on the web browser. You can specify entry points of
screen, create web pages, specify criteria for navigating between web pages, provide
business rules for navigation.

Dedicated APIs available for building your own widgets.
There is a wiki available from the widget which tells how to define your own
data widget templates.

The final web page seems a bit like advanced google home page with a lot more features.


Dojo toolkit - A11Y and I18N
---------------------------------

Why is A11Y necessary?

Visually impared
People with poor visibility
Disabled people

Government compliance, a good market for accessible stuff.


Dojo can claim itself as the first completely accessible toolkit.

One of the problem with accessibility is background images in CSS with high contrast
mode. Dojo has custom utility package which checks for high contrast stuff.
Styles for widgets is changed so that all the widget's css background images are
replaced with suitable text.

Lot of work being done in accessibility side these days. Browsers supporting A11Y stuff
ARIA markup is useful for identifying complex widgets on the page.
WAI roles coming up for better accessibility

Firefox 3 has better accessibility features.

Problem with asynchronous page updates because screen reader cannot identify
updated widgets on the page.
"Live regions" a feature coming up in firefox so that asynchronously updated stuff
can be read out by the screen reader. Three modes-polite, assertive and rude.
Polite reads out updated stuff after content being currently read is over.
Assertive does the same too but a bit more faster.
Rude reads out updated stuff immediately interrupting the currently reading text.


I18N and L10N
-------------

Necessary as a lot of other countries in the world with their specific languages
and semantics have a lot of presence in the web.

Text, dates and even content layout can change depending on localization.

Server side frameworks such as JSP, .NET and PHP have localization inbuilt.

But for web 2.0 we need client side localizations. Dojo provides client side
localization. The bootstrap file loads all the necessary resource files for localization.


Comet and Grizzly
---------------------


Ted Goddard and Jeanfrancois Arcand


Web 2.0 - A web for the people, by the people.
Lots of user generated content, Is the user an HTTP client?
Ajax - state of mind (?!)
Ajax does not exist in W3C universe yet. Standards still catching up.

Ajax still synchronous with user events.
But full decoupling means, sending events or updates from server to teh browser.

Advantage of this: Server mediated collaboration. Server can send messages to necessary clients.

http://webmc.icefaces.org/webmc

What is Ajax Push? highly responsive event driven browser applications. No need to do frequent polling.
Advantage - lower latency, not dependent on frequent polling. Server and network do not have to deal
with frequent polling requests.

example application - 4homemedia.com (uses glassfish's comet)

There is
- Ajax polling req -> resp (event on server) req -> resp(with event)
- Ajax push (Long poll) req - - - - > resp (with event) req ------> resp(with event)
- Ajax push (Streaming) req -----> resp (with event) ------> resp (with event)   something like streaming.

Problem with the third option and proxy. Not ready for streaming contents


Ajax push - HTTP message flow inversion.

There is meta data being sent from the client to the server to help the server identify the request
and the response is sent by the server after some time when the event happens.

Bayeux/Cometd - JSON Pub/Sub mechanism.

JSON messages are published on specified channels. Lots of operations like connect, subscribe, unsubscribe etc.
Multiple transports - polling, long polling, iframe, flash etc.
Server side reflector with no server side application possible. This is sort of similar to irc.

Can push scale????

Blocking, synchronous technology will result in a blocked thread for each connection that is "waiting"
Every block thread will consume memory that can affect performance.

Non blocking - You can have threads that are dynamically allocated to serve clients depending on activity on
that connxn. No need to block a thread for a particular client.

Use a new NIO (new I/O) API for a non-blocking sockets to avoid blocking a thread per connection.

Server-side Ajax push: Server considerations

To handle "wait" for an event in Ajax push, select a server/language that does not block.
Web servers with java can be made non-blocking. So, its not one-connxn per thread, but rather one request per thread.

Comments:

Post a Comment:
  • HTML Syntax: NOT allowed

This blog copyright 2009 by venky