Researcher at the Dutch national research centre CWI (the first European internet site)
Co-designed ABC, the programming language that Python is based on
In the 80's co-designed what you would now call a browser.
Organised 2 workshops at the first Web conference in 1994
Co-author of CSS, HTML4, XHTML, XML Events, XForms, etc
Chair of HTML and Forms working groups
Until recently, editor-in-Chief of ACM/interactions.
Sapir-Whorf Hypothesis: Connection between thought and language.
If you haven't got a word for it, you can't think it.
If you don't perceive it as a concept, you won't invent a word for it.
For example: Dutch Gezellig
The Deeper Meaning of Liff: A Dictionary of Things There Aren't Any Words for Yet — But There Ought to Be
By Douglas Adams and John Lloyd
Such as:
The Deeper Meaning of Liff: A Dictionary of Things There Aren't Any Words for Yet — But There Ought to Be
By Douglas Adams and John Lloyd
Such as:
PEORIA (n.): the fear of peeling too few potatoes
The Deeper Meaning of Liff: A Dictionary of Things There Aren't Any Words for Yet — But There Ought to Be
By Douglas Adams and John Lloyd
Such as:
PEORIA (n.): the fear of peeling too few potatoes
ABINGER (n.): Person who washes up everything except the frying pan, the cheese grater and the saucepan which the chocolate sauce has been made in.
The Deeper Meaning of Liff: A Dictionary of Things There Aren't Any Words for Yet — But There Ought to Be
By Douglas Adams and John Lloyd
Such as:
PEORIA (n.): the fear of peeling too few potatoes
ABINGER (n.): Person who washes up everything except the frying pan, the cheese grater and the saucepan which the chocolate sauce has been made in.
DUNGENESS (n.): The uneasy feeling that the plastic handles of the over-loaded supermarket carrier bag you are carrying are getting steadily longer.
There are new words in use which seem to upset people - "What's so special about that? I've been doing that since 19xx"
Blog (1995)
Blog (1995)
Microformats (1997)
Blog (1995)
Microformats (1997)
Tags (1997)
Blog (1995)
Microformats (1997)
Tags (1997)
Ajax (1999)
Blog (1995)
Microformats (1997)
Tags (1997)
Ajax (1999)
Web 2.0 (all of the above)
Blog (1995)
Microformats (1997)
Tags (1997)
Ajax (1999)
Web 2.0 (all of the above)
These are words that let us talk about things that already existed. They create the concept.
But they also signal the success of work that has gone on in the past. After all the Web was designed for all these things!
To demonstrate Moore's Law
Take a piece of paper, divide it in two, and write this year's date in one half:
Now divide the other half in two vertically, and write the date 18 months ago in one half:
Now divide the remaining space in half, and write the date 18 months earlier (or in other words 3 years ago) in one half:
Repeat until your pen is thicker than the space you have to divide in two:
This demonstrates that your current computer is more powerful than all other computers you have had put together (and the original Macintosh (1984) had tiny amounts of computing power available.)
Badly...
Mostly for pixel pushing.
Most computers spend most of their active life idle.
High-level programming languages
Interpreted programming languages
Declarative approach
One of the big advantages of applications over the web is that everyone has always got the most recent version.
One of the disadvantages is how difficult they are to author (Google maps is more than 200k of Javascript)
The world isn't just PC's
There are now more browsers on phones than on personal computers.
There are browsers on many new devices: phones, PDAs, printers, even refrigerators; there are increasing numbers of form factors, sizes, resolutions.
Not only do we have diversity of devices, but diversity of users too!
We are all visually impaired at some time or another:
Not only do we have diversity of devices, but diversity of users too!
We are all visually impaired at some time or another:
Most applications do not support accessibility in any meaningful way.
Even if you can zoom the text, the menus and dialogue boxes stay just as
small.
The need for so called ten-foot interfaces is an admission of lack of accessibility.
By the way: Google is a blind user, and sees only what a blind person sees (which is why text in images, or Flash, are a bad idea, and why spending money on accessibility is a good idea).
So these are the conditions we are working under.
Ease of use (for the programmer as well as the end user)
Device independence
Accessibility
According to the DoD, 90% of the cost of software is debugging.
According to Fred Brookes, in his classic book The Mythical Man Month, the number of bugs increases quadratically according to code size: L1.5.
In other words, a program that is 10 times longer is 32 times harder to write.
Or put another way: a program that is 10 times smaller needs only 3% of the effort.
The problem is, no one writes applications except programmers.
Interesting exception: spreadsheets
Mostly because they use a declarative programming model.
The nice part about declarative programming is that the computer takes care of all the boring fiddly detail.
Late 80's after designing a programming language designed on usability principles (ABC - Python is based on it), we designed an 'application environment' that investigated usability at the system level (not just the application level).
This system had an extensible markup language, vector graphics, style sheets, a DOM, client-side scripting...today you would call it a browser (it didn't use TCP/IP though).
It ran on an Atari ST (amongst others).
The shortest code I could find of an analogue clock was something over 1000 lines of C (the longest was over 4000 lines):
Here is the essence of the code used for the Views clock example.
type clock = (h, m, s) displayed as circled(combined(hhand; mhand; shand; decor)) shand = line(slength) rotated (s × 60) mhand = line(mlength) rotated (m × 60) hhand = line(hlength) rotated (h × 30 + m ÷ 2) decor = ... slength = ... ... clock c c.s = system:seconds mod 60 c.m = (system:seconds div 60) mod 60 c.h = (system:seconds div 3600) mod 24
Some of the most interesting work in this area is being done by xport.net with their Sidewinder rich web browser.
What they have done is combined XHTML, XForms, SVG and XBL. The SVG is essentially a stylesheet for XHTML+XForms content, being applied using XBL. For instance:
The code says:
<xf:output value="..." appearance="fp:analogue-clock" class="clock">
The output is then something like 11:30:00, and the SVG turns this into an analogue clock (the XBL keys off the 'appearance' attribute).
Although the example shown above is not quite complete, it does more than Google maps does and yet it is only 25Kbytes of code (instead of the 200+K of Javascript).
Remember, empirically, a program that is an order of magnitude smaller needs only 3% of the effort to build.
Another data point: A major company uses XForms for designing and implementing user interfaces. It normally takes 30 people 5 years. Using XForms it took 10 people 1 year.
The advantages of this approach are:
It is not necessarily an either/or approach
The declarative approach clearly offers an order of magnitude improvement, but it can live alongside imperative approaches.
Work proceeds at W3C on both fronts
There are groups standardising existing approaches, and there are groups defining future approaches.
Furthermore there is a new effort (The 'Backplane') started to converge aspects of different markups to create a more unified architecture.
This work was initiated by the Compound Documents working group, and is coordinated by the Hypertext Coordination Group.
Although W3C has defined an extensible syntactic layer (XML), that it is not enough: If you want to combine markups they also have to be semantically compatible.
This week the Backplane initiative met for the first time to identify areas that need converging.
There was a surprising amount of mind share and groups that hadn't spent much time talking to each other in the past discovered a great deal of overlap, such as:
As a result of the meeting, a number of task forces were set up to further work on aspects of the backplane:
The future for web applications consists of an architecture that consists of:
This architecture offers advantages such as:
By using the backplane approach, it allows you to plug different application elements (Forms, Multimedia, Graphics) together, without commiting to an output device until the last minute. XBL allows you to map the composition to a final presentation.