1 00:00:00,150 --> 00:00:00,690 Okay. 2 00:00:00,870 --> 00:00:06,840 So now what we're going to focus on is actually getting HTML implemented with our web application. 3 00:00:06,840 --> 00:00:12,570 So right now we're responding with these little ugly things of text like this. 4 00:00:13,590 --> 00:00:16,350 And before I go too much further, just another note. 5 00:00:16,350 --> 00:00:17,700 If you know HTML, great. 6 00:00:17,700 --> 00:00:21,360 If you don't know HTML, you'll just sort of have to hang on for the ride here. 7 00:00:21,360 --> 00:00:22,740 I'm sure you've heard of it. 8 00:00:23,010 --> 00:00:27,680 Well, I guess hopefully I'm not assuming too much, but most you've come across HTML. 9 00:00:27,690 --> 00:00:30,210 Every web page to look at is built with HTML. 10 00:00:30,240 --> 00:00:35,940 Behind the scenes, there is this markup language that is dictating what elements go where, and then 11 00:00:35,940 --> 00:00:39,090 there's CSS, which we'll get to later, which makes it look pretty. 12 00:00:39,300 --> 00:00:45,210 So what we're going to do is focus on writing HTML so that we can have things like a form and a button, 13 00:00:45,210 --> 00:00:48,090 or we can have large text, which is known as an H one. 14 00:00:48,450 --> 00:00:51,960 And we actually can do that right now in a really hacky way. 15 00:00:52,560 --> 00:00:59,850 So let's say, rather than just, well, let's do it for my joke, what I could do is make this joke 16 00:01:00,840 --> 00:01:02,430 italicized part of it. 17 00:01:02,430 --> 00:01:04,830 So I'll say, what do you call a dog that does magic tricks? 18 00:01:04,830 --> 00:01:10,950 And I'll italicize the answer by putting around it the m tag, which is how you make things italicize, 19 00:01:10,950 --> 00:01:12,570 sense for emphasis. 20 00:01:14,740 --> 00:01:21,370 So if I just put HTML inside of this string and actually I can make this bold too, so I'll do strong. 21 00:01:22,210 --> 00:01:27,190 First thing you should notice if you've ever written HTML, this is a horrible way to write it instead 22 00:01:27,190 --> 00:01:29,230 of a single line like this. 23 00:01:29,230 --> 00:01:30,970 It's just not a good experience. 24 00:01:30,970 --> 00:01:32,620 So we're going to see how to get around that. 25 00:01:32,890 --> 00:01:36,220 But I'm more just showing you it's possible to have HTML in there. 26 00:01:36,220 --> 00:01:39,100 So if I go to slash joke. 27 00:01:39,890 --> 00:01:43,760 You can see I'm getting HTML that's being rendered properly. 28 00:01:43,760 --> 00:01:44,580 Properly. 29 00:01:44,600 --> 00:01:50,150 So if we wanted to get like a form on our home page, which is what we want, eventually by the end 30 00:01:50,150 --> 00:01:56,360 of this video, we could put all the HTML to make a form instead of this string, but it's going to 31 00:01:56,360 --> 00:01:58,160 be significantly longer than this. 32 00:01:58,160 --> 00:01:59,480 So we're not going to do that. 33 00:01:59,480 --> 00:02:00,880 And there's a bunch of reasons why. 34 00:02:00,890 --> 00:02:05,540 The main one is that it's a pain, but it's also hard to change things and it doesn't really allow us 35 00:02:05,540 --> 00:02:07,970 to style it with CSS when we get there. 36 00:02:08,300 --> 00:02:11,660 So to jog your memory, this is what we're working towards. 37 00:02:12,050 --> 00:02:13,510 This is what our app will look like. 38 00:02:13,520 --> 00:02:17,590 We have a big background photo of a beautiful mountain in Argentina. 39 00:02:17,600 --> 00:02:19,250 Then we've got join us. 40 00:02:19,250 --> 00:02:21,560 Big text, different font, different color. 41 00:02:21,740 --> 00:02:23,360 Then we've got this other text. 42 00:02:23,360 --> 00:02:26,920 Enter your email to join 500 or whatever the number of users is. 43 00:02:26,930 --> 00:02:32,720 Others on our waitlist we are 100% not a cult and then we have a form with a single item in it or a 44 00:02:32,720 --> 00:02:37,400 single field, a text field, and then a button that will submit the form. 45 00:02:38,030 --> 00:02:43,880 But if we strip away all the pretty styling, all the makeup or paint on top, this is what we what 46 00:02:43,880 --> 00:02:44,450 it looks like. 47 00:02:44,450 --> 00:02:46,970 This is the bare bones of it. 48 00:02:46,970 --> 00:02:49,580 So this is what we'll get to by the end of this video. 49 00:02:49,940 --> 00:02:51,950 So this will be our home page. 50 00:02:51,950 --> 00:02:59,510 We are going to replace the content here, this single string with this. 51 00:02:59,600 --> 00:03:01,910 And to do it, there's a couple of steps we have to take. 52 00:03:02,690 --> 00:03:04,580 So here is the HTML itself. 53 00:03:04,610 --> 00:03:05,420 You don't want to type it. 54 00:03:05,420 --> 00:03:07,070 This is the HTML we need. 55 00:03:07,070 --> 00:03:08,150 We've got an H one. 56 00:03:08,150 --> 00:03:09,200 It says, join us. 57 00:03:09,230 --> 00:03:10,400 We've got a paragraph. 58 00:03:10,400 --> 00:03:12,050 We'll come back to this class. 59 00:03:12,050 --> 00:03:13,730 We don't need that actually right now. 60 00:03:14,390 --> 00:03:19,570 But then we've got enter email to join Strong, which is the bold around 518. 61 00:03:19,580 --> 00:03:22,280 Then we've got a form which will also come back to. 62 00:03:22,310 --> 00:03:27,800 So I'm just showing you this is all we need to actually make the HTML, the correct HTML to make that 63 00:03:27,800 --> 00:03:28,310 page. 64 00:03:28,310 --> 00:03:31,820 Now how do we actually get this to be sent back? 65 00:03:31,820 --> 00:03:36,860 What we want is in this route, when you go to slash, basically give the user this. 66 00:03:37,130 --> 00:03:39,020 We can't just make that a single string. 67 00:03:39,020 --> 00:03:43,580 So what we do is use something called EJ's and you'll have to bear with me here. 68 00:03:43,580 --> 00:03:45,530 There's a couple of steps we have to go over. 69 00:03:45,530 --> 00:03:50,270 And if you're a new to web development, this will be a bit intimidating, possibly. 70 00:03:50,270 --> 00:03:54,770 It's probably a terrible thing for a teacher to say, but just hang in there. 71 00:03:54,770 --> 00:03:56,660 Just know that we're going somewhere. 72 00:03:56,660 --> 00:04:00,860 And some of the steps along the way may be confusing, but once we get there, it won't be too bad. 73 00:04:00,860 --> 00:04:05,720 So this is what's known as a templating language stands for embedded JavaScript. 74 00:04:05,930 --> 00:04:08,570 It's an alternative to writing just plain HTML. 75 00:04:08,570 --> 00:04:13,280 It allows us to add in variable values and code logic. 76 00:04:13,280 --> 00:04:16,310 So this is where's that slide? 77 00:04:16,310 --> 00:04:22,880 If you go back here, this is HTML, but this right here is not always 518. 78 00:04:22,880 --> 00:04:25,670 So we couldn't do that in a normal HTML file. 79 00:04:25,670 --> 00:04:28,370 We would want to be able to say, okay, this is HTML. 80 00:04:28,370 --> 00:04:34,670 But right here in that strong tag, in the bold area, there's a variable, but you can't do a variable 81 00:04:34,670 --> 00:04:36,470 in regular HTML. 82 00:04:36,560 --> 00:04:39,020 So that's what we're going to use edges for. 83 00:04:39,050 --> 00:04:40,790 It stands for embedded JavaScript. 84 00:04:40,870 --> 00:04:44,870 It's just HTML that allows you to embed JavaScript inside of it. 85 00:04:44,870 --> 00:04:46,700 So we'll see how to do that in a moment. 86 00:04:46,850 --> 00:04:52,370 But the first thing we have to do, npm install dash dash save EJ's. 87 00:04:52,520 --> 00:04:58,880 This is to you should know by now hopefully that this is going to tell our app and our package that 88 00:04:58,910 --> 00:05:05,510 JSON that we want Edge's installed and it should install it and save a record to package JSON, which 89 00:05:05,510 --> 00:05:07,940 you can see now we have edges there. 90 00:05:08,810 --> 00:05:11,000 That's our first step then. 91 00:05:12,040 --> 00:05:13,880 We're going to do something else. 92 00:05:13,900 --> 00:05:20,620 This is configuring our express application app set view engine comma edges. 93 00:05:20,620 --> 00:05:27,310 So app set is a method that allows us to set certain settings in our app view engine is the most common 94 00:05:27,310 --> 00:05:28,180 one to change. 95 00:05:28,180 --> 00:05:30,190 There are other templating engines. 96 00:05:30,190 --> 00:05:36,100 There's things like Jade, which is a common one, Hamil, there's other languages. 97 00:05:36,220 --> 00:05:39,370 So basically they are similar analogs. 98 00:05:39,370 --> 00:05:43,150 tJS So we'll go do it at the top. 99 00:05:43,150 --> 00:05:47,320 It's a traditional place to do it, just like we're setting up our connection up here. 100 00:05:47,320 --> 00:05:52,900 It makes sense to set and to configure application wide things up top. 101 00:05:52,900 --> 00:05:54,190 So we'll do that. 102 00:05:54,400 --> 00:05:58,780 And then the next step is where do we actually start writing these files? 103 00:05:59,230 --> 00:06:02,020 And to show you that I'm actually going to work backwards. 104 00:06:02,020 --> 00:06:10,030 So the line that we'll be running in our route that will actually render a file is render some string, 105 00:06:10,030 --> 00:06:11,290 in our case, home. 106 00:06:11,410 --> 00:06:15,400 And the process that will happen behind the scenes that Express doesn't really show you or tell you 107 00:06:15,400 --> 00:06:20,590 about is it will automatically look for a directory called Views. 108 00:06:20,590 --> 00:06:24,010 That's a standardized name, so it's going to look for a directory called Views. 109 00:06:24,010 --> 00:06:26,950 You can change that if you wanted to, but we're not going to. 110 00:06:27,460 --> 00:06:35,230 And inside that directory it's going to look for a file called Home Dot, whatever the View Engine we 111 00:06:35,230 --> 00:06:37,330 said, which is in our case. 112 00:06:37,330 --> 00:06:42,070 So it's going to look for home dot edges in that view's directory. 113 00:06:42,340 --> 00:06:47,410 So what that means is we need to create a views directory and then we need to create a file, we'll 114 00:06:47,410 --> 00:06:52,990 call it home, but you could call it landing page, CJS or root JS, whatever it is, you just need 115 00:06:52,990 --> 00:06:54,100 to remember the name. 116 00:06:54,490 --> 00:06:55,840 So let's do that now. 117 00:06:56,170 --> 00:07:00,070 We'll do right click or you can do make directory. 118 00:07:00,070 --> 00:07:07,510 If we're more comfortable with the terminal new folder views inside of there, we'll make a single file 119 00:07:07,510 --> 00:07:13,390 which we will call Home Edge's again, you could call it whatever as long as it ends in Edge's and you 120 00:07:13,390 --> 00:07:17,890 remember what you call it, and we'll start with a single H one. 121 00:07:18,160 --> 00:07:22,510 We'll just say This is HTML and save it. 122 00:07:22,870 --> 00:07:30,700 Then we go to our Edge's and let's just work with our root root rather than sending resend. 123 00:07:30,700 --> 00:07:31,780 We have count. 124 00:07:31,780 --> 00:07:33,760 We're no longer working with resend. 125 00:07:33,760 --> 00:07:37,090 We have a rest render home. 126 00:07:38,530 --> 00:07:40,240 Just I'm going to be a broken record. 127 00:07:40,240 --> 00:07:46,480 But it's looking for home DJs because we added this view engine is aegis and it's looking in views by 128 00:07:46,480 --> 00:07:47,110 default. 129 00:07:47,110 --> 00:07:48,820 So we need to make sure we have that file. 130 00:07:48,850 --> 00:07:53,620 It's going to take the contents of this file and send it all back rather than a single line. 131 00:07:53,950 --> 00:07:57,790 We can write our code now in a separate file, so let's see if it works. 132 00:07:58,810 --> 00:07:59,770 Starter App. 133 00:08:00,250 --> 00:08:01,600 Let's try going to the home page. 134 00:08:01,600 --> 00:08:02,440 There we go. 135 00:08:02,440 --> 00:08:03,670 This is HTML. 136 00:08:03,940 --> 00:08:09,820 Our other pages still have well, this one is HTML, but it's not coming from a separate file. 137 00:08:10,780 --> 00:08:13,900 So then what we can do next is I'll just show you. 138 00:08:13,900 --> 00:08:20,200 You could use rest out, render home, you can send the same file and all of these instead of resend. 139 00:08:20,200 --> 00:08:23,050 You can reuse files in different routes. 140 00:08:23,140 --> 00:08:24,220 It doesn't matter. 141 00:08:24,460 --> 00:08:26,950 So here we have the same thing for joke. 142 00:08:28,670 --> 00:08:30,920 So now if I go to slash joke as well. 143 00:08:33,289 --> 00:08:34,909 I get the exact same thing. 144 00:08:35,419 --> 00:08:37,539 So these don't care about what they're called. 145 00:08:37,549 --> 00:08:41,780 The name of this has nothing to do with the root, although it should if you're just following best 146 00:08:41,780 --> 00:08:42,559 practices. 147 00:08:43,159 --> 00:08:44,120 I'll get rid of that. 148 00:08:44,810 --> 00:08:50,120 So now let's just copy the HTML that I provided here so that we don't have to type it all ourselves. 149 00:08:50,120 --> 00:08:52,690 So in home PJs, I'm just going to paste this in. 150 00:08:52,700 --> 00:08:57,110 We'll go over what some of this is, in particular the form we haven't talked about. 151 00:08:57,650 --> 00:09:01,850 But let's just get this in here and see how it works. 152 00:09:02,810 --> 00:09:04,310 So we have to save the file. 153 00:09:05,600 --> 00:09:10,720 Now we get our form so we have join us, which is our H one, which is what we started with. 154 00:09:10,730 --> 00:09:12,530 Then we have a paragraph again. 155 00:09:12,530 --> 00:09:14,510 Don't worry about the class at all. 156 00:09:14,510 --> 00:09:16,880 For now you can actually just get rid of that if you want. 157 00:09:16,880 --> 00:09:18,590 Just focus on keeping it simple. 158 00:09:19,100 --> 00:09:22,340 Then we've got enter your email to join and said the paragraph. 159 00:09:22,820 --> 00:09:24,440 All of this is in the paragraph. 160 00:09:25,400 --> 00:09:26,210 There we go. 161 00:09:27,380 --> 00:09:29,570 518 is hardcoded for now. 162 00:09:29,570 --> 00:09:30,860 We're about to replace that. 163 00:09:31,430 --> 00:09:32,960 We are 100% not a colt. 164 00:09:32,960 --> 00:09:37,460 And then we've got this form which we're just going to ignore for now, except know that there's a text 165 00:09:37,460 --> 00:09:41,030 input and a button which we get that all looks good. 166 00:09:41,390 --> 00:09:45,920 And in fact we can clear out that form and just leave it like this to start. 167 00:09:46,710 --> 00:09:47,310 Okay. 168 00:09:47,640 --> 00:09:53,160 So now what we want to do is figure out how we get our data in here, because right now this is just 169 00:09:53,160 --> 00:09:54,390 plain HTML. 170 00:09:54,750 --> 00:09:57,780 There's no use for this EJ's stuff that I was talking about. 171 00:09:57,840 --> 00:10:05,670 But the whole point is that we want this to be five, 19, five, 24, 99, 10,000, whatever the result 172 00:10:06,060 --> 00:10:08,490 of this is, whatever count is. 173 00:10:08,490 --> 00:10:12,900 But how do I get count this variable over here? 174 00:10:13,920 --> 00:10:21,060 What we do is after resort render, we can pass a comma and pass a JavaScript object and I'm allowed 175 00:10:21,060 --> 00:10:23,200 to pass data through. 176 00:10:23,220 --> 00:10:24,870 So what we want to send is count. 177 00:10:24,870 --> 00:10:26,670 But first I have to give it a name. 178 00:10:26,880 --> 00:10:28,620 So typically you'll see something like this. 179 00:10:28,620 --> 00:10:29,730 Count, count. 180 00:10:30,180 --> 00:10:33,690 Rather than that, I'll do data. 181 00:10:35,240 --> 00:10:36,470 Is count. 182 00:10:36,860 --> 00:10:38,210 I'm going to change it later. 183 00:10:38,210 --> 00:10:39,790 But just to show you, they're distinct. 184 00:10:39,800 --> 00:10:46,100 So what this does now is it says, okay, take count, whatever it is, which last time we counted is 185 00:10:46,100 --> 00:10:47,000 501. 186 00:10:47,810 --> 00:10:50,120 Send that to this template. 187 00:10:51,350 --> 00:10:56,710 And give it the name of data, basically put it in an object under the key of data. 188 00:10:56,720 --> 00:10:59,480 So inside of here, if I refer to data. 189 00:11:00,150 --> 00:11:02,760 It will be referring to whatever account was. 190 00:11:03,300 --> 00:11:07,110 The problem is, I can't just say data if I just do that and refresh. 191 00:11:07,110 --> 00:11:10,470 We just get into your email to join data others on our wait list. 192 00:11:10,710 --> 00:11:16,320 So I need a way of saying, hey, this is not you know, this is not HTML, this is special, this is 193 00:11:16,320 --> 00:11:16,940 code. 194 00:11:16,950 --> 00:11:22,380 And the way we do it, it's weird if you've never seen it before, it looks like this. 195 00:11:23,160 --> 00:11:30,360 So we have brackets just like we would say HTML, the angle brackets, but then percent equals and then 196 00:11:30,360 --> 00:11:32,190 percent on the closing side. 197 00:11:32,190 --> 00:11:36,160 And this is basically a signifier that says this is not HTML. 198 00:11:36,180 --> 00:11:41,250 Whatever is in here is going to return a value that we want to put in the HTML. 199 00:11:41,250 --> 00:11:45,600 So if data is equal to 500, it will be replaced with 500. 200 00:11:45,600 --> 00:11:46,650 If it's equal to 12. 201 00:11:46,680 --> 00:11:48,060 It will be replaced with 12. 202 00:11:48,990 --> 00:11:50,010 Kind of a lot to take in. 203 00:11:50,010 --> 00:11:52,380 As I was saying, there's a lot of moving pieces here. 204 00:11:52,920 --> 00:11:55,890 Unfortunately, we don't have we don't really have time. 205 00:11:55,890 --> 00:11:57,690 I guess we could we could have time. 206 00:11:57,690 --> 00:12:00,380 But the course isn't on EJ's. 207 00:12:00,390 --> 00:12:02,090 It's not on web development. 208 00:12:02,100 --> 00:12:05,640 This is just a vehicle to showing you how to make something. 209 00:12:07,350 --> 00:12:10,290 So data will be count. 210 00:12:10,290 --> 00:12:13,050 Whatever's coming through there, let's try it. 211 00:12:15,070 --> 00:12:16,390 And we've got 501. 212 00:12:16,810 --> 00:12:19,900 And of course, we could insert one more user very quickly. 213 00:12:20,500 --> 00:12:21,880 Let's do Austin. 214 00:12:22,450 --> 00:12:23,470 Two, three, four. 215 00:12:24,990 --> 00:12:26,010 Refresh our page now. 216 00:12:26,010 --> 00:12:29,340 It's 502, so we've accomplished our goal. 217 00:12:29,370 --> 00:12:32,370 If you feel comfortable with how it's working, go ahead, stop. 218 00:12:32,370 --> 00:12:35,290 Move on to the next video if you have a couple of questions. 219 00:12:35,290 --> 00:12:37,440 So I'm going to go through the process again. 220 00:12:37,440 --> 00:12:40,290 I'm not going to recreate it, but I'm going to step through what's happening. 221 00:12:40,710 --> 00:12:44,640 So we'll start with this app, get slash that's activating the route. 222 00:12:44,640 --> 00:12:52,380 When I go to this URL, we still have our slash joke, for instance, but we're talking about the root 223 00:12:52,380 --> 00:12:52,680 root. 224 00:12:52,680 --> 00:12:59,730 When I hit that root, first thing that happens is this code runs, which the end result is it figures 225 00:12:59,730 --> 00:13:02,040 out how many users are in our database. 226 00:13:02,040 --> 00:13:09,660 It's running this code in our database, select count star as count from users that's coming back stored 227 00:13:09,660 --> 00:13:10,620 in results. 228 00:13:10,950 --> 00:13:16,470 Inside of results, we're finding it the reason it's stored undercount is because of this. 229 00:13:16,470 --> 00:13:21,750 AS So if I call this counter, then this needs to be counter. 230 00:13:23,010 --> 00:13:23,430 Okay? 231 00:13:24,660 --> 00:13:27,630 So then we're storing that in a variable called count. 232 00:13:27,630 --> 00:13:32,100 So this has something like 501 in it. 233 00:13:32,550 --> 00:13:40,860 Then what we're doing can get rid of this line now is we are rendering the home this file which is automatically 234 00:13:40,860 --> 00:13:43,170 looked for in the views directory, which is right here. 235 00:13:43,740 --> 00:13:47,820 We have a bunch of HTML in here, some of which we haven't talked about yet. 236 00:13:48,090 --> 00:13:54,480 But then we have this one variable with this very weird syntax that we haven't seen before. 237 00:13:54,840 --> 00:13:59,940 This is our way of saying, Hey, this is not HTML, this is a special value. 238 00:13:59,940 --> 00:14:01,410 We can put JavaScript in here. 239 00:14:02,040 --> 00:14:09,360 And just to show you a couple other things, I'll do another H one and then our funky bracket thing 240 00:14:09,360 --> 00:14:09,960 again. 241 00:14:10,410 --> 00:14:12,870 And I can actually just do simple math in here. 242 00:14:12,870 --> 00:14:14,790 Let's do something like four times 98. 243 00:14:15,450 --> 00:14:18,630 This will run as JavaScript, whatever the result is. 244 00:14:18,630 --> 00:14:21,030 I'm terrible at mental math will be printed there. 245 00:14:21,420 --> 00:14:32,130 So if we refresh our page, we get 392 and we could also pass in another piece of data like favorite 246 00:14:32,700 --> 00:14:33,510 color. 247 00:14:34,650 --> 00:14:37,590 And I'll just say it is purple, which is true. 248 00:14:37,590 --> 00:14:39,300 So I favorite color, highly underrated. 249 00:14:39,960 --> 00:14:42,090 Pass that in over here. 250 00:14:42,090 --> 00:14:45,630 I can refer to my favorite color. 251 00:14:47,290 --> 00:14:48,760 Why we would do this? 252 00:14:49,030 --> 00:14:51,130 Well, that's another question. 253 00:14:51,370 --> 00:14:52,930 But I'm just showing you that. 254 00:14:53,290 --> 00:14:53,710 Oh, boy. 255 00:14:53,740 --> 00:14:54,290 Here we go. 256 00:14:54,310 --> 00:14:56,260 Favorite underscore color. 257 00:14:58,020 --> 00:15:00,840 We have access to whatever we pass in here. 258 00:15:01,560 --> 00:15:03,600 So favorite color is the string purple. 259 00:15:03,690 --> 00:15:07,420 I will need to restart the server if we are changing our app. 260 00:15:07,430 --> 00:15:08,280 JJ's file. 261 00:15:10,050 --> 00:15:11,970 Now we get purple is coming through. 262 00:15:12,210 --> 00:15:17,540 So the only difference is that data right here is not something we're coding in ourselves. 263 00:15:17,550 --> 00:15:18,540 We're not hard coding it. 264 00:15:18,540 --> 00:15:20,100 It's coming from the database. 265 00:15:21,990 --> 00:15:28,140 From all this work running the query and then basically extracting the data out and saving it to the 266 00:15:28,140 --> 00:15:29,060 count variable. 267 00:15:29,070 --> 00:15:34,620 And then the last thing I'll do is change this to be count because data is just a bad it's a bad name 268 00:15:34,620 --> 00:15:35,340 for a variable. 269 00:15:35,340 --> 00:15:36,420 Everything is data. 270 00:15:36,900 --> 00:15:41,220 But the reason I called it data again was just to kind of show you there's a difference. 271 00:15:41,220 --> 00:15:42,510 It can be confusing at first. 272 00:15:42,510 --> 00:15:45,240 If you see count, count, which one is which. 273 00:15:45,360 --> 00:15:48,870 This is the value we're passing and this is the label for it. 274 00:15:48,870 --> 00:15:50,070 This is the key. 275 00:15:50,880 --> 00:15:51,450 Okay. 276 00:15:52,320 --> 00:15:54,150 So let's just make sure it's still working. 277 00:15:55,170 --> 00:15:55,890 Refresh. 278 00:15:56,460 --> 00:15:59,070 Enter your email to join 502 others on our wait list. 279 00:15:59,070 --> 00:16:00,660 We are 100% not a cult. 280 00:16:00,690 --> 00:16:01,490 Perfect. 281 00:16:01,500 --> 00:16:02,220 We're done.