1
0
Fork 0

timeblock (intro): more refinement

Still a bit long...eating up ~1/4 of the talk on introducing the concepts
isn't the best way to spend my time.
master
Mike Gerwitz 2016-03-18 00:19:53 -04:00
parent c27de2e53c
commit 15befb32d8
No known key found for this signature in database
GPG Key ID: F22BB8158EE30EAB
1 changed files with 57 additions and 68 deletions

125
talk.tex
View File

@ -42,11 +42,10 @@
\begin{frame}
\titlepage
\lecture{I'm going depress everyone upfront---this is a~talk about
problems. Problems that are fundamental to the Web today, and
don't have a trivial solution. So who am I to tell you what is
and is not a problem with one of the great pillars of modern
life?}
\lecture{So I'm here to talk to you about some problems. Problems that
are fundamental to the Web today, and don't have a trivial
solution. My hope is to encourage discussion on these issues,
since not enough people are talking about them.}
\end{frame}
@ -110,9 +109,9 @@
\lecture{But we're talking about \emph{freedom}.}
\item<3-> The truth is---the web has become alarmingly hostile and
\item<3-> The truth is: the Web has become alarmingly hostile and
freedom-denying toward users
\lecture{The web has become increasing \emph{hostile} and
\lecture{The sad truth is: the web has become increasing \emph{hostile} and
freedom-denying toward its users. And that's not progress;
technical advancements are great, but \emph{not when they
deny users their freedoms}.}
@ -164,12 +163,8 @@
\begin{itemize}
\item<1-> Usually involves a web browser
\lecture{Normally when we talk about the ``Web'', as opposed to the
``Internet'' as a whole, we're referring to something that you
would access using a web browser. That web browser might be a
graphical browser like GNU IceCat, it might be a text-mode
browser like w3m, or maybe even \tt{wget} or \tt{curl} to
directly and look at the plain text of the document, or parse
it with a script.}
``Internet'' as a whole, we're referring to something that
you would access using a web browser.}
\begin{enumerate}
\item <2-> User enters a URL or clicks on a link
@ -190,25 +185,23 @@
browser sends an HTTP request to the host requesting the
resource.}
\item<4-> Server responds with resource
\only<4>{\gnuresp}
\lecture{The server responds. That response might be affirmative,
it might be an error, it might be garbage; let's assume
that it was a successful response.}
\item<3-> Server responds with resource
\only<3>{\gnuresp}
\lecture{The server responds with the resource or an error.}
\item<5-> Browser recursively loads all resources referenced by
webpage
\item<4-> Browser recursively loads all resources referenced by
the resource
\begin{itemize}
\item<5-> Stylesheets, Images, Scripts, etc.
\item<4-> Stylesheets, Images, Scripts, etc.
\end{itemize}
\only<5>{\includegraphics[width=\textwidth]{images/gnu-resources.png}}
\only<4>{\includegraphics[width=\textwidth]{images/gnu-resources.png}}
\lecture{This is the meat of the talk. The browser then recursively
processes all resources referenced by \emph{that}
resource. Most often, these include images, stylesheets,
and scripts.}
\end{enumerate}
\item<6-> Distributed network (``web'') of computers
\item<5-> Distributed network (``web'') of computers
\lecture{So fundamentally, the web is a distributed network of
computers that serve resources. Resources can be anything
from your conventional web page, to a program that runs in
@ -226,54 +219,53 @@
trigger a download. But as far as web pages go, they
traditionally consist of HTML}
\begin{itemize}
\item<2-> HTML---Describes the document
\item<1-> HTML---Describes the document
\lecture{which describes the~document, and CSS}
\item<3-> CSS---Describes the document style (appearance)
\item<1-> CSS---Describes the document style (appearance)
\lecture{which describes the~document \emph{style}---how it looks,
what font to render in, the background color, et cetera.}
\lecture{Those documents can contain more than just text---there
is support for media as well, like images and embedded
video. Users can submit information by entering data in
form fields. Most of that falls under the HTML spec.}
\item<4-> HTTP---Communication protocol
\lecture{All of this communication is done using the HTTP
\item<1-> HTTP---Communication protocol
\lecture{Most of this communication is done using the HTTP
protocol, which defines how the server and client
communicate.}
communicate. All of this is standardized by the
W3C---the World Wide Web Consortium.}
\lecture{Back in the day, most every reaction to user input
involved loading a new webpage. You're seeing less and
less of that today---many web pages look and behave more
like \emph{software} than documents. You might hear the
term ``single-page'' programs.}
\item<5-> JavaScript---Embed programs in web browser
\item<2-> JavaScript---Embed programs in web browser
\lecture{The standard way to do this today is with a language
called JavaScript.}
\end{itemize}
\item<6-> Variety of programs and standard tools can communicate with
webservers and read documents
\lecture{Given these standards for representing documents, styles,
media, etc---you're free to use whatever software you choose!
Everything is interoperable, on both the server and the
client. And this is incredibly important for user freedom,
and essential for free software.}
\item<3-> Any software can interact freely
\lecture{Given these standards, you're free to use whatever software
you choose! Everything is interoperable, on both the server
and the client. And this is incredibly important for user
freedom, and essential for free software.}
\item<7-> Threatened in the past: Java applets, ActiveX, Flash,
\item<3-> Threatened in the past: Java applets, ActiveX, Flash,
Silverlight, and other proprietary/non-standard software
\lecture{That interoperability has been threatened in the past by
other proprietary systems for embedding software in the
browser. The most popular ones include Java applets,
ActiveX, Flash, and Silverlight. Those were dark ages.}
\lecture{We do in fact have another looming threat---the Encrypted
\lecture{Now that's been threatened in the past by other proprietary
systems for embedding software in the browser. The most
popular ones include Java applets, ActiveX, Flash, and
Silverlight. Those were dark ages.}
\item<3-> Threatened today: Encrypted Media Extensions (EME)
Silverlight, and other proprietary/non-standard software
\lecture{But we do in fact have another looming threat---the Encrypted
Media Extensions proposal being considered by the W3C which
would effectively introduce DRM as a \emph{standard} for the
Web. We must oppose it, and I encourage you to join us
in protest just outside the conference tonight at 6:45.}
Web. A \emph{standarized} way to betray users. We must
oppose it, and I encourage you to join us in protest just
outside the conference tonight at 6:45.}
\item<8-> Now the greatest threat is JavaScript
\item<4-> Now the greatest threat is JavaScript
\lecture{But an \emph{existing} standard is now our greatest
threat. JavaScript.}
\end{itemize}
@ -284,41 +276,38 @@
\lecture{So what is \emph{JavaScript}?}
\begin{itemize}
\item<2-> ECMAScript (Standard: ECMA-262; ISO/IEC 16262)
\item<1-> ECMAScript (Standard: ECMA-262; ISO/IEC 16262)
\lecture{Formally, it's ECMAScript, which is the standard defining the
language. But browsers tend to incorporate their own
features beyond the standard, which might subsequently be
adopted.}
features beyond the standard, which we include under the
umbrella of ``JavaScript''.}
\item<3-> Traditionally: Browser-based, client-side scripting language
\item<1-> Traditionally: Browser-based, client-side scripting language
\lecture{JavaScript started out in the web browser, specifically
Netscape. It was written in 1995 with the goal of offering
something that was easier for non-programmers to write than
Java Applets. The name JavaScript has nothing to do with
Java the language.}
Netscape in 1995. It was used on the server as well at the
time, but that's not where it flourished.}
\item<4-> Today: General-purpose programming language
\item<2-> Today: General-purpose programming language
\lecture{But today is has evolved into a popular general-purpose
scripting language, used on both the client and the
server. It's worth noting that JavaScript has been used on
the server for pretty much as long as it has
existed---Netscape used it on the server back in 1995.}
server.}
\begin{itemize}
\item<5-> Heavily popularized by Node.js
\item<2-> Heavily popularized by Node.js
\lecture{But it wasn't until Node.js that it exploded in
popularity, and is often times even \emph{preferable} by
some to other languages on the server. I'm not getting
into \emph{that} debate today.}
\end{itemize}
\item<6-> ``Assembly language'' of the web
\item<3-> ``Assembly language'' of the web
\lecture{It's often called the ``assembly language'' of the web,
because there are dozens of languages that compile into
it---if you want code running in the browser, the standard
way to do it is by using JavaScript.}
because there an ever-growing number of languages that
compile into it---if you want code running in the browser,
the standard way to do it is by using JavaScript.}
\begin{itemize}
\item<7-> Soon: WebAssembly (WebASM)
\item<3-> Subset: asm.js
\item<3-> Soon: WebAssembly (WebASM)
\lecture{But there are properties of the language that don't make
ideal for being the compiler target for all things on the
web. One popular method is a subset of JavaScript called