Retaking Control of the Web
Sandro Pasquali <spasquali@gmail.com>
Agenda
1. A reset

2. Projecting Influence; demo

3. Credit where credit is due
Cal Newport, “Deep Work”
Peter Lunenfeld “The Secret War Between
Downloading and Uploading”
Jaron Lanier “You are not a Gadget”
This friendly gent is an
elevator operator
“Operators should be free from serious
physical or mental defects”
“Movement of switch toward car gate
causes elevator to go down. Movement of
switch away from gate causes elevator to go
up. Speed of car can usually be controlled
by amount of movement of car switch”
“Operators never give information or make
statements, either written or verbal, in connection
with accidents occurring in the building. If
statements are to be made, they must be given in
presence of building manager or supervisor.”
This is a a mediated relationship between a
technology and a user of that technology.
Your relationship with the elevator is
managed for you by a 3rd party
Then someone realized that the job of elevator
operator was unnecessary. The managed
relationship between you and elevator
technology was disintermediated, and that is
why we don't have elevator operators anymore.
You don’t need someone
to push buttons for you
Your laptop is a networked device
that affords you enormous power
The Web keeps getting easier to use
Introducing Projector
Software that runs locally
and offline, using JavaScript
and Node.js, and Web APIs
Marko
SSR
A declarative UI toolkit
Stencils & Stamps
morphdom (choo.io)
<w-channel
workspace="#editor-stream-container"
commands="brain show search slack
send sms email tweet help. math set
unset get list new delete. forget. save.
publish contacts. extract info. play
read stop. assignments. analyze. intel"
/>
Apps and Widgets
JSONSchemas and
configuration (demo)
The Web as a Database.
Extract and Extend
{
"type": "object",
"properties": {
"url": {
"type": "string"
},
"selector": {
"type": "string"
}
},
"required": ["url","selector"]
}
https://github.com/mozilla-services/react-jsonschema-form
Where are Streams
stored? CouchDB
Web-first, masterless
synchronizing database
(demo)
PouchDB
var db = new PouchDB('dbname');
db.put({
_id: 'dave@gmail.com',
name: 'David',
age: 69
});
db.changes().on('change', function() {
console.log('Ch-Ch-Changes');
});
db.replicate.to('http://example.com/mydb');
RiveScript and NLP
Command Files
(demo)
cmd_publish: {
triggers: [
`publish [to] (amp|fbia|web) [as] (public|private) (${types})`
],
help: [`…`],
args: '<star1> <star2> <star3>',
handler: (rs, args) => new rs.Promise(async resolve => {
try {
const data = await userData(rs);
if(args[1] === 'undefined') {
const doc = await data.userDB.get();
const curDoc = doc.currentDocument;
args = [
curDoc.domain,
curDoc.visibility,
args[0] === 'undefined' ? curDoc.type : args[0]
];
}
resolve(await data.docDB.publish(args));
keybase.io
Keybase is an end-to-end PGP-based encrypted chat option that
relies entirely on cryptography and validation that’s in your control +
keybase.io identities are proven
and validated through social media
accounts, websites, Bitcoin, and
other methods. No phone numbers.
Use keybase as a secure
messaging layer (demo)
keybase_sender: {
triggers: [`send [to] (keybase|slack)`],
help: [`send [to] (keybase|slack)`, `Publish current document and send link to Keybase or Slack.`],
args: '',
handler: (rs, args) => new rs.Promise(async resolve => {
try {
const data = await userData(rs);
const doc = await data.userDB.get();
const publishedUrl = doc.currentDocument.publishedUrl;
keybase.chatSend({
channel: {
"name": "sandro_pasquali",
"public": false,
"members_type": "team",
"topic_type": "chat",
"topic_name": "WebUnleashed"
},
message: { body: publishedUrl }
}, (err) => { return err ? resolve(`Keybase Send error: ${err.message}`) : resolve(`Sent`); });
} catch(err) { resolve(err); }
})
}
This is a Caddis fly larva
These insects construct
a food sieve that is
marvelous
Does anyone in this room
believe the larva has a blueprint
of the sieve in its “brain”?
Humans create something
similar. It’s called a “lobster trap”
Humans definitely design
and represent the design, in
their brains and elsewhere.
When we see
competence we assume
comprehension
The larva doesn’t
understand what it is doing.
It just does. Evolution.
Much of the Web is built up by
individuals who don’t understand
what their labor is creating (like
Facebook)
The Web evolves. It
isn’t “for” something.
Nobody “owns” any part of the Web.
Having the largest market share doesn’t
imply teleology: Google isn’t the company
whose C-suite had a lone view into the
“meaning” of Web Search. New mutations
will, and should, happen. Via the Web.

Retaking Control of the Web