96 lines
2.2 KiB
TeX
96 lines
2.2 KiB
TeX
|
\documentclass{beamer}
|
||
|
% \usetheme{Boadilla}
|
||
|
\usetheme{Madrid}
|
||
|
|
||
|
\usepackage{bookmark}
|
||
|
\usepackage{graphicx}
|
||
|
\usepackage{fancyvrb}
|
||
|
|
||
|
\graphicspath{ {./dot/} }
|
||
|
|
||
|
\setbeamercovered{transparent}
|
||
|
|
||
|
\title{enterprise}
|
||
|
\subtitle{UI Framework Project}
|
||
|
\author{Michael Zhang}
|
||
|
\date[\today]{SIFT Interview, \today}
|
||
|
|
||
|
\begin{document}
|
||
|
|
||
|
\begin{frame}
|
||
|
\titlepage
|
||
|
\note{Briefly discuss what is enterprise, a bit about the origin of its name.}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{High-Level Goals}
|
||
|
|
||
|
\begin{itemize}[<+>]
|
||
|
\item Declarative-style programming.
|
||
|
\note{In UI design, we really don't care about how the logic is implemented. We don't care how the browser draws the styles, or what order on-hover handlers are added to dropdowns.}
|
||
|
|
||
|
\item No framework bloat.
|
||
|
\note{enterprise is more like a compiler than a framework in the sense that the code it generates doesn't need to contain the actual compilation process.}
|
||
|
|
||
|
\item Ahead-of-time guarantees.
|
||
|
\note{Another benefit of it being a compiler is that it is difficult to get run-time errors. If it compiles, it works.}
|
||
|
|
||
|
\item Separation of business logic and implementation.
|
||
|
\note{Talk about Epic?}
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}[fragile]
|
||
|
\frametitle{What do I have today?}
|
||
|
|
||
|
\begin{itemize}
|
||
|
\item Foundations for event analysis.
|
||
|
\item WASM code generation.
|
||
|
\end{itemize}
|
||
|
|
||
|
Example:
|
||
|
|
||
|
\begin{verbatim}
|
||
|
component HelloWorld {
|
||
|
model {
|
||
|
name: String = "hello",
|
||
|
}
|
||
|
|
||
|
view {
|
||
|
<input bind:value="name" />
|
||
|
"Hello, " {name} "!"
|
||
|
}
|
||
|
}
|
||
|
\end{verbatim}
|
||
|
\end{frame}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{How does it work?}
|
||
|
|
||
|
\begin{enumerate}
|
||
|
\item Parsing DSL syntax.
|
||
|
\item Assemble dependency graph.
|
||
|
\item Generate code.
|
||
|
\end{enumerate}
|
||
|
\end{frame}
|
||
|
|
||
|
\include{parsing}
|
||
|
|
||
|
\include{deps}
|
||
|
|
||
|
\include{codegen}
|
||
|
|
||
|
\begin{frame}
|
||
|
\frametitle{Future Work}
|
||
|
|
||
|
\begin{itemize}
|
||
|
\item Full DSL, independent from Rust.
|
||
|
\item Cassowary-based constraint solving for layout.
|
||
|
\item Asynchronous event handlers.
|
||
|
\item Eliminating unnecessary model stores.
|
||
|
\item Connecting to other frameworks (GTK, Iced, etc.)
|
||
|
\end{itemize}
|
||
|
\end{frame}
|
||
|
|
||
|
\end{document}
|