My name is Steve Vorval, and I work on the core Polymer library as an engineer. And today we're going to talk about some practical performance patterns that you can use while making your Polymer web application. And I need the clicker. There we go. So performance is really a measure of time. It's a time it takes for us to load and display content to the user. The time it takes from when our user clicks on a button for some action to occur. And we know that if this takes too long, the user gets frustrated, and they may bounce and leave our site. We don't want that. But exactly how much time is okay? How much time can we let these things take and still delight our users with good performance? So Google has some guidelines for this called Rail, and how many of you have heard this term before? Okay, a fair number. I encourage you to check out these tons of information available online about Rail. And today, actually, we're going to focus on the L in Rail, which stands for load. And the goal of the guidelines is to try to load and display interactive content to the user in just one second. So we know at least that gives us a goal to shoot for. But how will you measure this? How will you try to figure this out if your app is hitting this goal? There's a lot of ways, but one way that we really like on the Polymer team is this site called webpagetest.org. And it's really easy to use. You just input your URL. You can select a device and a browser. And a connection profile, like a mobile profile, it's really easy. The site churns for a little bit, doing some testing, and then you get a nice report of how long it takes. And it's going to tell you if you're hitting that guideline. So if we do that for Google.com, then do we hit this guideline? Well, it turns out if you do this test for Google on like an average phone, like an XS5, and average mobile 3G connection, then typically when you test this, it actually does hit the rail guideline, but not really with any room to spare. And as you may know from going to Google.com, it's not the most complicated looking website. So this pretty much gives us an indication, as you may probably already know as web developers, that this goal is pretty darn tough to hit. And it turns out sometimes that if the connection is flaky enough, a flaky 3G connection sometimes, for example, then you may not even get a response from the server within that one second time frame. So we may not even be able to do anything. We're doing nothing and we're still not hitting that goal. So this is tough. The guidelines are basically telling us this is what will please our users. So it's telling us that there's not a whole lot of room for us to do work on our own. And so we should really take this seriously and pay attention to performance and do whatever we can to minimize the impact of the things that we can control. So going back to this question of time and measuring performance by looking at time, what are those things that we can control? So first, there's obviously the things that we're downloading to the browser. This is the JavaScript HTML and CSS that we're all familiar with. And the quantity of that is going to be important contributor to the overall time that we're taking. And second, of course, there's rendering that content to the screen. And this is going to be basically the other main contributing factor that's going to lead to the overall time that our site is taking to load. So clearly, if we can reduce either the amount that we're downloading or the amount of time we're taking to render, then we're going to improve the performance of our site. So that sounds good. That gives us some really concrete things to look at. And first, what we'll go ahead and do is dive into this idea of how much we're downloading for the user and see what we can do to control this. So I apologize because I realize you've heard this term, like, in almost every talk. And I honestly didn't realize this would be the case. But we are fans of this idea of using the platform. And specifically, let's just take a quick look at what this does to the amount of content that we're downloading if we do the best we can to try to use the platform to help us. So first, if we use Web Components, this is going to help us minimize the amount of JavaScript framework code that we're downloading to the user. And in Taylor's talk, he mentioned that Polymer on Chrome, for example, where all the native Web Components features are implemented, is getting a lot smaller in version 2.0, where we don't have to load polyfills. And if we use Service Worker, which has been mentioned also a lot today, then we know that this, for downloading on the second and subsequent loads, we don't really have to worry as much about this question of downloading because we're going to have this reliable cache that's going to help us. And so it becomes much less of an issue in that case. And finally, you've also been hearing about the purple pattern. And again, this stands for push, render, use a service worker to pre-cache, and then lazy load. So again, it's push just the content that my user needs for the initial route that we're rendering, use a service worker to pre-cache the remaining content, and then lazy load that on demand as the user's interacting with the site. There's a lot of content here. And at Google I.O. this year, there was a great talk given that I highly recommend that you check out. We apparently like our Ps and Polymer. And there's a lot of information there about what the pattern means and sort of why we think it's good and what you can do to implement it. So also at Google I.O., we released the shop app. And just to be real clear, this is a demo app. You cannot actually buy things on this. And this has actually come up recently with users using it and trying to wondering where their shirts are. And this is really where we kind of, the crucible where we formed and tested out the purple pattern. And we were really happy with the result. By using this pattern, we were able to improve the performance of the shop app pretty dramatically using, again, web page test to test this. By multiple seconds on each of the routes for the site. And at that point, we were pretty happy. We thought we were onto something. We thought, okay, this is a good pattern. This is pretty straightforward and useful for people. And then a little later this year, the team that makes the Chrome UI, which is actually just web pages like you and I make, they came to us and they said that what they needed to do was rebuild this, these pages. They needed to use Google's material design. They were keen to use Polymer and we thought that was great. And then they said, well, the users of Chrome demand that these pages load in just a couple hundred milliseconds almost instantly. So they laughed at that rail one second guideline. And they noted to us that the resources that these pages need are actually installed with Chrome. So they don't have to worry about a network in downloading these resources. So they didn't have to worry about a huge component that we just talked about. So for them, instead, the issue of performance was really the other component that we mentioned, this rendering question. So for the rest of this talk, we're gonna really focus on the idea of rendering the content for our users to the screen. And what we can do to minimize the performance impact of that. So let's dive into that now. So again, if we sort of look at this concept of time, and now we're really just focused on the time to render, it's really a function of two things. First, we have the number of elements that we're using to display our content. And the cost of those elements, the average of how much each of those is costing us in going into that time. And we can see, looking at this equation, again, if we reduce either of those, it's gonna have a positive impact on decreasing the amount of time we take. So, how are we gonna do that? Well, it's not quite as simple as this, as going to the beach and just relaxing. But as the title of this talk says, we are gonna try to sort of use this mantra and do less and be lazy. This is really, if you take one thing away from this talk, it's this. Do less means making less elements, rendering what we need and less work. Being lazy means trying to do this efficiently and doing just the work we need to accomplish the task at hand, the rendering, and then with the way the user is interacting with the app. So, with that in mind, let's try to dive into some specific techniques that we can use to, in this case, we're gonna first focus on reducing the number of elements that we're using to render that critical content for the user. So, we'll look at a few techniques that we can use. And the first one of these is called incremental rendering. And the idea here is, again, just do absolutely what's necessary. And then sort of in seamlessly in the background, we'll let the rest of the rendering occur. And I'll explain this with an example. So, you're probably familiar with Polymer's DOM repeat element, renders a version of this template for each, in this case, element in the items array. And if that array has, say, a thousand items in it, then we're gonna get a thousand stampings of, in this case, this my item element before anything is rendered to the screen. So, I mean, if there's any, if the my item element has any complexity at all, this is very likely just gonna take too long. So, what do we do? Well, we actually recently added a feature to DOM repeat called initial count, which is going to do this incremental rendering for us by rendering this set amount, in this case, 10 items. And then letting the user see what's on the screen, and then seamlessly in the background doing the rest frame by frame, usually very quickly, and just filling in the rest. And this is a pretty good trade-off in terms of getting a good first experience and having the rest just kind of happen behind the scenes. And I'd like to mention also that in Polymer 2.0's version of this feature, this incremental count is implemented by default. So, you'll get this behavior without having to do anything. So, another way that you can accomplish something similar is to use IronList, which Eric mentioned. And this is even better performance than DOM repeat, because IronList only ever renders just a bit more elements than will fit on the screen. And then lazily, as the user interacts with the IronList and scrolls through it, those elements are reused and the model items that are appropriate to be shown at a given time are displayed. I would suggest using IronList when you have a fixed viewport height and the content of the list is mostly homogenous. Then it's gonna be your best bet. Okay, let's go ahead and look at the next feature that you can use to try to reduce the number of elements that you need to render. And that's conditional rendering, and we'll again explain that with an example. So, you're probably also familiar with Polymer's DOM if element, which is again a basic tool that you can use to accomplish conditional rendering. So, let's look at how I've used it here, specifically. Because this is actually a time when it's a good time to use DOM if. In this case, it's gonna render if a property called usually false is set to true. I specifically named it usually false because it means that in the common case, it's not gonna be true and we're not gonna render this content. So again, in that common case, we're gonna render less elements. And the element inside here, big view, is very likely to be kind of a bit of an expensive element. So it's a reasonable thing to hide behind this use of conditional rendering. And it's not always a good idea to use this kind of conditional rendering. Sometimes it can be a negative, and let's look at that. So here we've used DOM if and the property that we're conditionally rendering this content on is called usually true, which again means that in that common case, we're probably gonna render this content. So it's actually not helping us. And the content that we're rendering is just a div and it's really cheap. So in this case, the conditional rendering logic that we're using here is probably not even worth it, not paying for itself. And if the content is this simple, then I would recommend just showing and hiding it using CSS. So don't use DOM if here, but use DOM if when the condition is usually false and it's gonna help us in the common case. Okay, so one more feature that we'll look into for reducing the number of elements that we need to render is custom element upgrade. So there's a lot of potential content here, and I'm just gonna focus on the essential bits. Again, with an example. So here we have an element view template where we're showing this big footer element. And it's a footer, it's at the bottom, maybe it's big. So we've chosen in this case to not let it render its full content when we're displaying this initial view here. It's not essential. And it's convenient for us to put it in the DOM like this because it lets us put some fallback content, in this case we chose to say loading. And we can use CSS to style the element, it's just a regular element like anything else. It gives us a good way to style it. And then based on some condition being met, we're gonna call this load footer method in this case. And it's gonna use Polymer's import href, which is a imperative way to create an HTML import and load it to load the definition for the big footer element. And that will seamlessly go ahead and upgrade it when that import loads. And this is again a good way to be lazy and do this work sort of a little bit, it's a little bit less important than for that initial render. And therefore, we can avoid all the, in this case loading the content that we need to load for the big footer, which will help reduce download. But also importantly, not rendering the shadow element of the big footer element that's less important for our initial render. Okay, so to recap, to reduce the number of elements, we've used these techniques and that should be pretty beneficial. So again, to review, all of these techniques are, follow this do less be lazy idea. Okay, so now let's go back to our equation here. We have time to render, number of elements. We've talked about techniques to reduce that. Now let's look at this cost, the cost of these elements. So we'll look at some techniques to help us there. So before we do that though, let's pause for a second. Because it's really important to realize that it's not practical or smart to try to reduce the cost of every single element that you make. It's okay if some of the big view elements that we make just want of or a couple of take a little bit of time to create. The elements that we really want to focus on, the elements that really we don't expect to be taking this much time. And especially the elements that we are using a lot on the page. And we sometimes call these high frequency elements. So high frequency elements, expensive elements are really the ones to focus on. So also important, how are we going to figure out which of the elements meet these requirements? We need to use tools. And in addition to the Chrome DevTools timeline and the profiler, which I hope you're all using, we can use another tool that the Palmer team has created called Poly Dev. And this is another way to help dive into specific element types in your app that are costly and help you determine how many of them you're making and how much they cost. So that'll help us determine which type of element to focus on. So another tool that we've created called Polyperf is another example of the thing that Eric talked about, which is a sort of metrics thing. There's actually almost everyone in our team has a different tool for doing this. And if you want to make your own, that's fine too. This is just one that we found useful. And this is a tool that will help us benchmark individual elements and compare sort of different changes that we can make.  OK, so as a final thing that we'll do in this talk, let's go ahead and sort of do a case study of trying to reduce the cost of an element. And here we've taken a ratings element, which is just something I sort of made up for this. And it's an element that you can use to maybe show a movie rating on your site. And you've decided to implement, you can click down on it and select the rating. And it's a good candidate to try to reduce the cost for because it's very likely to be a high frequency element used in a bunch of places. We might use it in a list, for example. So let's kind of dive in and see if we can find some ways to reduce the cost of this element. So let's look at how it's made. So first we have its template. And it's actually pretty simple. We actually made some good decisions to start. We realized that we could use a little star emoji rather than having to download an SVG or image for the star. We also used Polymer's strip white space feature, which is a convenient way to knock out the text nodes in the template. They're really convenient for readability, but they do have a slight performance impact. And in most cases you don't need them. So in an element like this that we're really trying to squeeze all the fat out of, it's pretty reasonable to do that. So the next slide is going to be most of the code for the element. And I'm pausing now because don't freak out. It looks like a lot here, but this is actually almost all of this code. And we're going to go through it step by step to just look at what's happening. So first we have some attributes. And again, I'm showing some of the Polymer 1.0 syntax here that's hopefully a little more familiar to people. So we want to make the element focusable and give it a role, an aria role, so that it's accessible, which seems straightforward. I do want to have a little maya culpa here. This is not everything we need to do to make the element accessible. The other bits actually don't have a significant performance impact, so I admitted them. But it's not complete. We have some event listeners. In this case, we have a key down listener, which is going to help us with the arrow keys. The left and right arrow keys are going to advance and reduce the rating. And the down handler here is saying that we're going to have some code here that will set the rating based on the star that the user clicked on. We decided to expose a public property called rating. It's pretty straightforward. And we decided that it should reflect to an attribute. And it should send an event when the rating is set. And we have an observer here. And the observer here is accomplishing the rendering of the rating. In this case, don't worry about the code. But it's basically looping over those star elements and setting a CSS class on them. It seems straightforward. And we have a value property, which is setting the default for the rating to zero. So finally, we have a paper ripple. You saw in the little video we had a little ripple effect. I didn't do the work to make it circular. It's a little bit more work, but it probably looked better. And we're creating this paper ripple. And then in the down handler, we're moving it to the right spot so it'll ripple on the right star. And that's great. We get a little material design effect. We don't have to implement it ourselves. We can use that paper ripple element to help us. So straightforward, pretty simple element. What is it? How does it perform? So we can use polyperf. And we can see that when we do that, I've compared it here to the native input element. And I'm using the tool polyperf here to, it's actually rendering 250 of these in each test. So in absolute terms, the cost of the ratings element is pretty cheap. It's like a fraction of a millisecond, about half a millisecond, which is not bad. But I chose to compare it to the native input because it seems like it shouldn't be that much more expensive than that. I mean, it's a straightforward element. We want to make it as fast as we can. So it's actually a bit slower, six and a half times slower than input. So it's not quite where we want it to be, maybe. So again, now we're going to dive in and take a look and try to go sort of step by step to try to see ways that we can reduce the cost of this element. So we'll use this technique. The first thing that we're going to try to do is look at our use of composition. And in this high frequency element, we're going to be a little bit careful about it. In general, composition is great, but when you're really trying to squeeze the fat out of an element, then we want to scrutinize it carefully. And you may have noticed on the previous slide, I use this element called shadow card, which is really just there to give the outline border of the element a drop shadow. And in this case, it's probably a little bit heavy weight to accomplish that end, probably not worth it. So let's try to avoid that. And in this case, to do this in CSS is actually pretty straightforward. So let's just use the platform more directly and use that CSS. And then we'll look at what impact this has on the overall rendering performance. So we can see we got a nice little improvement. And again, we kind of overused an element there where we really didn't need to let in the platform just directly via CSS to do that heavy lifting was a nice little improvement. So the next technique we can look at is reducing the work that we're doing in ready and attached. And specifically, this is important because these lifecycle methods are called before our initial render of the element. So remember this paper ripple that we created? We made it in ready. But you remember that I said it's actually only used in the down handler. So it kind of makes sense for us to do this work lazily and move the creation of the ripple element to the down handler like this. The first time that the user presses down on the ripple, or sorry, on the rating star will make the ripple element and then use it. And then therefore, we're doing the work lazily. So let's look at what impact that has. That's pretty significant. We got a nice bump here. This is not totally surprising given that paper ripple is doing a pretty fancy thing. It's doing some complex work. And by creating that element lazily, we save ourselves a good chunk of work for that initial render. So we're getting there. And not quite there yet, but we're getting there. And the next technique we'll look at is using CSS more for dynamism. We already did for the box shoutout. Now let's look at it for other things. So if you recall, we had this observer when the rating property changed. And we are using CSS, but indirectly we're using JavaScript to imperatively set some classes on the element. And as it turns out, we actually don't need to do this at all. And we can use this fancy CSS instead. In this case, we're choosing to use the fact that we reflected the rating attribute to the host and tell CSS user selector that knows about that. And then use this nth of type selector to say, OK, well, we're going to conditionally style the star, the appropriate star, according to that rating. And this was just enough to get rid of that observer completely, letting the platform do the heavy lifting. So let's see what impact that has. So that's a nice improvement too. Using CSS for dynamism as much as we can, writing less code, seems good. Let's keep going. OK, so you recall I said that we gave the rating property a default value of 0. And as it turns out, to accomplish this render, we don't need that, especially since we did it for UCSS. Based on there being no attribute set, all the stars will just be black, which is good for our initial render. So we don't need this. This can avoid reflecting that initial property to an attribute and avoid sending the event. And this is really good for our initial render. Let's see what impact that has. So not huge, but we're getting there step by step. So one last change that we'll look at is looking if there's any other work that we can defer until after the initial render. And in this case, there's these attributes and these event listeners. And again, those are not critical to our initial render of this element. And again, in this case where we're really trying to squeeze all the fat out, we can avoid using this. And instead, use a little helper that Polymer has called afternext render, which is going to do the work after the render. And set these tabindex and the role and add the event listeners, imperatively then, which is going to, again, defer this work until after render and get us our initial render as fast as we can. Let's see what that does. OK, so that was pretty significant and got us pretty much almost all the way to our goal of trying to sort of at least benchmark ourselves against the native input. So we got a number of big improvements there. And again, here's all the techniques that we used. And you don't have to remember each one because really, sorry, taking together, of course, we looked at this and we looked at some ways to reduce the number of elements and the ways to reduce the cost of the elements. And here's why I'm getting it, that you don't have to remember any of these specific things. You can, of course, review for that. But to keep in mind, if you remember one thing, it's just that steal this and be lazy because all of these things that we just talked about really express this main idea. So here are the things that I talked about in the talk. There's a link for Rail, the link to that video for Purple, the download for Polydeb, and that's available on the Chrome Web Store. This is the branch of the Polyperf repo on GitHub, which has that ratings element built in. You can actually run those tests yourself and check out, modify whatever you want and look into it. And that's it for me. My Polymon is Octorvel. And apparently it likes to spout wisdom for long periods of time, so I want to warn you about that. But that's everything. So thanks and have a good rest of the day.


Today's panel consists of three early-stage entrepreneurs that have all recently come out of Stanford. They are Atosha Cave, PhD in mechanical engineering and co-founder of OPIS-12, Caitlin Albertoli, bachelor's candidate and co-founder of Buzz Solutions, and Sonia Baltodano, PhD candidate in mechanical engineering and founder of Scrapworks. We're going to start the panel by having each of them introduce themselves briefly and describe what it is that their companies do. So maybe we'll start at the far end and move our way down, Atosha. Okay. Yeah, so I graduated a few years ago from the mechanical engineering department, but I did my research in chemical engineering. And we basically are now scaling up what was my research was on the basic science side. And basically what we do is we create higher-value products out of carbon dioxide. So you can imagine taking CO2 admissions and making things like plastic and diesel fuel out of it. And we develop that technology that can do that. And we use metal catalysts and electricity to effectively break apart CO2 in water and to smaller atomic bits and then reform those atomic bits into these new molecules, which again are plastic and diesel fuel. So right now we have some space out in Berkeley. We did a two-year incubator program called Psychotron Road out of Lawrence Berkeley National Lab. So that gave us some initial support beyond the Tomcat grant that we got through Stanford. And so now we're working on our first product, which we're targeting for early next year to come out. We have our manufacturing partner that's in Connecticut. So we'll have our first dishwasher-size reactor that'll convert about 40 kilograms of CO2 per day. And then we'll scale up to something that's the size of a whole plant that can do tons per day of CO2 conversion. Thank you. So I am one of the co-founders of Buzz Solutions, and we actually came out of a class here at Stanford last spring. So we partner with large drone service providers to inspect transmission lines. So the big power lines that are out in the middle of the fields. And then Buzz Solutions brings the predictive analytics to that. So we can tell you where and when a line's going to break down. So we're working to prevent forest fires, such as the large fires that happened this past fall in Santa Rosa. We're working to prevent power outages. And then there's about 50 deaths per year in the US alone in line inspections. The current way that the lines are inspected is through helicopters. So they actually fly helicopters really close to the power lines. And then they'll take pictures with cameras. And so we're working to use drones for that solution now. And we're able to use different kinds of sensors to actually tell you not only what's happening around the line, but what's also happening inside to prevent power outages before they even start. And to keep those linemen that are usually in the helicopters on the ground in safer environments. Great, thank you. Hi, I'm Sonia. I earned my master's through the Joint Program in Design, which has recently evolved into the Design Impact Program. And my PhD is through the Center of Design Research. And we focus on autonomous human vehicle interactions. But Scrapworks, my company, is really focused on increasing the efficiency within complex supply chains, especially in the food supply chain. And this came out of my joint program in Design Master's thesis work, where we were trying to understand why there was so much waste occurring in the production cycle of food. And one of the major reasons is because it's relying heavily on human intuition for a variety of reasons. Mostly because people don't know how to leverage the data streams they already have available to them. And often those data streams may not even be digitized. So what we do is we provide ways to ingest these data streams in a digital way that allow us to use predictive algorithms to also understand where the inefficiencies lie and how they can even run their innovation and strategy in such a way that production and demand are really meeting each other and they're not kind of scared that they're going to lose sales because they're not overproducing. Because that's always the thing that I've learned. The food industry is really terrified of is that we prefer to have access so that we can guarantee a sale. And so we're saying you don't have to have that, make that choice anymore. Great, so I'm going to ask some questions.  But let me start with the following. Was starting a company what you expected and were there any surprises? I would say before I started diving into it, I had a very different vision of what starting a company was. I thought it was more of this brute force, you write a 50 page business plan, then you just execute, execute, execute on that business plan. And then if you work really, really hard, you'll be successful. And in doing some of the entrepreneurship courses here at Stanford before I graduated, I realized that it's actually a lot more fun than that. I think, don't mention this, the whole business model canvas and the lean startup. You're bringing design thinking into how you're forming this entity and being strategic about financing and about how you're going to hire people and build your team. And that can be really, really fun and really creative. And so I would say that was like, it's been a big surprise for me as well as I've moved along. I think another surprise too, again as we were initially first starting a company, there was actually this app that had came out back then called Yo. And the team had raised a million dollars to build this app. So I kind of felt like, well, this app can get a million dollars. We can easily get a million dollars from Fincher Capital. We're actually doing something that's meaningful. But that was not quite the case. We actually, because we only had idea, because it was at the tail end of this massive clean tech funding, Fincher Capital was not investing in clean tech anymore because of failures like Cylindra and that kind of stuff. And so it was really difficult to raise money in the kind of additional way. So we had to go back to the drawing board and be more strategic. And so leaning on philanthropic sources initially, then going to government grants and now recently we've been able to attract private funding as we were starting to build our first commercial product. And we have those financial cost models and their revenue showing that we can be a profitable company. So that was something too that we had to kind of reset and realize that there's gonna be a different path for us to raise money. All right, take Caitlin, do you want to? Yeah, I think definitely it was not what I expected either. Coming out of a class here at Stanford, we launched, we had our financial models built, we had our go to market strategy ready to go. And then we actually found ourself in this almost like a feedback loop. We were going after these customers and we were able to get our foot in the door to get meetings with them through our Stanford connections. But we didn't have a prototype ready. And that was something that was really difficult for us because in order to actually buy our own drones and really get that out the door, we needed some type of capital. But in order to raise capital, we needed some type of customer. And so that really kind of spun us back and forth. We tried to figure out how we were going to break out of the cycle and actually really get our feet moving forward. And so luckily we were able to secure like a pre-seed amount of funding from an accelerator which not only provided us connections to multiple power utilities in the city of Columbus, Ohio, which is now a smart city. But it also helped us actually get our first prototype out the door and then help us gain more customers. So likewise, I came from a program that was very focused on finding, in a way, product market fit, product need fit. And realizing that's a very different thing to find product market fit and product funding fit. Because we had a working prototype that was developed at Stanford. But understanding how to build a model that spoke to investors was a really different thing. And for us, the secret was understanding the ecosystem that Scrapworks could really live within and broaden our own understanding of what the application of the product was. We used to talk about what we did in terms of reducing food waste, which it does do, but it turns out you can sell increasing sales a lot better than you can sell reducing food waste. And the math is the same. It's just understanding of that suddenly became and not even from a customer perspective, it was almost intelligent. You have to find a new way to tell a story for the investment community that is distinct from the story that you tell your customers. And that was something that was unexpected for me. You've each mentioned various classes and experiences you had here at Stanford. I'm wondering if you look back what were some of the most helpful groups, programs or classes that you took for this particular venture that you're all doing now. Yeah, so I would say in terms of learning about entrepreneurship, I took the lean startup course that Steve Blank taught. And that was almost like a startup simulation. And the idea that we had during that class did not end up moving forward at all. But it was still a good way to see like building this business model canvas. And how do you deploy a product and get and find a product market fit. So that was a huge advantage. I also did the Excel Innovation Scholars Program, which is for PhD students post-quals. And you spend a year kind of interviewing and talking with other startups and kind of getting a sense of how these different startups came about. It was a really helpful program as well. I also did Ignite, I think it's a different name now, but maybe not. It was a month long kind of, I call it a micro MBA program over the summer. Whereas a full time one month is for non MBA students. And you actually learn about technology transfer. And in that program actually you brought in the idea of like, hey, we're gonna make something useful out of CO2. And had a team of people working on that idea. So that's kind of how we got our initial cost model made. And we certainly pivoted from that, but that was a huge help. In terms of getting this Opus 12 off the ground, certainly talking with Brian. So if anyone's thinking about doing an idea in clean tech, definitely have coffee with Brian if you're available. He was after a clean tech event here, I went and spoke with him over coffee. And I was like, hey, I'm thinking about starting a company out of this idea. What do you think? And Brian was super helpful and kind of encouraging me to put the team together. And getting everything going. And then we eventually applied for a Tomcat grant. That was our first funding in for the idea. And then we got in Psychotron Road after that. I could talk a little bit about the class that our company came out of. It's called Entrepreneurship in Civil Environmental Engineering here. And it's a graduate class. It's actually taught by four angel investors slash VC and also professors. So it's a great combination actually. And the class basically is you come up with an idea and you form a team. And then every three weeks you pitch to a different panel of investors.  And then you talk to a whole bunch of CMOs. And then you build your five-year financial models, which is an experience in and of itself. And that's just such a valuable learning experience. And then you pitch to a panel of CFOs. And then at the end of the course, you pitch to a panel of investors who can actually invest in your company. And so throughout the course, you get amazing mentorship. You're actually paired with two mentors. Each team is throughout the class. And so our idea really came, it developed so much throughout the course. We were originally going to tackle the maintenance industry and then found out that the market wasn't quite there at the time. And so then we really pivoted. And that was through the help of the mentors and the professors in the class. And Stanford has just been incredible to give the resources and mentorship at such an early stage in the startup. Great. I also agree that part is the Stanford environment. There are so many people here that are really excited to help you explore what your dreams are and help you explore your own potential. Like I have never felt so supported as I have in this university. And people are OK with you changing your ideas and they're excited for your ideas to evolve. So you don't have to like marry yourself to the one thing and then say, I'm going to be this. And it's the only way to justify. Myself in these conversations, people are excited to see how you're changing. Practically speaking, I've been very tied to the D school. Lean Launchpad, I think it was the official term. They actually offer office hours on, I believe it's on Tuesdays from three to five. You can look them up online throughout the year. And you can show up even if you're not planning on taking the class and say, hey, I've got this idea. What do you think? And they'll just give you this really quick feedback. It's not the last word or the first word. But it's a way that you can just sort of start exploring what you might want to do. How you might want to move forward. The principles of quick iteration that Stanford espouses I think is really helpful. And I've also found, I'm also a member of Stardex, which is a program that is officially not Stanford. But it often has many Stanford students and Stanford affiliates inside of it. I highly recommend everyone to check it out, even just to combine and get to know the resources that are available for you there. And there's a surprising amount of money at Stanford. If you, I just wasn't aware of it for like I think a good three years here. I didn't realize all of the financial support that was available for the young seed stage kind of ideas or pre-seed stage ideas. We were funded by the Stanford Green Fund Grant. We are part of Tomcat. And just between those two it was really transformative to just have a little bit of money to start seeing an idea become real. Great, we like to hear that. So you've each spoken to suggestions on classes or activities here at Stanford. The last questions we want to have time to bring everybody back up here for audience questions is what words of advice would you give to somebody who was thinking of starting a company? Maybe we'll start with Sonya and go back the other way. Start early, fail fast, try again. That's yeah, that's really good. I say take the chance because you'll never know until you try and it's such an exciting opportunity to learn from a startup and you just learn so much so quickly. So being able to just go for it, especially if you have the resources like a place here at Stanford does, then I would just say take the chance. I would say that team matters a lot. I don't quite understand how solo founders do it. I've leaned heavily on my other two co-founders, Kendra Kool, who I did my PhD with. And then Nicholas Flanders, who was in the business school here. It's just been so helpful to have an amazing team in place. And so I would say if you're looking to find co-founders while you're at Stanford, it's a great time to do it. It's gonna be even harder once you leave Stanford and you don't have a co-founder. We find someone, but find some way to work together on a meaningful project before you commit because it's also, you can think you have a great team and find out you don't want to really get to the thick of things. And so business plan competitions can be a great way to do that. Taking courses like the, I guess, Lean Launchpad. It's called, that's a very intensive situation where you're simulating this startup and really get to know this person you're working with in the context of starting a company. And then the team can matter so much and then you have to hire great people outside of that. But starting with that core founding team is really, really important. Snaps to that one. All right, wonderful. Let's thank this panel before we.


What's going on everybody got Kyle and Shawn here with late sports cards and we are ripping this is the sports cards Almanac collectors edition volume one and this is case number eight We did two randoms for the break did one for our case number We got number eight and we did one for our draft order show you guys again here real quick We had Chris C with one Thomas has two Zach oh with three Joel T with four Brian s with five Trevor in with six Joe L seven Jeremy s with eight Vadim with nine and Edward with ten Alrighty guys here. We'll get all 10 cards out then we'll begin our hit draft again guys. There is only two rules No influencing the draft in any way saying things like um, take that card or that card should go first something like that Um, and no talking about card values.  I appreciate it man. You guys have been killing it Let's see what we got in case eight. Like I said, we'll begin our hit draft once we get all the cards out Thank you Edward. Appreciate that Yeah, thank you Edward. I appreciate that for sure Me and Sean trying to make it smooth for everybody Again All the credit to lane here for putting together the almanacs. That's an incredible job So we got case eight here and this is break number eight Good luck. Good luck For 175 he could do it. They're gonna have to be coming back. He's gonna be throwing I think I would have to think All righty box one box one Yeah, I do hope everybody's enjoying tonight me and Sean Some football and some almanac hard to beat that If you guys are enjoying, please do hit the like button. Please appreciate it. They're on youtube I don't think there's a twitch like button, but we appreciate y'all on twitch as well First up. We've got Francis in ghanu. Nice one there four of five On the octagon side that one is from 2022 panini ufc select Nice octagon side in ghanu four of five on the green It's a sick one there. I think he's been trained into box now I think he's been trained into box in ghanu four or five Alrighty box two Dobbs and must great for touchdowns. Let's do it drew Let's do it. Yeah, he's a beast paul. He's a beast for sure We found him again. This one is daniel dimes numbered. Um or not numbered on the Field field level silver prism Nice one there. That's a rookie 2019. Um select daniel dimes PSA 10 on the silver field level Start off with two of the highest select levels got octagon side now a field level nice daniel PSA 10 box number three That's what I thought it was cuddy. That's what I thought it was mike tyson training him to box.  Yeah, yeah Just kind of surprised he's from new orleans. I think it'd be a it'd be a saints fan Alrighty guys box three Another vintage it is hank erin on the 1959 tops Nice one there. P. R. PSA three From the milwaki braves 1959 hammer and hank hammer and hank that is sweet Hank, what's the 57 mvp? 1959 another vintage man. I like it. I like it lane Hank erin ps a three 1959 tops Box number four box four looks like sterling It is from top sterling. It is the big hurt frank thomas four out of five with the four um game use patches Nice little number patch there got a pin strike Nice frank thomas. I think he signed the wrong spot, but Nice one there four of five on the um top sterling frank thomas I think he's supposed to sign right here. I think so Nice one there frank thomas four of five out of sterling Love sterling man all game used on those jerseys box five I guess there's not a very definitive place Let's see why he did that box five It is tom brady on the ps a 10 blue that one is number two 99 Nice one there mosaic on the um these are the national pride national pride tom brady number two 99 Very nice one 98 99 another tb 12 little tampa tom I like it 22 mosaic 99 Now we got box six box six. Good luck Alrighty guys still got 13 to go in our mixer or not our mixer our flawless flawless um pyt case teams are all on sale guys. I went through and marked down teams Let's get it moving guys 13 to go. We'll get it going after some more almanac After our 10 cases Yeah, he was pretty good. He was pretty good It's got two hands for the rings. That'll tell you something You can't even fit all his rings on one hand. Oh wow Aaron joan just landed on his head Box six is gonna be Peyton Manning. Nice one there. I like that on the acetate auto Peyton Manning on the celebration that is from 2020. Um Just says panini Not sure what the set is celebration there on the Manning the acetate auto Get the uh, oh filler behind there. See the auto better Nice on card Manning Celebrations acetate auto that one is not numbered. Oh wait, that's one panini one It's it is uh, it is mag with the sticker that is from 2020 panini one Nice Manning on cart He was also pretty good at football. He was pretty good Box seven It is another admiral this time it's from flawless nice one there four of five on the super signatures On card admiral david robinson that one is from 2015 flawless nice throwback there That was a clean design on that one four or five for the admiral out of flawless basketball 2015 and this one is Number nine or number eight number eight Guys, let's get some flawless moving. We do have teams on sale flawless full case pyt coming up after, um After our almanac here Ooh, that's sick out of upper deck sp that is going to be ken griffy jr. On the auto six out of 25 with the manufactured, um United States patch Little flag patch that I like that Ken griffy six out of 25 from upper deck sp Now one is uh 2012 sp Ken griffy jr the kid On the auto with the manufacturer patch and now number nine Who has my fave signature? Hmm I do like daniel dimes Daniel jones has a very nice signature. Um, my favorite might be mower vera, though I really like mower veras Yeah, her bird's very clean Herbert is always like exactly the same Very very clean. I like the number in it too Okay, number nine. We've got larry bird spotlight signatures from noir Nice one. They're the big on-card uh gold ink auto 22 of 49 miss the larry legend That is from 2020 2021 noir spotlight signatures of larry legend Gold ink auto 22 of 49 nice larry And last one here is box 10 Yeah, ricky henderson definitely has a nice auto. Um, like we just saw ken griffy has a great one too Bell tray bell tray does have a good one right number 10 Yelp Dracula. I've never heard that one anthony I like it Box number 10 here guys then we'll get our hit draft going It is nfl shield one of one from panini one Trayvon walker Nice one there from the jacks Rookie one of one shield that is from 2022 Panini one football first pick in the draft last year for the jags Got a little shield action. There we go. That's pretty cool. Nice one there One of one on the trayvon walker first pick in the draft out of georgia Righty guys that will do it for the cards. Let me get them set up and we will begin our draft. Thank you Thank you guys Again, we'll have chris c with the first pick. Give me just a second chris before you make the pick Let me get all the um Cards set up first Get a minute on the clock Yeah, talking about von cards. There's one Little jags shield. That's a von card That larry's a von card too. We are The von case little ken griffy auto to 25 The admiral from flawless to five in The panini one Little Peyton manny It's a good case man hammer and hank in your dimes Ingani All righty guys first up will be chris c with no pick number one Pick number one Yeah, yeah, the kenbei does have a good one with the 55. I do know what you're talking about there I do like that. Uh, the number inscription. I like when they put their numbers. It's it's a nice little thing any kind of inscription Yeah, we've been moving pretty well word for sure We've been moving pretty well All righty guys get one minute on the clock for chris c Ozzy the wizard has a very nice auto Accuracy my boy clubber lang Talking mr. T Talking mr. T. Yeah, can we see the griffy? Yes the griffy. Um is a manufactured, uh us flag relic Then it's six out of 25 on the auto. This is from upper deck 2012 sp Pride of a nation auto ken griffy 2012 upper deck sp on that one Yeah, you're good j with what you said. I saw I just saw that message. Yeah, no, that's good It is a it is a hot case. That was a good case, man definitely Like I said guys if anybody has any ideas or anything lane is very receptive Uh, the shield gotcha Trayvon walker one of one nfl shield Um, could you um, could you give us your order number or um order number or zip code? Please chris Just to confirm it's you that is nice man nfl shield trayvon one of one from panini one Yeah, just order number or um zip code chris 44022 Gotcha chris. Thank you. Thank you. Thank you. All right guys pick number two. We got thomas Thomas had some nice picks tonight, man. Let's see what you got Thomas would pick two minute on the clock sir the bird. He was ready The bird spotlight signatures um from 2021 22 noir or 2020 2021 noir Nice one. They're gold ankle. Larry legend 22 out of 49 nice pick thomas We're any guys pick number three will be zack. Oh zack. Oh got a minute on the clock my friend. Let me get these moved over I'll get a few more on the bottom row So that's an acetate auto. I put a filler behind it to see the auto a little better Hey, of course thomas, of course Um, I can't give an opinion zack unless you're not here to pick I will pick for you, but I'm not gonna give any opinions. Yeah, that's part of the influencing the draft kind of thing One of our rules We don't influence the draft either Try to keep it um so everybody gets to make their own picks Thank you, richard taking a team for mosaic football for tomorrow Again guys coming up some flawless football. Um, we got a two box full case. Um pick your team style We've got 13 to go get that going after our after our almanac cases The patent gotcha. Um, can we get your order number or um zip code, please zack So this is an acetate auto put the filler behind it just to see it a little better Celebration patent that is from panini one at 2020 panini one football Celebration the sheriff 08844 nice. Thank you zack. Thank you. Thank you zack. Alrighty guys pick number Pick number four is going to be jolti Jolti here with pick four No, no, no, it's um, it's or it's your zip code for your order just so we can confirm that it's you um, nicolas The robinson auto 84075 jolti 84075 There we go. Joel. Thank you. Nice one there the flawless on card. That is from 2015 flawless nice throwback there the admiral on the green Lawless signatures Thank you there joe Alrighty guys brine s now with pick number five Yeah drew we do these we try to do them like um a couple times a month for the most part This is the first time we've done a um A 185 dollar one that was this uh price point 185 dollar one sometimes we do ultra high end all the way up to 2500 We've done 500 and we've done um We've done 1500 before so it does vary Um lane's always working on these though. I don't know when the next one will be but it won't be too long Next to the brady is the uh frank thomas sterling Sterling with four game use patches and the auto there Frank thomas four five The big hurt Yeah, right dustin. We've had some we've had some fun cards in the 2500 ones, man For sure. Yeah, of course drew. I appreciate you hanging out with us. Yeah, man. Appreciate you, man Yeah, it's a fun time call for sure Oh for sure All righty guys brian s here with pick five We have about 20 more seconds brian. Oh Do the thomas 233629 Two g3s. All right. Thank you. Thank you, sir brian Four out of five on the frank thomas four game use patches nice little um number patch there in the auto Four out of five on the big hurt Alrighty next up. We got trevor trevor in with pick number six Our daniel times here and then we got in ghanu to five on the octagon side on the back Hey, no problem. I got you. Thank you brian Thank you for joining my man Yeah, we even had a um, we even had a personal almanac. Um, I ripped that one It was a 100 box run and then you would um when we were when uh, you were up You just give me a number of the available ones left and we were doing it like that That's a fun one too. I had a lot of fun with that Magnet graded trash list Shane has one. I think alvin's got one. Yeah I think uh Yeah, I think steve's got one Yeah, you gotta you gotta specify. Yeah It is game used though game used stream used The random number almanacs. What's that uh ball? All righty trevor about 20 more seconds Next almanac has sean's chain.  No way No way, I think I'm trying to figure out a way, but I think at the end of the season Am I auctioned it off or something? Sign it, yeah I'll put a trash list on the back Yeah, you know auction it off and every penny will go to like st. Jude's or something. I like it, you know Yeah, definitely Hank erin 4 3 2 3 2 Hank erin for trevor Thank you, sir 1959 tops on the hammer and hank PSA 3 again, that's not a bad grade for a uh 60 what 64 year old cart PSA 3 on the hammer and hank Thank you, trevor.  Shane graded the or not actually graded but the sgc graded trash list Incredible Incredible Yeah, I feel that mark for sure for sure. All righty minute on the clock 40 mr. Joe Give me like all time trash list Right on the back. Yeah all time trash list. Well, no, we know who's won. Yeah Oh, yeah Alrighty mr. Joe give you about 20 more seconds 32 And I guess Hey, thank you Edward buying the Texans in flawless down to 12 guys down to 12 on flawless Don't see anything Joe No, not yet All right, joel Mr. Joe, thank you chris buying a team in mosaic football tomorrow forest Thank you guys just 12 to go guys on um flawless full case py t-style. We did mark down all the teams Alrighty guys. I don't see anything from joe. We'll make a pick for mr. Joe. We're gonna go with the kin griffy We'll go with the kin griffy auto six out of 25 for you, sir On the usa manufactured flag that is from 2012 upper deck sp Pride of a nation kin griffy Thank you, joe Get that one right out to you, sir. So next up I will have pick number eight is gonna be jeremy s jeremy s Got a brady, uh dany dimes and in ghanu to five A minute on the clock for you jeremy next up. I'll have the deem and then edward will get the um the last card Appreciate you as always guys. This has been a fun night You know really running smoothly as well. I appreciate everybody I know shawn does as well. He was ready to go today. Oh, yeah, hasn't had to uh, hasn't had to ban anybody You know jaker today. No jacus Been easy Oh brian branch. He was he got hurt the first game too. Was that who was? Yeah, the rookie mckillie. She's done Who has a killie righty jeremy? Yeah, yeah, I know the uh the baseball definitely got Got kicked up there. All right, give it to jones Come on Come on. Dobbs almost got there. Don't do it to me. Yeah, no sprinkles. No jake And easy appreciate that guys. Yeah Yeah, they're they're they're lurkers.  You're here on duty of uh Keep a line in chat too. No, that's dylan Okay, wow Alrighty guys our 12 teams remaining on flawless. We got falcons bangles cowboys lions jags chiefs Patriots jets eagles steelers bucks and the commanders that is it guys all teams on sale um for flawless Alrighty jeremy about um, I'll give you another 15 seconds here. Then we will make a pick for you, sir The jones 6 1802. All right. Thank you, jeremy. Daniel dimes, uh rookie ps8 10 on the um field level Field level silver nice one there daniel dimes rookie variety two to go Got an enganu octagon sides of five And we've got brady brady to 99 on the national pride This will be vadeem n. Let's pick number nine vadeem jeremy foxman sell in those bets I already got two cards to choose from here vadeem With pick number nine Again guys teams on sale for nt Get that one going after case number 10 get all the almond act done today Alrighty vadeem. We'll give you another 20 seconds And we will make a pick for you Appreciate everybody making this easy on me and shon today. Yeah, that's been nice guys Let's get a uh, let's get the flawless sold out. We got nt sold out full case divisions So we'll get some uh, we'll get some high-end football going out through our almanac, right? I'm not seeing anything for vadeem So we will take the brady. We will take the brady for vadeem 2022 mosaic tom brady to 99 on the ps8 10 the goat Tampa tom That one is the national pride ps8 10 hampa Then edward will be getting the francis and ganu. Um, select octagon side number four out of five Not bad there. He has um taken up some boxing. He's been training with mike tyson Trying to get some boxing going Alrighty there edward nice pick or a nice uh nice car with number 10 Alrighty guys in that we'll do it for our almanac collectors edition number one case number eight Give me just a moment guys. We'll get number 10 going net or number nine going next


Temptation. How can you resist it? Let's find out. So I get more and more of these kind of lifestyle questions nowadays. And there's a genre, a particular genre, I think I can respond to every single question in one single video.  So the question can be, you know, from different people in emails or live streams in different formats. It'll be, oh, I really want to stop watching porn or playing video games compulsively or scrolling through social media all the time or, you know, some more traditional vice like tobacco, alcohol, something like that, right? People ask me these kind of things. They get themselves into vices. How do I get out? Okay. Now usually, you know, maybe I'm a little ashamed to say, but on live streams and stuff, when I get this kind of question, I'm a little condescending about it. Because I think a lot of people have this idea. I mean, it's weird to even ask someone about that because all of the solution to all of these problems are, you know, directly within your moral agency. They're all, I mean, this isn't like, how do I achieve something great? It's like, how do I stop doing something? Okay, you don't have to do it. You can just stop doing it, right? You know, I or no one else on the internet, we are not going to be Santa Claus jumping around the world knocking on your door, making sure you're not watching porn. Okay, it's not our responsibility. It couldn't be, if you wanted it to be, it's yours.  When I was younger, actually, there was a youth pastor I had. And there's one particular thing just he said off the cuff that I remember, because well, it's actually very un-Protestant. It's nearly Pelagian. But he said something like this, he said, I think that in truth, everyone out there is perfectly loyal, without any wavering, without any disobedience, perfectly loyal to their own moral convictions. Now, they might not be consistent moral convictions, but they're perfectly loyal to them.  Oh, the temptation is just too hard to resist. I can't do it. Please someone else help me blah, blah, blah. It's just melodramatic nonsense, because if they were really serious about that, they would have stopped. What they really, you know, the fact that they're, they're having to talk about this just indicates maybe they see pornography as something that's going to be bad for them in the future, they can already see that it's getting pretty bad. But, you know, if they really were serious about it, they could just stop, they could just stop now, but they really, oh, I can still get some enjoyment out of it, right? It's just there's a kind of hypocrisy in that. And no one wants to voice that hypocrisy. So instead, even, you know, they don't even want to want to admit it to themselves. So they instead pretend to be victims of their own psychology, victims of their own behavior. Oh, I just can't. Oh, I can't help myself. I mean, if you can't help yourself, who else can? Okay, it's you. It's you or no one else. You can resist all temptation. God has given you grace sufficient to resist any temptation. Okay, that's just how it is. Get over it. You can stop. So now, now that said, I mean, that's one of the reasons I mean, when I look at my the temptations I've quote unquote struggled with, it's always, you know, I as time goes on, I look back at it and be like, Oh, yeah, I could have just stopped whenever I wanted, you know, same thing when I was a kid, I used to play video games all the time, right? And I just stopped, I was like, Oh, this is a bad habit. I'll stop. That's it. Same thing with porn. Okay, when I was younger, I did that thing was like, Oh, I really wish I just wish I could resist this temptation, man. Oh, help. I'm being oppressed by my own behavior. But once I got serious about it, I just stopped and I stopped cold turkey. Like it's not even something that like tempts me anymore. I mean, well, I don't know. I don't want to say that and, you know, evoke temptation, but you know, it's not something that is really on the table. You know what I mean? So that's definitely my perspective. And now I will say, because a lot of people have been, Oh, Luke, you're just dabbing on us. Oh, I really, oh, I really just have no agency. I can't solve this kind of stuff. Now, first off, you have to realize any of these kind of addictions. They they're not just it's not like picking your nose. Okay, it's not like biting your fingernails. It's not like something you can just reflexively do all the time. Okay, so it's not really can't really be that compulsive to you, no matter what it is. I mean, in the case of smoking, like smoking is something that actually carries physiological addiction to it. Frankly, I think all of these habit forming things have some kind of physiological addiction to I mean, just by definition, like, you know, your mind is reflected in the physical reality of your brain, right? There's always going to be something physiological about it.  What was I going to say? So like even in the case of smoking, right? Smoking is not just something you just think about smoking and you start smoking. It's a chain of behavior.  Okay, all you have to do is break one link in that chain and the addiction, quote unquote, is broken. That's all you have to do, right?  Now, I will say, let me give you some actual let's let's assume that I'm totally wrong here though.  You know, you don't necessarily, it's not a comfortable thing for people to believe that they all like subtly actually like their addictions or something like that. I'm not necessarily even arguing that, but let me give you some other pointers. Okay, if you actually want to resist temptation because it is within your power, it is within your power to resist them, but I'll give you a couple pointers regardless. Okay, number one, it's actually a very biblical, biblical recommendation. Flee temptation. Physically, flee temptation.  In the case of, you know, let's say pornography, good sexual temptation, right? If you get home every day after school or work and your first reaction is, oh, I'm just gonna go, I'm just gonna go sit at my computer desk. We'll see what happens, right? And really, you're in a state of boredom or you have nothing, even if you have nothing else to do, you're putting yourself in the line of fire, right? It is very easy to just not be there. It's very easy to find something else to do. It's very easy to, you know, unless you have something specific to do on your computer, don't use it or your cell phone or whatever, right? It's a temptation very easy to resist, okay? And a lot of people who, I know a lot of Zoomers, you know, they might not even have computers, they just have phones and all this kind of stuff. Separate yourself from your phone. You don't need your phone all the time. You don't need Instagram. I would say all the time. You don't need Instagram at all, okay? You don't need any of this crap, right? And you know you don't. Oh, I know those, all this rational is, oh, I need this because of my friends.  Okay, whatever. You don't. Separate yourself physically from temptation, digitally from temptation. Same thing, right? Same thing in the case of cigarettes. Like, make sure you're not in a place where you are being tempted by those things. That is the easiest way to resist temptation. Separating yourself bodily from the thing that tempts you. Very easy. Like, go to a public park. You're not going to watch porn. I hope you're not going to watch porn in a public park, however you do it, okay? But put yourself in a public library, something like that, right? Put yourself in a place where you're not tempted to do that kind of stuff, okay? Number two, okay? So separate yourself from temptation. Number two, what was number two? Forgot about, oh yeah, number two. Learn how to be bored. One of the most important life lessons you could possibly have. Learn how to be bored. You know, I am actually an old boomer. In fact, I was born in the 1980s, barely, but I was born in the 1980s and I remember the world before internet. I remember the world before social media. I remember all this kind of stuff, okay? I even remember, we used to not have cable TV, okay? I remember what it's actually like to be bored, okay? I know you Zoomers, you have this thing you call boredom, but it's not boredom. You don't know what true boredom is. You don't know the definition of the word, okay? Boredom. Learn to love it. Learn to enjoy boredom because here's my theory, okay? Most of the reasons that people play video games all the time, that people, you know, scroll through social media, watch porn, all this kind of stuff, the reason they do these things is not actually because they really find them that entertaining, okay? In the case of pornography, I think most people who consume pornography actually hate the thing. It's just like an addiction for them. And I think what originally draws them to it is the fact that it's just there. They're bored. They're on the computer. Here's something stimulating, okay? Same thing with all these other things. Here's something that's just stimulating. So learning to be bored, and this actually goes hand in hand with the first recommendation, physically separating yourself, learn how to be bored, learn how to like literally, instead of when you get home and play five hours of video games, try going five hours doing nothing. That is not even, don't be on the computer, do nothing. Try to do that. Try to read something. Actually, nowadays it's, it's, I bet it's legitimately difficult for anyone to pick up a book and read a single page. Okay, that's my theory. I think it's very cognitively difficult for most people to do that because that is something that is so like you don't have this constant stimulation and it's hard for people to do. Now, why is it important to learn to be bored? Because all of these things that you're addicted to, they are hyper stimulation.  You can't just go out in the middle of nowhere and enjoy life. Okay, you can't just do things.   People are so in addictive, you know, a lot of people nowadays, they say, Normie and Normie YouTube, they'll say stuff like dopamine detox. A dopamine detox. What is a dopamine detox? It's supposed to be, oh, well, normally we're in this hyper stimulated modern world where we constantly need to consume product to just have stimulation to, I don't know, just feel good or something like that. You just, once you separate yourself from that, your addiction to dopamine, your addiction to constant stimulation decreases and you learn to enjoy going in the middle of nowhere. You learn to enjoy reading a book or something like that.  A lot of people will ask me, oh, how do you have so much time to accomplish things? And oh, how do you, I don't know, how do you get stuff done? That's like an abbreviation that people have like GSI or GSD, whatever it is, whatever, get stuff done. That's like a meme abbreviation because the concept of just sitting down and doing something is so difficult for people to understand because they just need constant stimulation to survive. So separating yourself from all of that, going through the painful process, painful, it's not even necessarily painful, but going through the process of just not being stimulated by this kind of stuff is going to, it's not only a temporary solution, it's a permanent solution. It's the same thing, you know, in China, in China, they brought Oreos to China, Nabisco or whatever company does Oreos. And when they brought Oreos to China, the Chinese people were like, these things are way too sugary. Okay, no one bought them, they were disgusting, like they had all this sugar in it, way too much, I mean enough sugar for an American to like, but Chinese people, they hate that amount of sugar.  So what Nabisco did is they were like, okay, we'll sell Oreos, but we're going to tone down the sugar. Okay, so it has way less sugar. And Chinese people love the stuff. Okay, I'm sure they enjoy it just as much as Americans enjoy their extremely sugared Oreos. And a lot of people have this idea that, oh, if I'm not constantly being stimulated, I'll have less fun. That is not the case. That is absolutely not the case. Instead, you learn to enjoy actual life rather than pretend life, rather than hyper-reality on the internet or something like that, right? You learn to, I mean, how many, how many guys actually on pornography, on pornography, right?   They don't know how to enjoy the real thing. And that's, that's modernity for you. Okay, so anyway, how do you resist temptation just by resisting it? But I gave you two pointers, physically separate yourself, learn to be bored. All right, see you guys next time.