1
00:00:01,334 --> 00:00:02,734
man: Ladies and gentlemen,
2
00:00:02,734 --> 00:00:07,300
please welcome Vice President, Engineering, Vic Gundotra.
3
00:00:07,300 --> 00:00:11,334
[cheers and applause]
4
00:00:11,334 --> 00:00:13,300
Gundotra: Well, good morning, everyone.
5
00:00:13,300 --> 00:00:16,200
Welcome to day two of Google I/O.
6
00:00:16,200 --> 00:00:18,267
I hope you all had a great time yesterday.
7
00:00:18,267 --> 00:00:20,067
I hope you enjoyed your sessions,
8
00:00:20,067 --> 00:00:23,200
and I hope you enjoyed those Android phones.
9
00:00:23,200 --> 00:00:24,701
[audience whoos]
10
00:00:24,701 --> 00:00:29,400
[cheers and applause]
11
00:00:29,400 --> 00:00:33,767
Yesterday, we promised you a surprise for this morning.
12
00:00:33,767 --> 00:00:37,167
And this morning, Google will surprise you.
13
00:00:37,167 --> 00:00:39,701
We are about to unveil
14
00:00:39,701 --> 00:00:43,133
a personal communication and collaboration tool
15
00:00:43,133 --> 00:00:45,634
in a very early form.
16
00:00:45,634 --> 00:00:48,200
We decided to do this at this forum
17
00:00:48,200 --> 00:00:49,834
for a couple of reasons.
18
00:00:49,834 --> 00:00:51,701
This unbelievable product,
19
00:00:51,701 --> 00:00:54,467
one that I'm very, very excited about,
20
00:00:54,467 --> 00:00:57,100
will be open-sourced.
21
00:00:57,100 --> 00:00:59,434
It's open-sourced for many reasons.
22
00:00:59,434 --> 00:01:01,534
Not only do we want to contribute to the Internet,
23
00:01:01,534 --> 00:01:03,534
but frankly, we need developers
24
00:01:03,534 --> 00:01:05,534
to help us complete this product,
25
00:01:05,534 --> 00:01:06,667
and we need your support.
26
00:01:06,667 --> 00:01:08,534
So we hope after you see this
27
00:01:08,534 --> 00:01:11,133
you're as excited about it as we are.
28
00:01:11,133 --> 00:01:13,033
And number two,
29
00:01:13,033 --> 00:01:15,334
we decided to unveil this product
30
00:01:15,334 --> 00:01:17,701
in its early form at this conference
31
00:01:17,701 --> 00:01:20,968
because it is an unbelievable, powerful demonstration
32
00:01:20,968 --> 00:01:23,634
of what is possible in the browser.
33
00:01:23,634 --> 00:01:26,334
I guarantee you that over the next hour and a half,
34
00:01:26,334 --> 00:01:29,601
as you see this product, you will forget
35
00:01:29,601 --> 00:01:31,467
that you are looking at the browser.
36
00:01:31,467 --> 00:01:33,467
And I want you to repeat after me.
37
00:01:33,467 --> 00:01:36,033
"I am looking at an HTML 5 app.
38
00:01:36,033 --> 00:01:39,000
I am looking at what's possible in the browser."
39
00:01:39,000 --> 00:01:43,334
And I hope you are as excited and delighted as I was
40
00:01:43,334 --> 00:01:46,400
when I first saw the thinking behind this product.
41
00:01:46,400 --> 00:01:48,667
Now, it shouldn't have surprised me
42
00:01:48,667 --> 00:01:50,567
that this product would be magical.
43
00:01:50,567 --> 00:01:53,200
After all, the engineering leadership
44
00:01:53,200 --> 00:01:55,868
had already produced a magical product.
45
00:01:55,868 --> 00:01:59,133
The engineering leadership behind what you're about to see
46
00:01:59,133 --> 00:02:01,067
is the work of two brothers,
47
00:02:01,067 --> 00:02:03,200
and an amazing engineering team with them.
48
00:02:03,200 --> 00:02:07,434
Those two brothers are Lars and Jens Rasmussen.
49
00:02:07,434 --> 00:02:09,234
You might remember those names,
50
00:02:09,234 --> 00:02:12,033
because those were the same amazing people
51
00:02:12,033 --> 00:02:16,133
that did another magical app called Maps--Google Maps.
52
00:02:16,133 --> 00:02:18,100
And so you'll see what they've been working on
53
00:02:18,100 --> 00:02:20,000
unveiled for the first time today.
54
00:02:20,000 --> 00:02:21,834
So why don't we go ahead and get started?
55
00:02:21,834 --> 00:02:24,834
Remember, this is an early developer preview
56
00:02:24,834 --> 00:02:26,334
for this audience.
57
00:02:26,334 --> 00:02:30,300
Everyone in this room will get accounts to give us feedback,
58
00:02:30,300 --> 00:02:32,200
and we'll talk about that a little bit later.
59
00:02:32,200 --> 00:02:35,033
We have your email addresses, so you will get those passwords
60
00:02:35,033 --> 00:02:37,467
a little bit later on, likely tomorrow.
61
00:02:37,467 --> 00:02:39,634
With that, let me just go ahead and get started.
62
00:02:39,634 --> 00:02:43,400
Let me introduce Lars Rasmussen and Stephanie Hannon.
63
00:02:43,400 --> 00:02:45,100
Thank you.
64
00:02:45,100 --> 00:02:47,634
[cheers and applause]
65
00:02:47,634 --> 00:02:48,701
Lars Rasmussen: Thank you.
66
00:02:48,701 --> 00:02:54,367
Thank you. Thank you.
67
00:02:54,367 --> 00:02:56,367
Thank you very much.
68
00:02:56,367 --> 00:03:00,033
I shall wake up my laptop.
69
00:03:00,033 --> 00:03:02,067
Good morning, everyone.
70
00:03:02,067 --> 00:03:03,400
Thank you very much for coming early.
71
00:03:03,400 --> 00:03:06,000
I know you've been here partying all night.
72
00:03:06,000 --> 00:03:07,767
Uh, we're going to show a demo today
73
00:03:07,767 --> 00:03:09,367
of a product that we've been working on
74
00:03:09,367 --> 00:03:12,133
for a couple of years down in Sydney, Australia.
75
00:03:12,133 --> 00:03:15,634
It's called Google Wave,
76
00:03:15,634 --> 00:03:18,334
and it's a communication and collaborations tool
77
00:03:18,334 --> 00:03:20,434
that we're launching later in the year.
78
00:03:20,434 --> 00:03:22,901
Uh, like Vic said, it's a little unusual for us
79
00:03:22,901 --> 00:03:25,234
to be showing it to the world this early.
80
00:03:25,234 --> 00:03:27,234
The reason we're doing it is very simple.
81
00:03:27,234 --> 00:03:30,200
We're starting a developer preview today.
82
00:03:30,200 --> 00:03:31,567
You guys will all get accounts
83
00:03:31,567 --> 00:03:33,567
on a sandbox build of the system.
84
00:03:33,567 --> 00:03:36,467
You are the first outside of Google to see this,
85
00:03:36,467 --> 00:03:39,734
and you'll be the first to get accounts on the system.
86
00:03:39,734 --> 00:03:43,033
And we're doing that because as you will see from the demo,
87
00:03:43,033 --> 00:03:45,934
Google Wave comes with a set of really nice APIs,
88
00:03:45,934 --> 00:03:47,968
and we're hoping we can persuade you guys
89
00:03:47,968 --> 00:03:51,767
to start building cool things with those APIs
90
00:03:51,767 --> 00:03:54,334
while we're getting the product ready for launch,
91
00:03:54,334 --> 00:03:56,434
which is going to happen later this year.
92
00:03:56,434 --> 00:03:58,267
Because that way, when we do launch,
93
00:03:58,267 --> 00:04:01,567
our users and your users can enjoy both Google Waves
94
00:04:01,567 --> 00:04:04,334
and all the cool things that we hope you'll build
95
00:04:04,334 --> 00:04:05,868
at the same time.
96
00:04:05,868 --> 00:04:07,567
Let me introduce Stephanie Hannon.
97
00:04:07,567 --> 00:04:10,968
She's quite possibly the best PM in the world.
98
00:04:10,968 --> 00:04:12,501
[cheers and applause]
99
00:04:12,501 --> 00:04:16,534
Hannon: [laughs]
100
00:04:16,534 --> 00:04:18,701
Good morning, I/O.
101
00:04:18,701 --> 00:04:20,801
Thank you, Vic, for the invitation to be here.
102
00:04:20,801 --> 00:04:22,834
We couldn't imagine a better audience
103
00:04:22,834 --> 00:04:24,868
to show our product to first.
104
00:04:24,868 --> 00:04:26,701
Lars Rasmussen: I second that.
105
00:04:26,701 --> 00:04:29,734
Hannon: Our presentation today is in three parts.
106
00:04:29,734 --> 00:04:31,934
First, we're going to show you a demo of the product.
107
00:04:31,934 --> 00:04:35,434
Second, we'll show you the APIs that Lars talked about.
108
00:04:35,434 --> 00:04:38,701
You can use Waves to enhance your Web site
109
00:04:38,701 --> 00:04:41,834
and you can build extensions to Wave itself.
110
00:04:41,834 --> 00:04:44,968
Third, we'll show you that Wave is also a protocol.
111
00:04:44,968 --> 00:04:46,968
We are very passionate about this being
112
00:04:46,968 --> 00:04:49,167
an open system of communication.
113
00:04:49,167 --> 00:04:51,434
We hope other people build Wave services
114
00:04:51,434 --> 00:04:53,400
that interoperate with ours
115
00:04:53,400 --> 00:04:55,767
so users have choice in their provider.
116
00:04:55,767 --> 00:04:59,167
We affectionately call this the three Ps.
117
00:04:59,167 --> 00:05:01,901
Product, platform, protocol.
118
00:05:01,901 --> 00:05:04,033
And we'll talk about them all today.
119
00:05:04,033 --> 00:05:07,367
Lars Rasmussen: Okay, so communication.
120
00:05:07,367 --> 00:05:10,133
Um, email today is by far the most popular way
121
00:05:10,133 --> 00:05:11,834
for us to communicate on the Internet,
122
00:05:11,834 --> 00:05:13,434
which is remarkable,
123
00:05:13,434 --> 00:05:16,334
because email was invented more than 40 years ago.
124
00:05:16,334 --> 00:05:19,234
before the Internet, before the Web,
125
00:05:19,234 --> 00:05:21,968
and it was done without the experience
126
00:05:21,968 --> 00:05:24,634
of things like SMS, and instant messenging,
127
00:05:24,634 --> 00:05:26,901
and blogs, and Wikis, and bulletin boards,
128
00:05:26,901 --> 00:05:29,801
and discussion groups, and social networks, and Wikis,
129
00:05:29,801 --> 00:05:33,100
and media sharing sites, and collaborative editors--
130
00:05:33,100 --> 00:05:35,300
All of these different kinds of communication
131
00:05:35,300 --> 00:05:37,901
that we take for granted today.
132
00:05:37,901 --> 00:05:40,601
Also, of course, computers and networks
133
00:05:40,601 --> 00:05:43,400
have dramatically improved in those four decades,
134
00:05:43,400 --> 00:05:45,200
and so when we started this project--
135
00:05:45,200 --> 00:05:47,934
and it's been more than two years--
136
00:05:47,934 --> 00:05:49,501
we asked ourselves the question,
137
00:05:49,501 --> 00:05:53,000
"what might email look like if it was invented today?"
138
00:05:53,000 --> 00:05:54,834
And needless to say, there is about a million
139
00:05:54,834 --> 00:05:57,400
different ways you can answer that question.
140
00:05:57,400 --> 00:06:01,634
What you're going to see today, Google Wave, is our attempt.
141
00:06:01,634 --> 00:06:04,267
And so let me start by briefly contrasting
142
00:06:04,267 --> 00:06:06,334
email from Wave.
143
00:06:06,334 --> 00:06:09,300
Email essentially mimics snail mail.
144
00:06:09,300 --> 00:06:11,901
The basic metaphor is you write a message
145
00:06:11,901 --> 00:06:14,100
and you send it to one or more recipients,
146
00:06:14,100 --> 00:06:15,734
and then email systems--
147
00:06:15,734 --> 00:06:18,834
and we like to think Gmail does this particularly well--
148
00:06:18,834 --> 00:06:24,400
can collate related messages into conversations or threads.
149
00:06:24,400 --> 00:06:28,000
Wave, by contrast, starts out
150
00:06:28,000 --> 00:06:29,634
with the definition of a conversation,
151
00:06:29,634 --> 00:06:32,334
which is simply a lightweight tree structure of messages
152
00:06:32,334 --> 00:06:35,701
and a set of users participating in that conversation.
153
00:06:35,701 --> 00:06:38,501
And then instead of thinking of individual messages
154
00:06:38,501 --> 00:06:40,567
as being sent back and forth,
155
00:06:40,567 --> 00:06:42,801
we think of the entire conversation object
156
00:06:42,801 --> 00:06:46,567
as being a shared object hosted on a server somewhere.
157
00:06:46,567 --> 00:06:50,000
And users that participate can open up that wave,
158
00:06:50,000 --> 00:06:52,501
leave their replies, go away,
159
00:06:52,501 --> 00:06:54,267
and then when the next user comes,
160
00:06:54,267 --> 00:06:57,100
she can open up that same shared object,
161
00:06:57,100 --> 00:06:59,400
see those replies, and add her own.
162
00:06:59,400 --> 00:07:00,634
That's how the wave grows.
163
00:07:00,634 --> 00:07:02,801
That's how the conversation builds up.
164
00:07:02,801 --> 00:07:05,133
And you'll recognize that this is a model
165
00:07:05,133 --> 00:07:07,033
that came to how bulletin boards work.
166
00:07:07,033 --> 00:07:09,734
We found that with a tight enough implementation,
167
00:07:09,734 --> 00:07:12,701
you can use that to build a single communication tool
168
00:07:12,701 --> 00:07:15,934
that has functionality spanning quite a lot further
169
00:07:15,934 --> 00:07:18,968
than what you can do with email today.
170
00:07:18,968 --> 00:07:20,734
And so we'll show you a demo.
171
00:07:20,734 --> 00:07:24,234
It'll take you through a series of usage scenarios
172
00:07:24,234 --> 00:07:25,767
that you'll be familiar with,
173
00:07:25,767 --> 00:07:29,734
but where today we would use different tools for each one,
174
00:07:29,734 --> 00:07:31,400
and we'll show you how it all fits neatly
175
00:07:31,400 --> 00:07:33,834
in this one metaphor of hosted conversations.
176
00:07:33,834 --> 00:07:35,167
Stephanie.
177
00:07:35,167 --> 00:07:38,434
Hannon: So what you are looking at is an HTML 5 app
178
00:07:38,434 --> 00:07:40,634
that we built with the Google Web Toolkit.
179
00:07:40,634 --> 00:07:43,434
On the left side is Lars running Chrome.
180
00:07:43,434 --> 00:07:46,167
On the right side, I'm running Safari.
181
00:07:46,167 --> 00:07:48,968
And a little bit later we're going to throw in Firefox.
182
00:07:48,968 --> 00:07:51,400
So the same thing is being shown on each pair of screens,
183
00:07:51,400 --> 00:07:54,567
you can just choose one to look at.
184
00:07:54,567 --> 00:07:56,033
Lars Rasmussen: Okay, so we'll start
185
00:07:56,033 --> 00:07:59,167
with plain vanilla-type email conversations,
186
00:07:59,167 --> 00:08:02,400
and we'll show you how it looks in Wave.
187
00:08:02,400 --> 00:08:04,200
We're planning a boat trip.
188
00:08:04,200 --> 00:08:06,100
And I'm going to start by clicking "New Wave" here,
189
00:08:06,100 --> 00:08:08,434
and then I'll type my title in the first line.
190
00:08:08,434 --> 00:08:09,767
Hannon: Watch your spelling, Lars.
191
00:08:09,767 --> 00:08:11,100
There's a lot of people.
192
00:08:11,100 --> 00:08:12,434
Lars Rasmussen: [laughs] There is a lot of people.
193
00:08:12,434 --> 00:08:14,667
They can't see what I'm typing anyway.
194
00:08:14,667 --> 00:08:18,534
"Are you ready for the boat trip?
195
00:08:18,534 --> 00:08:20,033
Hey, Steph."
196
00:08:20,033 --> 00:08:22,634
Did you guys like the spell-checker?
197
00:08:22,634 --> 00:08:23,968
[applause]
198
00:08:23,968 --> 00:08:26,133
You do.
199
00:08:26,133 --> 00:08:27,834
We'll talk more about that later.
200
00:08:27,834 --> 00:08:30,000
Since you don't want to watch me type for an hour,
201
00:08:30,000 --> 00:08:31,868
we put canned messages in there.
202
00:08:31,868 --> 00:08:35,968
We'll try hard to pull them out before we launch.
203
00:08:35,968 --> 00:08:38,767
I click "Done," it asks me for more users.
204
00:08:38,767 --> 00:08:40,567
I'll add Stephanie.
205
00:08:40,567 --> 00:08:42,067
And since she is offline,
206
00:08:42,067 --> 00:08:45,567
I'm going to go stare at a blank page.
207
00:08:45,567 --> 00:08:48,501
Hannon: So I will open Wave.
208
00:08:48,501 --> 00:08:50,834
And you'll see in my Search panel, the middle panel,
209
00:08:50,834 --> 00:08:53,634
will be an unread message from Lars.
210
00:08:53,634 --> 00:08:55,534
He's asking me if I want to go shopping,
211
00:08:55,534 --> 00:08:56,701
uh, before this boat trip,
212
00:08:56,701 --> 00:08:58,534
so I'll do something very email like,
213
00:08:58,534 --> 00:08:59,968
which is hit "Reply,"
214
00:08:59,968 --> 00:09:03,734
and say, "I looove shopping."
215
00:09:03,734 --> 00:09:05,834
Lars Rasmussen: I wrote the script.
216
00:09:05,834 --> 00:09:11,400
Hannon: "I need new fins. Let's go."
217
00:09:11,400 --> 00:09:13,434
The first benefit I want to show you
218
00:09:13,434 --> 00:09:15,467
of this being a hosted conversation
219
00:09:15,467 --> 00:09:18,467
is it's easier to keep track of structure.
220
00:09:18,467 --> 00:09:20,300
If this was email and I wanted to reply
221
00:09:20,300 --> 00:09:21,901
to the middle part of Lars's message
222
00:09:21,901 --> 00:09:24,000
where he asked which bus to take,
223
00:09:24,000 --> 00:09:27,434
I would hit "Reply," the email client would copy the message,
224
00:09:27,434 --> 00:09:29,901
and I'd hand-edit in the response.
225
00:09:29,901 --> 00:09:31,501
Because this is a hosted conversation
226
00:09:31,501 --> 00:09:33,667
that lives in one place,
227
00:09:33,667 --> 00:09:37,067
I can just instruct the server to split the message apart
228
00:09:37,067 --> 00:09:40,701
and say, "You never wake up early,"
229
00:09:40,701 --> 00:09:42,734
which is true.
230
00:09:42,734 --> 00:09:45,734
"Let's take the late bus."
231
00:09:45,734 --> 00:09:49,400
Okay, Lars isn't online; I'm going to close this wave.
232
00:09:49,400 --> 00:09:51,501
Lars Rasmussen: So a little bit later I come back online,
233
00:09:51,501 --> 00:09:54,100
and you'll see, for starters, that that wave is now bold
234
00:09:54,100 --> 00:09:56,234
to show me there is new material in it.
235
00:09:56,234 --> 00:09:59,634
When I open it up, Stephanie's first message gets the highlight
236
00:09:59,634 --> 00:10:02,234
and I can navigate the conversation with my keyboard,
237
00:10:02,234 --> 00:10:04,133
and of course, continue her thread here.
238
00:10:04,133 --> 00:10:06,667
"You know me too well."
239
00:10:06,667 --> 00:10:08,033
Like that.
240
00:10:08,033 --> 00:10:11,133
And that's how plain vanilla email-type conversations
241
00:10:11,133 --> 00:10:13,067
work in Wave.
242
00:10:13,067 --> 00:10:15,234
So you've noticed that we have carefully avoided
243
00:10:15,234 --> 00:10:17,133
having the wave open on both screens.
244
00:10:17,133 --> 00:10:20,701
When we do have the wave open at the same time,
245
00:10:20,701 --> 00:10:23,234
my message bounces right off the server
246
00:10:23,234 --> 00:10:24,934
into Stephanie's browser.
247
00:10:24,934 --> 00:10:26,300
The effect is that you can also
248
00:10:26,300 --> 00:10:29,033
do Instant Messaging-type conversations in Wave.
249
00:10:29,033 --> 00:10:32,667
In fact in the same wave you can switch back and forth
250
00:10:32,667 --> 00:10:34,667
between these different ways of communicating.
251
00:10:34,667 --> 00:10:36,834
I'll show you that now.
252
00:10:36,834 --> 00:10:41,000
Shiny. You must know a good store.
253
00:10:41,000 --> 00:10:42,767
[cheers and applause]
254
00:10:42,767 --> 00:10:48,434
Hannon: There is a new one over on George Street.
255
00:10:48,434 --> 00:10:52,400
Lars Rasmussen: Cool. Let's go at 7:00.
256
00:10:52,400 --> 00:10:56,267
Hannon: "Sounds good. Let's invite Jens too."
257
00:10:56,267 --> 00:10:57,734
Lars Rasmussen: "Okay."
258
00:10:57,734 --> 00:11:00,567
So you noticed that it didn't wait for me to hit "Done"
259
00:11:00,567 --> 00:11:02,534
before showing Stephanie the message,
260
00:11:02,534 --> 00:11:04,400
but rather--and this was difficult to do--
261
00:11:04,400 --> 00:11:07,167
we transmit live almost character by character
262
00:11:07,167 --> 00:11:08,567
what I'm typing.
263
00:11:08,567 --> 00:11:09,801
Why did we do that?
264
00:11:09,801 --> 00:11:11,534
It's because with today instant messaging tools
265
00:11:11,534 --> 00:11:14,434
you spend half of your time looking at it saying,
266
00:11:14,434 --> 00:11:16,934
"Stephanie is typing, she's typing, she's typing,
267
00:11:16,934 --> 00:11:21,133
she's typing," and then you see what she said.
268
00:11:21,133 --> 00:11:23,968
Thank you. [laughs]
269
00:11:23,968 --> 00:11:27,834
But because in general you can start formulating your own reply
270
00:11:27,834 --> 00:11:30,133
before Stephanie is done typing hers,
271
00:11:30,133 --> 00:11:31,968
by doing this live transmission,
272
00:11:31,968 --> 00:11:34,634
you end up spending 100% of your time either reading or writing,
273
00:11:34,634 --> 00:11:37,133
which dramatically speeds up the conversation.
274
00:11:37,133 --> 00:11:38,734
Now needless to say, there are times
275
00:11:38,734 --> 00:11:41,000
you don't want everyone to see every keystroke,
276
00:11:41,000 --> 00:11:43,300
in particular if you spell like I do.
277
00:11:43,300 --> 00:11:46,267
Um, and so we have this checkbox here.
278
00:11:46,267 --> 00:11:47,567
All you have to do is check it
279
00:11:47,567 --> 00:11:49,334
and now no one can see what you're typing
280
00:11:49,334 --> 00:11:50,901
until you hit that "Done" button.
281
00:11:50,901 --> 00:11:53,901
This is one of the features we haven't implemented quite yet.
282
00:11:53,901 --> 00:11:58,133
[laughter]
283
00:11:58,133 --> 00:12:00,567
Okay, so that's how email conversations,
284
00:12:00,567 --> 00:12:02,400
or rather email-type conversations
285
00:12:02,400 --> 00:12:04,801
and instant messaging-type conversations
286
00:12:04,801 --> 00:12:07,501
no longer require two separate tools.
287
00:12:07,501 --> 00:12:09,400
Next thing we want to show you is how easy it is
288
00:12:09,400 --> 00:12:12,834
to add a new person to an ongoing conversation.
289
00:12:12,834 --> 00:12:15,300
Can I just introduce my brother Jens, by the way?
290
00:12:15,300 --> 00:12:16,868
Give him a hand, please.
291
00:12:16,868 --> 00:12:22,834
[cheers and applause]
292
00:12:22,834 --> 00:12:23,968
So we want to--
293
00:12:23,968 --> 00:12:25,734
We want to add Jens to the conversation.
294
00:12:25,734 --> 00:12:28,634
If this was email, I would take the last message here,
295
00:12:28,634 --> 00:12:31,467
reply to it and add Jens to the recipient list.
296
00:12:31,467 --> 00:12:32,467
There's two problems with that.
297
00:12:32,467 --> 00:12:33,701
For starters,
298
00:12:33,701 --> 00:12:36,100
because we branched the conversation up here,
299
00:12:36,100 --> 00:12:37,467
that last email message
300
00:12:37,467 --> 00:12:39,734
would not contain the entire conversation.
301
00:12:39,734 --> 00:12:42,434
But also, if Stephanie then later
302
00:12:42,434 --> 00:12:44,767
went and replied to an earlier message of mine,
303
00:12:44,767 --> 00:12:46,267
Jens wouldn't get that anyway.
304
00:12:46,267 --> 00:12:48,501
You end up with these cat and mouse games.
305
00:12:48,501 --> 00:12:51,234
In the Wave model, all you have to do
306
00:12:51,234 --> 00:12:55,400
is make Jens a participant in the wave like that.
307
00:12:55,400 --> 00:12:58,334
And now I'll switch over to Firefox here
308
00:12:58,334 --> 00:13:01,701
where Jens is already signed in.
309
00:13:01,701 --> 00:13:03,267
Jens Rasmussen: So now that I'm on the wave,
310
00:13:03,267 --> 00:13:05,834
um, I'm going to open it,
311
00:13:05,834 --> 00:13:08,100
and, of course, everything is going to be marked
312
00:13:08,100 --> 00:13:10,300
as unread for me.
313
00:13:10,300 --> 00:13:11,968
But because I was added late,
314
00:13:11,968 --> 00:13:14,501
I didn't get to see Lars's message in one piece,
315
00:13:14,501 --> 00:13:17,934
and by the time I'm added they could be arbitrarily far apart.
316
00:13:17,934 --> 00:13:20,968
So we added a feature called Playback.
317
00:13:20,968 --> 00:13:23,601
So I get to see Lars's original message,
318
00:13:23,601 --> 00:13:26,467
Lars asks Stephanie, Stephanie replies,
319
00:13:26,467 --> 00:13:29,868
Steph does in-line reply, and so on, and so on.
320
00:13:29,868 --> 00:13:32,334
[applause]
321
00:13:32,334 --> 00:13:34,767
Thank you.
322
00:13:34,767 --> 00:13:37,601
So Playback turns out to be a really useful feature,
323
00:13:37,601 --> 00:13:38,634
particularly when the wave
324
00:13:38,634 --> 00:13:39,968
starts picking up more structure,
325
00:13:39,968 --> 00:13:41,801
and we'll show you more of that later.
326
00:13:41,801 --> 00:13:43,801
But now that I've caught up on this wave,
327
00:13:43,801 --> 00:13:48,067
I'm going to just add my reply.
328
00:13:48,067 --> 00:13:50,334
"Me too."
329
00:13:50,334 --> 00:13:51,868
Oh, I think I crashed.
330
00:13:51,868 --> 00:13:54,334
Lars Rasmussen: Did I mention that it's a developer preview?
331
00:13:54,334 --> 00:13:55,601
[laughter]
332
00:13:55,601 --> 00:13:57,667
So we made sure to inject a few bugs
333
00:13:57,667 --> 00:13:59,234
so that you wouldn't have too high expecta--
334
00:13:59,234 --> 00:14:05,267
I'm just kidding.
335
00:14:05,267 --> 00:14:07,067
Jens Rasmussen: Did you notice how quickly it reloads?
336
00:14:07,067 --> 00:14:09,767
[laughter]
337
00:14:09,767 --> 00:14:13,367
Did we mention we used GWT?
338
00:14:13,367 --> 00:14:16,133
All right, so I'm going to add my reply.
339
00:14:16,133 --> 00:14:17,934
"Me too.
340
00:14:17,934 --> 00:14:22,701
Don't forget your keys."
341
00:14:22,701 --> 00:14:24,400
And then I'll hand it back to Lars.
342
00:14:24,400 --> 00:14:25,934
Lars Rasmussen: Thank you.
343
00:14:25,934 --> 00:14:28,334
So that's how easy it is to add a new person
344
00:14:28,334 --> 00:14:30,000
to an ongoing conversation.
345
00:14:30,000 --> 00:14:31,634
And so often we end up having
346
00:14:31,634 --> 00:14:33,534
very nice group conversations in Wave.
347
00:14:33,534 --> 00:14:35,367
And then occasionally you want to say something
348
00:14:35,367 --> 00:14:38,133
in a wave that's not visible to all the participants.
349
00:14:38,133 --> 00:14:40,601
We call that a "Private Reply,"
350
00:14:40,601 --> 00:14:42,534
and I'll add one down here at the bottom,
351
00:14:42,534 --> 00:14:43,734
and I'll say,
352
00:14:43,734 --> 00:14:49,267
"Let's buy Steph a reeeally nice present."
353
00:14:49,267 --> 00:14:51,667
Hannon: I wrote this part.
354
00:14:51,667 --> 00:14:53,901
Lars Rasmussen: And then I will add just Jens,
355
00:14:53,901 --> 00:14:55,200
and you will see,
356
00:14:55,200 --> 00:14:58,400
if I just quickly flip over to Jens's browser,
357
00:14:58,400 --> 00:14:59,901
and scroll down,
358
00:14:59,901 --> 00:15:01,901
he sees that private reply,
359
00:15:01,901 --> 00:15:04,033
but if you look at Stephanie's screen,
360
00:15:04,033 --> 00:15:06,067
she doesn't see it.
361
00:15:06,067 --> 00:15:07,501
If you remember, I've explained
362
00:15:07,501 --> 00:15:09,434
that a wave is a tree structure of messages.
363
00:15:09,434 --> 00:15:13,100
Essentially you can take any sub-tree of the wave
364
00:15:13,100 --> 00:15:17,467
and restrict access to a subset of the participants.
365
00:15:17,467 --> 00:15:20,767
Okay, I switch back to my own account, here.
366
00:15:20,767 --> 00:15:22,000
The next thing we want to show you
367
00:15:22,000 --> 00:15:23,934
is how attachments work in Wave.
368
00:15:23,934 --> 00:15:25,100
So we've been on a boat trip--
369
00:15:25,100 --> 00:15:26,634
It was very nice, thank you--
370
00:15:26,634 --> 00:15:28,367
And we all got pictures.
371
00:15:28,367 --> 00:15:30,634
I have six of them sitting here on my desktop,
372
00:15:30,634 --> 00:15:35,400
and I'm going to drag them onto the wave like this.
373
00:15:35,400 --> 00:15:42,267
[applause]
374
00:15:42,267 --> 00:15:44,434
Hannon: You might not have noticed,
375
00:15:44,434 --> 00:15:47,033
but the thumbnails appeared on my screen
376
00:15:47,033 --> 00:15:50,934
long before the full images were uploaded from Lars's computer.
377
00:15:50,934 --> 00:15:52,100
I'll show you that again
378
00:15:52,100 --> 00:15:57,400
by dragging in my own photos from iPhoto.
379
00:15:57,400 --> 00:15:59,667
Ready? Here we go.
380
00:15:59,667 --> 00:16:02,767
Lars Rasmussen: And you can see them show up over on my screen.
381
00:16:02,767 --> 00:16:03,868
audience member: Yeah.
382
00:16:03,868 --> 00:16:04,968
[applause]
383
00:16:04,968 --> 00:16:06,434
Lars Rasmussen: Don't be shy, you guys.
384
00:16:06,434 --> 00:16:09,300
If you like what you see, don't be shy letting us know.
385
00:16:09,300 --> 00:16:11,200
[cheers and applause]
386
00:16:11,200 --> 00:16:15,033
We can--we can handle pretty much any amount of applause.
387
00:16:15,033 --> 00:16:17,100
[laughter]
388
00:16:17,100 --> 00:16:18,334
Hannon: This feature--
389
00:16:18,334 --> 00:16:20,767
drag and drop from the desktop to the browser--
390
00:16:20,767 --> 00:16:25,534
is the one part of Wave that HTML 5 can't support yet.
391
00:16:25,534 --> 00:16:28,400
We're working on a proposal to add it to the standard.
392
00:16:28,400 --> 00:16:30,601
In the meantime, you need to download Gears
393
00:16:30,601 --> 00:16:32,534
for this specific feature to work.
394
00:16:32,534 --> 00:16:36,367
It's the only part of Wave that you need Gears for.
395
00:16:36,367 --> 00:16:38,400
When Lars dropped in his images,
396
00:16:38,400 --> 00:16:40,601
you might've noticed at the bottom of the Wave panel
397
00:16:40,601 --> 00:16:41,834
there's an Image menu
398
00:16:41,834 --> 00:16:43,767
with actions you'd probably do on images,
399
00:16:43,767 --> 00:16:46,067
like upload or download.
400
00:16:46,067 --> 00:16:47,934
What's important is these actions
401
00:16:47,934 --> 00:16:50,200
apply to all the images in the wave,
402
00:16:50,200 --> 00:16:52,267
not just the ones I dropped in,
403
00:16:52,267 --> 00:16:54,801
which makes Wave really an easy, lightweight way
404
00:16:54,801 --> 00:16:57,033
to create a group photo album together,
405
00:16:57,033 --> 00:17:00,634
which is surprisingly hard to do with today's tools.
406
00:17:00,634 --> 00:17:02,567
Lars Rasmussen: And so here's the photo album.
407
00:17:02,567 --> 00:17:04,067
This is Captain Athena.
408
00:17:04,067 --> 00:17:06,300
Here's the hard life down under.
409
00:17:06,300 --> 00:17:08,400
And as advertised, you'll see over here
410
00:17:08,400 --> 00:17:10,534
Stephanie's images show up in my slideshow
411
00:17:10,534 --> 00:17:11,701
so that I can show you
412
00:17:11,701 --> 00:17:17,400
just how much fun life down under is.
413
00:17:17,400 --> 00:17:19,868
And that's images.
414
00:17:19,868 --> 00:17:21,968
So that's how easy it is to share photos in Wave.
415
00:17:21,968 --> 00:17:23,067
This was a group trip.
416
00:17:23,067 --> 00:17:24,501
We'll all throw our photos in here.
417
00:17:24,501 --> 00:17:26,300
We'd probably share it with the rest of the office
418
00:17:26,300 --> 00:17:27,834
to make them envious.
419
00:17:27,834 --> 00:17:30,200
In this particular case, it's not clear
420
00:17:30,200 --> 00:17:33,100
that we want everyone to know that we went shopping together.
421
00:17:33,100 --> 00:17:35,267
And so one of the features down here
422
00:17:35,267 --> 00:17:37,100
lets me copy just the images
423
00:17:37,100 --> 00:17:39,868
from this wave into a fresh wave.
424
00:17:39,868 --> 00:17:42,934
"Boating in January.
425
00:17:42,934 --> 00:17:47,901
Enjoy all, here and yonder."
426
00:17:47,901 --> 00:17:49,701
And then I'll add Stephanie to this.
427
00:17:49,701 --> 00:17:52,801
I could now share that with the rest of the office.
428
00:17:52,801 --> 00:17:55,801
Now, this feature here of extracting images
429
00:17:55,801 --> 00:17:57,467
from a wave and putting them in a new one
430
00:17:57,467 --> 00:17:59,200
is actually part of a very important
431
00:17:59,200 --> 00:18:00,400
design principle for us.
432
00:18:00,400 --> 00:18:02,901
Namely that we care just as much
433
00:18:02,901 --> 00:18:06,567
about the product of the wave as we do the wave itself.
434
00:18:06,567 --> 00:18:11,300
And we'll show you more examples of that later.
435
00:18:11,300 --> 00:18:13,868
Yes, we will.
436
00:18:13,868 --> 00:18:16,400
Um, I forgot what's next.
437
00:18:16,400 --> 00:18:19,734
Hannon: How 'bout we show them the embedding APIs?
438
00:18:19,734 --> 00:18:20,734
Lars Rasmussen: Excellent idea.
439
00:18:20,734 --> 00:18:21,734
Okay, thank you. So...
440
00:18:21,734 --> 00:18:22,934
[laughter]
441
00:18:22,934 --> 00:18:24,400
She's right.
442
00:18:24,400 --> 00:18:26,667
We should've rehearsed this before coming this morning.
443
00:18:26,667 --> 00:18:27,667
Just kidding.
444
00:18:27,667 --> 00:18:29,267
So the first--
445
00:18:29,267 --> 00:18:32,901
The first category of, um, APIs that we want to show you
446
00:18:32,901 --> 00:18:37,334
are APIs that let you embed waves onto your webpage.
447
00:18:37,334 --> 00:18:40,601
It is very similar to the Maps API,
448
00:18:40,601 --> 00:18:43,767
which, by the way, um, thank you, everyone who used it.
449
00:18:43,767 --> 00:18:46,501
We consider your enthusiasm for that API
450
00:18:46,501 --> 00:18:49,067
an enormous factor in that product's success,
451
00:18:49,067 --> 00:18:52,567
and we're hoping, obviously, to repeat that with Wave.
452
00:18:52,567 --> 00:18:54,667
Hannon: Give a round of applause to themselves.
453
00:18:54,667 --> 00:18:56,534
Lars Rasmussen: Oh, yeah, a round of applause to yourself.
454
00:18:56,534 --> 00:18:58,534
Well done. [applause]
455
00:18:58,534 --> 00:19:01,133
Lars Rasmussen: Okay, so... Hannon: Yay, developers!
456
00:19:01,133 --> 00:19:02,734
Lars Rasmussen: Here's an example application.
457
00:19:02,734 --> 00:19:04,534
It's a little blogging site we've built.
458
00:19:04,534 --> 00:19:06,167
It's over on Google App Engine,
459
00:19:06,167 --> 00:19:09,000
but you could build it anywhere you host your website.
460
00:19:09,000 --> 00:19:10,300
And this blogging site--
461
00:19:10,300 --> 00:19:13,367
In addition to embedding waves on its pages,
462
00:19:13,367 --> 00:19:16,133
it provides me with this robotic participant
463
00:19:16,133 --> 00:19:18,834
that we affectionately call Bloggy.
464
00:19:18,834 --> 00:19:22,934
All I have to do is add Bloggy to the wave,
465
00:19:22,934 --> 00:19:24,434
and now you'll see--
466
00:19:24,434 --> 00:19:25,601
You can probably not read that,
467
00:19:25,601 --> 00:19:27,334
but on that yellow banner,
468
00:19:27,334 --> 00:19:30,300
all users on the wave is now warned that Bloggy,
469
00:19:30,300 --> 00:19:33,801
this new participant, has published the blog
470
00:19:33,801 --> 00:19:36,434
on a page which we built over an app engine.
471
00:19:36,434 --> 00:19:39,300
Can I just introduce Gregory Delasander?
472
00:19:39,300 --> 00:19:40,968
He's another PM on the team.
473
00:19:40,968 --> 00:19:42,868
[cheers and applause]
474
00:19:42,868 --> 00:19:45,534
And he's going to show you the blog site now.
475
00:19:45,534 --> 00:19:46,601
Delasander: Hi, I'm Greg,
476
00:19:46,601 --> 00:19:47,968
and I'm a huge fan of Lars's blog,
477
00:19:47,968 --> 00:19:50,667
just like everybody on the team is told they should be.
478
00:19:50,667 --> 00:19:53,534
I'm going to show you... Hannon: He makes us read it.
479
00:19:53,534 --> 00:19:54,667
Lars Rasmussen: It's a good blog. Come on.
480
00:19:54,667 --> 00:19:59,501
Delasander: Oh, hold on just a second.
481
00:19:59,501 --> 00:20:02,033
Did we lose...
482
00:20:02,033 --> 00:20:03,567
Hannon: Did we lose VPN?
483
00:20:03,567 --> 00:20:05,067
Delasander: Yes, I think we might have.
484
00:20:05,067 --> 00:20:06,734
Hannon: Lars, this is where you do the dance.
485
00:20:06,734 --> 00:20:07,767
Delasander: Lars, dance a little bit.
486
00:20:07,767 --> 00:20:08,767
Lars Rasmussen: Everyone look at me.
487
00:20:08,767 --> 00:20:09,801
Don't look at his screen.
488
00:20:09,801 --> 00:20:11,400
[humming]
489
00:20:11,400 --> 00:20:12,968
The Wave dance.
490
00:20:12,968 --> 00:20:14,801
Delasander: I think we lost all connectivity.
491
00:20:14,801 --> 00:20:19,234
Lars Rasmussen: Neener, neener. Neener, neener.
492
00:20:19,234 --> 00:20:22,200
There's not a-- Delasander: And then...
493
00:20:22,200 --> 00:20:23,467
Lars Rasmussen: There's not a lot of people in the world
494
00:20:23,467 --> 00:20:25,634
that can have their demos as spectacularly fail
495
00:20:25,634 --> 00:20:29,634
in front of 4,000 people and not break a sweat.
496
00:20:29,634 --> 00:20:31,300
Hannon: It wasn't the demo, it was the network.
497
00:20:31,300 --> 00:20:33,067
Lars Rasmussen: We wish we were one of them.
498
00:20:33,067 --> 00:20:34,501
Delasander: Excellent.
499
00:20:34,501 --> 00:20:36,567
Lars Rasmussen: I think your proxy server might be missing.
500
00:20:36,567 --> 00:20:38,634
Oh, there we go. Hannon: All right, we're back.
501
00:20:38,634 --> 00:20:42,200
Delasander: So as I was saying...
502
00:20:42,200 --> 00:20:44,334
The blog.
503
00:20:44,334 --> 00:20:46,200
So in the blog, one of the cool things you'll s--
504
00:20:46,200 --> 00:20:49,234
you can see is that we're not just embedding the images,
505
00:20:49,234 --> 00:20:50,767
we're actually embedding the whole wave
506
00:20:50,767 --> 00:20:52,334
with all of its UI.
507
00:20:52,334 --> 00:20:54,767
This means that I can respond.
508
00:20:54,767 --> 00:20:57,601
"Hey, that looks fun. Why wasn't I invited?"
509
00:20:57,601 --> 00:21:03,667
[cheers and applause]
510
00:21:03,667 --> 00:21:06,267
The same way we embed--
511
00:21:06,267 --> 00:21:07,634
And we--we do--
512
00:21:07,634 --> 00:21:10,067
You can respond in the same way you do in the Wave client.
513
00:21:10,067 --> 00:21:11,167
Lars Rasmussen: Exactly.
514
00:21:11,167 --> 00:21:13,667
And so now, I can see, obviously, uh,
515
00:21:13,667 --> 00:21:15,801
Greg's question from inside my Wave client.
516
00:21:15,801 --> 00:21:17,300
I can answer from in here.
517
00:21:17,300 --> 00:21:19,400
I don't have to go to the blog site to do that.
518
00:21:19,400 --> 00:21:22,601
I could if I wanted to, but I can stay here.
519
00:21:22,601 --> 00:21:28,601
"Um, I lost the phone with your number."
520
00:21:28,601 --> 00:21:30,667
I really, truly can't spell.
521
00:21:30,667 --> 00:21:32,367
Here we go.
522
00:21:32,367 --> 00:21:34,067
Delasander: So one of the things you just saw
523
00:21:34,067 --> 00:21:36,501
is that I happened to be online when Lars was online,
524
00:21:36,501 --> 00:21:39,000
and I saw his response coming in live on his blog.
525
00:21:39,000 --> 00:21:40,834
That's not always going to be the case.
526
00:21:40,834 --> 00:21:42,667
Since I responded to this blog,
527
00:21:42,667 --> 00:21:45,901
it'll show up in my Wave client.
528
00:21:45,901 --> 00:21:49,067
Right after I refresh my Wave client.
529
00:21:49,067 --> 00:21:51,501
Um, it will show up in my Wave client
530
00:21:51,501 --> 00:21:54,667
and I can continue the conversation in there.
531
00:21:54,667 --> 00:21:57,367
"But, Lars, I live next door."
532
00:21:57,367 --> 00:22:00,067
[laughter]
533
00:22:00,067 --> 00:22:01,868
And, um-- And then we can--
534
00:22:01,868 --> 00:22:04,868
That response shows up on the blog,
535
00:22:04,868 --> 00:22:06,534
we can continue the conversation from there,
536
00:22:06,534 --> 00:22:09,501
and anyone else can join in that conversation.
537
00:22:09,501 --> 00:22:11,200
Lars Rasmussen: Thank you, Greg. Delasander: No problem.
538
00:22:11,200 --> 00:22:14,701
[applause]
539
00:22:14,701 --> 00:22:17,200
Lars Rasmussen: Thank you.
540
00:22:17,200 --> 00:22:19,601
And so this, again, is an example
541
00:22:19,601 --> 00:22:23,434
of how to use our embedding APIs to put blogs on your web pages,
542
00:22:23,434 --> 00:22:25,267
and here we showed you with a blogging site,
543
00:22:25,267 --> 00:22:27,067
but you could imagine discussion group sites,
544
00:22:27,067 --> 00:22:28,267
community forums--
545
00:22:28,267 --> 00:22:29,534
if you have a rich-media site
546
00:22:29,534 --> 00:22:33,200
you can let your users discuss that using waves.
547
00:22:33,200 --> 00:22:34,901
The benefit for developers, of course,
548
00:22:34,901 --> 00:22:38,067
is you get to provide this very live, rich experience
549
00:22:38,067 --> 00:22:39,534
with very little code.
550
00:22:39,534 --> 00:22:43,567
For your users, for starters, they get to use a familiar UI,
551
00:22:43,567 --> 00:22:46,234
but for those of your users that have Wave accounts,
552
00:22:46,234 --> 00:22:48,067
they get to walk around the Web
553
00:22:48,067 --> 00:22:50,968
and aggregate the conversations they're interested in
554
00:22:50,968 --> 00:22:52,734
into the Wave client so that they don't
555
00:22:52,734 --> 00:22:55,300
have to go check back on 10,000 different pages
556
00:22:55,300 --> 00:22:57,167
whether someone responded to them.
557
00:22:57,167 --> 00:23:00,067
Which will make flame wars so much more effective.
558
00:23:00,067 --> 00:23:01,801
[laughter]
559
00:23:01,801 --> 00:23:03,200
She hates that joke.
560
00:23:03,200 --> 00:23:05,634
Hannon: I hate it. [laughs]
561
00:23:05,634 --> 00:23:06,801
Lars Rasmussen: Okay.
562
00:23:06,801 --> 00:23:09,067
So that was an example of how to embed waves.
563
00:23:09,067 --> 00:23:11,200
The embedding APIs can do other things,
564
00:23:11,200 --> 00:23:13,767
and Stephanie will show you that now.
565
00:23:13,767 --> 00:23:15,667
Hannon: So we invited some of our colleagues
566
00:23:15,667 --> 00:23:17,667
from Brazil and India to Sydney
567
00:23:17,667 --> 00:23:20,667
who work on one of our social networks called Orkut.
568
00:23:20,667 --> 00:23:23,334
We wanted to build a demo of what it could look like
569
00:23:23,334 --> 00:23:25,133
to put waves inside of Orkut.
570
00:23:25,133 --> 00:23:28,200
Obviously, it's a place where lots of discussions happen.
571
00:23:28,200 --> 00:23:31,067
It demonstrates three important principles,
572
00:23:31,067 --> 00:23:34,901
or features, of our embed API.
573
00:23:34,901 --> 00:23:42,501
Let me load up the demo.
574
00:23:42,501 --> 00:23:44,400
So here's my Orkut account.
575
00:23:44,400 --> 00:23:47,767
And you can see there's a Wave panel in the middle.
576
00:23:47,767 --> 00:23:51,200
And the first thing is I can create a wave on Orkut.
577
00:23:51,200 --> 00:23:54,901
So I'm starting a new wave, and I'll say, "Brazil trip?
578
00:23:54,901 --> 00:24:01,467
Wonder when Lars will let me go."
579
00:24:01,467 --> 00:24:03,934
The second important feature is that you can
580
00:24:03,934 --> 00:24:06,834
use contacts other than your Wave contacts.
581
00:24:06,834 --> 00:24:08,634
In this case, the authors of the site
582
00:24:08,634 --> 00:24:10,567
chose to use the Orkut contacts,
583
00:24:10,567 --> 00:24:12,601
so I can add some of my Orkut friends
584
00:24:12,601 --> 00:24:16,300
like Sid, Torston, and Rodrigo,
585
00:24:16,300 --> 00:24:18,734
who all helped build this demo.
586
00:24:18,734 --> 00:24:21,868
The third principle is that I can embed a "Search" panel
587
00:24:21,868 --> 00:24:25,934
inside of Orkut using the embed API.
588
00:24:25,934 --> 00:24:27,200
I'll show you that now.
589
00:24:27,200 --> 00:24:32,601
I can search for all my waves from here.
590
00:24:32,601 --> 00:24:35,601
And so on. And look at them.
591
00:24:35,601 --> 00:24:38,767
So that's waves embedded in Orkut.
592
00:24:38,767 --> 00:24:41,267
What's important is that our embed API
593
00:24:41,267 --> 00:24:45,100
is powerful enough for you to build your own Wave client.
594
00:24:45,100 --> 00:24:46,901
In this case, the Orkut team
595
00:24:46,901 --> 00:24:49,934
chose to focus on waves created inside of Orkut.
596
00:24:49,934 --> 00:24:52,167
But just like in the blog example,
597
00:24:52,167 --> 00:24:54,801
I can go back to my Wave client,
598
00:24:54,801 --> 00:24:57,334
and I can see the wave I started there.
599
00:24:57,334 --> 00:24:59,968
"Wonder when Lars will let me go to Brazil."
600
00:24:59,968 --> 00:25:02,868
So that's the embed API.
601
00:25:02,868 --> 00:25:04,667
Lars Rasmussen: You guys-- [applause]
602
00:25:04,667 --> 00:25:09,167
Thank you.
603
00:25:09,167 --> 00:25:11,767
Are you guys feeling inspired yet?
604
00:25:11,767 --> 00:25:13,801
So remember that we're all going to give you accounts
605
00:25:13,801 --> 00:25:15,334
on a sandbox build,
606
00:25:15,334 --> 00:25:18,901
which is in fact the build that we're demo-ing from later today,
607
00:25:18,901 --> 00:25:21,033
and this is all sample applications
608
00:25:21,033 --> 00:25:22,367
that we're hoping you'll pick up
609
00:25:22,367 --> 00:25:25,501
and build much, much cooler things with.
610
00:25:25,501 --> 00:25:27,968
Okay, so the next thing I want to show is
611
00:25:27,968 --> 00:25:31,634
of course you're going to want Wave on your mobile devices,
612
00:25:31,634 --> 00:25:34,701
and I have an Android and an iPhone here,
613
00:25:34,701 --> 00:25:38,501
and I was going to show you how well it works communicating
614
00:25:38,501 --> 00:25:41,334
from mobile devices to the desktop,
615
00:25:41,334 --> 00:25:43,200
but you guys are all on Facebook, aren't you?
616
00:25:43,200 --> 00:25:46,067
Because I can't get on the wireless.
617
00:25:46,067 --> 00:25:47,534
[laughter]
618
00:25:47,534 --> 00:25:51,133
So if it doesn't work, it's your fault.
619
00:25:51,133 --> 00:25:53,133
Okay, so you can see my inbox over here.
620
00:25:53,133 --> 00:25:54,634
This is on the Android device.
621
00:25:54,634 --> 00:25:56,300
Here's an open--
622
00:25:56,300 --> 00:25:58,133
uh, the same open wave we saw before.
623
00:25:58,133 --> 00:26:00,067
You see the pretty pictures here.
624
00:26:00,067 --> 00:26:05,868
And then I can click the "Reply" button like this,
625
00:26:05,868 --> 00:26:08,734
and you'll see over on Stephanie's screen,
626
00:26:08,734 --> 00:26:11,400
which I can't see.
627
00:26:11,400 --> 00:26:13,200
You will see a reply.
628
00:26:13,200 --> 00:26:15,667
Imagine I was actually on a network,
629
00:26:15,667 --> 00:26:21,667
and then I could type in, "I am on the boat."
630
00:26:21,667 --> 00:26:23,234
Done.
631
00:26:23,234 --> 00:26:25,534
Notice again my spelling.
632
00:26:25,534 --> 00:26:27,400
And nothing is going to show up over there
633
00:26:27,400 --> 00:26:28,968
because we haven't yet figured out
634
00:26:28,968 --> 00:26:32,033
squeezing this through without a connection.
635
00:26:32,033 --> 00:26:33,467
Maybe we'll show you that.
636
00:26:33,467 --> 00:26:35,601
[laughter]
637
00:26:35,601 --> 00:26:37,133
Hannon: As long as it's your fault that it's not working.
638
00:26:37,133 --> 00:26:38,400
Lars Rasmussen: We are--
639
00:26:38,400 --> 00:26:39,467
Hannon: I just don't want to screw up the--
640
00:26:39,467 --> 00:26:40,767
Lars Rasmussen: We are working on it.
641
00:26:40,767 --> 00:26:44,133
Okay, so that's mobile.
642
00:26:44,133 --> 00:26:46,000
Hannon: How 'bout we talk about editing?
643
00:26:46,000 --> 00:26:47,601
Lars Rasmussen: Oh, that's a brilliant idea.
644
00:26:47,601 --> 00:26:49,067
Thank you.
645
00:26:49,067 --> 00:26:51,601
Okay, so the next thing we're going to show.
646
00:26:51,601 --> 00:26:53,701
Again because, um, there's only--
647
00:26:53,701 --> 00:26:54,901
Back to my desktop. Thank you.
648
00:26:54,901 --> 00:26:57,033
There is only one copy of the wave out there.
649
00:26:57,033 --> 00:26:59,367
Even though we put these pictures on my blog,
650
00:26:59,367 --> 00:27:01,367
I discussed them with Greg,
651
00:27:01,367 --> 00:27:03,767
uh, we had them on my mobile device.
652
00:27:03,767 --> 00:27:05,667
Now I notice that some of the captions
653
00:27:05,667 --> 00:27:06,968
are kind of wonky.
654
00:27:06,968 --> 00:27:09,167
And all I have to do is click this "Edit" button here,
655
00:27:09,167 --> 00:27:11,234
and then I can fix that.
656
00:27:11,234 --> 00:27:14,767
Kayaks. Beer Man.
657
00:27:14,767 --> 00:27:18,000
Thank you. [applause]
658
00:27:18,000 --> 00:27:19,267
Hannon: And as you notice,
659
00:27:19,267 --> 00:27:22,734
the captions are updating on the blog.
660
00:27:22,734 --> 00:27:24,868
Lars Rasmussen: Yes, hopefully you saw that the captions
661
00:27:24,868 --> 00:27:28,367
were actually updating live on the blog as I was typing.
662
00:27:28,367 --> 00:27:30,834
So, here I edited my own message,
663
00:27:30,834 --> 00:27:34,734
but we actually let users edit each other's messages as well,
664
00:27:34,734 --> 00:27:36,567
which is a very nice effect that in addition
665
00:27:36,567 --> 00:27:38,300
to everything we showed you already,
666
00:27:38,300 --> 00:27:39,501
you can use waves
667
00:27:39,501 --> 00:27:41,367
to collaboratively author documents,
668
00:27:41,367 --> 00:27:42,801
which we'll show you now.
669
00:27:42,801 --> 00:27:45,868
So let's leave the boat behind, and let's go to work.
670
00:27:45,868 --> 00:27:47,200
Stephanie.
671
00:27:47,200 --> 00:27:49,033
Hannon: As Lars mentioned, I'm a product manager,
672
00:27:49,033 --> 00:27:51,767
and I often have to take notes in a meeting.
673
00:27:51,767 --> 00:27:54,200
Today I have to decide if I want to send those notes
674
00:27:54,200 --> 00:27:57,133
out on email because I want people to discuss them,
675
00:27:57,133 --> 00:27:59,133
or if I'm going to put them in a dock or a Wiki,
676
00:27:59,133 --> 00:28:01,501
'cause I want other people to help me edit them.
677
00:28:01,501 --> 00:28:03,968
With Wave you don't have to make that choice.
678
00:28:03,968 --> 00:28:07,234
You can do both discussion and content collaboration
679
00:28:07,234 --> 00:28:09,133
in one tool.
680
00:28:09,133 --> 00:28:11,067
So these are our meeting notes.
681
00:28:11,067 --> 00:28:13,501
I'm going to add Lars,
682
00:28:13,501 --> 00:28:17,234
Jens, Greg, and ACD.
683
00:28:17,234 --> 00:28:18,968
[Lars Rasmussen and Hannon speak over each other]
684
00:28:18,968 --> 00:28:20,167
Lars Rasmussen: Pardon me.
685
00:28:20,167 --> 00:28:21,234
Hannon: Then you open it.
686
00:28:21,234 --> 00:28:22,434
Lars Rasmussen: Then I open it.
687
00:28:22,434 --> 00:28:24,467
And even though this is Stephanie's message,
688
00:28:24,467 --> 00:28:26,467
I can click that same "Edit" button
689
00:28:26,467 --> 00:28:31,634
and change this to "glorious."
690
00:28:31,634 --> 00:28:33,767
And then I can add an action item.
691
00:28:33,767 --> 00:28:38,434
"AI. Make more better AIs, already."
692
00:28:38,434 --> 00:28:39,701
Whoo, like that.
693
00:28:39,701 --> 00:28:40,701
Thank you.
694
00:28:40,701 --> 00:28:43,067
[applause]
695
00:28:43,067 --> 00:28:44,167
Thank you.
696
00:28:44,167 --> 00:28:46,033
And so that's how easy it is
697
00:28:46,033 --> 00:28:48,033
for me to edit Stephanie's message.
698
00:28:48,033 --> 00:28:49,334
We want to show you now how it looks
699
00:28:49,334 --> 00:28:51,200
to the other participants on the wave--
700
00:28:51,200 --> 00:28:52,968
the fact that I edited her message.
701
00:28:52,968 --> 00:28:54,467
We'll start with Stephanie.
702
00:28:54,467 --> 00:28:56,634
Hannon: So you can see the wave pop back into my inbox
703
00:28:56,634 --> 00:28:58,100
because there's new material.
704
00:28:58,100 --> 00:29:01,868
If I open it, I see the markups.
705
00:29:01,868 --> 00:29:03,868
So I see the changes that Lars made.
706
00:29:03,868 --> 00:29:05,567
Lars Rasmussen: Thank you.
707
00:29:05,567 --> 00:29:09,634
[applause]
708
00:29:09,634 --> 00:29:11,267
Hannon: We haven't implemented it yet,
709
00:29:11,267 --> 00:29:12,968
but we'll also have a little description at the top
710
00:29:12,968 --> 00:29:15,367
that says Lars edited this message.
711
00:29:15,367 --> 00:29:17,968
What's important is I see these markups
712
00:29:17,968 --> 00:29:20,734
not because I wrote the original message,
713
00:29:20,734 --> 00:29:23,534
but because I saw the original message.
714
00:29:23,534 --> 00:29:25,667
Anyone who saw my original message
715
00:29:25,667 --> 00:29:27,234
would see these same markups
716
00:29:27,234 --> 00:29:29,300
the next time they visited the wave
717
00:29:29,300 --> 00:29:31,334
after Lars made his edits.
718
00:29:31,334 --> 00:29:32,567
Jens Rasmussen: All right, now,
719
00:29:32,567 --> 00:29:33,868
I didn't get to see the original message,
720
00:29:33,868 --> 00:29:35,734
so when I open up this wave,
721
00:29:35,734 --> 00:29:37,467
I just see the current version of it.
722
00:29:37,467 --> 00:29:38,801
But I do get to see
723
00:29:38,801 --> 00:29:41,934
that both Stephanie and Lars wrote this message.
724
00:29:41,934 --> 00:29:44,067
Most of the time I'm not going to care,
725
00:29:44,067 --> 00:29:47,734
but if I do care, then Playback is my friend again.
726
00:29:47,734 --> 00:29:49,834
So I see Stephanie's original message,
727
00:29:49,834 --> 00:29:51,200
she adds Lars,
728
00:29:51,200 --> 00:29:55,334
and then I get to see Lars's edits.
729
00:29:55,334 --> 00:29:58,167
[applause]
730
00:29:58,167 --> 00:30:00,334
Thank you.
731
00:30:00,334 --> 00:30:01,868
So now that we have accountability--
732
00:30:01,868 --> 00:30:03,501
accountability in place,
733
00:30:03,501 --> 00:30:05,834
we're going to allow everybody on a wave
734
00:30:05,834 --> 00:30:08,000
to edit everything by default.
735
00:30:08,000 --> 00:30:09,234
When something is changed,
736
00:30:09,234 --> 00:30:10,968
the author is notified immediately,
737
00:30:10,968 --> 00:30:12,934
and, if needed, can take action.
738
00:30:12,934 --> 00:30:17,234
and everybody who's on the wave can find out who did what.
739
00:30:17,234 --> 00:30:20,367
So Stephanie promised that we were going to do
740
00:30:20,367 --> 00:30:22,968
collaboration and communication using the same tool.
741
00:30:22,968 --> 00:30:24,501
Hannon: I did. Jens Rasmussen: So I'm going--
742
00:30:24,501 --> 00:30:27,300
Now that I know that Lars made this--the request for more AIs,
743
00:30:27,300 --> 00:30:30,701
I'm going to use the in-line reply tool we showed earlier,
744
00:30:30,701 --> 00:30:34,868
um, to add my reply here.
745
00:30:34,868 --> 00:30:40,767
"No, enough AIs already."
746
00:30:40,767 --> 00:30:44,100
My spelling is not doing well either.
747
00:30:44,100 --> 00:30:46,100
Lars Rasmussen: It's hard when 4,000 people are watching.
748
00:30:46,100 --> 00:30:47,334
Jens Rasmussen: Typing and talking?
749
00:30:47,334 --> 00:30:48,801
It's a little bit too much.
750
00:30:48,801 --> 00:30:50,567
There we go. So I'll hand it back to Lars.
751
00:30:50,567 --> 00:30:51,567
Lars Rasmussen: Okay, thank you.
752
00:30:51,567 --> 00:30:53,033
So notice--
753
00:30:53,033 --> 00:30:56,000
Notice that we never said, "Let's start a document, here."
754
00:30:56,000 --> 00:30:57,534
These are all just waves.
755
00:30:57,534 --> 00:30:58,767
The only thing different here
756
00:30:58,767 --> 00:31:01,167
is that we chose to think of that opening message
757
00:31:01,167 --> 00:31:03,901
more like a document we're collaborating about
758
00:31:03,901 --> 00:31:06,667
than a message that starts a conversation.
759
00:31:06,667 --> 00:31:09,634
And then we're choosing to think about that in-line reply
760
00:31:09,634 --> 00:31:11,567
more like the beginning of a conversation
761
00:31:11,567 --> 00:31:13,601
about the point in that document.
762
00:31:13,601 --> 00:31:15,767
But to the system, they're all just waves,
763
00:31:15,767 --> 00:31:17,934
and in fact, you can collaboratively edit
764
00:31:17,934 --> 00:31:19,634
any message in the tree.
765
00:31:19,634 --> 00:31:22,501
Doesn't have to be, uh, document-like at all.
766
00:31:22,501 --> 00:31:24,634
Stephanie often comes and very friendly fixes
767
00:31:24,634 --> 00:31:27,200
all of my spelling errors.
768
00:31:27,200 --> 00:31:31,801
And so we think this combination of collaborative editing
769
00:31:31,801 --> 00:31:33,033
and in-line discussion
770
00:31:33,033 --> 00:31:35,767
makes for a very powerful collaboration tool.
771
00:31:35,767 --> 00:31:38,767
And I want to show you that with a design document
772
00:31:38,767 --> 00:31:41,100
that the team wrote a while back.
773
00:31:41,100 --> 00:31:43,901
Let me just reconfigure my client, here.
774
00:31:43,901 --> 00:31:49,467
I'm going to go do a safe search, find the document here,
775
00:31:49,467 --> 00:31:51,434
Let me make some more space for it.
776
00:31:51,434 --> 00:31:54,501
And you'll see here that it's a RISTEX document.
777
00:31:54,501 --> 00:31:55,968
It's got headlines, it's got bullet points.
778
00:31:55,968 --> 00:31:58,567
It's got illustrations, different types of fonts.
779
00:31:58,567 --> 00:31:59,934
And then it's interrupted
780
00:31:59,934 --> 00:32:02,300
by these little snippets of conversation
781
00:32:02,300 --> 00:32:05,234
that help facilitate the collaboration.
782
00:32:05,234 --> 00:32:07,534
And as always, the best way to see how this happened
783
00:32:07,534 --> 00:32:09,167
is to play back the wave.
784
00:32:09,167 --> 00:32:11,100
And you'll see Steven, our trusted server guy,
785
00:32:11,100 --> 00:32:13,634
started out with a terse draft.
786
00:32:13,634 --> 00:32:15,734
He added the rest of the team
787
00:32:15,734 --> 00:32:18,434
Lars the manager says, "Please do more work."
788
00:32:18,434 --> 00:32:20,601
Steven grudgingly adds another paragraph.
789
00:32:20,601 --> 00:32:22,434
He says, "Yeah, whatever."
790
00:32:22,434 --> 00:32:24,934
Then Stephanie the PM makes an edit here.
791
00:32:24,934 --> 00:32:26,534
She adds a comment there,
792
00:32:26,534 --> 00:32:29,167
starts a discussion there, and so on.
793
00:32:29,167 --> 00:32:31,501
I can use the slider here to drag it
794
00:32:31,501 --> 00:32:34,300
to anywhere in the history of the wave.
795
00:32:34,300 --> 00:32:36,801
And we're planning a bunch of power tools
796
00:32:36,801 --> 00:32:38,000
that come with Playback.
797
00:32:38,000 --> 00:32:39,601
For example, I might ask it
798
00:32:39,601 --> 00:32:41,868
only to play back Stephanie's contribution.
799
00:32:41,868 --> 00:32:44,167
So I might ask it to only play back a single message
800
00:32:44,167 --> 00:32:47,100
or even a single paragraph inside a message.
801
00:32:47,100 --> 00:32:48,667
we're definitely going to let you take
802
00:32:48,667 --> 00:32:50,467
one change in the history
803
00:32:50,467 --> 00:32:52,801
and revert it at the end of the history.
804
00:32:52,801 --> 00:32:55,701
Maybe name aversion so that you can find it again and so on.
805
00:32:55,701 --> 00:32:57,934
Playback is going to be a really powerful tool
806
00:32:57,934 --> 00:33:00,334
for investigating and manipulating
807
00:33:00,334 --> 00:33:04,000
the entire history of the wave.
808
00:33:04,000 --> 00:33:05,000
Thank you.
809
00:33:05,000 --> 00:33:10,701
[applause]
810
00:33:10,701 --> 00:33:13,534
And so now imagine we're done with the design document.
811
00:33:13,534 --> 00:33:15,567
Or we find we're in a good state;
812
00:33:15,567 --> 00:33:17,234
we want to share it with a wider audience.
813
00:33:17,234 --> 00:33:19,834
You'll notice it's not super comfortable reading a document
814
00:33:19,834 --> 00:33:21,534
interrupted by all this discussion,
815
00:33:21,534 --> 00:33:23,567
so we added this widget here
816
00:33:23,567 --> 00:33:27,434
that lets you hide and show some discussions,
817
00:33:27,434 --> 00:33:31,567
but also, just like we extracted images from a wave earlier,
818
00:33:31,567 --> 00:33:33,434
we let you extract the current version
819
00:33:33,434 --> 00:33:36,667
of any message in a tree into a fresh wave.
820
00:33:36,667 --> 00:33:37,934
Like this.
821
00:33:37,934 --> 00:33:39,501
And now I have a fresh wave
822
00:33:39,501 --> 00:33:42,334
with the pristine product of our work,
823
00:33:42,334 --> 00:33:44,200
which I can now submit to the server
824
00:33:44,200 --> 00:33:45,767
and share with whomever I like,
825
00:33:45,767 --> 00:33:49,367
put on a mailing list internal blog or even keep working on.
826
00:33:49,367 --> 00:33:52,067
And in fact, we're planning more features here
827
00:33:52,067 --> 00:33:53,667
for document production.
828
00:33:53,667 --> 00:33:55,567
Imagine you go back and do more work
829
00:33:55,567 --> 00:33:57,067
in the original wave.
830
00:33:57,067 --> 00:33:59,567
Then you'll be able to merge just those changes
831
00:33:59,567 --> 00:34:01,734
into that same product wave.
832
00:34:01,734 --> 00:34:04,567
The product wave will just have a two-step history now,
833
00:34:04,567 --> 00:34:07,367
where each step is attributed to whoever did the copy.
834
00:34:07,367 --> 00:34:10,567
In fact, and you guys will recognize this as, um,
835
00:34:10,567 --> 00:34:12,234
inspired by source-controlled systems.
836
00:34:12,234 --> 00:34:13,634
We'll have you--
837
00:34:13,634 --> 00:34:15,434
We'll let you have a whole string of work waves,
838
00:34:15,434 --> 00:34:17,501
all pointing to the same product wave.
839
00:34:17,501 --> 00:34:18,801
You can have different themes
840
00:34:18,801 --> 00:34:20,801
working on different parts of a wave,
841
00:34:20,801 --> 00:34:22,300
and then when one team merges
842
00:34:22,300 --> 00:34:24,300
and that changes into the product wave,
843
00:34:24,300 --> 00:34:25,868
the other teams can pull that down,
844
00:34:25,868 --> 00:34:28,000
merge it with the local changes, and so on.
845
00:34:28,000 --> 00:34:29,400
So this is going to become
846
00:34:29,400 --> 00:34:33,634
a very powerful document production tool.
847
00:34:33,634 --> 00:34:34,634
Thank you.
848
00:34:34,634 --> 00:34:39,901
[applause]
849
00:34:39,901 --> 00:34:42,667
We showed you this, of course, with, um,
850
00:34:42,667 --> 00:34:44,801
with, uh, rich text documents.
851
00:34:44,801 --> 00:34:46,067
There's no reason we shouldn't
852
00:34:46,067 --> 00:34:48,567
later add spreadsheet-type functionality in there,
853
00:34:48,567 --> 00:34:50,901
or presentation building-type functionality in there.
854
00:34:50,901 --> 00:34:53,701
In fact as we'll show you later, we've taken great care
855
00:34:53,701 --> 00:34:56,868
to make the content model inside Wave extendable,
856
00:34:56,868 --> 00:34:59,634
both by us and by you.
857
00:34:59,634 --> 00:35:00,968
Okay, the next thing I want--
858
00:35:00,968 --> 00:35:02,367
Hannon: Why don't you just talk for a minute
859
00:35:02,367 --> 00:35:03,634
before you open it?
860
00:35:03,634 --> 00:35:05,000
Lars Rasmussen: Talk for a minute...
861
00:35:05,000 --> 00:35:06,133
Hannon: You know.
862
00:35:06,133 --> 00:35:07,334
Lars Rasmussen: Before I open it.
863
00:35:07,334 --> 00:35:08,734
Hannon: 30 seconds.
864
00:35:08,734 --> 00:35:10,567
Lars Rasmussen: We could do a little interpretive dance
865
00:35:10,567 --> 00:35:11,801
while we open it.
866
00:35:11,801 --> 00:35:12,868
It's not that there's anything wrong
867
00:35:12,868 --> 00:35:13,901
with the thing I was about to open,
868
00:35:13,901 --> 00:35:14,901
it's just that--
869
00:35:14,901 --> 00:35:15,901
How're you guys doing?
870
00:35:15,901 --> 00:35:17,467
[laughter]
871
00:35:17,467 --> 00:35:18,968
Are you having a good time?
872
00:35:18,968 --> 00:35:20,434
I know it's a long demo. Thank you.
873
00:35:20,434 --> 00:35:23,067
Don't be shy if you like it.
874
00:35:23,067 --> 00:35:24,300
Hannon: All right, we're ready.
875
00:35:24,300 --> 00:35:25,501
Lars Rasmussen: There's a whole bunch of people
876
00:35:25,501 --> 00:35:28,200
in blue shirts working feverishly over there.
877
00:35:28,200 --> 00:35:30,801
[chuckles] And we're ready.
878
00:35:30,801 --> 00:35:33,634
Okay, so here is a wave, um...
879
00:35:33,634 --> 00:35:34,901
Here is a wave. That's right.
880
00:35:34,901 --> 00:35:37,267
So my little introduction here is the following:
881
00:35:37,267 --> 00:35:38,267
We're going to show you now
882
00:35:38,267 --> 00:35:40,667
the thing we had the most fun working on.
883
00:35:40,667 --> 00:35:43,234
As in this was the hardest thing we did.
884
00:35:43,234 --> 00:35:46,334
Um, which is to let more than one person
885
00:35:46,334 --> 00:35:48,334
edit the same message at the same time
886
00:35:48,334 --> 00:35:51,167
and still transmitting the characters live on the wire.
887
00:35:51,167 --> 00:35:52,934
So we have a set of pictures here,
888
00:35:52,934 --> 00:35:54,501
and Stephanie is going to start
889
00:35:54,501 --> 00:35:56,267
at the top-left editing the captions.
890
00:35:56,267 --> 00:35:57,601
You can see on my screen
891
00:35:57,601 --> 00:36:00,400
I can see exactly where that orange label--where she is,
892
00:36:00,400 --> 00:36:02,968
and I'm going to start from the lower-right.
893
00:36:02,968 --> 00:36:04,367
Hannon: "Thumbs up."
894
00:36:04,367 --> 00:36:06,000
Lars Rasmussen: "Spelling Google."
895
00:36:06,000 --> 00:36:07,767
Hannon: "Lars in the lead."
896
00:36:07,767 --> 00:36:09,133
Lars Rasmussen: "Smiley David."
897
00:36:09,133 --> 00:36:11,000
Hannon: "Wave crew hiking." Lars Rasmussen: "Kapow."
898
00:36:11,000 --> 00:36:12,667
[applause]
899
00:36:12,667 --> 00:36:14,067
Thank you.
900
00:36:14,067 --> 00:36:15,701
Now we're very close to each other.
901
00:36:15,701 --> 00:36:17,701
I'll add some styling here.
902
00:36:17,701 --> 00:36:19,267
I'll make this italic.
903
00:36:19,267 --> 00:36:22,000
Oh, boy, if someone can add some color.
904
00:36:22,000 --> 00:36:23,167
We can do this.
905
00:36:23,167 --> 00:36:25,367
Notice how close we can edit to each other.
906
00:36:25,367 --> 00:36:26,968
You can see we've got a couple of--
907
00:36:26,968 --> 00:36:28,300
of our team has joined us.
908
00:36:28,300 --> 00:36:29,501
We've got three people here.
909
00:36:29,501 --> 00:36:32,934
Casey, Steph, Ophir and Dan.
910
00:36:32,934 --> 00:36:34,300
We have four people now,
911
00:36:34,300 --> 00:36:37,067
editing the same document right next to each other.
912
00:36:37,067 --> 00:36:41,067
[applause]
913
00:36:41,067 --> 00:36:43,801
Thank you.
914
00:36:43,801 --> 00:36:45,801
Thank you.
915
00:36:45,801 --> 00:36:47,934
And so apart from hours and hours of fun
916
00:36:47,934 --> 00:36:50,434
just chasing each other's carrots around on the screen...
917
00:36:50,434 --> 00:36:51,968
[laughter]
918
00:36:51,968 --> 00:36:54,234
Hannon: It's a lot of fun. Lars Rasmussen: A lot of fun.
919
00:36:54,234 --> 00:36:57,934
Um, the--the--this sort of live, concurrent editing
920
00:36:57,934 --> 00:37:00,300
opens up a whole set of new ways of using the tool.
921
00:37:00,300 --> 00:37:02,033
We're actually still discovering some.
922
00:37:02,033 --> 00:37:03,868
Imagine you're in the same room,
923
00:37:03,868 --> 00:37:05,467
you're taking notes from a meeting.
924
00:37:05,467 --> 00:37:07,501
Oftentimes people don't even come to the meeting,
925
00:37:07,501 --> 00:37:10,534
they just open up the wave, see the notes being taken,
926
00:37:10,534 --> 00:37:14,100
they just pop their questions in the wave, and so on.
927
00:37:14,100 --> 00:37:16,434
I want to-- while I'm showing off our edit,
928
00:37:16,434 --> 00:37:18,167
I want to make sure you see
929
00:37:18,167 --> 00:37:20,667
that it supports right-to-left languages.
930
00:37:20,667 --> 00:37:23,300
This is Ophir speaking in Hebrew.
931
00:37:23,300 --> 00:37:24,300
Thank you.
932
00:37:24,300 --> 00:37:28,000
[applause]
933
00:37:28,000 --> 00:37:31,534
You see up at the top-left that the editor supports languages
934
00:37:31,534 --> 00:37:35,801
that require international input method editors as well.
935
00:37:35,801 --> 00:37:40,033
I'm pretty sure that's Chinese.
936
00:37:40,033 --> 00:37:46,667
Okay. That's collaborative editing.
937
00:37:46,667 --> 00:37:48,200
And now...
938
00:37:48,200 --> 00:37:50,434
Man, this is a long demo.
939
00:37:50,434 --> 00:37:51,934
You guys want to stand up a little?
940
00:37:51,934 --> 00:37:52,934
Stretch. Hannon: Any stretching?
941
00:37:52,934 --> 00:37:53,934
Lars Rasmussen: Stretch a little.
942
00:37:53,934 --> 00:37:55,634
Hug the person next to you.
943
00:37:55,634 --> 00:37:56,634
[laughter]
944
00:37:56,634 --> 00:37:57,734
You don't have to do that.
945
00:37:57,734 --> 00:38:00,801
Hannon: A hug break. Make some friends.
946
00:38:00,801 --> 00:38:02,868
Lars Rasmussen: Um, I want to take a little break.
947
00:38:02,868 --> 00:38:04,300
We have lots more to show you,
948
00:38:04,300 --> 00:38:05,767
but I want to take a little break,
949
00:38:05,767 --> 00:38:09,634
and I want to, um, call out to our friends and colleagues
950
00:38:09,634 --> 00:38:11,868
on the Google Web Toolkit team.
951
00:38:11,868 --> 00:38:12,868
So--Thank you.
952
00:38:12,868 --> 00:38:14,334
[applause]
953
00:38:14,334 --> 00:38:18,434
Thank you.
954
00:38:18,434 --> 00:38:22,667
So Google Wave is 100% built with the Google Web Toolkit
955
00:38:22,667 --> 00:38:25,167
from the first line of code we wrote in a prototype
956
00:38:25,167 --> 00:38:27,667
back in early 2007.
957
00:38:27,667 --> 00:38:30,100
And as I'm sure you know, the Google Web Toolkit
958
00:38:30,100 --> 00:38:34,267
lets you write HTML 5 applications in Java.
959
00:38:34,267 --> 00:38:36,367
And then GWT, as we call it,
960
00:38:36,367 --> 00:38:40,133
automatically translates that into HTML, JavaScript, CSS,
961
00:38:40,133 --> 00:38:41,968
all of those things that then run
962
00:38:41,968 --> 00:38:43,968
in all of the modern browsers.
963
00:38:43,968 --> 00:38:47,467
And I think that we couldn't possibly have built
964
00:38:47,467 --> 00:38:50,033
something this rich without the Google Web Toolkit.
965
00:38:50,033 --> 00:38:54,133
In fact, I don't think we would even have thought to do that.
966
00:38:54,133 --> 00:38:56,968
I think using modern tools like this
967
00:38:56,968 --> 00:38:58,534
changes your way of thinking.
968
00:38:58,534 --> 00:39:01,868
When I was still hand rolling JavaScript for Google Maps,
969
00:39:01,868 --> 00:39:05,067
I found too much of my brain cycles
970
00:39:05,067 --> 00:39:07,634
were used worrying about the constraints of programming
971
00:39:07,634 --> 00:39:09,934
in a scripting language in a browser.
972
00:39:09,934 --> 00:39:12,000
But by using GWT, I get to write in Java
973
00:39:12,000 --> 00:39:13,734
and have this amazing set of tools
974
00:39:13,734 --> 00:39:15,501
that come with writing in Java,
975
00:39:15,501 --> 00:39:17,067
and we found that our programmers
976
00:39:17,067 --> 00:39:18,834
can now spend most of their time
977
00:39:18,834 --> 00:39:23,033
thinking about the amazing potential of the Web.
978
00:39:23,033 --> 00:39:26,300
And by the way, this is both if you're on a desktop
979
00:39:26,300 --> 00:39:28,367
or if you're on a mobile device,
980
00:39:28,367 --> 00:39:31,701
when I showed you on the Android and iPhone here,
981
00:39:31,701 --> 00:39:35,667
Wave was running in the browser in both of those phones.
982
00:39:35,667 --> 00:39:37,434
GWT makes that fairly easy to do.
983
00:39:37,434 --> 00:39:39,534
It's actually the same code
984
00:39:39,534 --> 00:39:41,868
that runs in those mobile devices,
985
00:39:41,868 --> 00:39:43,467
it's just a different layout.
986
00:39:43,467 --> 00:39:46,868
We estimate that the extra requirement of serving this
987
00:39:46,868 --> 00:39:49,767
both into desktop browsers and mobile browsers
988
00:39:49,767 --> 00:39:52,667
only adds about 5% extra engineering effort,
989
00:39:52,667 --> 00:39:56,067
which I find remarkable.
990
00:39:56,067 --> 00:39:57,400
Okay.
991
00:39:57,400 --> 00:39:58,734
Hannon: And that graph from yesterday.
992
00:39:58,734 --> 00:40:00,000
Lars Rasmussen: Pardon me.
993
00:40:00,000 --> 00:40:01,667
Oh, the graph from yesterday. Did you see that?
994
00:40:01,667 --> 00:40:04,367
How we built 1.4 megs of code and then all of a sudden
995
00:40:04,367 --> 00:40:06,367
it went down to 200k?
996
00:40:06,367 --> 00:40:09,934
We like GWT for that.
997
00:40:09,934 --> 00:40:13,534
[applause]
998
00:40:13,534 --> 00:40:15,667
Hannon: All right. So back to the demo.
999
00:40:15,667 --> 00:40:17,934
Let's talk about organization.
1000
00:40:17,934 --> 00:40:20,033
We learned from our own use of Wave
1001
00:40:20,033 --> 00:40:23,300
that you get a lot of waves, which is great,
1002
00:40:23,300 --> 00:40:25,501
but you need tools to organize them.
1003
00:40:25,501 --> 00:40:26,934
We have things you're familiar with
1004
00:40:26,934 --> 00:40:29,434
like folders and saved searches.
1005
00:40:29,434 --> 00:40:31,534
We also have tags and they're shared
1006
00:40:31,534 --> 00:40:34,067
by all the participants on the wave.
1007
00:40:34,067 --> 00:40:35,801
So you have just as much incentive
1008
00:40:35,801 --> 00:40:39,300
to put a great tag on a wave as a great subject.
1009
00:40:39,300 --> 00:40:41,300
For example, Lars is way too lazy
1010
00:40:41,300 --> 00:40:42,601
to organize his own stuff.
1011
00:40:42,601 --> 00:40:43,734
Lars Rasmussen: Oh, yeah.
1012
00:40:43,734 --> 00:40:46,067
Hannon: So we have a team help him do it.
1013
00:40:46,067 --> 00:40:48,567
Lars Rasmussen: Thank you. Hannon: [laughs]
1014
00:40:48,567 --> 00:40:50,667
But the most powerful way to organize waves
1015
00:40:50,667 --> 00:40:52,667
is with waves themselves.
1016
00:40:52,667 --> 00:40:55,734
Let me open a wave we used to organize this demo.
1017
00:40:55,734 --> 00:40:57,934
You can see it has links to other waves in it
1018
00:40:57,934 --> 00:41:01,367
and you can combine, uh, them in sections, formatting.
1019
00:41:01,367 --> 00:41:03,100
You can discuss them.
1020
00:41:03,100 --> 00:41:05,601
And if I click on one of these links,
1021
00:41:05,601 --> 00:41:07,467
it'll take me to that wave
1022
00:41:07,467 --> 00:41:10,400
and I can use the back button to go back.
1023
00:41:10,400 --> 00:41:12,167
So let me show you how easy it is
1024
00:41:12,167 --> 00:41:14,367
to create one of these wave links.
1025
00:41:14,367 --> 00:41:17,033
If I missed one, I can just pick it up
1026
00:41:17,033 --> 00:41:20,100
from the search panel and drop it in.
1027
00:41:20,100 --> 00:41:25,167
[applause]
1028
00:41:25,167 --> 00:41:28,767
I'll do that one more time 'cause I think it's cool.
1029
00:41:28,767 --> 00:41:30,367
Drop it in.
1030
00:41:30,367 --> 00:41:32,234
So we found on our own team
1031
00:41:32,234 --> 00:41:34,567
links--wave links are good for more than just lists.
1032
00:41:34,567 --> 00:41:37,601
We're actually interlinking a lot of waves on our site
1033
00:41:37,601 --> 00:41:40,834
almost like a Wiki, uh, on our team.
1034
00:41:40,834 --> 00:41:42,467
Before we get to Wave extensions,
1035
00:41:42,467 --> 00:41:44,801
which I know this audience is really excited about,
1036
00:41:44,801 --> 00:41:46,300
I want to show you one more thing
1037
00:41:46,300 --> 00:41:48,400
that we worked really hard on.
1038
00:41:48,400 --> 00:41:51,000
I'm going to go up here and search for Google Wave.
1039
00:41:51,000 --> 00:41:52,834
Lars Rasmussen: I have a feeling, uh, you're going
1040
00:41:52,834 --> 00:41:55,234
to want to refresh your browser before we do this.
1041
00:41:55,234 --> 00:41:59,167
Hannon: Just like my inbox, when a wave matches this search,
1042
00:41:59,167 --> 00:42:03,334
it will pop into the panel.
1043
00:42:03,334 --> 00:42:04,968
Lars Rasmussen: And so Stephanie has a search
1044
00:42:04,968 --> 00:42:06,000
for Google Wave over there.
1045
00:42:06,000 --> 00:42:08,567
I'm teeing up a new wave here.
1046
00:42:08,567 --> 00:42:09,634
Said, "Wow.
1047
00:42:09,634 --> 00:42:15,701
I am finally demo-ing Google Wave."
1048
00:42:15,701 --> 00:42:17,234
Now the reason this hasn't showed up
1049
00:42:17,234 --> 00:42:20,834
in Stephanie's search yet is I didn't type the E.
1050
00:42:20,834 --> 00:42:22,868
So what I'm going to do, I'm going to count to three,
1051
00:42:22,868 --> 00:42:24,133
then I'm going to hit the E,
1052
00:42:24,133 --> 00:42:26,334
and you guys can count how many seconds it takes
1053
00:42:26,334 --> 00:42:28,934
before it shows up in Stephanie's browser.
1054
00:42:28,934 --> 00:42:32,467
One, two, three.
1055
00:42:32,467 --> 00:42:37,400
[applause]
1056
00:42:37,400 --> 00:42:40,400
You guys want to-- you guys want to see that again?
1057
00:42:40,400 --> 00:42:41,934
[laughter]
1058
00:42:41,934 --> 00:42:44,167
Hey, Stephanie, can you open up that wave for me?
1059
00:42:44,167 --> 00:42:45,634
Hannon: All right, let me go over there.
1060
00:42:45,634 --> 00:42:46,968
Lars Rasmussen: Backspace.
1061
00:42:46,968 --> 00:42:48,300
Hannon: [laughs]
1062
00:42:48,300 --> 00:42:51,167
[laughter and applause]
1063
00:42:51,167 --> 00:42:53,634
Lars Rasmussen: E, backspace, E,
1064
00:42:53,634 --> 00:42:57,000
backspace, E, backspace, E, backspace.
1065
00:42:57,000 --> 00:43:00,734
We call that the Wave dance.
1066
00:43:00,734 --> 00:43:02,067
So we've worked really hard on this.
1067
00:43:02,067 --> 00:43:03,434
We're pretty proud of the result.
1068
00:43:03,434 --> 00:43:06,033
I should just say after we started using it,
1069
00:43:06,033 --> 00:43:07,634
we found this is almost too fast.
1070
00:43:07,634 --> 00:43:09,567
Sometimes, uh, it draws your attention
1071
00:43:09,567 --> 00:43:10,934
to unfinished work.
1072
00:43:10,934 --> 00:43:12,868
And we're actually looking for the right balance
1073
00:43:12,868 --> 00:43:17,767
between speed and not being interrupted too often.
1074
00:43:17,767 --> 00:43:19,367
Okay, what's next?
1075
00:43:19,367 --> 00:43:22,000
Hannon: Extensions. Lars Rasmussen: Extensions.
1076
00:43:22,000 --> 00:43:24,801
The reasons you guys came here.
1077
00:43:24,801 --> 00:43:27,234
Okay. So the next thing we want to show
1078
00:43:27,234 --> 00:43:30,200
is the other category of APIs
1079
00:43:30,200 --> 00:43:31,634
that we're making available today,
1080
00:43:31,634 --> 00:43:35,133
which is about extending the functionality of Wave.
1081
00:43:35,133 --> 00:43:37,734
So we have tried hard to maintain a discipline
1082
00:43:37,734 --> 00:43:40,567
on the team that even significant offerings
1083
00:43:40,567 --> 00:43:43,868
of our own should be built with our own extension APIs
1084
00:43:43,868 --> 00:43:45,601
so that your extensions will live
1085
00:43:45,601 --> 00:43:47,701
as first-class citizens inside Wave.
1086
00:43:47,701 --> 00:43:51,634
It's similar, actually, to how browsers like Firefox
1087
00:43:51,634 --> 00:43:52,801
let you extend them.
1088
00:43:52,801 --> 00:43:54,467
This is just the web site you're extending
1089
00:43:54,467 --> 00:43:55,634
instead of the browser.
1090
00:43:55,634 --> 00:43:58,567
So let me show you some examples.
1091
00:43:58,567 --> 00:44:00,701
You've undoubtedly noticed how all morning,
1092
00:44:00,701 --> 00:44:03,234
I've been pretending my spelling is bad
1093
00:44:03,234 --> 00:44:06,033
just so that we could show off our spell-checker.
1094
00:44:06,033 --> 00:44:07,367
So normally spell-checkers work
1095
00:44:07,367 --> 00:44:09,968
by matching words up against a dictionary.
1096
00:44:09,968 --> 00:44:11,834
If they find there's-- if they don't find a word
1097
00:44:11,834 --> 00:44:12,834
that is in error,
1098
00:44:12,834 --> 00:44:14,234
the problem is that oftentimes
1099
00:44:14,234 --> 00:44:16,534
spelling mistakes hits other dictionary words.
1100
00:44:16,534 --> 00:44:19,601
And so our spell-checker actually takes the context
1101
00:44:19,601 --> 00:44:21,400
of the word into account
1102
00:44:21,400 --> 00:44:22,667
and then it matches it up
1103
00:44:22,667 --> 00:44:24,501
against an enormous language model
1104
00:44:24,501 --> 00:44:26,434
that we've built from the entire web.
1105
00:44:26,434 --> 00:44:29,200
Let me show you how powerful that is.
1106
00:44:29,200 --> 00:44:32,968
We call this the "Bean Soup Demo."
1107
00:44:32,968 --> 00:44:38,000
"Can I have some been soup?"
1108
00:44:38,000 --> 00:44:39,567
It puts a red on the line
1109
00:44:39,567 --> 00:44:42,734
and it knows that I meant "bean soup."
1110
00:44:42,734 --> 00:44:43,734
Thank you.
1111
00:44:43,734 --> 00:44:47,901
[applause]
1112
00:44:47,901 --> 00:44:49,501
Okay, now watch carefully.
1113
00:44:49,501 --> 00:44:54,667
"It has bean so long."
1114
00:44:54,667 --> 00:44:59,067
Did you see that?
1115
00:44:59,067 --> 00:45:02,634
So it is--it has become so good at spell-checking
1116
00:45:02,634 --> 00:45:04,767
that often, it has enough confidence
1117
00:45:04,767 --> 00:45:07,434
that we let it automatically correct my errors.
1118
00:45:07,434 --> 00:45:10,934
Let me show you that again.
1119
00:45:10,934 --> 00:45:15,868
"Icland is an icland."
1120
00:45:15,868 --> 00:45:22,501
[applause]
1121
00:45:22,501 --> 00:45:29,667
"You are to kind."
1122
00:45:29,667 --> 00:45:31,801
Pretty cool, huh? [laughs]
1123
00:45:31,801 --> 00:45:33,033
You didn't see that last one.
1124
00:45:33,033 --> 00:45:35,200
Okay, so that's our spell-checker,
1125
00:45:35,200 --> 00:45:37,367
or Spelly as we affectionately call it.
1126
00:45:37,367 --> 00:45:38,767
Let me show you another simpler one
1127
00:45:38,767 --> 00:45:41,534
that detects links in what you're typing.
1128
00:45:41,534 --> 00:45:42,968
And we call it Linky.
1129
00:45:42,968 --> 00:45:47,300
"I love google.com."
1130
00:45:47,300 --> 00:45:50,000
It immediately puts an underline--.a--
1131
00:45:50,000 --> 00:45:54,167
ooh, that's not a link-- .u--now it's a link again.
1132
00:45:54,167 --> 00:45:58,434
[applause]
1133
00:45:58,434 --> 00:45:59,968
You're wondering what's this all got to do
1134
00:45:59,968 --> 00:46:02,000
with extensions and let me explain that.
1135
00:46:02,000 --> 00:46:04,100
So you remember we showed you a robot earlier
1136
00:46:04,100 --> 00:46:05,534
called "Bloggy."
1137
00:46:05,534 --> 00:46:08,100
All that one did was publish a blog
1138
00:46:08,100 --> 00:46:10,033
that let you use the embedding API.
1139
00:46:10,033 --> 00:46:11,634
But robots are really powerful ways
1140
00:46:11,634 --> 00:46:13,234
of extending Wave's functionality.
1141
00:46:13,234 --> 00:46:17,234
They're server-side programs that participate in Wave
1142
00:46:17,234 --> 00:46:19,901
with all the power of the human participants.
1143
00:46:19,901 --> 00:46:22,801
You can see from your robot the live changes in the wave.
1144
00:46:22,801 --> 00:46:24,801
You can make live changes to the wave
1145
00:46:24,801 --> 00:46:26,834
including adding and removing messages,
1146
00:46:26,834 --> 00:46:28,434
collaboratively edited messaging,
1147
00:46:28,434 --> 00:46:30,033
adding and removing participants.
1148
00:46:30,033 --> 00:46:33,234
You can even start new waves from robots.
1149
00:46:33,234 --> 00:46:34,901
And the way Spelly works
1150
00:46:34,901 --> 00:46:38,200
is that it uses our robot APIs to watch what I'm typing.
1151
00:46:38,200 --> 00:46:40,901
It sits on the server. It watches what I'm typing.
1152
00:46:40,901 --> 00:46:43,033
It takes every so many words and matches it up
1153
00:46:43,033 --> 00:46:45,300
against a language model.
1154
00:46:45,300 --> 00:46:46,667
And then when it finds an error,
1155
00:46:46,667 --> 00:46:50,300
it uses collaborative editing to edit the content.
1156
00:46:50,300 --> 00:46:52,367
And in fact, when it doesn't have enough confidence
1157
00:46:52,367 --> 00:46:54,434
and it put that red underline,
1158
00:46:54,434 --> 00:46:56,868
if Steph and I were editing the message at the same time,
1159
00:46:56,868 --> 00:46:58,667
she would also see the red underline
1160
00:46:58,667 --> 00:47:01,968
and she could be the one taking the suggestion.
1161
00:47:01,968 --> 00:47:05,167
Linky works in the same way.
1162
00:47:05,167 --> 00:47:08,701
But who wants to be typing in links all day?
1163
00:47:08,701 --> 00:47:10,100
We had a very good friend of ours
1164
00:47:10,100 --> 00:47:13,033
from the Google Search Team build this extension for us here
1165
00:47:13,033 --> 00:47:15,033
called Searchy.
1166
00:47:15,033 --> 00:47:16,300
Let's search for Australia.
1167
00:47:16,300 --> 00:47:19,100
Hannon: We have a really clever naming convention.
1168
00:47:19,100 --> 00:47:20,901
Lars Rasmussen: And here you can do a Google search
1169
00:47:20,901 --> 00:47:24,667
from right inside Wave and add the link like that.
1170
00:47:24,667 --> 00:47:28,634
[applause]
1171
00:47:28,634 --> 00:47:30,267
You guys want to see that again?
1172
00:47:30,267 --> 00:47:33,567
I search for Bora Bora. It's so pretty there.
1173
00:47:33,567 --> 00:47:36,601
I add an image to the wave just like that.
1174
00:47:36,601 --> 00:47:38,267
Thank you.
1175
00:47:38,267 --> 00:47:41,267
[applause]
1176
00:47:41,267 --> 00:47:44,067
Let me just quickly return to our friend Linky.
1177
00:47:44,067 --> 00:47:46,334
I've got a video sitting here.
1178
00:47:46,334 --> 00:47:49,868
Let me copy the URL.
1179
00:47:49,868 --> 00:47:51,667
And inside my wave,
1180
00:47:51,667 --> 00:47:55,434
I'm going to type "Check this out."
1181
00:47:55,434 --> 00:47:58,601
And then I'm going to copy the link in there.
1182
00:47:58,601 --> 00:48:01,133
And then I'm going to dance a little bit
1183
00:48:01,133 --> 00:48:04,467
while the system spectacularly fails.
1184
00:48:04,467 --> 00:48:07,434
[laughter]
1185
00:48:07,434 --> 00:48:10,934
Maybe we'll return to that later.
1186
00:48:10,934 --> 00:48:13,634
Okay, so that's extensions that we built
1187
00:48:13,634 --> 00:48:15,133
with internal APIs.
1188
00:48:15,133 --> 00:48:17,234
And what we're doing today as part of the developer preview
1189
00:48:17,234 --> 00:48:21,567
is--is make external versions of these APIs
1190
00:48:21,567 --> 00:48:23,334
available to you guys.
1191
00:48:23,334 --> 00:48:25,968
The external APIs have almost all the power
1192
00:48:25,968 --> 00:48:27,367
of the internal APIs.
1193
00:48:27,367 --> 00:48:29,501
There is a few things we haven't quite figured out
1194
00:48:29,501 --> 00:48:31,400
how to secure the export.
1195
00:48:31,400 --> 00:48:33,400
We're working very hard to close the gap.
1196
00:48:33,400 --> 00:48:37,501
We're going to show you now a series of examples
1197
00:48:37,501 --> 00:48:39,601
of things that are built with the external APIs.
1198
00:48:39,601 --> 00:48:41,267
These are all sample codes
1199
00:48:41,267 --> 00:48:43,434
that are going to be on code.google.com
1200
00:48:43,434 --> 00:48:45,667
where we'll host the API.
1201
00:48:45,667 --> 00:48:48,167
Stephanie.
1202
00:48:48,167 --> 00:48:51,167
Hannon: Any open social gadget can sit inside a wave.
1203
00:48:51,167 --> 00:48:52,901
In fact, we were about to show you one
1204
00:48:52,901 --> 00:48:55,100
which might come a little bit later.
1205
00:48:55,100 --> 00:48:58,000
But we also make an additional API available
1206
00:48:58,000 --> 00:49:00,834
that lets you the developer make your gadget
1207
00:49:00,834 --> 00:49:02,534
live and collaborative.
1208
00:49:02,534 --> 00:49:04,033
I want to show you that.
1209
00:49:04,033 --> 00:49:07,767
But before I do, I'll digress and tell you a little story.
1210
00:49:07,767 --> 00:49:10,234
Even though we on this team have been building Wave
1211
00:49:10,234 --> 00:49:12,067
and thinking about Wave for a year and a half,
1212
00:49:12,067 --> 00:49:14,701
when we first started using it ourselves,
1213
00:49:14,701 --> 00:49:17,367
it took awhile for us to discover all the ways
1214
00:49:17,367 --> 00:49:19,367
Wave can make you more productive
1215
00:49:19,367 --> 00:49:21,868
because we were so used to older tools.
1216
00:49:21,868 --> 00:49:25,100
In fact, we're still discovering new ways all the time.
1217
00:49:25,100 --> 00:49:27,501
I'll show you that by opening a wave
1218
00:49:27,501 --> 00:49:31,033
and using Playback to tell you what happened.
1219
00:49:31,033 --> 00:49:33,467
Uh, someone on our team wanted to create a movie outing
1220
00:49:33,467 --> 00:49:35,868
and we should all go see the Transformers.
1221
00:49:35,868 --> 00:49:37,968
So he sent a wave out and people did something
1222
00:49:37,968 --> 00:49:40,400
very email-like and responded.
1223
00:49:40,400 --> 00:49:43,100
"I'm interested." "What place are you going to?"
1224
00:49:43,100 --> 00:49:45,501
"Is that really a good movie?" And so on.
1225
00:49:45,501 --> 00:49:49,868
I tried to get them to see Confessions of a Shopaholic.
1226
00:49:49,868 --> 00:49:50,934
Nobody went for that.
1227
00:49:50,934 --> 00:49:52,234
Lars Rasmussen: She's still trying.
1228
00:49:52,234 --> 00:49:53,501
Hannon: Still trying.
1229
00:49:53,501 --> 00:49:55,000
So when you look at this wave,
1230
00:49:55,000 --> 00:49:57,067
it's sort of hard to parse out the important information
1231
00:49:57,067 --> 00:49:58,467
of who wants to go.
1232
00:49:58,467 --> 00:50:00,934
So somebody suggested we should all edit
1233
00:50:00,934 --> 00:50:02,934
the opening message instead of putting it
1234
00:50:02,934 --> 00:50:05,267
in individual messages.
1235
00:50:05,267 --> 00:50:06,567
And we cleaned up the wave.
1236
00:50:06,567 --> 00:50:12,000
Everyone started editing the opening message and so on.
1237
00:50:12,000 --> 00:50:16,100
This was a much better way to construct this RSVP list.
1238
00:50:16,100 --> 00:50:17,501
And we could still have discussions
1239
00:50:17,501 --> 00:50:20,634
about which car to take and so on.
1240
00:50:20,634 --> 00:50:22,234
Now, we're all engineers,
1241
00:50:22,234 --> 00:50:23,667
and you can look at this workflow
1242
00:50:23,667 --> 00:50:25,634
and think there are better ways
1243
00:50:25,634 --> 00:50:27,901
or there are ways to make this even better
1244
00:50:27,901 --> 00:50:29,567
using our extensions.
1245
00:50:29,567 --> 00:50:35,767
So another engineer on our team wrote a gadget.
1246
00:50:35,767 --> 00:50:39,601
We call this the "yes-no-maybe gadget."
1247
00:50:39,601 --> 00:50:41,334
Hey. [laughs]
1248
00:50:41,334 --> 00:50:44,734
[applause]
1249
00:50:44,734 --> 00:50:46,834
So if you--it's hard to see for you guys, I know.
1250
00:50:46,834 --> 00:50:48,834
But I'm currently in "No" in the middle column
1251
00:50:48,834 --> 00:50:51,767
and I'm to change it to "Maybe."
1252
00:50:51,767 --> 00:50:54,634
And you see it update on Lars' screen.
1253
00:50:54,634 --> 00:50:56,501
[applause]
1254
00:50:56,501 --> 00:50:57,734
Lars Rasmussen: And I'm currently
1255
00:50:57,734 --> 00:50:58,734
in the "Maybe" column.
1256
00:50:58,734 --> 00:50:59,868
And I click the "Yes" over here.
1257
00:50:59,868 --> 00:51:01,234
And you'll see it quickly updates
1258
00:51:01,234 --> 00:51:03,234
on both our screens.
1259
00:51:03,234 --> 00:51:04,667
Hannon: So you the gadget developer
1260
00:51:04,667 --> 00:51:07,267
only have to worry about two things.
1261
00:51:07,267 --> 00:51:08,834
When I click the button,
1262
00:51:08,834 --> 00:51:12,701
update the state of the gadget in XML and the wave,
1263
00:51:12,701 --> 00:51:15,367
then we automatically transmit through the server
1264
00:51:15,367 --> 00:51:18,100
to Lars' client where your gadget
1265
00:51:18,100 --> 00:51:23,200
has to update the UI to reflect the new state.
1266
00:51:23,200 --> 00:51:25,033
Now, of course we did all this--
1267
00:51:25,033 --> 00:51:27,267
ooh, it's a secret though--
1268
00:51:27,267 --> 00:51:29,133
I, um, uh, don't tell anyone,
1269
00:51:29,133 --> 00:51:30,534
but we did all this so we could build
1270
00:51:30,534 --> 00:51:32,701
impossibly fun, addictive games.
1271
00:51:32,701 --> 00:51:34,901
And we'll show you a few of those now.
1272
00:51:34,901 --> 00:51:37,968
Lars and I are going to open Sudoku.
1273
00:51:37,968 --> 00:51:40,567
Lars Rasmussen: Hmm. Hmm.
1274
00:51:40,567 --> 00:51:42,868
Hannon: And we intended for this to be a collaborative game
1275
00:51:42,868 --> 00:51:44,667
so we could solve the puzzle together,
1276
00:51:44,667 --> 00:51:46,734
but somehow it turned competitive.
1277
00:51:46,734 --> 00:51:47,901
[laughter]
1278
00:51:47,901 --> 00:51:51,033
And, uh, you get a point for making a good move
1279
00:51:51,033 --> 00:51:53,667
and a negative point for doing something wrong.
1280
00:51:53,667 --> 00:51:56,667
You can see Lars' score is going negative.
1281
00:51:56,667 --> 00:51:58,000
Lars Rasmussen: How can you play Sudoku
1282
00:51:58,000 --> 00:51:59,033
in front of 4,000 people?
1283
00:51:59,033 --> 00:52:00,133
Come on.
1284
00:52:00,133 --> 00:52:02,267
Hannon: Then, uh, back in 1851,
1285
00:52:02,267 --> 00:52:04,067
Lars and I played this chess game
1286
00:52:04,067 --> 00:52:05,734
that became very famous.
1287
00:52:05,734 --> 00:52:07,667
It ended in 23 moves.
1288
00:52:07,667 --> 00:52:11,501
And it illustrates how well Playback works with gadgets.
1289
00:52:11,501 --> 00:52:15,167
So if I go into playback and I click forward,
1290
00:52:15,167 --> 00:52:18,167
you can actually step through the whole game.
1291
00:52:18,167 --> 00:52:27,267
[applause]
1292
00:52:27,267 --> 00:52:28,968
So as we mentioned in the beginning,
1293
00:52:28,968 --> 00:52:30,167
we come from the Maps team.
1294
00:52:30,167 --> 00:52:32,100
So probably wouldn't be a good demo
1295
00:52:32,100 --> 00:52:34,767
if we didn't do a Maps gadget as well.
1296
00:52:34,767 --> 00:52:36,901
It's been a lot of work to prepare for this demo.
1297
00:52:36,901 --> 00:52:40,334
So I'm going to send Lars a wave about taking a vacation.
1298
00:52:40,334 --> 00:52:41,901
Lars Rasmussen: Stephanie's favorite topic.
1299
00:52:41,901 --> 00:52:43,801
She wants to go on vacation in Bora Bora.
1300
00:52:43,801 --> 00:52:46,000
She's asking me for recommendations.
1301
00:52:46,000 --> 00:52:48,033
I highlight the term Bora Bora here.
1302
00:52:48,033 --> 00:52:50,267
And then I click this button that's provided
1303
00:52:50,267 --> 00:52:52,801
by an extension that you guys could've written
1304
00:52:52,801 --> 00:52:56,734
that inserts a map to Bora Bora.
1305
00:52:56,734 --> 00:52:58,467
Thank you. [applause]
1306
00:52:58,467 --> 00:52:59,667
Hannon: Now, the important thing
1307
00:52:59,667 --> 00:53:01,567
is my hands are off of my computer,
1308
00:53:01,567 --> 00:53:03,300
but my screen is still on the right.
1309
00:53:03,300 --> 00:53:05,100
Lars Rasmussen: And now I click the satellite button
1310
00:53:05,100 --> 00:53:06,767
and it changes on both screens.
1311
00:53:06,767 --> 00:53:12,501
And I go zoom, zoom, zoom, zoom, zoom, zoom.
1312
00:53:12,501 --> 00:53:14,167
[applause]
1313
00:53:14,167 --> 00:53:17,234
[laughs] Thank you.
1314
00:53:17,234 --> 00:53:20,901
[applause]
1315
00:53:20,901 --> 00:53:24,601
And now, Stephanie loves swimming with sharks.
1316
00:53:24,601 --> 00:53:26,667
And I happen to know that the lemon sharks hang
1317
00:53:26,667 --> 00:53:28,200
over here.
1318
00:53:28,200 --> 00:53:31,567
And you can see that I put that marker on.
1319
00:53:31,567 --> 00:53:33,501
Shows up live over on Stephanie's screen.
1320
00:53:33,501 --> 00:53:34,667
Now my hands are off.
1321
00:53:34,667 --> 00:53:36,300
Hannon: And I'll pick up the polygon tool
1322
00:53:36,300 --> 00:53:39,033
and I'll tell Lars, actually, I want to stay in this area.
1323
00:53:39,033 --> 00:53:41,968
Lars Rasmussen: And you see that showing up on my screen too.
1324
00:53:41,968 --> 00:53:44,400
And so again, all you guys have to do with your gadgets
1325
00:53:44,400 --> 00:53:46,567
is to store updates to the state
1326
00:53:46,567 --> 00:53:48,300
in the local XML.
1327
00:53:48,300 --> 00:53:49,767
And then we transmit on the wire
1328
00:53:49,767 --> 00:53:51,701
and then the other instance of your gadget
1329
00:53:51,701 --> 00:53:54,434
just updates its state when it gets notified
1330
00:53:54,434 --> 00:53:57,334
of that change.
1331
00:53:57,334 --> 00:54:01,334
And so those are client-side, um, extensions.
1332
00:54:01,334 --> 00:54:02,767
I want to just show you, actually,
1333
00:54:02,767 --> 00:54:05,167
the team in blue over here is scrambled.
1334
00:54:05,167 --> 00:54:07,067
And they brought back up Linky.
1335
00:54:07,067 --> 00:54:08,934
And I wanted to show you what happened
1336
00:54:08,934 --> 00:54:13,501
when I dropped that YouTube URL into the old extension wave.
1337
00:54:13,501 --> 00:54:15,868
So you'll see that Linky didn't just recognize
1338
00:54:15,868 --> 00:54:17,067
it was a link,
1339
00:54:17,067 --> 00:54:19,534
but it recognized it was a link to a video.
1340
00:54:19,534 --> 00:54:21,868
It puts this little friendly light bulb
1341
00:54:21,868 --> 00:54:23,934
on my screen where I can open up
1342
00:54:23,934 --> 00:54:26,767
a set of suggestions for what I might want to do.
1343
00:54:26,767 --> 00:54:29,701
Like, for example, I might want to embed the video
1344
00:54:29,701 --> 00:54:32,367
right inside my wave
1345
00:54:32,367 --> 00:54:35,801
and play it for you guys.
1346
00:54:35,801 --> 00:54:38,100
[wobbling noise]
1347
00:54:38,100 --> 00:54:40,300
Dah nah. Pretty cool, huh?
1348
00:54:40,300 --> 00:54:46,501
[applause]
1349
00:54:46,501 --> 00:54:48,400
Thank you.
1350
00:54:48,400 --> 00:54:50,567
Okay. What's next?
1351
00:54:50,567 --> 00:54:52,667
So Stephanie showed you a bunch of gadgets.
1352
00:54:52,667 --> 00:54:55,234
They're all client-side extensions.
1353
00:54:55,234 --> 00:54:57,267
We want to show you next what you can do
1354
00:54:57,267 --> 00:54:59,434
on a server side with robots.
1355
00:54:59,434 --> 00:55:01,434
And we're going to show you three examples.
1356
00:55:01,434 --> 00:55:03,834
The first one is an application--
1357
00:55:03,834 --> 00:55:06,701
a collaborative application built entirely within Wave
1358
00:55:06,701 --> 00:55:09,367
with our extension API.
1359
00:55:09,367 --> 00:55:11,601
So let me just open up my inbox again.
1360
00:55:11,601 --> 00:55:13,534
And instead of clicking "new wave,"
1361
00:55:13,534 --> 00:55:15,601
I'm going to hit this drop-down button here.
1362
00:55:15,601 --> 00:55:16,934
And I'm going to hit this item
1363
00:55:16,934 --> 00:55:18,667
called a "new poll."
1364
00:55:18,667 --> 00:55:21,033
New poll is just a new wave,
1365
00:55:21,033 --> 00:55:24,501
but with a special robot that comes from an extension
1366
00:55:24,501 --> 00:55:28,901
that you guys could build called Polly the Pollster.
1367
00:55:28,901 --> 00:55:31,567
I'll add Steph to the wave as well.
1368
00:55:31,567 --> 00:55:35,067
Polly added a form to the wave.
1369
00:55:35,067 --> 00:55:37,334
Yes. And so this is not a gadget.
1370
00:55:37,334 --> 00:55:39,300
Forms are native to wave.
1371
00:55:39,300 --> 00:55:40,667
You can put them in there.
1372
00:55:40,667 --> 00:55:42,667
And now I can fill out the form
1373
00:55:42,667 --> 00:55:44,634
starting with the title of the poll
1374
00:55:44,634 --> 00:55:46,267
that I want to conduct.
1375
00:55:46,267 --> 00:55:49,634
And you'll see as I'm typing in the form,
1376
00:55:49,634 --> 00:55:51,300
Polly sits on the server side.
1377
00:55:51,300 --> 00:55:52,934
She saw that letter by letter,
1378
00:55:52,934 --> 00:55:56,400
and she updated the title of the wave.
1379
00:55:56,400 --> 00:55:58,868
Now the really cool thing about having forms in waves
1380
00:55:58,868 --> 00:56:01,167
is that you can fill them out collaboratively.
1381
00:56:01,167 --> 00:56:03,601
So Stephanie's going to fill in the choices
1382
00:56:03,601 --> 00:56:05,934
while I add the question here.
1383
00:56:05,934 --> 00:56:10,434
"Which movie is the best ever?"
1384
00:56:10,434 --> 00:56:13,167
And you see that Stephanie's filling in the options
1385
00:56:13,167 --> 00:56:15,234
in the field below.
1386
00:56:15,234 --> 00:56:17,834
Hannon: Star Wars.
1387
00:56:17,834 --> 00:56:21,167
Lars Rasmussen: Star Wave. [laughs]
1388
00:56:21,167 --> 00:56:24,000
Hannon: Not on purpose. [laughs]
1389
00:56:24,000 --> 00:56:25,534
Lars Rasmussen: Confessions of a Shopaholic.
1390
00:56:25,534 --> 00:56:28,200
So now Stephanie's going to fill out a number of people
1391
00:56:28,200 --> 00:56:30,167
that we're going to send the poll to
1392
00:56:30,167 --> 00:56:36,000
in the recipient list there.
1393
00:56:36,000 --> 00:56:37,000
She's putting in--
1394
00:56:37,000 --> 00:56:38,100
Hannon: Done.
1395
00:56:38,100 --> 00:56:39,634
Lars Rasmussen: Putting in six of them.
1396
00:56:39,634 --> 00:56:42,100
Now I'll hit the button here that says "distribute poll."
1397
00:56:42,100 --> 00:56:43,834
Now, what happens is that Polly sees
1398
00:56:43,834 --> 00:56:45,234
that I hit that button.
1399
00:56:45,234 --> 00:56:48,000
She fills in a results section
1400
00:56:48,000 --> 00:56:50,000
in that same wave here.
1401
00:56:50,000 --> 00:56:52,334
And then she sends out fresh waves
1402
00:56:52,334 --> 00:56:54,400
with the questions we specified
1403
00:56:54,400 --> 00:56:56,200
to all the recipients we specified.
1404
00:56:56,200 --> 00:56:58,300
And Stephanie's one of them.
1405
00:56:58,300 --> 00:56:59,534
Hannon: So I'm going to answer the poll
1406
00:56:59,534 --> 00:57:01,400
that Star Trek's my favorite.
1407
00:57:01,400 --> 00:57:03,968
Lars Rasmussen: And you'll see that Polly updates the results
1408
00:57:03,968 --> 00:57:07,434
live in the admin wave.
1409
00:57:07,434 --> 00:57:09,767
With a bit of luck-- thank you.
1410
00:57:09,767 --> 00:57:15,100
[applause]
1411
00:57:15,100 --> 00:57:17,601
Okay. So that's the-- an example of an extension
1412
00:57:17,601 --> 00:57:21,767
built exclusively inside of Wave.
1413
00:57:21,767 --> 00:57:24,334
The next type of extension we want to demonstrate for you
1414
00:57:24,334 --> 00:57:27,534
are extensions that integrate Wave
1415
00:57:27,534 --> 00:57:29,234
with existent communication systems.
1416
00:57:29,234 --> 00:57:31,734
In this case, we'll show you with everyone's favorite
1417
00:57:31,734 --> 00:57:35,601
microblogging service, Twitter.
1418
00:57:35,601 --> 00:57:37,434
Hannon: So at this point, you're probably wondering
1419
00:57:37,434 --> 00:57:39,334
how to install these extensions.
1420
00:57:39,334 --> 00:57:41,334
So let me open a wave.
1421
00:57:41,334 --> 00:57:42,934
And you probably won't be surprised to hear
1422
00:57:42,934 --> 00:57:45,501
that extensions can live inside a wave.
1423
00:57:45,501 --> 00:57:47,133
Here's their--a bunch of puzzle pieces
1424
00:57:47,133 --> 00:57:51,100
showing some of the things we're using today.
1425
00:57:51,100 --> 00:57:53,501
All I have to do if I want to use one of these inst--
1426
00:57:53,501 --> 00:57:55,400
extensious--is--
1427
00:57:55,400 --> 00:57:59,200
Sorry. Click the "install" button.
1428
00:57:59,200 --> 00:58:02,868
And you can see over here, there's a new drop-down menu.
1429
00:58:02,868 --> 00:58:05,300
And I have the option to create a new twave.
1430
00:58:05,300 --> 00:58:07,367
Lars Rasmussen: A wave, of course--twave, of course,
1431
00:58:07,367 --> 00:58:10,234
is a wave of tweets.
1432
00:58:10,234 --> 00:58:11,968
Hannon: You can describe as a developer
1433
00:58:11,968 --> 00:58:14,067
how your extensions hook into Wave.
1434
00:58:14,067 --> 00:58:15,801
It could be a keyboard shortcut,
1435
00:58:15,801 --> 00:58:17,300
a button on the tool bar.
1436
00:58:17,300 --> 00:58:19,567
It could be something like a new twave button.
1437
00:58:19,567 --> 00:58:20,934
There'll be a confirmation page
1438
00:58:20,934 --> 00:58:23,000
that tells the users how you're going to interact.
1439
00:58:23,000 --> 00:58:26,067
We haven't quite implemented that yet.
1440
00:58:26,067 --> 00:58:28,100
So let me log in here.
1441
00:58:28,100 --> 00:58:30,767
I have to tell you that Lars created my Twitter account.
1442
00:58:30,767 --> 00:58:32,734
Lars Rasmussen: I made her Twiffanie.
1443
00:58:32,734 --> 00:58:35,334
She hates that.
1444
00:58:35,334 --> 00:58:36,934
Hannon: [laughs]
1445
00:58:36,934 --> 00:58:40,033
Lars Rasmussen: She's Twiffanie at Twitter.
1446
00:58:40,033 --> 00:58:42,801
Hannon: I think that tab button should be implemented, you guys.
1447
00:58:42,801 --> 00:58:44,734
[laughs]
1448
00:58:44,734 --> 00:58:48,067
I feel like all sorts of bad stuff is about to happen.
1449
00:58:48,067 --> 00:58:50,767
[laughs]
1450
00:58:50,767 --> 00:58:57,234
All right, so I'll sign in to Twitter.
1451
00:58:57,234 --> 00:58:58,734
And you can see tweets
1452
00:58:58,734 --> 00:59:01,601
from all the famous people I follow.
1453
00:59:01,601 --> 00:59:03,868
And down here at the bottom, Lars.
1454
00:59:03,868 --> 00:59:05,701
Lars Rasmussen: No.
1455
00:59:05,701 --> 00:59:06,968
Hannon: I'm just going to close it.
1456
00:59:06,968 --> 00:59:10,968
We still haven't, uh, uh...
1457
00:59:10,968 --> 00:59:13,100
I wanted to get the contacts out.
1458
00:59:13,100 --> 00:59:17,067
Um, it's important you can see that each of these avatars,
1459
00:59:17,067 --> 00:59:19,601
they're not necessarily Wave users.
1460
00:59:19,601 --> 00:59:22,434
Through our APIs, you can be a proxy
1461
00:59:22,434 --> 00:59:24,701
for contacts on a different system.
1462
00:59:24,701 --> 00:59:27,067
So I have Lance Armstrong, Ryan Seacrest,
1463
00:59:27,067 --> 00:59:28,834
lots of different people.
1464
00:59:28,834 --> 00:59:32,968
If I go down here and I look for Lars' tweet,
1465
00:59:32,968 --> 00:59:34,200
I can respond to it.
1466
00:59:34,200 --> 00:59:37,734
He says, "The demo's going pretty well."
1467
00:59:37,734 --> 00:59:41,834
And I'll say, "It ain't over yet."
1468
00:59:41,834 --> 00:59:42,934
[laughs]
1469
00:59:42,934 --> 00:59:44,300
Lars Rasmussen: And now I've logged in
1470
00:59:44,300 --> 00:59:46,634
to Twiffanie at Twitter over here.
1471
00:59:46,634 --> 00:59:48,501
And if I refresh the page,
1472
00:59:48,501 --> 00:59:52,300
you'll see that the extension took Stephanie's wave reply
1473
00:59:52,300 --> 00:59:55,000
and tweeted it.
1474
00:59:55,000 --> 00:59:56,334
Thank you.
1475
00:59:56,334 --> 00:59:59,067
[applause]
1476
00:59:59,067 --> 01:00:01,067
Hannon: Now Tweety also lets you search
1477
01:00:01,067 --> 01:00:03,267
over the public timeline of Twitter.
1478
01:00:03,267 --> 01:00:06,701
For example, for a phrase like "Google Wave."
1479
01:00:06,701 --> 01:00:09,801
So I'm going to start a new twave.
1480
01:00:09,801 --> 01:00:11,801
Lars Rasmussen: You're going to search for Google Wave now?
1481
01:00:11,801 --> 01:00:12,801
Hannon: Gonna do it.
1482
01:00:12,801 --> 01:00:14,033
Lars Rasmussen: How brave it that?
1483
01:00:14,033 --> 01:00:17,133
Hannon: [laughs] I'm not afraid.
1484
01:00:17,133 --> 01:00:21,667
So try again.
1485
01:00:21,667 --> 01:00:24,801
I'm going to log in.
1486
01:00:24,801 --> 01:00:28,200
And then I'm going to type Google Wave.
1487
01:00:28,200 --> 01:00:31,267
So we did this yesterday and there are only two tweets.
1488
01:00:31,267 --> 01:00:33,300
One of them was a woman interviewing at a company
1489
01:00:33,300 --> 01:00:36,801
called Wave so she said, "I should google Wave
1490
01:00:36,801 --> 01:00:39,200
before my interview."
1491
01:00:39,200 --> 01:00:46,701
So now let's sign in. See what happens.
1492
01:00:46,701 --> 01:00:49,234
Lars Rasmussen: * Doo doo * Hannon: A lot more than two.
1493
01:00:49,234 --> 01:00:51,901
Lars Rasmussen: Oh! [laughs]
1494
01:00:51,901 --> 01:00:53,334
Hannon: And we can go down to the bottom
1495
01:00:53,334 --> 01:00:54,801
and see tweets still coming in.
1496
01:00:54,801 --> 01:00:57,234
Lars Rasmussen: Oh, my God, you guys, thank you.
1497
01:00:57,234 --> 01:00:59,567
[laughs] Wow. Thank you.
1498
01:00:59,567 --> 01:01:07,133
[applause]
1499
01:01:07,133 --> 01:01:09,901
Hannon: So that was a example of an integration
1500
01:01:09,901 --> 01:01:12,934
between Wave and another communication system.
1501
01:01:12,934 --> 01:01:15,000
Lars Rasmussen: I'll just add to the search functionality
1502
01:01:15,000 --> 01:01:17,901
here, actually, that you can-- you can have Tweety
1503
01:01:17,901 --> 01:01:19,701
continuously search over in Twitter
1504
01:01:19,701 --> 01:01:21,467
and update the wave as they come.
1505
01:01:21,467 --> 01:01:23,567
So you can use them like "twit alerts"
1506
01:01:23,567 --> 01:01:24,901
for whatever you're interested in.
1507
01:01:24,901 --> 01:01:31,334
It'll just pop into your inbox.
1508
01:01:31,334 --> 01:01:33,133
Buggy. Hannon: Buggy.
1509
01:01:33,133 --> 01:01:34,200
We were reading the tweets.
1510
01:01:34,200 --> 01:01:35,534
Lars Rasmussen: We were reading the tw--
1511
01:01:35,534 --> 01:01:36,567
Hannon: Totally threw us off.
1512
01:01:36,567 --> 01:01:38,601
[laughs]
1513
01:01:38,601 --> 01:01:40,667
Lars Rasmussen: Okay, the last example
1514
01:01:40,667 --> 01:01:42,767
of a robot extension we want to show
1515
01:01:42,767 --> 01:01:45,634
is an example of how you can use Wave extension APIs
1516
01:01:45,634 --> 01:01:49,000
to integrate Wave within existent workflows.
1517
01:01:49,000 --> 01:01:50,534
You guys are programmers like us.
1518
01:01:50,534 --> 01:01:53,367
You probably deal with filing bugs.
1519
01:01:53,367 --> 01:01:54,834
I want to show you an integration
1520
01:01:54,834 --> 01:01:57,734
between Wave and the issue tracker--
1521
01:01:57,734 --> 01:02:00,667
the bugs database over on code.google.com.
1522
01:02:00,667 --> 01:02:03,934
But this could be any issue tracker Bugzilla could host,
1523
01:02:03,934 --> 01:02:05,667
whichever is your favorite.
1524
01:02:05,667 --> 01:02:08,834
So I'll just conjure up a canned message here.
1525
01:02:08,834 --> 01:02:09,901
And I'll tell you a little bit
1526
01:02:09,901 --> 01:02:12,067
about how we do bugs on my team.
1527
01:02:12,067 --> 01:02:13,534
So a programmer has built some code.
1528
01:02:13,534 --> 01:02:14,834
They send it for code review.
1529
01:02:14,834 --> 01:02:17,667
They also send a demo to the PMs and the UI people
1530
01:02:17,667 --> 01:02:19,000
and Jens and I.
1531
01:02:19,000 --> 01:02:20,767
And then we sit in the room and we test it.
1532
01:02:20,767 --> 01:02:22,367
And you can't read the text here.
1533
01:02:22,367 --> 01:02:23,701
But there's a bunch of bullet points
1534
01:02:23,701 --> 01:02:25,367
with observations we made.
1535
01:02:25,367 --> 01:02:27,868
We, of course, edited this collaboratively.
1536
01:02:27,868 --> 01:02:29,200
Some of them are bugs.
1537
01:02:29,200 --> 01:02:31,400
Some of them are observations for discussion later.
1538
01:02:31,400 --> 01:02:33,267
Some of them are notes for the UI designers.
1539
01:02:33,267 --> 01:02:36,434
And, of course, we should now go and file bugs.
1540
01:02:36,434 --> 01:02:38,567
Um, but instead of doing that manually,
1541
01:02:38,567 --> 01:02:42,234
we run an extension that lets me just select a bullet point,
1542
01:02:42,234 --> 01:02:43,767
click this button here,
1543
01:02:43,767 --> 01:02:47,300
and now a robot enters the fray called Buggy,
1544
01:02:47,300 --> 01:02:50,868
takes that text, and files it as a bug for me.
1545
01:02:50,868 --> 01:02:52,067
[applause] Thank you.
1546
01:02:52,067 --> 01:02:54,601
Hannon: Hey, Lars, why don't you add me?
1547
01:02:54,601 --> 01:02:56,100
Lars Rasmussen: Yes. Excellent.
1548
01:02:56,100 --> 01:02:57,767
And I'll add Steph to the wave.
1549
01:02:57,767 --> 01:03:00,200
The bug--the, uh--the--the-- sorry, the robot
1550
01:03:00,200 --> 01:03:03,534
also grabs a little summary from issue tracker
1551
01:03:03,534 --> 01:03:05,567
and puts it right inside the wave.
1552
01:03:05,567 --> 01:03:06,901
There's a link there to the bug
1553
01:03:06,901 --> 01:03:09,267
will Stephani--which Stephanie will now click
1554
01:03:09,267 --> 01:03:15,667
so that you can see the bug sitting over on issue tracker.
1555
01:03:15,667 --> 01:03:17,334
Hannon: All right, so I'm going to open this bug,
1556
01:03:17,334 --> 01:03:19,267
number 11.
1557
01:03:19,267 --> 01:03:20,634
Lars Rasmussen: And while she does that,
1558
01:03:20,634 --> 01:03:21,968
I'll file a bunch more.
1559
01:03:21,968 --> 01:03:23,334
You can see how easy it is.
1560
01:03:23,334 --> 01:03:26,767
And I just triple click here. There's another one.
1561
01:03:26,767 --> 01:03:28,934
And I'll file that bug too.
1562
01:03:28,934 --> 01:03:30,701
Okay. And so now, we might send this wave--
1563
01:03:30,701 --> 01:03:33,667
we might share this wave with our bug triage team.
1564
01:03:33,667 --> 01:03:35,367
I'll just do that myself.
1565
01:03:35,367 --> 01:03:38,133
All I have to do is change the assignee here.
1566
01:03:38,133 --> 01:03:41,934
I'll give this to Stephanie. I'll take this myself.
1567
01:03:41,934 --> 01:03:44,100
And then this one goes to Lars.
1568
01:03:44,100 --> 01:03:45,300
Ooh, I'm sorry. Was that Greg?
1569
01:03:45,300 --> 01:03:46,667
Like this.
1570
01:03:46,667 --> 01:03:48,968
And now you'll see-- Stephanie will refresh the bug
1571
01:03:48,968 --> 01:03:52,300
and you'll see the robot change the assignee over
1572
01:03:52,300 --> 01:03:53,701
in the issue tracker.
1573
01:03:53,701 --> 01:03:56,200
Hannon: On the left-hand panel where it says "owner."
1574
01:03:56,200 --> 01:03:57,801
Lars Rasmussen: And also, most issue trackers
1575
01:03:57,801 --> 01:04:00,067
or bug databases lets you debate bugs--
1576
01:04:00,067 --> 01:04:03,400
endlessly if I recall-- inside the database.
1577
01:04:03,400 --> 01:04:04,667
Which is normally not the strength
1578
01:04:04,667 --> 01:04:05,667
of the database.
1579
01:04:05,667 --> 01:04:07,267
But it is the strength of Wave.
1580
01:04:07,267 --> 01:04:10,200
And so instead of debating them over on issue tracker,
1581
01:04:10,200 --> 01:04:13,100
you can debate the bug from inside Wave.
1582
01:04:13,100 --> 01:04:15,667
I'll just use the inline reply tool here.
1583
01:04:15,667 --> 01:04:16,667
And I'll say,
1584
01:04:16,667 --> 01:04:21,834
"That is so not my fault!"
1585
01:04:21,834 --> 01:04:25,234
Hannon: And I'll refresh. You can see the update there.
1586
01:04:25,234 --> 01:04:30,534
[applause]
1587
01:04:30,534 --> 01:04:31,968
Lars Rasmussen: And so now we can continue
1588
01:04:31,968 --> 01:04:33,801
the endless debate inside of Wave,
1589
01:04:33,801 --> 01:04:35,133
which would be much more efficient.
1590
01:04:35,133 --> 01:04:36,367
We could also build--
1591
01:04:36,367 --> 01:04:38,234
We haven't done this in the sample here--
1592
01:04:38,234 --> 01:04:40,234
that if someone wanted to go make a comment
1593
01:04:40,234 --> 01:04:41,501
over on issue tracker,
1594
01:04:41,501 --> 01:04:45,100
the robot would see that and update the wave as well.
1595
01:04:45,100 --> 01:04:47,334
And just like we did a search through Twitter
1596
01:04:47,334 --> 01:04:49,100
into a-a wave,
1597
01:04:49,100 --> 01:04:51,767
we could also have the robot start a new wave of bugs
1598
01:04:51,767 --> 01:04:53,667
and just pull in all of the bugs assigned to you
1599
01:04:53,667 --> 01:04:56,434
so that you could track them from within a wave.
1600
01:04:56,434 --> 01:04:59,801
It's remarkable--thank you-- how much more effective
1601
01:04:59,801 --> 01:05:02,667
this sort of thing makes you.
1602
01:05:02,667 --> 01:05:04,767
Okay. That's extensions for you.
1603
01:05:04,767 --> 01:05:06,033
You guys feeling--
1604
01:05:06,033 --> 01:05:07,767
Hannon: And I think that's two of our Ps.
1605
01:05:07,767 --> 01:05:08,901
Lars Rasmussen: Those are two Ps.
1606
01:05:08,901 --> 01:05:10,701
Are you guys feeling inspired yet?
1607
01:05:10,701 --> 01:05:13,501
Good. Yeah. Thank you. [applause]
1608
01:05:13,501 --> 01:05:17,334
Thank you.
1609
01:05:17,334 --> 01:05:19,667
Okay, let's talk a little bit about the protocols
1610
01:05:19,667 --> 01:05:22,734
and algorithms, um, underlying Wave.
1611
01:05:22,734 --> 01:05:24,834
So we want Wave, as Stephanie said in the beginning,
1612
01:05:24,834 --> 01:05:26,234
to be an open system.
1613
01:05:26,234 --> 01:05:28,334
Obviously, it's an enormous reason
1614
01:05:28,334 --> 01:05:31,334
behind the success of email that it's an open protocol.
1615
01:05:31,334 --> 01:05:33,467
Anyone can build an email system.
1616
01:05:33,467 --> 01:05:34,901
Anyone can email with each other
1617
01:05:34,901 --> 01:05:37,367
regardless of where they got their accounts from.
1618
01:05:37,367 --> 01:05:41,634
We want Wave to work the same way.
1619
01:05:41,634 --> 01:05:44,100
And so we've designed the algorithms--
1620
01:05:44,100 --> 01:05:47,767
we've designed the protocol to, um, uh, to support
1621
01:05:47,767 --> 01:05:49,000
what we call "federation."
1622
01:05:49,000 --> 01:05:50,968
Which means that any organization
1623
01:05:50,968 --> 01:05:53,367
could build their own Wave system,
1624
01:05:53,367 --> 01:05:56,434
give accounts to their users even in competition with Google,
1625
01:05:56,434 --> 01:05:58,200
and then the system will still ensure
1626
01:05:58,200 --> 01:06:00,767
that we can share waves with each other
1627
01:06:00,767 --> 01:06:02,701
across these boundaries.
1628
01:06:02,701 --> 01:06:05,033
And we want to-- we want to first show you
1629
01:06:05,033 --> 01:06:06,701
how that's going to look.
1630
01:06:06,701 --> 01:06:07,868
And then we'll talk a little bit
1631
01:06:07,868 --> 01:06:10,400
about how far along we are with that.
1632
01:06:10,400 --> 01:06:13,567
So let me--so this is very much work in progress.
1633
01:06:13,567 --> 01:06:16,033
Everything we've shown you is work in progress.
1634
01:06:16,033 --> 01:06:19,400
I'm going to sign in to, um, a different version
1635
01:06:19,400 --> 01:06:23,667
of the system that sits inside our corporate network
1636
01:06:23,667 --> 01:06:26,934
that has an open port on it for this sort of federation.
1637
01:06:26,934 --> 01:06:30,534
And we're going to imagine two separate wave systems.
1638
01:06:30,534 --> 01:06:31,968
One is the one Google has built
1639
01:06:31,968 --> 01:06:34,000
that you've been looking at all morning.
1640
01:06:34,000 --> 01:06:37,167
The other one is from Acme Wave,
1641
01:06:37,167 --> 01:06:39,200
which you'll see over on Stephanie's screen.
1642
01:06:39,200 --> 01:06:40,701
They have built a separate system.
1643
01:06:40,701 --> 01:06:42,100
They're actually giving out accounts
1644
01:06:42,100 --> 01:06:43,868
in competition with Google.
1645
01:06:43,868 --> 01:06:47,133
You'll realize that their client looks very similar to ours.
1646
01:06:47,133 --> 01:06:49,434
That's because we're intending to open source
1647
01:06:49,434 --> 01:06:53,934
the lion's share of the code that we used to build our system
1648
01:06:53,934 --> 01:06:56,834
so that organizations can get started quickly.
1649
01:06:56,834 --> 01:06:59,133
And that's how Acme Wave built their system.
1650
01:06:59,133 --> 01:07:03,067
So I'll start a wave over on my account here.
1651
01:07:03,067 --> 01:07:05,701
And I will say "Project.
1652
01:07:05,701 --> 01:07:11,200
You want to work with me on that thing?"
1653
01:07:11,200 --> 01:07:13,767
And then I will add-- what's your account
1654
01:07:13,767 --> 01:07:15,067
over on Acme Wave?
1655
01:07:15,067 --> 01:07:18,334
Hannon: It's Stephanie. Lars Rasmussen: Stephanie.
1656
01:07:18,334 --> 01:07:19,734
Stephanie on Acme Wave.
1657
01:07:19,734 --> 01:07:21,367
So Stephanie momentarily has her account--
1658
01:07:21,367 --> 01:07:23,467
Hannon: Actually, it's Steph. Lars Rasmussen: There we go.
1659
01:07:23,467 --> 01:07:24,467
Hannon: Sorry.
1660
01:07:24,467 --> 01:07:25,801
Lars Rasmussen: Stephanie is now a user
1661
01:07:25,801 --> 01:07:26,868
over on Acme Wave.
1662
01:07:26,868 --> 01:07:30,100
And I'm going to add her to the wave.
1663
01:07:30,100 --> 01:07:32,100
Hannon: So I'm going to open up the wave.
1664
01:07:32,100 --> 01:07:34,300
And he says, "You want to work with me on that thing?"
1665
01:07:34,300 --> 01:07:40,100
And I said, "I think the guys over at Initech can help too."
1666
01:07:40,100 --> 01:07:43,634
Lars Rasmussen: [laughs] And so...
1667
01:07:43,634 --> 01:07:45,601
And so even though Steph and I have accounts
1668
01:07:45,601 --> 01:07:46,834
on different wave systems,
1669
01:07:46,834 --> 01:07:48,801
you still get that live
1670
01:07:48,801 --> 01:07:50,801
character by character interaction.
1671
01:07:50,801 --> 01:07:52,868
The way it works is that from our two clients,
1672
01:07:52,868 --> 01:07:54,501
these fine-grained operations
1673
01:07:54,501 --> 01:07:56,868
travel to our respective servers,
1674
01:07:56,868 --> 01:08:00,133
then it crosses over and goes back up to our client.
1675
01:08:00,133 --> 01:08:02,400
And all of the liveness and concurrency control
1676
01:08:02,400 --> 01:08:05,467
and live--um, sorry, and real-time resolution
1677
01:08:05,467 --> 01:08:07,400
of conflicts happen in an algorithm
1678
01:08:07,400 --> 01:08:09,701
that supports this sort of federation.
1679
01:08:09,701 --> 01:08:12,901
Let's bring a third wave system into the system.
1680
01:08:12,901 --> 01:08:15,033
So we have a couple of friends, Peter and Milton,
1681
01:08:15,033 --> 01:08:17,067
that work for a company called Initech.
1682
01:08:17,067 --> 01:08:19,567
They have chosen to run their own wave server
1683
01:08:19,567 --> 01:08:21,400
in their server closet.
1684
01:08:21,400 --> 01:08:23,000
These guys didn't take our code.
1685
01:08:23,000 --> 01:08:26,667
Milton is the kind of engineer who prefers building stuff
1686
01:08:26,667 --> 01:08:29,334
from scratch.
1687
01:08:29,334 --> 01:08:31,667
Hannon: I'm not sure I want to show this, Lars.
1688
01:08:31,667 --> 01:08:33,734
Lars Rasmussen: Oh, come on. You show it.
1689
01:08:33,734 --> 01:08:35,801
I'm going to add Peter and I'm going to add Milton.
1690
01:08:35,801 --> 01:08:37,200
Why don't you want me to show it?
1691
01:08:37,200 --> 01:08:39,367
Hannon: I'm afraid this crowd might like their UI
1692
01:08:39,367 --> 01:08:41,934
better than ours and it would break my heart.
1693
01:08:41,934 --> 01:08:44,701
Lars Rasmussen: Don't break her heart.
1694
01:08:44,701 --> 01:08:51,334
[cheers and applause]
1695
01:08:51,334 --> 01:08:56,467
Do you have the wave? Do you have the wave?
1696
01:08:56,467 --> 01:08:58,133
Hannon: No, 'cause-- Lars Rasmussen: Hmm?
1697
01:08:58,133 --> 01:09:01,534
Hannon: Just make another edit.
1698
01:09:01,534 --> 01:09:03,868
So now I have the wave.
1699
01:09:03,868 --> 01:09:08,701
Lars Rasmussen: So she opens-- Hannon: And if I go into it...
1700
01:09:08,701 --> 01:09:12,567
[cheers and applause]
1701
01:09:12,567 --> 01:09:15,801
Lars Rasmussen: Thank you.
1702
01:09:15,801 --> 01:09:17,901
Hannon: Now I want to show you an important principle
1703
01:09:17,901 --> 01:09:21,267
of--an important feature of the protocol.
1704
01:09:21,267 --> 01:09:23,000
So I go back to Acme Wave
1705
01:09:23,000 --> 01:09:24,734
and I'm going to make a private reply
1706
01:09:24,734 --> 01:09:26,834
just like you saw earlier in the demo.
1707
01:09:26,834 --> 01:09:29,634
But I'm going to add everyone except Lars.
1708
01:09:29,634 --> 01:09:35,300
So I'll say, "What do you think of that Google guy?"
1709
01:09:35,300 --> 01:09:40,434
So I'll add all of my friends Peter and Milton.
1710
01:09:40,434 --> 01:09:43,467
Even though this wave is owned at Google
1711
01:09:43,467 --> 01:09:46,901
and there's copies on Acme Wave and Initech servers,
1712
01:09:46,901 --> 01:09:50,567
this private reply is never seen by Google
1713
01:09:50,567 --> 01:09:53,734
and cannot be discovered by Lars in any way.
1714
01:09:53,734 --> 01:09:56,467
In fact, if Peter and Milton made a private reply
1715
01:09:56,467 --> 01:09:58,300
between themselves,
1716
01:09:58,300 --> 01:10:01,634
that wave would never leave their server closet.
1717
01:10:01,634 --> 01:10:06,701
[applause]
1718
01:10:06,701 --> 01:10:07,968
Lars Rasmussen: Thank you.
1719
01:10:07,968 --> 01:10:09,567
Hannon: And I just want to go back over to Milton
1720
01:10:09,567 --> 01:10:10,901
for a second.
1721
01:10:10,901 --> 01:10:13,400
You can see the private reply came in there as well.
1722
01:10:13,400 --> 01:10:15,434
Lars Rasmussen: Okay, so let me just say this,
1723
01:10:15,434 --> 01:10:17,901
um, federation...
1724
01:10:17,901 --> 01:10:19,000
that was hard.
1725
01:10:19,000 --> 01:10:20,334
So we're building this thing
1726
01:10:20,334 --> 01:10:22,100
with live concurrent editing, and chatting,
1727
01:10:22,100 --> 01:10:23,834
and instant messaging, and email, and pictures,
1728
01:10:23,834 --> 01:10:25,000
and all that stuff.
1729
01:10:25,000 --> 01:10:27,300
And then we throw federation into the mix,
1730
01:10:27,300 --> 01:10:30,067
which vastly complicates things.
1731
01:10:30,067 --> 01:10:31,667
It would be so much easier, frankly,
1732
01:10:31,667 --> 01:10:33,000
from an engineering point of view.
1733
01:10:33,000 --> 01:10:35,033
If we could just keep this proprietary,
1734
01:10:35,033 --> 01:10:36,467
then we'd control all the servers,
1735
01:10:36,467 --> 01:10:38,133
we'd control all the update schedules,
1736
01:10:38,133 --> 01:10:39,534
and so on.
1737
01:10:39,534 --> 01:10:42,267
But we think it's worth the effort--
1738
01:10:42,267 --> 01:10:44,467
and we hope you guys will help us with this.
1739
01:10:44,467 --> 01:10:46,200
We think the world will be a much better place
1740
01:10:46,200 --> 01:10:48,734
if this is an open system that everyone can build
1741
01:10:48,734 --> 01:10:50,534
wave services with it.
1742
01:10:50,534 --> 01:10:52,033
And so--thank you.
1743
01:10:52,033 --> 01:10:53,834
[applause]
1744
01:10:53,834 --> 01:10:55,901
Thank you.
1745
01:10:55,901 --> 01:10:59,567
[applause]
1746
01:10:59,567 --> 01:11:01,934
And so let me tell you, um, where we're at with it.
1747
01:11:01,934 --> 01:11:03,868
So later today, there's a web site--
1748
01:11:03,868 --> 01:11:06,467
I'll show you the URL later-- that's going to launch,
1749
01:11:06,467 --> 01:11:08,934
which will have-- it's a very early draft
1750
01:11:08,934 --> 01:11:10,133
of this protocol.
1751
01:11:10,133 --> 01:11:12,267
It'll have, I think, four whitepapers
1752
01:11:12,267 --> 01:11:15,167
describing how the system works.
1753
01:11:15,167 --> 01:11:16,334
It's going to have, of course,
1754
01:11:16,334 --> 01:11:17,767
a public discussion forum
1755
01:11:17,767 --> 01:11:21,100
so that we can start debating how this hopefully bright future
1756
01:11:21,100 --> 01:11:23,300
of Wave will look.
1757
01:11:23,300 --> 01:11:25,467
And then like I said, later,
1758
01:11:25,467 --> 01:11:28,567
we're going to open source the lion's share of our code,
1759
01:11:28,567 --> 01:11:31,467
which will serve both as a reference implementation
1760
01:11:31,467 --> 01:11:32,701
of the protocol,
1761
01:11:32,701 --> 01:11:34,701
but also essentially a production ready system
1762
01:11:34,701 --> 01:11:36,601
like you saw Acme Wave do.
1763
01:11:36,601 --> 01:11:38,767
I'm obviously vastly simplifying it here.
1764
01:11:38,767 --> 01:11:41,000
But essentially, you could take that code,
1765
01:11:41,000 --> 01:11:42,868
you could put it on top of your own database,
1766
01:11:42,868 --> 01:11:44,968
and you would have a simple wave server
1767
01:11:44,968 --> 01:11:47,501
and you would be up and running.
1768
01:11:47,501 --> 01:11:53,000
Okay. So that's federation.
1769
01:11:53,000 --> 01:11:54,234
[laughs]
1770
01:11:54,234 --> 01:11:55,667
Hannon: I'm excited about our next demo.
1771
01:11:55,667 --> 01:11:58,133
Lars Rasmussen: The next demo is very, very nice.
1772
01:11:58,133 --> 01:12:02,534
This is something, um, to end off our demo with.
1773
01:12:02,534 --> 01:12:04,501
It's something, uh, a friend of ours
1774
01:12:04,501 --> 01:12:06,767
on the Google research team has been building
1775
01:12:06,767 --> 01:12:08,133
over the past month.
1776
01:12:08,133 --> 01:12:11,334
I saw it myself the first time just a few days ago.
1777
01:12:11,334 --> 01:12:12,801
Um, and it blew me away.
1778
01:12:12,801 --> 01:12:14,567
So, um, let's see.
1779
01:12:14,567 --> 01:12:16,901
I'm going to make sure I'm on the right system here.
1780
01:12:16,901 --> 01:12:18,167
I'm back on the sandbox.
1781
01:12:18,167 --> 01:12:19,634
So again, we've been doing this demo
1782
01:12:19,634 --> 01:12:22,734
on a system where we'll get you guys accounts.
1783
01:12:22,734 --> 01:12:26,267
Now, Stephanie is going to log into, um, an account
1784
01:12:26,267 --> 01:12:28,934
of one of our colleagues, Alexi.
1785
01:12:28,934 --> 01:12:30,200
And then I'm going to start a new wave.
1786
01:12:30,200 --> 01:12:31,868
I want to make sure you guys can see
1787
01:12:31,868 --> 01:12:33,868
what we're typing.
1788
01:12:33,868 --> 01:12:36,868
I'm making this a little bigger like this.
1789
01:12:36,868 --> 01:12:38,834
Do you make your font bigger there, Steph?
1790
01:12:38,834 --> 01:12:40,000
Hannon: Yeah, I was going to wait
1791
01:12:40,000 --> 01:12:42,501
till you started the wave.
1792
01:12:42,501 --> 01:12:44,267
Lars Rasmussen: And then I'll start a new wave here.
1793
01:12:44,267 --> 01:12:47,901
And I'll add Alexi, one of our colleagues.
1794
01:12:47,901 --> 01:12:51,400
And then I'll add my all-time favorite robot
1795
01:12:51,400 --> 01:12:54,667
called Rosy.
1796
01:12:54,667 --> 01:12:55,734
Yes.
1797
01:12:55,734 --> 01:12:58,434
So, um, Alexi is from France.
1798
01:12:58,434 --> 01:13:01,334
His English is not terribly good.
1799
01:13:01,334 --> 01:13:03,801
Hannon: Aww!
1800
01:13:03,801 --> 01:13:05,767
Lars Rasmussen: For the purposes of this demo.
1801
01:13:05,767 --> 01:13:07,868
[laughter]
1802
01:13:07,868 --> 01:13:11,000
And Rosy is a robot that very kindly translates
1803
01:13:11,000 --> 01:13:13,501
what I'm typing.
1804
01:13:13,501 --> 01:13:16,834
"Hello, world!"
1805
01:13:16,834 --> 01:13:18,501
[applause]
1806
01:13:18,501 --> 01:13:20,901
"What do you think
1807
01:13:20,901 --> 01:13:24,767
"of this demo--
1808
01:13:24,767 --> 01:13:32,567
of this demo?"
1809
01:13:32,567 --> 01:13:34,467
And now Alexi's typing in France.
1810
01:13:34,467 --> 01:13:37,801
And I get to see him saying, "Ah, yes...
1811
01:13:37,801 --> 01:13:41,100
since new--we are in can--use--used--"
1812
01:13:41,100 --> 01:13:43,634
Translates word by word, character by character
1813
01:13:43,634 --> 01:13:45,400
as he's typing.
1814
01:13:45,400 --> 01:13:47,834
Rosy speaks, I believe, 40 languages.
1815
01:13:47,834 --> 01:13:50,667
She can translate between any pair of them.
1816
01:13:50,667 --> 01:13:54,901
Um, she's quite the thing.
1817
01:13:54,901 --> 01:13:57,634
Okay. That finishes our demo.
1818
01:13:57,634 --> 01:13:58,901
Oh, thank you.
1819
01:13:58,901 --> 01:14:03,968
[cheers and applause] Thank you. Thank you.
1820
01:14:03,968 --> 01:14:09,467
Thank you. Thank you. Thank you.
1821
01:14:09,467 --> 01:14:13,567
Thank you.
1822
01:14:13,567 --> 01:14:15,634
Thank you. Thank you. Thank you. Thank you.
1823
01:14:15,634 --> 01:14:18,934
[cheers and applause] Thank you. Thank you.
1824
01:14:18,934 --> 01:14:22,701
Hannon: I think they like it. Lars Rasmussen: They like it.
1825
01:14:22,701 --> 01:14:27,367
You guys like it? Okay. Thank you.
1826
01:14:27,367 --> 01:14:31,968
Hannon: Thank you. Wow. Thank you. [laughs]
1827
01:14:31,968 --> 01:14:36,601
[cheers and applause] Lars Rasmussen: Thank you.
1828
01:14:36,601 --> 01:14:39,801
Thank you. [whistling and cheers]
1829
01:14:39,801 --> 01:14:41,968
Hannon: They have a lot of skills.
1830
01:14:41,968 --> 01:14:46,234
[applause]
1831
01:14:46,234 --> 01:14:47,901
I think... Lars Rasmussen: Thank you.
1832
01:14:47,901 --> 01:14:51,234
Hannon: If they really liked it...
1833
01:14:51,234 --> 01:14:52,400
[man shouting indistinctly]
1834
01:14:52,400 --> 01:14:54,701
If you guys--you guys really liked it,
1835
01:14:54,701 --> 01:14:56,200
you could do a wave.
1836
01:14:56,200 --> 01:14:58,100
Lars Rasmussen: So, so, so-- Hannon: Anyone?
1837
01:14:58,100 --> 01:15:00,000
It's time to do the wave. Lars Rasmussen: So--
1838
01:15:00,000 --> 01:15:03,234
So, um, what do you guys think?
1839
01:15:03,234 --> 01:15:05,934
Okay. [laughs]
1840
01:15:05,934 --> 01:15:07,534
So just-- Hannon: Thank you for filming.
1841
01:15:07,534 --> 01:15:08,801
Lars Rasmussen: Just to summarize,
1842
01:15:08,801 --> 01:15:11,033
um, what we like to think we've built here
1843
01:15:11,033 --> 01:15:13,667
is really quite a simple communication object
1844
01:15:13,667 --> 01:15:15,033
called a wave.
1845
01:15:15,033 --> 01:15:16,834
And we've showed how you can use it
1846
01:15:16,834 --> 01:15:18,501
for quite a lot of different types
1847
01:15:18,501 --> 01:15:20,901
of communication and collaboration.
1848
01:15:20,901 --> 01:15:23,767
We showed you how plain vanilla email-type conversations
1849
01:15:23,767 --> 01:15:25,000
could be done.
1850
01:15:25,000 --> 01:15:27,067
We showed you how instant messaging conversations
1851
01:15:27,067 --> 01:15:28,200
could be done.
1852
01:15:28,200 --> 01:15:29,901
We showed you how easy it is to share photos
1853
01:15:29,901 --> 01:15:31,834
and other rich media types with it.
1854
01:15:31,834 --> 01:15:34,067
We introduced a platform that we're hoping you guys
1855
01:15:34,067 --> 01:15:35,367
will pick up
1856
01:15:35,367 --> 01:15:37,300
that will let you build things like blogging sites,
1857
01:15:37,300 --> 01:15:40,033
discussion groups, uh, letting your users
1858
01:15:40,033 --> 01:15:42,400
discuss images on your web site.
1859
01:15:42,400 --> 01:15:43,734
With the editing functionality,
1860
01:15:43,734 --> 01:15:45,400
you can see you can build Wiki-like sites
1861
01:15:45,400 --> 01:15:46,534
with that as well.
1862
01:15:46,534 --> 01:15:48,033
We showed you how you can use waves
1863
01:15:48,033 --> 01:15:50,534
to collaboratively edit documents.
1864
01:15:50,534 --> 01:15:53,801
We showed you a rich set of extension APIs
1865
01:15:53,801 --> 01:15:56,467
that could let you build everything from games,
1866
01:15:56,467 --> 01:15:59,734
through collaborative applications inside a wave,
1867
01:15:59,734 --> 01:16:02,534
through integrations with other communication systems.
1868
01:16:02,534 --> 01:16:03,801
We showed you Twitter.
1869
01:16:03,801 --> 01:16:05,400
We're hoping you guys will build gateways
1870
01:16:05,400 --> 01:16:08,133
from Wave to email, to Facebook,
1871
01:16:08,133 --> 01:16:10,567
to instant messaging, and so on.
1872
01:16:10,567 --> 01:16:14,033
We showed you how you can use these extension APIs
1873
01:16:14,033 --> 01:16:18,734
to also integrate waves into work flows.
1874
01:16:18,734 --> 01:16:22,934
Whew. Okay.
1875
01:16:22,934 --> 01:16:24,033
And now...
1876
01:16:24,033 --> 01:16:25,133
Hannon: Just going to bring up...
1877
01:16:25,133 --> 01:16:27,467
Lars Rasmussen: For the administrativia
1878
01:16:27,467 --> 01:16:28,601
at the end,
1879
01:16:28,601 --> 01:16:32,634
I want to-- I want to just point out--
1880
01:16:32,634 --> 01:16:33,701
I forgot that earlier
1881
01:16:33,701 --> 01:16:35,467
that we have three breakout sessions
1882
01:16:35,467 --> 01:16:39,868
that I don't believe has been in the program so far.
1883
01:16:39,868 --> 01:16:44,534
Um, the first one at noon is about, um, the API.
1884
01:16:44,534 --> 01:16:46,968
If you can only come to one of our breakout sessions,
1885
01:16:46,968 --> 01:16:49,367
please make it that one.
1886
01:16:49,367 --> 01:16:50,968
The next one is a little run-through
1887
01:16:50,968 --> 01:16:52,801
of some of the more exciting pieces of technology
1888
01:16:52,801 --> 01:16:54,033
under the hood.
1889
01:16:54,033 --> 01:16:56,000
We're going to show you from the top of the--
1890
01:16:56,000 --> 01:16:59,634
top of the stack how our amazing spell-checker works,
1891
01:16:59,634 --> 01:17:03,100
how the rich text editor in the browser works,
1892
01:17:03,100 --> 01:17:04,934
and the algorithms that we used underneath
1893
01:17:04,934 --> 01:17:06,767
to do all the concurrency, control,
1894
01:17:06,767 --> 01:17:09,367
and conflict resolution and so on.
1895
01:17:09,367 --> 01:17:10,767
And then at 2:30,
1896
01:17:10,767 --> 01:17:13,234
one of our client team tech leads
1897
01:17:13,234 --> 01:17:16,567
are going to explain how we build
1898
01:17:16,567 --> 01:17:19,734
the web application with the Google Web Toolkit,
1899
01:17:19,734 --> 01:17:21,434
why we love it so much,
1900
01:17:21,434 --> 01:17:24,934
and what some other future plans are.
1901
01:17:24,934 --> 01:17:26,634
We also have in Room B4
1902
01:17:26,634 --> 01:17:28,734
from noon till 4:30 office hours
1903
01:17:28,734 --> 01:17:32,300
where you guys can come talk to the team in blue here.
1904
01:17:32,300 --> 01:17:36,467
They love talking.
1905
01:17:36,467 --> 01:17:39,133
And then I wanted to show you,
1906
01:17:39,133 --> 01:17:42,634
um, three important URLs here.
1907
01:17:42,634 --> 01:17:44,934
So for starters, wave.google.com
1908
01:17:44,934 --> 01:17:47,534
is going to be the home of Google Wave
1909
01:17:47,534 --> 01:17:49,801
when we launch it later in the year.
1910
01:17:49,801 --> 01:17:52,133
If you go there now or when the site goes live
1911
01:17:52,133 --> 01:17:53,300
in a little bit,
1912
01:17:53,300 --> 01:17:55,033
um, there is a sign-up form there
1913
01:17:55,033 --> 01:17:56,534
where you can sign up for notifications
1914
01:17:56,534 --> 01:17:57,834
when we launch it.
1915
01:17:57,834 --> 01:18:01,234
There's also going to be a beautifully edited video
1916
01:18:01,234 --> 01:18:03,367
of today's keynote.
1917
01:18:03,367 --> 01:18:06,367
Um, the API site is going to go live...
1918
01:18:06,367 --> 01:18:07,601
man: Already live.
1919
01:18:07,601 --> 01:18:09,300
Lars Rasmussen: The API site is already live.
1920
01:18:09,300 --> 01:18:11,801
No wonder I couldn't-- couldn't get a connection
1921
01:18:11,801 --> 01:18:13,734
to my mobile phone before.
1922
01:18:13,734 --> 01:18:18,767
It's at code.google.com/apis/wave.
1923
01:18:18,767 --> 01:18:21,133
It's got the API. It's got the documentation.
1924
01:18:21,133 --> 01:18:23,567
It's got the code samples we showed before.
1925
01:18:23,567 --> 01:18:25,934
Actually, I should just mention really quickly
1926
01:18:25,934 --> 01:18:28,801
the bug--the--the issue tracker integration
1927
01:18:28,801 --> 01:18:30,100
we showed at the end,
1928
01:18:30,100 --> 01:18:31,868
we have to cheat ever slow slightly
1929
01:18:31,868 --> 01:18:35,267
by using, uh, using an internal API
1930
01:18:35,267 --> 01:18:36,334
to the issue tracker.
1931
01:18:36,334 --> 01:18:37,667
I think they're working really hard
1932
01:18:37,667 --> 01:18:39,167
making APIs available.
1933
01:18:39,167 --> 01:18:41,467
So that particular sample is not going to be there
1934
01:18:41,467 --> 01:18:43,400
for--for a wee while.
1935
01:18:43,400 --> 01:18:46,033
Lastly, at waveprotocol.org,
1936
01:18:46,033 --> 01:18:48,434
you'll find the protocol draft,
1937
01:18:48,434 --> 01:18:50,467
the whitepapers, the discussion forum,
1938
01:18:50,467 --> 01:18:52,868
and so on if you guys are interested
1939
01:18:52,868 --> 01:18:55,868
in helping us, um, build that wave
1940
01:18:55,868 --> 01:18:57,701
to be an open system.
1941
01:18:57,701 --> 01:18:59,634
Hannon: You should tell them about the email.
1942
01:18:59,634 --> 01:19:00,801
Lars Rasmussen: Yes.
1943
01:19:00,801 --> 01:19:02,367
And the way you're going to get an account
1944
01:19:02,367 --> 01:19:04,100
is you'll receive an email later today
1945
01:19:04,100 --> 01:19:07,167
that explains where you can go and sign up
1946
01:19:07,167 --> 01:19:08,467
for an account,
1947
01:19:08,467 --> 01:19:12,200
which you will get shortly.
1948
01:19:12,200 --> 01:19:14,901
Okay. So, look, the last thing I want to say,
1949
01:19:14,901 --> 01:19:18,868
um, you can probably imagine it felt kind of nice
1950
01:19:18,868 --> 01:19:21,133
that you guys seemed to like what we built.
1951
01:19:21,133 --> 01:19:23,033
Um, one of the-- one of the best times
1952
01:19:23,033 --> 01:19:24,501
in my professional life
1953
01:19:24,501 --> 01:19:28,100
was after we launched Google Maps back in 2005
1954
01:19:28,100 --> 01:19:30,968
and developers started doing all kinds of crazy things
1955
01:19:30,968 --> 01:19:32,033
with Google Maps.
1956
01:19:32,033 --> 01:19:33,701
I hope some of you are here.
1957
01:19:33,701 --> 01:19:36,434
This was even before we had an API on Maps.
1958
01:19:36,434 --> 01:19:38,801
We scrambled to put an API on Maps.
1959
01:19:38,801 --> 01:19:41,734
And it's, uh, it's-- it's become very popular
1960
01:19:41,734 --> 01:19:45,033
and it's a huge driving force of success.
1961
01:19:45,033 --> 01:19:47,000
We learned a very important lesson
1962
01:19:47,000 --> 01:19:48,767
that--that you guys, developers,
1963
01:19:48,767 --> 01:19:51,334
are incredibly important to the success
1964
01:19:51,334 --> 01:19:53,567
of the kind of products that we build.
1965
01:19:53,567 --> 01:19:56,667
And so I can't wait to see what you guys
1966
01:19:56,667 --> 01:19:58,167
are gonna come up with.
1967
01:19:58,167 --> 01:20:00,334
Um, please, please, please, check it out.
1968
01:20:00,334 --> 01:20:02,400
Build cool stuff. Surprise us.
1969
01:20:02,400 --> 01:20:06,534
I just can't wait to see what you come up with.
1970
01:20:06,534 --> 01:20:07,968
Thank you very much.
1971
01:20:07,968 --> 99:59:59,999
[cheers and applause]