\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 { "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}