 So, this talk is about this framework called escher.tl and the .tl part means that it's a Julia package. So, this is a convention called Julia package review for easy discoverability on Google. So, what escher is, it's a framework for writing web apps entirely in Julia. And in this talk I'm going to basically motivate why we need such a thing, why do we need to write everything in one language, why does it have to be this way and how does it have different kinds of people like UIs and I'm also going to basically get into the construction of such a package, construction of escher. So, to start off motivating why we need this thing, I'm going to talk a little bit about functional programming. So, it's surprising how many people that actually practice functional programming do not like kind of cannot define functional programming, right? So, people think it's like higher order functions, functions as values, you know, and like various type systems and people say that if you do not have a statically typed Hindley-Wilner type type system, you don't have a functional language. But at the most basic level functional programming is just programming with stateless functions, right? You program with functions which give you the same output for the same input no matter where they are executed or how they are executed, right? So, that's the basic fundamental building block of functional programming. But this has a problem. So, if you just have functions which take some value and give back the same value for the same input, how are you going to change the world? How are you going to do some modifications that are required for actual effects to happen in the world, right, from your program? So, one such side effect is UI design because to show everything on a screen, you're basically doing some kind of side effect. And the most dominant way of writing UI today is using the web, right? So, the web has this API called DOM, document object model, which is this convention where you use this object called document, which is a huge mutable data structure. And the way you write programs is to manipulate this thing. You go and mutate certain parts of the DOM so that you can see the changes reflect in your UI. This is inherently a stateful abstraction.