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
parent
c27de2e53c
commit
15befb32d8
125
talk.tex
125
talk.tex
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue