Placeholder Image

字幕表 動画を再生する

  • COLTON OGDEN: All right, good morning, good afternoon, good evening,

  • depending on where you are in the world.

  • This is CS50 on Twitch.

  • My name is Colton Ogden, and today, we're

  • going to take a little bit of a diversion away from game programming.

  • Now, I apologize to anybody in the stream right now.

  • We took a minor break.

  • This is actually a restart of the original stream.

  • We weren't cross streaming to Facebook and YouTube,

  • but we should now be streaming to both Facebook and YouTube

  • in addition to Twitch today.

  • So if you're watching on any of those platforms, thank you for tuning in.

  • Welcome to our Twitch show.

  • Normally, I do game programming streams.

  • We code things from scratch on stream typically,

  • making a small, simple project.

  • Like, the other day, we did a typing game and hangman.

  • Next week, we'll probably do Minesweeper, which would be super fun.

  • Kudos to I think it was Bhavik_Knight who recommended that game.

  • But today, we're actually going to take a little bit of a break away from games

  • and cover a area of programming that I'm very interested in

  • but don't necessarily have much skill in.

  • And that is web programming.

  • And web programming is all the rage.

  • And there are a ton of technologies, languages, tools

  • used in the world of web programming.

  • But ultimately, it all boils down to a lot

  • of core simple foundational technologies that folks then build upon.

  • And there's a trifecta that you could think

  • of as being the core set of technologies, those being HTML--

  • the skeleton of web pages.

  • I've heard it being referred to as the nouns.

  • Then you have CSS, which is the styling, which some folks refer to

  • as the adjectives.

  • And then lastly, JavaScript, which I don't

  • know if it has an anatomical sort of analog, but certainly,

  • the verbs of web programming.

  • I'm going shout out some people in the chat who kindly waited while we

  • were getting everything set up here.

  • So we did shout out Asli, Bhavik_Knight, Bella_Kirs, MKloppenburg, Brenda,

  • David, David J. Malan, Ultraviolet Pilot.

  • And a lot of folks were having sort of a side

  • conversation about some other tools in future streams, CSS being among them.

  • And tune in next week because David will be doing a stream on render50,

  • which is somewhat related--

  • well, not super related to this.

  • We typically render a lot of HTML and CSS using render50.

  • But it itself is not a HTML--

  • actually, I don't remember offhand-- if David

  • wants to chime in-- if it actually uses a virtual DOM, a virtual web

  • browser underneath the hood.

  • Don't remember offhand.

  • GranolaBar20 just joined the stream.

  • What are we doing today?

  • We're going to be covering HTML, which David kindly pointed out there

  • in the chat as well.

  • So what is HTML?

  • Now, when we started the stream earlier, I

  • was looking for a nice representative example of an HTML page.

  • And certainly, we'll write a few today on stream live.

  • But this is, I think, a pretty good demonstration

  • of a lot of the different features of HTML without any CSS styling.

  • It shows that we have--

  • and effectively, this is what HTML looks like underneath everything.

  • It ultimately does look like black and white text and images.

  • But all it really is is just a way for folks

  • to send bits of information that communicate some sort of meaning

  • across the internet.

  • And you could maybe think instinctively, I

  • want to send somebody a web page that, for example, has some bold text

  • up here that says, "Example of a simple HTML page."

  • But if I were to just, for example, write literally the words

  • "example of a simple HTML page," that in and of itself

  • doesn't carry the information that refers to the fact

  • that it's larger than the other text on the screen--

  • larger and bolder, for example, than the text underneath it

  • that says "HyperText Markup Language, HTML,

  • is the most common language used to create documents on the World Wide

  • Web," et cetera, et cetera.

  • Right?

  • And for example, it doesn't also illustrate how we--

  • some of this is--

  • I'm not sure if this is trying to literally show us

  • what b tags look like.

  • But you can also communicate things like whether certain elements should

  • be indent--

  • or not indented, but whether certain elements should be italicized or bold

  • or maybe things should be in a list or a table.

  • Maybe there should be text fields and that sort of information.

  • Things that are not super easy to represent with just pure text,

  • we can see how HTML lets us solve this problem.

  • And yeah, David saying we use a Python library to create the PDFs--

  • WeasyPrint, which I had known we use Python, but wasn't sure if it actually

  • was a proxy to a tool like something like PhantomJS,

  • so like an invisible browser which renders stuff for you.

  • But that's cool.

  • So let's go ahead and talk about I guess the basics of HTML.

  • I have a whole outline.

  • We have a whole lot of really cool stuff to talk about.

  • The very first thing we should do, like we always normally do,

  • is create our very first file and write some code.

  • So I have a folder in the stream subfolder, which

  • we've used on every stream so far or at least most streams

  • so far that involve programming.

  • I'm going to create a new folder.

  • I'm going to call this HTML because this is our HTML stream.

  • And then I'm going to create a--

  • I'm going to pull this over to my text editor, which is VS Code.

  • And just like any other programming language,

  • you can use VS Code or some other text editor

  • to write this HTML, which you can then run in your web browser.

  • And we'll talk about web browsers as well.

  • "Paintbrush looking head," says Cunavrito.

  • Yeah.

  • I've said this probably--

  • I'm like a broken record-- probably said this six or seven times.

  • I need to get a haircut really badly.

  • I'll say this on stream and I'll commit this.

  • On Sunday, I'm going to get a haircut.

  • So it's been marked.

  • If I don't have a haircut by next week stream, you all can make fun of me

  • for it.

  • I've created a file called index.html, and this is just a file on my hard

  • drive with an extension html, .html.

  • And this, basically, we can run this in any web browser

  • now-- in a web browser, what we can look at here.

  • To define what a web browser is, a web browser

  • is just an application that expects to receive information

  • via HTTP or some other protocols.

  • And it renders-- if it sees that the file is HTML and has

  • CSS and JavaScript, it'll actually render that for us,

  • not terribly unlike a game engine, I guess,

  • in sort of an abstract way to think about it.

  • But it expects a certain format of information,

  • and it will render things per a set of standards.

  • And I believe it's the W3C that has created these standards, the World Wide

  • Web Consortium, who's defined what HTML should be, specifically HTML5--

  • at least insofar as the HTML we'll be using today and in future streams--

  • what CSS should be.

  • I don't believe they define JavaScript.

  • That's ECMAScript, which is a different committee, unless W3C

  • defines the ECMAScript standard.

  • A lot of those details, I don't know offhand necessarily.

  • But they are responsible for at least, as far as I'm aware, the HTML standard.

  • Could be horribly wrong.

  • I hope I'm not wrong about that.

  • I thought I had read that earlier.

  • But some organization has said HTML needs to contain these elements.

  • So let's take a look at what HTML, first of all, looks like.

  • So I'm going to go ahead.

  • And you'll see a lot of what HTML is comprised of

  • are these angle brackets, these less than and greater than signs--

  • for example, this tag that says html.

  • And I'm going to bring my font size up just a little bit so

  • we can see what we're looking at.

  • So in my text editor, I've just written what's called a tag or two tags--

  • an opening tag and a closing tag.

  • And this basically just means that whatever is inside

  • this tag, whatever is between the start and the end, is something.

  • In this case, it's HTML.

  • But more abstractly, you could say whatever is within these tags--

  • maybe it's what I'm going to define to be a dog.

  • And actually, in a future stream, we'll take a look

  • at how we might actually make something called dog-- a tag called dog, which

  • has some sort of semantic meaning.

  • Today, we're not going to go into custom tags in detail.

  • We'll reference them, because you actually

  • need to use what's called JavaScript to make that work

  • to make non-standard tags work.

  • But all this means is that anything that's within these two tags

  • is whatever the word is inside the tag.

  • In this case, it's HTML.

  • And every HTML file has two core parts really, a head and a body.

  • And this kind of almost ties back to our anatomical analogy

  • earlier in a different way.

  • But a head contains usually some information

  • that's not rendered in our web browser.

  • For example, if we go back to Chrome, none

  • of the stuff that you see here in the main window is usually in the head.

  • But the stuff that you see up here, for example,

  • in this title where you can in small font see HTML examples, that's a tag.

  • That's a bit of information that we put in our head.

  • And everything that you see here underneath,

  • the actual meat and potatoes of our web application, our website,

  • is in the HTML body.

  • Let me make sure I have caught up on the--

  • Cunavrito says, "Don't get a haircut.

  • I am bald, so I guess you won."

  • "No, your hair's awesome.

  • Don't get it cut."

  • I honestly-- it's getting a little long for my personal taste.

  • "Heyla porco dio," Caralse says.

  • I'm not sure what that means, actually.

  • "TC39, JavaScript I think."

  • TC39.

  • What is TC39?

  • Is that a-- oh, ECMA TC39.

  • Is that the committee?

  • ECMA International Technical Committee 39.

  • That make sense.

  • So that's the committee responsible for defining the ECMAScript standard.

  • I have to look into a little bit more detail.

  • But based on just that, that looks accurate to me.

  • So this is the core, the base of what an HTML document is.

  • Now, there's a few other things.

  • DOCTYPE html.

  • And this at the very top of our application says to our web browser

  • that this particular document is an HTML document.

  • I'm going to have to think about the--

  • I don't know offhand the use cases where it's strictly necessary

  • because I do believe Chrome will just render it even

  • without this DOCTYPE html.

  • But as good practice and for things that aren't necessarily as

  • robust as Chrome-- for example, screen readers and certain, like,

  • streaming service devices that use web browsers

  • underneath the hood, their own proprietary web

  • browser-- you might want to include this DOCTYPE or else the renderer

  • will get confused as to whether maybe this is HTML versus XML

  • and have issues rendering it.

  • But typically, you'll see this tag at the very top--

  • this angle bracket, exclamation point, DOCTYPE

  • in caps, which I actually don't think that even is strictly necessary.

  • But typically, you'll see it in caps.

  • And then html, saying this is an HTML document.

  • And so this is the foundation.

  • This is what an HTML document ultimately boils down to.

  • And, of course, the devil is in the details, and there's a lot of details.

  • There's a lot of tags and a lot of other things

  • that we can do to add to our document, to add to our HTML document--

  • the things that actually make up what we see, what we physically

  • see, for example, this header right here.

  • Well, what is a header?

  • That's a good place to start.

  • Let's get some actual text rendering onto the screen, I guess.

  • And then we'll come back to head maybe in just a minute

  • as well to see the title tag, which is also very important.

  • So in my body, if I type, for example, h1, which is short for header--

  • header priority one, I guess you could think of it as.

  • And then I say CS50, right?

  • Now I have an HTML document.

  • I actually have to render it somewhere.

  • I need a web browser that can do this.

  • So I'm going to go to Finder, and I'm going

  • to just double click on index.html.

  • And Chrome is my default. And actually, I'm going to change my resolution.

  • I just realized that for some reason, I went from 1080p to 720p.

  • I'm not sure why that is.

  • Forgive me for just a second here.

  • Scaled, 720p.

  • And let me readjust the size of the window, which

  • is a little bit messed up.

  • And now we should be able to see things just a little bit better.

  • If anything was a little bit tiny in the font size,

  • we can see that just a little bit better.

  • I'm going to quit my System Preferences.

  • I'm going to shrink this down.

  • This is a little large.

  • But now I have an HTML page which just has a header.

  • And I'm going to go to my Finder.

  • Now you can see it a lot better.

  • I'm going to double-click index.html.

  • And we see, just as we predicted, that we have this large text that says CS50.

  • And this large text is what's called a header.

  • And headers can be used for a lot of things,

  • and there's different degrees of them.

  • Let's go ahead and write out some of the other headers

  • just so we can see what they look like-- for example, h2, rather.

  • Messed up.

  • The nice thing about VS Code is if you type a tag, a couple of things

  • will happen.

  • So you can type the tag manually like this.

  • You can close it yourself.

  • And you'll see that-- and this is something that a lot of text editors

  • do.

  • This isn't just necessarily VS Code.

  • I think Atom and Sublime also do this in addition to many other features.

  • But notice that I typed h2, I closed it, and it gave me

  • the corresponding closing h2 tag.

  • And that's just a nice feature of modern text editors

  • to help folks not forget to close tags, which can be often a subtle--

  • especially in web development, because it's not

  • going to give you an error message if you

  • don't have a closing tag necessarily.

  • Rather, your web content is going to render in a very strange way

  • because HTML will parse top to bottom your HTML file

  • and apply styling and all sorts of things.

  • We can maybe explore that in detail in the future.

  • But suffice to say, this helps out in terms of preventing us

  • from forgetting closing tags.

  • So I'm going to write an h2.

  • I'm going to write my name.

  • I'm going to save it.

  • I'm going to go back to Chrome.

  • And Chrome, by the way, is an excellent debugging web

  • browser for web development.

  • And we'll take a look at what are called the developer tools in a little bit.

  • But just for now, I'm going to just to illustrate a few simple things first.

  • If I refresh the page by hitting Command-R or Control-R on a PC,

  • you'll see that it refreshes the content that I saved to my disc

  • because it reloads the file.

  • And notice up here at the very top in the header,

  • you can see in the URL bar-- you can see that I'm using what's called the file

  • protocol, which just means that instead of Chrome making HTTP requests to some

  • server--

  • meaning, asking some server on the internet for some information--

  • it's instead asking my local hard drive for the information.

  • And so you can see it does map to a URL on my hard drive

  • at /Users/jharvard/dev/ streams/web/html/index.html just as we

  • saved ourselves earlier.

  • But I could also just in this URL bar type google.com.

  • And now notice that the protocol changes from file

  • to https, so different protocols that can serve content in different ways.

  • Now, the file, it refreshed the file from my hard drive.

  • And now we see that we do, indeed, have an h1 and an h2.

  • I can do the same exact thing with an h3.

  • For example, type David's name here.

  • Go back to Chrome.

  • Refresh that.

  • I can go over here, type in h4.

  • Type Dan Coffey, who kindly helped get us back on to streaming

  • after our first mild hiccup--

  • Dan Coffey.

  • And notice that as we're going from h1 to h2 to h3 to h4, all the way down

  • eventually to h5.

  • And I'll say Happy Cat, and h6 will say Grumpy Cat.

  • Some other CS50 actors, so to speak.

  • We get progressively smaller text.

  • And these are just some default stylings that are

  • applied to these particular headers.

  • You can override these stylings as you wish

  • with a technology called CSS, which we will take a look at in a future stream.

  • Next week, actually, I believe we have the stream--

  • we're going to have the stream on CSS.

  • But by default, if you're just looking at plain HTML,

  • HTML as it existed back in the '80s, '90s--

  • I forget offhand the exact date that CSS was formalized.

  • Or at least I think HTML 3 introduced CSS or introduced styling, rather.

  • And then after that, because of how bulky it was,

  • they introduced CSS to separate styling from HTML.

  • But prior to a lot of that, HTML looked something very similar to this.

  • And originally, it was used to transmit research papers and those kinds

  • of things that didn't necessarily need a lot of styling, a lot of fanciness.

  • And so a lot of the features that it does have are--

  • you can imagine them being just the subset of features

  • that you would need to communicate research papers and limited information

  • without the need for styling.

  • And we'll take a look at some more of that.

  • ZeKillerPotato says, "A bit off topic, but how in-depth will this be

  • and will there be streams about CSS and JavaScript?"

  • Not off topic at all.

  • This will cover probably the majority of the core tags

  • that you use in daily web development.

  • We're not going to necessarily go into too much detail on some

  • of the more complicated stuff.

  • But on another stream next week, we will cover CSS, in which case

  • we can bridge these two streams.

  • And then in another stream after that, we'll cover JavaScript, in which case

  • we can add more layers onto that.

  • And then we'll cover things like Bootstrap.

  • We'll cover things like jQuery.

  • We'll cover things like DOM manipulation.

  • We'll go into a lot more detail.

  • But today, this is meant to be just a very simple introduction to the core

  • of web pages, and that's HTML.

  • So we've looked at some headers here, probably one

  • of the more basic elements.

  • You'll notice one thing about all the h elements is

  • that they do go onto the next line.

  • But if I were to--

  • we'll see an example of when that might not be the case in a little bit.

  • But take note of the fact that all of these h tags

  • are going down below each other.

  • They're going to a new line explicitly.

  • We haven't told it necessarily press Enter.

  • I mean, even though we have said press Enter here in our text editor,

  • we could very easily say do all of this, where we have the h2 immediately

  • following the--

  • sorry-- the h3 immediately following the H2 immediately following

  • the h1 on the same line.

  • But if we refresh, we'll notice that our HTML page actually

  • hasn't changed at all.

  • So the markup and the way we press Enter is independent from the way

  • that things look on the web page.

  • And this, we'll take a little bit more of a look at.

  • But this is what's called block level versus inline elements.

  • But it's much more easy to read all of the things separated by new lines.

  • And so independent of maybe necessarily how they're styled,

  • how the new lines are calculated, we want

  • to render things out in the sort of sequential way

  • just so it's easier to read because it gets very tedious to read code

  • that looks like this, especially if it's beyond the width of your text editor.

  • So if anybody has any questions in the future, definitely let me know.

  • "I love h3h3," says Unf4mili4r.

  • Oh, right, yeah. h3h3, the tags.

  • A bit off topic--

  • "sorry to follow up, will there be a master stream that

  • combines all of those technologies?

  • Last question for now, haha."

  • Ask as many questions as you want.

  • Certainly, I would love to do a stream like that,

  • to have a lot of streams that do HTML plus--

  • sorry-- CSS and then JavaScript, have them all together.

  • What I want to do is to eventually have us actually building websites,

  • not using one particular technology in a vacuum, but to actually say,

  • I want to make a blog.

  • I want to make a social media mock-up.

  • And then show how we use the three technologies in tandem,

  • rather than necessarily highlighting how they work.

  • But for the purpose of demonstration today, we

  • do want to show just sort of the basic tags and whatnot,

  • the basic mechanics and workings of each individual technology.

  • "Do you have any good tools for Visual Studio for web development?"

  • Not me, because Visual Studio Code has some very good built-in integrated

  • tools or integrated shortcuts, rather.

  • I'm going to illustrate one right now that I really like.

  • I'm going to actually delete the entire corpus of code

  • that we've written so far, this very minimal list of headers.

  • I'm just going to type HTML.

  • And notice that in VS Code, you get a bunch of these pop ups,

  • these auto fills that come up.

  • If I go down here-- and notice that they all have different descriptions

  • to them.

  • If I go down to here, I can see as soon as I press down on my keyboard

  • and highlight the thing that has kind of a box with some dashes underneath it,

  • it says, "Simple HTML5 starting point."

  • And if I hit Tab, you'll notice that I didn't

  • have to go through the tedium of typing all of the stuff

  • that we just looked at.

  • Instead, my text editor pre-populated a bunch of those tags for us,

  • including a bunch of new stuff in the head.

  • And so this is a perfect opportunity to look at some of those things.

  • So for example, we didn't look at title before.

  • But I can type in here "CS50 on Twitch" in my title tag.

  • Notice that it's within the head.

  • So this is not going to be rendered in the actual body itself.

  • And if I go back to my web page, notice that it's going to be completely empty.

  • But at the very top, you can see on our tab--

  • and this will change depending on your browser or your technology.

  • Most web browsers will just have this be reflected in the tab these days.

  • But if you're using, for example, maybe a screen reader

  • or some other application that's not a streaming service provider--

  • what's the word I'm looking for?

  • Like an embedded device.

  • There's a better word for it.

  • But different web browsers and different programs

  • that aren't necessarily web browsers might render this title somewhere else.

  • But the whatever web browser, whatever render you're using

  • is going to use this to place a title somewhere on the page.

  • "Is it good practice to write HTML from scratch?

  • Because some IDEs do basic structure for us by default if we save a blank HTML

  • file."

  • I'm guessing that was probably before I did what I just did.

  • But that's kind of in the same vein.

  • You have a basic starting point or a template

  • that you can then bootstrap yourself up from.

  • And so that's what we just did with this here.

  • Now there's some other meta tags that we see here.

  • And these meta tags give our web page some information

  • that's going to change sometimes, depending

  • on what web browser we're using.

  • But these meta tags can be used for a bunch of different purposes.

  • They can be looked at by, for example, your mobile phone

  • to determine whether it should be rendered in a certain way.

  • You can have meta tags that embed URLs to pictures

  • so that Facebook, when it crawls your web page, knows how to fetch--

  • it knows how to fetch a picture to render on Facebook when

  • you post some URL to some website.

  • For example, if you have a personal blog,

  • and when you want people to post your blog on Facebook,

  • you'll notice that when you post web pages sometimes an image will come up.

  • That image will typically be in a meta tag of some kind.

  • And so that's what meta is typically associated

  • with, just metadata that can be used for myriad purposes

  • depending on the application.

  • And you'll notice it gives us a couple of things

  • for free-- this link to a style sheet, a CSS style sheet, and also a script tag,

  • which links to a JavaScript file.

  • We are not going to use either of these because today's stream is not

  • going to be on JavaScript or CSS.

  • But in the near future, this will be very useful for us.

  • And if anybody has any questions so far on what we've talked about,

  • definitely tossed them in the chat.

  • We've talked about the head versus the body.

  • We've talked about the titles, meta.

  • We talked about Chrome.

  • But we haven't really talked about-- and yes, metadata is data about data,

  • says ForSunlight.

  • That is correct.

  • One thing that's great about Chrome is the fact

  • that it has what are called Developer Tools.

  • Now, I'm going to move the chat over just a little bit over here.

  • 15_marius, thank you very much for following.

  • And you'll see that if I go to--

  • I can go up here.

  • I can go to Tools--

  • sorry-- More Tools, and then Developer Tools.

  • So the dot-dot-dot at the top right, and then More Tools and then

  • Developer Tools, click on that.

  • You'll see that some stuff pops up.

  • And I'm going to just make this a little larger, kind

  • of zoom this over just a little bit.

  • These Developer Tools are really cool because they

  • allow you to inspect your HTML document in addition

  • to your styling and your JavaScript at runtime.

  • So you can actually debug your application visually and not

  • necessarily have to keep editing your HTML over and over again and guessing

  • and refreshing.

  • This is a invaluable resource.

  • It can't really be overstated how useful this is in web development these days.

  • And most web browsers actually ship with something very similar to this.

  • Firefox and Safari both come with their own version of Developer Tools.

  • You can see that we have the HTML tag.

  • We have the head.

  • We have the body.

  • All of this stuff is very similar to what we saw written out in a text file,

  • but we see a representation of it here in the web browser.

  • And independent of how you style your actual HTML page, the styling for this

  • will be consistent.

  • So you can use good or bad styling.

  • But Chrome is going to uniformly style how this looks here in the page

  • here just so that it makes it easier and consistent to debug applications.

  • So let me pop over here back to my live format so I can see.

  • ZeKillerPotato, thank you very much for following.

  • And Agentmirv, thank you very much.

  • And [INAUDIBLE] as well, thank you very much for the follow.

  • I missed that as we were getting our stream up and running.

  • So these Developer Tools are great.

  • Now, our body is empty, and this is reflected here in the DOM.

  • This is what's called the DOM, the document object model.

  • We won't talk too much about it.

  • And more specifically, this is the implementation of the DOM in code.

  • It's illustrating that.

  • I can type in h1 again, and I can say, for example--

  • we have a special guest.

  • I can say Tom Ballatore in H1 and bring this over here and refresh.

  • And aptly done timing wise, we have a guest

  • named Tom Ballatore joining us today.

  • Hey, Tom, how you doing?

  • TOM BALLATORE: Pretty good.

  • I'm here in the capacity of the pompadour measurer.

  • So we're going to see--

  • oh, the lights are there.

  • But let's--

  • COLTON OGDEN: Oh my goodness.

  • This is--

  • TOM BALLATORE: Let's see here.

  • This is about four, five, maybe six inches.

  • Well done.

  • COLTON OGDEN: Diagonally, though.

  • TOM BALLATORE: Well, I was kind of going with the hair like up to the side.

  • But that is a pomp with some circumstance.

  • COLTON OGDEN: That is Tom Ballatore, ladies and gentlemen.

  • So, Tom, you've done some web development and stuff.

  • You're here to talk about--

  • we're right now kind of still in the basic stuff.

  • But eventually, the goal is going to talk about accessibility stuff,

  • correct?

  • TOM BALLATORE: Yes, absolutely.

  • I see my name on the screen.

  • Cool.

  • COLTON OGDEN: I did.

  • I just wrote your name--

  • TOM BALLATORE: Am I famous?

  • COLTON OGDEN: Yeah, a little bit.

  • I wrote in H1.

  • And actually, I can probably get you miked up-- so

  • just that you don't sound quiet.

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: So why don't we do that actually?

  • Apology, stream.

  • This is going to be great.

  • We have two folks here in the stream.

  • If anybody has any questions-- if, actually, you

  • want to read off some of this stuff on the chat there,

  • definitely go ahead and do so.

  • And actually, why don't you talk about your relationship to CS50?

  • TOM BALLATORE: My relationship with CS50 is complicated.

  • No.

  • I started, what, about three years ago.

  • I took CS50 in the extension school version.

  • And I just really liked it.

  • And one of the reasons I liked is they had a DJ.

  • COLTON OGDEN: Oh, man.

  • TOM BALLATORE: Yeah.

  • And he had this like--

  • what's that pad, like, with the eight thing--

  • COLTON OGDEN: That was the launch pad.

  • That was the launch pad.

  • TOM BALLATORE: The launch pad.

  • And there's this, like, young guy up there like doing cool music and stuff.

  • I thought like, oh, this is cool.

  • Because before that, I had taken like an MIT course

  • in Python, which was really cool but a bit dry.

  • OK, a bit dry perhaps.

  • And I thought, oh, yeah, CS50's got a really cool vibe.

  • So How am I sounding here?

  • COLTON OGDEN: Let's test.

  • Let's test.

  • So I'm going to turn my mic out.

  • Let's see if Tom is still audible.

  • Go ahead and speak.

  • TOM BALLATORE: Yeah.

  • We OK?

  • COLTON OGDEN: No, not great, it sounds like.

  • Let me make sure you're not muted.

  • Here, let me see your mic.

  • TOM BALLATORE: All righty, all righty.

  • COLTON OGDEN: Are you muted?

  • You are muted.

  • TOM BALLATORE: OK, unmuted.

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: How am I doing now?

  • COLTON OGDEN: Try it now.

  • Talk.

  • TOM BALLATORE: OK.

  • I'm talking.

  • COLTON OGDEN: OK, cool.

  • It sounds like you're good to go.

  • You probably sound much better now.

  • TOM BALLATORE: Yeah, thanks.

  • COLTON OGDEN: I'm going go ahead and close this door here as well just--

  • TOM BALLATORE: Oh, sorry, I left the door open.

  • COLTON OGDEN: No, it's all good.

  • TOM BALLATORE: Yeah, so I got into CS50.

  • I actually already, like, have like a PhD in remote sensing,

  • GIS mapping stuff.

  • But I got into this computer stuff because I

  • want to learn Python for the software I use and CS50.

  • And it's kind of like a trick in a sense of,

  • like, you get these really hard psets-- at least for me they're hard.

  • And then you fight through them.

  • You pull a couple all nighters maybe.

  • And when you nail a problem, it's like that endorphin, whatever it is,

  • that gives you that rush of like yes--

  • or serotonin.

  • I don't know what it is.

  • It's really a great feeling.

  • Yeah.

  • So I just got hooked on it.

  • Now I'm a teaching fellow.

  • I'm here for the j term, the January course at the law school.

  • I'm helping TF a course over there.

  • And I just got back from a Python tutorial over there.

  • COLTON OGDEN: And you also live in Japan.

  • Is that correct?

  • Did you mention it?

  • TOM BALLATORE: Yeah.

  • Yeah, I have been in Japan like 24 years.

  • My official address for accounting purposes of Harvard University,

  • according some new rules, is definitely my US address.

  • So I am in America.

  • But yes, I am--

  • I've been in Japan a long time.

  • COLTON OGDEN: What was the original reason for moving to Japan, I guess?

  • TOM BALLATORE: Oh, man, that's liked yeah.

  • I'm so old.

  • I'm 48.

  • OK?

  • So, like, I was back-- like back when Japan was like China now,

  • and everybody was like trying to take over.

  • And they had some programs in my university.

  • I have undergrad in political science and environmental engineering.

  • So for poli sci, I had to take a language.

  • I took three semesters of German, and, woo, that was hard, man.

  • So I went to Japanese, which was conversely, like,

  • so hard it was easier.

  • And I just went, and I did my PhD there, and I stayed.

  • So it's an interesting place.

  • COLTON OGDEN: Man of mystery.

  • TOM BALLATORE: I like to-- yeah, yeah.

  • Not so much.

  • Yes.

  • OK, cool.

  • COLTON OGDEN: But you've done some web stuff.

  • And so today, when we get to--

  • I guess after we've covered the basics, the goal

  • is to talk about a little bit accessibility.

  • TOM BALLATORE: Yeah, this is an issue that has come up.

  • So yeah, I forgot to mention this.

  • Like, I'm actually a student in extension now, Harvard Extension

  • School.

  • And I'm almost done with my degree, I hope.

  • I don't know.

  • I've got like nine classes done.

  • It's in digital media design because I want to make online courses.

  • One thing I should be doing, if anyone from Asian Development Bank

  • is watching right now, I promise I'll have the system up by next Tuesday

  • morning.

  • We have a class which we're launching.

  • It's got like 736 people now in it.

  • COLTON OGDEN: Wow.

  • TOM BALLATORE: And I'm running the back end, front end, and all that stuff.

  • And it makes me really nervous because it's beyond my scope.

  • COLTON OGDEN: No, you're going to do great.

  • You're going to do great.

  • TOM BALLATORE: Well, we'll see.

  • So that's what I'm in that program.

  • COLTON OGDEN: Cool, that's awesome.

  • TOM BALLATORE: So I have some HTML, some CSS stuff.

  • And I like to talk about accessibility because as someone who's colorblind

  • and who's also getting eyes that really has a hard time

  • reading what's in front of me--

  • COLTON OGDEN: I didn't realize you were color blind.

  • Actually, Nick Wong, who's done some streams with us previously,

  • is also color blind.

  • TOM BALLATORE: Yeah.

  • I'm one of the sort of minor red, greenish color blind guys.

  • So it's not like I see black and white.

  • But yeah.

  • Definitely.

  • And I've also worked with other students who just are legally blind or something

  • who cannot see the screen.

  • And a lot of stuff is out there to make the HTML readable.

  • I think Colton spent--

  • I was eavesdropping about 20 minutes ago on this.

  • That's why I did the pompadour thing.

  • But talking about the tags you can add or attributes

  • you can add to tags, like alt text and stuff,

  • you can go so far to help out people who can't see

  • a screen by putting in proper alt tags.

  • It's really simple.

  • So we'll go through that a little bit next.

  • COLTON OGDEN: Yeah, we'll talk about that.

  • We're still getting into--

  • we just talked about the Developer Tool.

  • So I popped up Chrome, and we looked-- you can see here in the Elements--

  • or Elements tab of the Developer Tools, we

  • can see what we've already written in text

  • Google formats it for us in a particular way, a uniform way.

  • We can see all the things that are in the head.

  • We can see all things that are in the body.

  • And thus far, the only actual elements that we really

  • talked about, I guess the meat and potatoes of HTML, the actual things

  • that-- the content we've looked at is h tags.

  • So we have a little bit of a ways to go.

  • But that's an important first step, I think,

  • in actually getting your tools set up, your environment.

  • You want a text editor.

  • You want something like VS Code or Atom or Sublime Text.

  • Any text editor will do, but these are like the modern technologies,

  • the modern tools.

  • What's your text editor of choice?

  • TOM BALLATORE: I like Atom or Sublime.

  • COLTON OGDEN: OK.

  • Cool, cool.

  • TOM BALLATORE: Or the CS50 IDE.

  • COLTON OGDEN: Yeah, CS50 IDE as well is an incredible tool--

  • lets you have sort of a Ubuntu infrastructure

  • to mess around with, too, and get used to that environment

  • if you're coming from PC or coming from Windows.

  • But yeah, this is one of the big things.

  • You need a text editor.

  • You'll need Chrome.

  • And with just those tools, you can really

  • get started working on HTML documents now.

  • I'll read a couple of questions in the chat,

  • and then we'll proceed with the next few topics.

  • We'll talk about paragraphs, which are also an important thing to look at.

  • "Got to go soon, but I've been doing CS50 week 1."

  • StayPeaceful, good to have you.

  • Thanks for coming.

  • "I use Atom as well," says Jacquotts.

  • "In my opinion, the best one for web development."

  • I used to use Atom as well.

  • It's a great, great text editor.

  • "Will topics like Django or React be covered in the CS50 course, not

  • the current stream?"

  • The CS50 course-- probably not Django, probably not React.

  • We'll certainly cover Flask, which is a micro framework, a bit smaller scale--

  • gives you more limited features, but it's

  • a little bit easier to bootstrap students who have no prior back end web

  • development.

  • But probably not React and Django for CS50 core.

  • However, there is a web.cs50.org if anybody wants to go and check that out.

  • So web.cs50.-- wait, sorry.

  • I think I have this wrong.

  • TOM BALLATORE: That's the one Brian teaches?

  • COLTON OGDEN: Yeah, web.cs50.edx.org.

  • Is that it?

  • No, no, sorry.

  • cs50.edx.org/web.

  • I had that mixed up.

  • So go to-- one more time--

  • cs50.edx.org/web.

  • And this website is Brian Yu's--

  • often here in the chat actually with us.

  • It's a Python and JavaScript course that he taught.

  • And this course does use quite a bit of Django and then cs50.org/mobile teaches

  • React.

  • And so you can get-- if you take both courses,

  • you can get kind of an encompassing view of that side of the web development

  • landscape.

  • And in prior-- sorry, in future streams, we'll

  • definite take a look at things like Django, things like React

  • in more detail.

  • And we did a stream with Brian on the basics of React.

  • So there's definitely some resources out there, and we'll go more into detail

  • in the future.

  • "Can you explain what the HTTP equiv is and how it works?

  • Tried to figure it out now on my own, and it

  • seems it has multiple applications."

  • So let's go ahead--

  • do you know offhand what that is?

  • TOM BALLATORE: Equiv of what?

  • COLTON OGDEN: I believe it's a meta attribute in--

  • HTTP equiv.

  • Let's go over here.

  • It's a meta attribute.

  • TOM BALLATORE: Oh.

  • OK.

  • COLTON OGDEN: HTTP equiv.

  • So this isn't something that I use very often.

  • But this is also a great opportunity for us

  • to showcase w3schools.com, which you can look up

  • pretty much anything related to HTML, to CSS, and even to JavaScript.

  • They cover a lot of the basics.

  • And also MDN, the Mozilla Developer Network, is a great resource.

  • Go to developer.mozilla.org.

  • You can type in-- let's type in HTTP equiv and see if that comes up.

  • TOM BALLATORE: This one tends to be not as user friendly, right?

  • It's got great information, though.

  • COLTON OGDEN: More information, but less ease of access.

  • But we can see here we can go to meta tag,

  • and then I think we can go to equi, right?

  • Yeah.

  • So permitted parents-- meta charset, meta http-equiv, a head element.

  • If the http-equiv is not an encoding declaration.

  • So a lot of this stuff is a little bit more niche and more--

  • it's not really as pertinent what you're seeing--

  • the body of what you're seeing.

  • It's more like metadata associated with the document that does something.

  • For example, the prior page says that you can use this to refresh

  • the document every 30 seconds by saying http-equiv="refresh",

  • the string refresh.

  • And then give it another tag that says content="30".

  • So that's a particular use case.

  • Not something that I'm super familiar with.

  • But we can look at the documents here and see probably

  • a lot of the different ways you could use it-- content type, default style,

  • refresh.

  • Those look like the three main use cases for it.

  • Define a time interval for the document refresh itself.

  • Specify the preferred style sheet to use.

  • Specify the character encoding for the document.

  • And this is, I think, where I see it a little bit more

  • frequently is the content type, just giving it more information.

  • I'm not sure offhand the best use cases for it.

  • But the deeper you dive into it, I'm sure you'll find a reason for it.

  • So trying to get away from maybe some of the more lower level niche use cases,

  • we can go into--

  • and this is something that just it'll provide to you by default

  • because I guess this is a maximum support compatibility feature.

  • Let's go into more of the actual content.

  • So we covered h tag, so headings-- so things

  • that allow us to specify I guess how pronounced maybe something is

  • if we add a title to our blog or maybe an individual post has a subtitle.

  • Maybe that'll be like an h3 or something.

  • It's kind of up to you.

  • And, again, you can style these as you wish in the future.

  • But the actual content in which you're going to post a lot of text information

  • is probably going to be in something like a p tag, a paragraph tag.

  • Not necessarily, but this is a tag that's

  • used very frequently for larger blocks of text information.

  • TOM BALLATORE: About the h tag thing, I was surprised a couple of weeks ago

  • running a web page I had through some accessibility checker--

  • and we'll talk about that--

  • like, I skipped h2 tags because I just didn't

  • like the way they were formatted out of the box.

  • I wanted like an h3 tag.

  • And it's like, dude, you don't have an h2 tag, and that's like not good.

  • Apparently just for the semantics of the document, if you have an h1,

  • you have to have an h2 before you have an h3.

  • COLTON OGDEN: So I guess they assume a hierarchical use of the headings.

  • TOM BALLATORE: Absolutely.

  • COLTON OGDEN: OK.

  • TOM BALLATORE: Yeah, so you shouldn't be skipping.

  • COLTON OGDEN: That makes sense.

  • That actually makes sense.

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: That's a good point to bring up, too.

  • And you certainly have a lot of insight, and that's a really interesting--

  • sorry, just reading.

  • "My favorite resource, w3schools."

  • Yeah, definitely a great resource.

  • And then Myaocat saying, "Another Mac."

  • And I think somebody else mentioned up earlier--

  • made a reference to how Macs look really nice.

  • I remember where--

  • TOM BALLATORE: But I can run Windows on it.

  • The main software I use, it's called ArcGIS,

  • and it only runs on Windows, so.

  • COLTON OGDEN: Do you have VMware?

  • TOM BALLATORE: I use Parallels.

  • I used to use VMware, but, yeah, it's--

  • COLTON OGDEN: Gotcha.

  • So let's go ahead, and what I could do is I could say blah, blah, blah, blah

  • and showcase what this looks like.

  • And I'm actually going to do that for now.

  • elorki112048, thank you very much for the follow.

  • And Thiasus, thank you very much for the follow as well.

  • Oh, somebody has used ArcGIS or ArcGIS--

  • TOM BALLATORE: Arc G-I-S.

  • COLTON OGDEN: Arc G-I-S. OK.

  • TOM BALLATORE: Although there is debate whether it's "ArcGIS" or not,

  • but I'm an "Arc G-I-S" guy.

  • COLTON OGDEN: OK, I got you.

  • I got you.

  • I have no familiarity--

  • TOM BALLATORE: It seems like it doesn't really matter.

  • We really argue about it.

  • It just doesn't matter, but yes.

  • COLTON OGDEN: It's like the--

  • what's the paint shed-- or the painting the shed argument or whatever?

  • People spend a disproportion amount of time debating small details.

  • TOM BALLATORE: Oh, yeah.

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: Just paint the shed.

  • COLTON OGDEN: It's an amazing-- yeah, just paint the shed.

  • TOM BALLATORE: Don't worry about the nail sticking out somewhere, yeah.

  • COLTON OGDEN: OK.

  • For a crime mapping course.

  • Very cool, Adamantine.

  • TOM BALLATORE: Ooh.

  • COLTON OGDEN: Yeah.

  • And Myaocat says, "I want a Mac, too."

  • TOM BALLATORE: And by the way-- somebody asked, "Is Brian in chat now?"

  • Actually, Brian, we have him locked up under the table.

  • He's doing our homework for us.

  • And once he's done, we're going to release him and he'll be in the chat.

  • No.

  • Sorry, Brian, if, you're out there.

  • COLTON OGDEN: No, I don't think Brian is in the chat necessarily today.

  • But he does pop by every once in a while.

  • We're trying to get him on another stream, which would be great.

  • So we can see that I typed in a bunch of stuff in my p tag

  • here, a paragraph-- short for paragraph.

  • And it rendered here onto the screen.

  • I'm going to do that--

  • I might do a little bit more just so that we can see a wrap.

  • So I want to see some word wrapping here.

  • And indeed, it does wrap quite a bit.

  • And it looks like it wrapped in a weird--

  • it wrapped on a space.

  • And that's why it looks sort of like two separate lines.

  • Actually, there's a space here, and this is so long

  • that it looks like it wrapped in a weird way or that it's two separate tags.

  • But paragraph tags are a excellent way to include text.

  • But drawing text out like that isn't a great way

  • to illustrate large, actual real world blocks of code--

  • blocks of text, rather.

  • And so something that's great-- a lot of people use--

  • is what's called lorem ipsum text, and this is just basically Latin words

  • put together in a random way to make text

  • that looks roughly like what text you would

  • see in the real world on an actual web page.

  • So seloner7, thank you so much for follow, and Salihcn.

  • I'm not sure if I'm pronouncing that right.

  • Probably not.

  • Thank you very much for the follow as well.

  • So I'm going to generate five paragraphs.

  • And you can see here it just gives you a bunch of text here on the screen.

  • I'm going to copy this.

  • I'm going to copy these two here.

  • Rather, I'm just going to copy one paragraph at a time.

  • I'm going to copy this, go ahead over here, go into my p tag,

  • and then copy that.

  • And then I'm going to do the same thing.

  • And actually, what I should do is I should enforce wrapping.

  • So I'm going to toggle word wrap so we can actually see that here.

  • As a paragraph semantically, it sort of makes sense.

  • That's a paragraph that we're using.

  • TOM BALLATORE: Actually, I was making a website once for a client,

  • and I sent them like a dummy mock-up of the site that

  • contained this lorem ipsum door metsum thing, and they were really concerned.

  • They're like, what does this mean?

  • COLTON OGDEN: Like, is this programming?

  • TOM BALLATORE: No, no.

  • COLTON OGDEN: Is this what programming looks like?

  • TOM BALLATORE: I guess they had never seen it before.

  • I'm like, oh, yeah that's just place holder text.

  • That's faux Latin, I guess.

  • COLTON OGDEN: Yeah, it's faux Latin.

  • I mean, it's real Latin, but it's put together in a way that's fake.

  • TOM BALLATORE: So if, like, Caesar were here, he'd be like--

  • COLTON OGDEN: He'd be like what-- he was like--

  • it's like somebody saying, "Cat, dog, was, green, elephant, works."

  • TOM BALLATORE: OK.

  • COLTON OGDEN: Just random words and conjugations of stuff.

  • TOM BALLATORE: Cool.

  • Integer's in there.

  • I just saw integer.

  • COLTON OGDEN: Integer's a Latin word.

  • TOM BALLATORE: No.

  • COLTON OGDEN: I'm not 100% sure what it means.

  • Integer, Latin for--

  • TOM BALLATORE: Latin for whole number.

  • COLTON OGDEN: Intact or whole, right?

  • Because whole numbers.

  • Integer, the whole number.

  • TOM BALLATORE: Dude.

  • That's so cool.

  • COLTON OGDEN: It's a TIL on stream.

  • Integer is Latin for whole.

  • I actually didn't know that either.

  • "Site is the entirely in English for me.

  • Perhaps edX has auto-translated for you based on your location.

  • In any event, the course is in English."

  • OMGBUSTA-- "A number."

  • "When you click on the Enroll button to sign up, it's not an English?

  • Is the course in English?"

  • Oh, I'm actually not sure.

  • But to Brenda's point, I mean, it's definitely in English.

  • I'm not sure if your browser settings are set such that they are different.

  • TOM BALLATORE: Wait, is that CuriousKiwi the CuriousKiwi I know?

  • COLTON OGDEN: Yep, that's the CuriousKiki that you know.

  • TOM BALLATORE: Brenda.

  • COLTON OGDEN: Yep.

  • TOM BALLATORE: What's up?

  • Is Glenn out there, too?

  • OK.

  • So I dunno if you ever take like CS50 or the edX version-- hey.

  • Oh my gosh.

  • Oh, so we're actually interacting.

  • There are people who man the discussion boards.

  • And Brenda is just like the boss.

  • COLTON OGDEN: Yeah.

  • Brenda's all over the place.

  • TOM BALLATORE: I mean, just incredible replies all the time.

  • OK.

  • COLTON OGDEN: Monge1h, thank you very much for the follow.

  • OMGBUSTA-- "From the UK.'

  • That's interesting.

  • Then I'm not so sure why it's in a different language.

  • "Have you used require_once for including the headers in an init file?"

  • Oh, it's talking about--

  • to somebody else, OK, in the chat.

  • "Can you make HTML modular so you don't have

  • to repeat the footer and the header?

  • I've always had this problem when making websites.

  • Something that's on the client side.

  • I know PHP includes."

  • Raw HTML, not as much.

  • But for templating engines--

  • Jinja, which we use with Flask and for many other--

  • like, for example, what's it called?

  • I think it's handlebars that's used for node but other ones.

  • Jade is a good one.

  • There are a lot of these features that are a higher level that

  • are things that a parser looks at and bundles it altogether and then sends it

  • to your web browser.

  • But raw HTML needs to be in one document.

  • "You can render subsections of HTML pages," says Andre.

  • "Don't you know Latin," says Bhavik.

  • Unfortunately, I do not.

  • TOM BALLATORE: Pluribus unum.

  • COLTON OGDEN: Pluribus unum.

  • I'm actually not sure--

  • TOM BALLATORE: I don't know what it means.

  • COLTON OGDEN: Something one.

  • TOM BALLATORE: E pluribus unum.

  • Sorry.

  • COLTON OGDEN: But yeah.

  • We have two paragraphs.

  • Did I copy them over successfully?

  • I think I did.

  • I'm going to go over here, go back to our tab, refresh.

  • And you'll notice an interesting thing about paragraphs.

  • And this actually ties back to what we looked at with headers.

  • And that's that paragraphs, like headers, are block level elements

  • and that they basically exist on a new line in their own block, so to speak,

  • that spans the entire width of the web page.

  • And this is referring to non-styled blocks.

  • You can style blocks to take up percentages of the web page with CSS.

  • But when you just use block level elements as is,

  • they take up the entire width of the page.

  • So yeah, that's a cool thing.

  • Paragraph tags, even if they are right after each other,

  • even if we were to put, say, this paragraph tag over here and immediately

  • start all of this text on this line, they're still going to have a space.

  • And I can demonstrate this.

  • I can put this like that, right?

  • There's no new line at all, no new line in our actual text file.

  • And even to further illustrate this, I'll do that.

  • So it immediately goes right into the next paragraph.

  • But if I save it and refresh the page, nothing changed whatsoever.

  • So our actual text file is not related whatsoever to the styling of the HTML.

  • TOM BALLATORE: Question.

  • So HTML ignores spaces, right?

  • COLTON OGDEN: Yep.

  • TOM BALLATORE: But it doesn't ignore space between words

  • because that would really be awful.

  • COLTON OGDEN: Yep.

  • TOM BALLATORE: Because all the words would running together.

  • COLTON OGDEN: Yep.

  • TOM BALLATORE: What if you put just a single space between those?

  • Would it actually be rendered?

  • Or does it realize it's just--

  • we wouldn't even be able to see it, though, right?

  • COLTON OGDEN: Yep.

  • We wouldn't be able to see.

  • It's not within a tag.

  • So I guess because it has no semantic meaning--

  • I mean, I think text does, but spaces do not.

  • TOM BALLATORE: OK.

  • COLTON OGDEN: So text itself.

  • So if we were to type Colton, it's between the paragraphs,

  • and it should still render it.

  • But it still, for some reason, spaces because it's

  • part of the parsing of the document.

  • It doesn't actually render the space.

  • It just renders-- now what you can do is you can

  • use an HTML escape character for it.

  • And I don't remember offhand what it is.

  • I think it's that.

  • TOM BALLATORE: Oh, yeah.

  • Breaking space.

  • COLTON OGDEN: And I'm not 100% sure if that's correct.

  • No, that's not correct.

  • TOM BALLATORE: N-B-S-P?

  • COLTON OGDEN: It's some other--

  • let's see.

  • HTML escape char space.

  • Which characters need to be skipped in HTML?

  • We have a representation.

  • TOM BALLATORE: Nah.

  • COLTON OGDEN: Trying to see if it has the space.

  • It does not have the space.

  • HTML escape characters are important, and it's something

  • that you also need when you're, for example, encoding a URL because you

  • can't have a space in your URL.

  • For example, if I want to go to the www.--

  • TOM BALLATORE: The one I said about a minute ago.

  • COLTON OGDEN: Oh, nbsp.

  • OK.

  • Nice, nice.

  • Well done.

  • TOM BALLATORE: Thank you.

  • COLTON OGDEN: nbsp.

  • Oh, and also another thing that's cool--

  • VS Code actually colors it.

  • So we--

  • TOM BALLATORE: It knows, yeah.

  • COLTON OGDEN: Contextually, it knows.

  • Let's go back here.

  • TOM BALLATORE: By the way, what are you using?

  • COLTON OGDEN: Do that, and there is, indeed-- it's hard to see it,

  • but there's a space in front of my C. What am I using, the text editor?

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: VS Code.

  • TOM BALLATORE: Oh, OK, cool.

  • COLTON OGDEN: So it's very similar to Atom.

  • It's kind of slightly newer than Atom.

  • But it's default by Microsoft, actually.

  • Completely free.

  • Super well-- actively developed.

  • They have a massive team of people that are constantly developing it.

  • So it's great.

  • TOM BALLATORE: Just to render text.

  • COLTON OGDEN: Yes, just to render text.

  • TOM BALLATORE: OK.

  • COLTON OGDEN: And what was I going to say?

  • I was going to make a point about it.

  • TOM BALLATORE: Obviously, it's more than just rendering text.

  • COLTON OGDEN: A little bit less memory intensive than Atom is, which is nice.

  • TOM BALLATORE: Atom, yeah.

  • COLTON OGDEN: Atom uses a ton of memory because it's effectively

  • a virtual browser rendering a bunch of text.

  • VS Code is as well, but they, somehow or other,

  • have mitigated a little bit of that memory usage.

  • Are HTML tags case sensitive?

  • Let's try it out and find out.

  • So let's go ahead and type a P here and a P here.

  • And if I go back here, translate this page-- nope.

  • Not translate it.

  • Render it.

  • It seems that it is case sensitive, right?

  • Oh, nope, it's not case sensitive.

  • Sorry, I thought--

  • I deleted my name.

  • It is not case sensitive.

  • So P-- and we saw this earlier actually when we made DOCTYPE lower case.

  • TOM BALLATORE: DOCTYPE versus doctype.

  • COLTON OGDEN: Yeah.

  • There is no case sensitivity.

  • It's conventional to use lowercase letters over uppercase characters

  • probably because it's just easier to type them out.

  • But indeed--

  • TOM BALLATORE: What's up with that?

  • Like, some people use the all caps for DOCTYPE.

  • And I just like the small one.

  • And sometimes, we'll format it with all caps, even after you're done.

  • COLTON OGDEN: I'm not sure.

  • And, you know, I think habitually I use uppercase DOCTYPE.

  • But lowercase would be semantically or syntactically more consistent

  • with the way that we use all the other tags, which are all lower case, right?

  • TOM BALLATORE: Yeah.

  • So maybe it's like it's a special tag.

  • COLTON OGDEN: I guess maybe it is kind of special

  • because it's the very first big tag, and it's saying, oh, DOCTYPE.

  • TOM BALLATORE: Is it even a tag technically?

  • COLTON OGDEN: Is it even a tag?

  • TOM BALLATORE: Is it a declaration, an incantation perhaps?

  • COLTON OGDEN: Because this exclamation point might be--

  • well, technically, it is a tag.

  • But I'm not sure whether it's necessarily the DOCTYPE

  • or whether it's the exclamation point as a special definition tab or something.

  • We can see-- doctype, tag type.

  • TOM BALLATORE: For those of you who might've been around before HTML5,

  • these incantations that came before were just awful, remember?

  • Like, the XHTML and just long things you had to copy and paste.

  • COLTON OGDEN: Interesting.

  • It is not an HTML tag as per W3Schools.

  • So it is instruction to the web browser about what version of HTML

  • the page is written.

  • In this case, it's--

  • well, I guess it says-- wait, no, no, no.

  • Refers to a DTD--

  • rules for markup language.

  • So it's HTML5.

  • TOM BALLATORE: All right.

  • COLTON OGDEN: Oh, right.

  • OK.

  • So I'm trying to see what the HTML4 one was because--

  • TOM BALLATORE: Oh, yeah, there it is.

  • COLTON OGDEN: Here's the HTML4 one.

  • So much longer, much less elegant than the HTML5 doctype declaration,

  • I would say.

  • But no, it's not technically-- now I guess syntactically,

  • I guess it is a tag, but it's not technically a tag.

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: It doesn't have a close.

  • It doesn't have content that it refers to.

  • It's just something the browser is looking for as it's passing, I guess.

  • It's saying analyze these bytes if they equal this sort of thing.

  • TOM BALLATORE: You know, I never tried it, but what if you don't put that in?

  • Does it default your browser to HTML5?

  • COLTON OGDEN: So my understanding is that it does.

  • So if we do this and then I save, Chrome should, by default, just

  • render it the exact same.

  • So actually, it rendered it slightly differently.

  • TOM BALLATORE: Interesting, yeah.

  • The default CSS that comes with it, with HTML5 I guess doesn't--

  • [INAUDIBLE] not really HTML5.

  • COLTON OGDEN: That's fascinating.

  • I haven't looked too into detail on the differences there.

  • TOM BALLATORE: We will put that on our list of things--

  • COLTON OGDEN: There is a slight bit of spacing

  • at the very top in the situation that you don't include the doctype there.

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: So beyond just the, I guess, semantic value of it,

  • there is a little bit of style associated with it.

  • TOM BALLATORE: I'm reading the comments.

  • "Ducktype," that's funny.

  • COLTON OGDEN: "I used to code emails in HTML tables."

  • Ooh.

  • Man, that must have been terrible.

  • Yeah, HTML4 doctypes were annoying.

  • Remember the metadata.

  • Post to get requests.

  • If your file is doctype HTML, it will be HTML page for the browser.

  • Yep.

  • "I once had to write code for email template, and it was so painful."

  • I'm guessing-- Oh, HTML, I'm guessing.

  • "I'm interested web dev, so watching the stream to get educated.

  • Thanks for this."

  • Absolutely, Myaocat.

  • Thanks for tuning in.

  • Jabkochason says, "I saw this livestream where

  • users were able to format the chat with style tags on one guy's channel."

  • Interesting.

  • I'll have to take a look at that.

  • If you can link the stream or the VOD, I'd be curious to see what that is.

  • We might be able to integrate something like that.

  • "I think it's good standards to keep the lower case, no?"

  • Yeah, definitely.

  • I would say definitely good standards.

  • I have never seen anybody in real world use case

  • use capitalized tags for the body.

  • I mean, for the doctype, yeah.

  • I think that's common.

  • TOM BALLATORE: It would be like shouting, right?

  • COLTON OGDEN: Yeah.

  • But I think the doctype, even in CS50, I think we use the lower case doctype--

  • I think David has in lecture.

  • I'm not 100% sure.

  • I'm not 100% sure.

  • I don't speak on behalf of what David's done offhand.

  • Oops, I accidentally turned on my space heater here.

  • Going to turn that off.

  • I think I definitely like the look of it,

  • but I think from a standard's point of view,

  • it makes more sense to see in caps I guess.

  • I don't know.

  • TOM BALLATORE: I don't know.

  • I mean, they're in the tag, so I don't know.

  • SQL, that comes up quite a bit.

  • Do you ever have a SQL stream, like where you'll have SELECT star from?

  • In SQL, I really like to see caps just because that's what I'm used to.

  • COLTON OGDEN: Because that's what you're used to.

  • TOM BALLATORE: But you don't need it, apparently.

  • COLTON OGDEN: You can do it in lowercase, yeah.

  • TOM BALLATORE: Yeah, HTML--

  • COLTON OGDEN: David and I did a SQL stream actually a while ago.

  • That was like two months ago.

  • But we did.

  • We covered the basics of it.

  • I think we used caps, though.

  • TOM BALLATORE: I was hoping we were doing the Pokémon--

  • or not the Pokémon--

  • the Pac-Man or the Donkey Kong or something today.

  • But this is cool, too.

  • But I do like games.

  • COLTON OGDEN: This is a little bit tamer than that.

  • Thanks, eMaDDen and mewell for following, and Catalsy--

  • I'm not sure-- and KeeRoll.

  • I'm not sure if I caught any of those, actually.

  • I apologize.

  • TOM BALLATORE: Oh, yeah.

  • COLTON OGDEN: I think I've missed a few.

  • Yeah.

  • TOM BALLATORE: Somebody was talking about coding

  • like with frame-- or tables.

  • COLTON OGDEN: Oh, yeah.

  • TOM BALLATORE: I just took a course, and it was a CSS course.

  • And our final project is we had to, like,

  • do all this formatting in or using floats.

  • I don't know if you've ever-- we're not talking about CSS today,

  • but it's kind of like that tabley sort of hack to give things a layout.

  • And then we were given the privilege of using grid and flex afterwards.

  • COLTON OGDEN: Oh, and flexbox?

  • Yeah.

  • TOM BALLATORE: It was so much nicer.

  • Floats just boo.

  • COLTON OGDEN: Yeah.

  • We'll probably cover that actually in our CSS stream, floats.

  • But then I do want to cover flexbox and other things, more modern styling

  • conventions as well.

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: "Isn't it just related to the comment that's meant to be"--

  • it's not the same thing as a comment, Bhavik.

  • But you can maybe lump them into a parsing sort of category.

  • The browser is looking for that sort of exclamation point

  • and doing some behavior depending on what's in that tag.

  • If it's a comment with dash-dash, then it's going to ignore it.

  • But if it's doctype, if it sees doctype, then it knows to parse the rest of it

  • as HTML.

  • Cool.

  • All right.

  • So I apologize if I'm not hitting every single comment.

  • So h1prevet, thank you for joining.

  • But let's get into, I think, some more of the actual content of the HTML

  • because we have a long ways to go still.

  • Let's take a look at some crude basic styling.

  • So now, we have our p tags here, our paragraph tags.

  • And actually, the-- wait.

  • I thought I had this styled a little bit differently,

  • but it looks like I might have screwed it up.

  • Oh, no, I didn't.

  • I just need to do that.

  • So we have our paragraph tags.

  • One's capitalized to illustrate that you can capitalize tags.

  • But let's just say don't do that.

  • TOM BALLATORE: Feels weird, yeah.

  • COLTON OGDEN: And keep them all lowercased.

  • And someone asked if we could point out more conventions during the course

  • or during the stream.

  • I'll try.

  • If I can think of any off the top of my head, I'll definitely do some.

  • I know we have alt. That's a convention for accessibility.

  • TOM BALLATORE: I think one thing that maybe we

  • can talk about later once we make this page is to run it through a validator.

  • COLTON OGDEN: Oh, sure.

  • TOM BALLATORE: Because that would enforce, well,

  • the convention of have you actually done the HTML tags correctly.

  • And I highly recommend that because it's so easy

  • to miss closing a tag or something or doing something illegal.

  • COLTON OGDEN: We pointed to earlier the fact

  • that modern text editors-- and this is a luxury we get now.

  • But this hasn't always necessarily been the case.

  • You can type something like h1, for example, in VS Code or even in Atom,

  • and it'll just close it for you, which kind of mitigates that issue.

  • But that's not to say that you're immune from the issue

  • because you can easily come out over here

  • and say, oh, I want to write some content here instead, and then

  • forget to close the h1 because overwrote what the text editor's trying

  • to do to help you out, I guess.

  • TOM BALLATORE: One of the things I always

  • run into-- trouble with HTML is it's not like you're running Python,

  • where you might run your program and get errors in your terminal.

  • Here, it's like, it just goes.

  • COLTON OGDEN: Exactly.

  • It's going to keep rendering until it reaches the end of the HTML file.

  • There is no browser error.

  • Because to make things user friendly for users,

  • they don't want error messages popping up saying, oh, your HTML is invalid,

  • right?

  • It's going to try its best to render it.

  • You make it console errors for JavaScript,

  • but those are hidden from the user.

  • The user's not going to see what those are,

  • and we're not going to cover JavaScript today.

  • TOM BALLATORE: So using a validator is one way of, like, getting feedback

  • on mistakes you have in your code.

  • COLTON OGDEN: At least knowing that you haven't screwed something simple up.

  • You might have screwed up your own styling

  • as a result of CSS being messed up.

  • But that's a whole separate ballpark.

  • "Colton, how'd you get around solving a CS problem where you were stuck

  • for a long time?

  • Sorry for the off-topic question, but I'm

  • going through that phase, which also is leading to procrastination,"

  • says Ashfaqseyad.

  • It comes along with practice.

  • The more problems you solve, the more instinct

  • you get in terms of like what could be going wrong.

  • And it really-- this is such a general thing to look at, too,

  • and there's so many different kinds of problems.

  • First thing that I like to typically do--

  • and definitely share your thoughts on this as well--

  • is insert print statements into my code and look at variables.

  • And if I have a debugger, use the debugger

  • as well to see what my variables are.

  • And if you have a frame by frame debugger

  • or, rather, cycle by cycle debugger, analyze every single step,

  • every instruction in your program to see if variables are changing in the way

  • that you expect.

  • But the more visually you can make your program give you feedback

  • and tell you that your variables are equaling the correct values

  • at the right time, the more you can narrow down

  • where things are going wrong.

  • Because a lot of the time, it just ends up

  • being something is getting assigned the wrong value.

  • TOM BALLATORE: Yep.

  • COLTON OGDEN: Right.

  • TOM BALLATORE: Yeah, I mean, the print statement is--

  • I love print statements.

  • If you do have a debugger that you can run,

  • like if you're running the CS50 IDE, you can step through your code

  • and see things that are happening, variables how they're changing.

  • That's awesome, too.

  • But I just go to a print statement right away.

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: But we were just having the Python a little workshop

  • for the lawyers course, and it was funny.

  • Like, somebody gets a syntax error, and, like,

  • it's giving you an error on a line.

  • And because I've seen this so many times,

  • my first thought was like, what's going on the line above there?

  • And they had missed like a parentheses in kind of a long line.

  • And it's very easy to miss those.

  • But I think watching David in lecture, like, he'll come across something.

  • And maybe you'll get a syntax error because he's just coding it live.

  • The thing that is really impressive is, like, he'll--

  • you can imagine going through the catalog of things he's seen before.

  • And within a few seconds, usually, he's just like, oh, yeah, I forgot this.

  • And that's really cool.

  • I mean, you're like that with this stuff, too.

  • But I'm like, yeah.

  • I want to be like that someday.

  • COLTON OGDEN: I think you brought up a very good point--

  • looking at not necessarily to where you think the problem is maybe.

  • Maybe your error is happening at a print statement, saying,

  • "result equals something," and it's the wrong value.

  • Or it's breaking at some line.

  • But usually the problem is higher than where

  • you think the problem might be instinctively at a first glance.

  • So looking up above rather than spending too much time at the exact problem

  • or below the problem, that's definitely, I

  • think, great intuition, a great way to-- a good heuristic

  • to follow to at least solve programming problems.

  • "C was a nightmare.

  • I didn't even watch all five weeks of C in CS50," says Jabkochason.

  • Yeah.

  • It's a bit more work.

  • But, I mean, that's the foundation of all modern software, right?

  • TOM BALLATORE: I'm totally like I know that feeling, right?

  • Because like I had studied Python before I took CS50, right?

  • And I mean, Python makes it pretty easy frankly to do stuff,

  • like just operations on a string, let's say, right?

  • C's all right.

  • And for the first few weeks, I was like, you gotta be kidding me.

  • Is this broken?

  • But the really cool thing-- like, if you do work through

  • and if you do make it through the C stuff,

  • you might have seen the lecture where-- well, is it pset 4 or 5

  • where we do speller, the spell checker?

  • COLTON OGDEN: Is it 5, I think?

  • TOM BALLATORE: In fall 2008, it became 4.

  • But it's probably 5 in the online course, the current online--

  • COLTON OGDEN: That is correct.

  • TOM BALLATORE: And, like, it feels really good to get it done.

  • But you probably get like 150 or 200 lines of code in C

  • that you've written, right?

  • And then David has this moment in lecture when he's introducing Python,

  • and he just basically, just from scratch, writes 20 lines of Python code

  • that implements speller, right?

  • COLTON OGDEN: We did that on stream, too.

  • TOM BALLATORE: He did it on stream.

  • OK, yeah.

  • So then you've seen this before if you attended then.

  • And it's like, I mean, Sanders--

  • at least they're all like, whoa, yo, and also groaning

  • that they had to go through all the stuff.

  • But-- and maybe you do this, too-- if you actually run the code,

  • the C's faster.

  • OK, so there are reasons that--

  • yeah, I know it's like not as easy.

  • So it might seem like a nightmare.

  • But pedagogically, there are reasons you're

  • starting with C. So just hang in there.

  • That's all I can say.

  • There's a lot of support out there--

  • the forums, everything-- that you can definitely get

  • help to make it through there.

  • And it's worth the struggle.

  • COLTON OGDEN: Illustration of pros and cons

  • as applies to, I mean, in this case, two different domains of programming

  • altogether.

  • But it can extrapolate that to Python versus Ruby, which may

  • have very similar runtime performance.

  • Different languages have different pros and cons.

  • And maybe there's a way to do something in Python that's very easy,

  • but in Ruby, it's not as easy.

  • And Ruby might have a syntax that makes something that would take a lot of work

  • in Python a quite a bit easier in Ruby.

  • TOM BALLATORE: Absolutely.

  • COLTON OGDEN: Pros and cons is universal, and particularly

  • illustrated between a low level and a high level programming language.

  • Layers of abstraction really kind of disappearing at that point.

  • OK.

  • So we have two paragraph tags here.

  • And I apologize, again, if I missed some comments here.

  • But let me just take a brief look.

  • Let me make sure I'm not missing any questions.

  • Ashfaqseyad, no problem whatsoever.

  • Everybody's kind of saying, yep, pset 4 now in edX.

  • [TOM LAUGHS]

  • TOM BALLATORE: We don't have a moderator here.

  • So just ignore some of the comments.

  • COLTON OGDEN: Yeah.

  • "Why are there two versions-- maybe there is more-- about CS50

  • the introduction to web dev?"

  • CS50--

  • TOM BALLATORE: Oh.

  • COLTON OGDEN: Two versions.

  • TOM BALLATORE: I think what they're saying is like they're branded as CS50.

  • But there's like the CS50, then there's the web dev, then the JavaScript.

  • COLTON OGDEN: Sure.

  • Yeah.

  • TOM BALLATORE: There's the game development,

  • which you probably know about.

  • COLTON OGDEN: Yeah, those are sort of spin courses

  • that specialize more in a particular domain.

  • For example, my course is a games course.

  • Brian taught a web course, and Jordan taught a mobile/React Native course.

  • And those are all meant to do a deeper dive on topics

  • we just don't have time to cover CS50.

  • Because programming, the world of programming, is--

  • to say it's massive is an understatement.

  • There's just way too many technologies, way too many languages,

  • ways of thinking, ways of solving problems.

  • And you can spend years just going down one rabbit hole.

  • And we just don't have the time to cover that.

  • But we do have many folks who have different skill sets who like to teach

  • and who want to provide more of the CS50 spirit in terms of other courses.

  • And so that's the reason we have all those other courses.

  • All right.

  • Let's go ahead and now talk not about paragraphs,

  • but let's use the paragraphs we have to talk about things related to the very

  • rudimentary styling of elements.

  • diedie92, thank you very much for the follow.

  • So the two tags, really, that I want to focus on for this for now

  • are the em tags.

  • So I'm going to go ahead and do that.

  • em for emphasis, right?

  • And this is something that is very similar to, say, Microsoft Word,

  • where you might want to emphasize a given word in a sentence.

  • You want to italicized it.

  • TOM BALLATORE: Yeah, what's the old school

  • way of doing this, the non-right way of doing this in HTML, anybody in chat?

  • Like, the em tag is the semantically correct tag.

  • Well, what's the wrong way of doing this?

  • Anybody?

  • COLTON OGDEN: It takes a few minutes.

  • And actually, offhand, I might not even know the answer immediately

  • because I know i tags are now used as icons.

  • TOM BALLATORE: It change, right?

  • It would be like the italics tag, which used to be used.

  • So you'll see that popping up sometimes, when people, like, still

  • have i tags when they don't mean--

  • it's not what they think it means anymore.

  • But it used to be i, right?

  • And the same thing with the bold, right?

  • COLTON OGDEN: OK, so i does still define italic text.

  • But it's now also icons, right?

  • That's what the current i is?

  • TOM BALLATORE: I think it's something.

  • COLTON OGDEN: Just so I'm not going crazy.

  • HTML i tag.

  • TOM BALLATORE: It's got to be deprecated for the use

  • that I was just referring to.

  • And the same thing with bold, which we're probably going to talk about.

  • COLTON OGDEN: Yeah, that's interesting.

  • TOM BALLATORE: No, bold would be--

  • does anybody know what bold is?

  • COLTON OGDEN: I guess maybe people use it as i

  • and they override the CSS to not be-- because all it is just font styling

  • italic, and they just use it as icon rendering.

  • TOM BALLATORE: Strong, that's right.

  • COLTON OGDEN: Strong.

  • Yeah, strong is for bold text.

  • TOM BALLATORE: Yeah.

  • And I mean, from an accessibility perspective,

  • when you say bold, what you mean is, like, fat font on a screen.

  • But when you say strong, you mean bold, right?

  • But, like, you're strengthening it.

  • And same thing with you're emphasizing something by italicizing it.

  • COLTON OGDEN: The two have a semantic similarity.

  • But ultimately, it comes down to your taste,

  • the way you want to get a point across, I guess.

  • But we can see here, if I put this consectetur

  • word in em tags, emphasis tags--

  • another fancy way of saying italicized text, italicized tags--

  • and I refresh the page, we can indeed see that the text over here--

  • and it keeps asking me if I want to translate, and I don't.

  • And I'm actually going to get rid of the Developer Tools

  • and zoom in just a little bit.

  • This word right here, consectetur, which we just looked at,

  • is indeed italicized.

  • And this is just default styling on HTML, raw HTML.

  • But you can easily define the way that you want em to work in your code.

  • Perhaps you want the font to get larger.

  • Perhaps you want the color to change.

  • Perhaps you wanted to have a different background.

  • Perhaps you actually want it to get bold and italicized.

  • All these things are things that you can do with CSS,

  • which we're not going to look at today.

  • But that is a way to get some rudimentary styling

  • in your application.

  • And another thing, notice that when we use the em tag around this word

  • consecteur, it didn't add any spacing, first of all.

  • So it's still preserving the spacing of all of our text.

  • And it also didn't create a new line.

  • It actually kept everything in the same line as the paragraph text already was.

  • Oscuro97, thank you very much for the follow.

  • And so this illustrates, again, the difference between inline elements,

  • which is what this is.

  • Notice you can think of it as it's on the same line.

  • It's in line with the rest of the text.

  • Versus block level elements, block level meaning that it creates an entire block

  • and then spaces down below it when it's finished, right?

  • And that's what this paragraph text is.

  • It's a block level element.

  • The em tag is an inline element.

  • So it doesn't actually give us a new line.

  • "What is the difference between italic and oblique?"

  • says Digicrests.

  • Oblique, what is--

  • I actually don't know offhand.

  • Oblique type that slants slightly to the right, used for the same purpose

  • as italic type.

  • Unlike italic type, however, it does not use different glyph shapes.

  • It uses the same glyphs as roman type, except slanted.

  • Oh.

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: Interesting.

  • I didn't know that.

  • That's a TIL for me today.

  • "Now on, will do so.

  • Appreciate it."

  • "No problem."

  • OK, cool.

  • And so people in the chat have also made reference to the other tag

  • we just talked about, which was the strong tag.

  • So if I say--

  • if I put, for example, lorem--

  • TOM BALLATORE: Sorry.

  • COLTON OGDEN: It's all right.

  • TOM BALLATORE: I was flexing.

  • COLTON OGDEN: Lorem in a strong tag, and then I refresh the page,

  • we can see that, indeed, it does bold our text.

  • And the words that we typically say are bold and italic in the world of HTML,

  • emphasized and strong, those are just--

  • what's the word I'm looking for-- conventions that HTML

  • has decided to adopt for the way that it represents

  • this tag, the semantic meaning there, or, I guess,

  • rather, the syntactic meaning there, not so much the semantic meaning.

  • We'll look at semantic tags a little bit later.

  • But those are two that you'll see a lot.

  • And, again, often, you will not use the exact styling

  • that you get for raw HTML, but you do get the ability with CSS

  • to style things custom the way that you would like.

  • OMGBUSTA, thank you very much for the follow.

  • Anything you'd like to add to what we just talked about?

  • It's pretty simple.

  • TOM BALLATORE: Sounds good.

  • COLTON OGDEN: OK.

  • Anybody has any questions so far?

  • I know this stuff is kind of simple, slow paced where we just

  • make sure everything is very foundationally built upon so

  • that future streams make sense.

  • But yeah.

  • We covered p tags, paragraph tags, em tags, and strong tags.

  • Why don't we get into hypertext?

  • Did you have something you wanted to talk about?

  • TOM BALLATORE: One thing I was going to say--

  • and we'll do this maybe as a wrap up.

  • There's interesting question of the popularity of tags, right?

  • Because there's some really rare tags that you're never

  • going to probably use, right?

  • COLTON OGDEN: Yeah, yeah, yeah.

  • TOM BALLATORE: And before the stream here, I

  • was looking up online some of analysis that

  • has been done on the frequency of tags.

  • And maybe we can talk about it a little bit later when we're done, but--

  • COLTON OGDEN: Yeah, that's great.

  • TOM BALLATORE: You really want to learn the ones that

  • are used on like 98% of web pages.

  • COLTON OGDEN: Yep.

  • And we'll actually cover I think every single one of those today.

  • Yeah, we're going to cover every single one of these tags.

  • So that's good to hear.

  • I feel vindicated for the outline that I set up.

  • "Why do tabs get converted to spaces in p tags?" says Dhruvv4.

  • That's a good question.

  • Let's look it up.

  • So a lot of these things, you can just google.

  • I don't know the answer to everything when

  • it comes to anything, but especially in web development.

  • And so I use Google all the time.

  • And I recommend that if you don't use Google for a lot of stuff,

  • for all these questions, get into the habit of doing it

  • because Google really-- you can find it pretty much anything on Google.

  • TOM BALLATORE: My TF, I love my TF for CS50.

  • And the one thing he said-- like, I met him for drinks after the course,

  • after the hackathon and the fair.

  • And I was like--

  • I'll leave him nameless, but Mr. X, I mean, like, man.

  • You knew everything in section.

  • How did you get to be so smart?

  • And he's like, did you notice I often didn't share my camera?

  • And I'm like, yeah.

  • I thought that was a little bit different.

  • He's like that's because I was always googling things.

  • I'm like, oh.

  • He's like, yeah.

  • Just google stuff.

  • That will save you.

  • COLTON OGDEN: I'll be shameless about how much I google.

  • I think everybody-- in the world of development, googling is ubiquitous.

  • Everybody here that works at CS50 is a great, excellent, very skilled googler.

  • It's a skill in the modern era for web development--

  • for any development, for any, I think, field probably requires you to Google.

  • And thanks, Stuck1l, if I'm pronouncing that correctly.

  • Thank you very much for following.

  • But we can say to Dhruvv's questions, why do--

  • I just write it as a question.

  • Why view tabs get converted to spaces HTML?

  • And we have a Stack Exchange question here at the very top.

  • Stack Exchange and Stack Overflow are excellent resources

  • for finding out answers.

  • "Googling or Stack Overflowing," says Oscuro.

  • Yes, exactly.

  • OK.

  • TOM BALLATORE: And a shout out to Bing.

  • COLTON OGDEN: Let me see.

  • Oh, this one actually didn't get an answer.

  • Really?

  • You can bypass [MUMBLES].

  • OK, I think this is a Python question, actually.

  • I apologize.

  • That's a Python-- that's a Python--

  • TOM BALLATORE: Actually, maybe this goes back to the first web page I ever made.

  • I remember I had done sort of desktop publishing stuff, right?

  • So like, well, I mean Word, obviously.

  • But also, let's say, in design where you have

  • complete control over where your text is going to be on a screen

  • relative to figures, whatever.

  • When I made a web page, I was like, no.

  • You got to be kidding me.

  • I can't control the space between these paragraphs?

  • Without CSS, which I didn't know then.

  • And I ended up like tabbing the heck out of stuff to get spaces.

  • So I never realized-- like, I don't do that anymore.

  • We use CSS obviously, if you want to do things like that.

  • Or enter the code for a non-breaking space

  • if you really do want spaces in a row.

  • But yeah.

  • Maybe it's just default for tabs just give you a space.

  • Because I did hack it that way incorrectly.

  • COLTON OGDEN: Yeah, people on--

  • I mean, it doesn't look like there's a clear answer.

  • We'd have to do a deeper dive, I think, onto the HTML spec.

  • But it seems like based on what I'm reading on Stack Overflow, at least

  • per this person's comment-- and this is just one person's comment--

  • that there is not actually a tab in HTML.

  • And what he might mean is that there is no standardized way

  • to render tabs across browsers.

  • Browsers have-- the HTML spec has not defined that /t,

  • or the ASCII character code for t should be rendered in a consistent way.

  • And so therefore, they don't get rendered in a consistent way.

  • So we'll accept that answer for now.

  • It may not be 100% accurate.

  • And again, we'd have to look at the HTML spec

  • and really dig in to understand why that's the case.

  • But there are solutions to get around it.

  • So people are saying wrap the content in a pre-tag,

  • which looks like it's a way to parse /n and t to render them appropriately.

  • So there are ways to get around it.

  • But the raw HTML data that ASCII bytes that it

  • expects to exist in your HTML document as it

  • served to you over the internet, that does not

  • get translated to textual representation in the web browser.

  • So that's just my interpretation of what I'm reading online.

  • So excellent question-- one of those things

  • that you could spend an hour probably digging

  • into stuff to figure out the low level reasons why something exists that way.

  • TOM BALLATORE: Sure.

  • COLTON OGDEN: "Bootstrap is a dream come true."

  • I agree.

  • We're going to do a Bootstrap stream in the future.

  • So jot that down, or at least hold me accountable for that.

  • OK, cool.

  • So we did p tags, em tags, strong tags.

  • The next thing that I wanted to talk about was the whole basis of HTML

  • or, rather, markup itself, and that's hypertext.

  • TOM BALLATORE: Ooh, yes.

  • COLTON OGDEN: So hypertext is a really important thing

  • in web programming, which basically means connecting different documents,

  • right?

  • If I want Google, for example, if we're on Google--

  • let's say I'm on Google Images--

  • images.google.com.

  • And I type in cats.

  • And so this is one page, right, of a bunch of cats.

  • And these aren't actually very happy looking cats.

  • Unfortunately, these are pretty sad looking cats for the most part.

  • TOM BALLATORE: Go to the cat in the suit thing, like shaved.

  • It was like 20 years ago, a meme--

  • COLTON OGDEN: Cat in a suit.

  • TOM BALLATORE: Well, it's shaved cat.

  • We better be careful because who knows what's going to come up.

  • COLTON OGDEN: I think I probably have Safe Search on.

  • I think it's a default setting.

  • TOM BALLATORE: Excellent.

  • Excellent.

  • Excellent.

  • OK.

  • COLTON OGDEN: But you can see that we have all of these pictures of cats.

  • But maybe I want to find out more information

  • about any given one of these pictures.

  • This page on its own isn't necessarily that useful.

  • I mean, it arguably, depending on what you're looking for.

  • But maybe I'm looking for a bit more information on one of these pictures,

  • for example.

  • And it's impossible to include the information about everything

  • into one page for most things, I would say.

  • But we can, thanks to the power of what's

  • called hypertext, click on this picture or this link

  • here and get taken to someone else's web page on the World Wide Web

  • and get more information, get a page served to us from a completely

  • different location on the internet.

  • TOM BALLATORE: Can you imagine before we had this?

  • COLTON OGDEN: It would've been rough.

  • I mean, at that point, you're looking--

  • TOM BALLATORE: I was alive then, but like, man.

  • COLTON OGDEN: Libraries.

  • TOM BALLATORE: Yeah.

  • Yeah.

  • COLTON OGDEN: And I think ARPANET was before you were born.

  • TOM BALLATORE: Yeah, in '70, I was born.

  • But yeah.

  • But still.

  • COLTON OGDEN: Oh, maybe ARPANET was '73.

  • I'm not--

  • TOM BALLATORE: I touched punch cards when I was young.

  • But still.

  • COLTON OGDEN: ARPANET.

  • I don't remember offhand when it-- '67.

  • Oh, it was a concept published in '67, implemented in '69.

  • Before your time.

  • TOM BALLATORE: Yeah.

  • But this idea of clicking on something is so natural to us now.

  • But yeah.

  • COLTON OGDEN: Yeah, it is.

  • It's great.

  • It's a great concept.

  • And it's crazy to think that there were people implementing

  • this sort of theoretically and then tangibly,

  • and that now this is the basis upon which we live.

  • Everything in the world is connected kind of because of this idea,

  • that you can click something and get information on it

  • instantaneously, right?

  • And that's what HTML--

  • the backbone of HTML is, to say that some picture or some link links to--

  • it acts as a hyperlink.

  • And hyper not meaning large, but rather--

  • I looked this up earlier, and hypertext means something more akin to beyond,

  • not large.

  • TOM BALLATORE: Oh, like hyper.

  • Hypersonic, beyond sound.

  • This is real Latin.

  • COLTON OGDEN: Over or beyond.

  • Yeah, Greek, in this case.

  • TOM BALLATORE: Oh.

  • Sorry.

  • COLTON OGDEN: No, it's OK.

  • TOM BALLATORE: Oh.

  • COLTON OGDEN: Super comes from Latin, though.

  • TOM BALLATORE: Oh, Superman is-- oh, OK.

  • Yeah.

  • Hyper sounds better.

  • COLTON OGDEN: Yeah, hyper.

  • Hyperbeam, if you're a Pokémon fan.

  • Have you played Pokémon?

  • TOM BALLATORE: Well, no.

  • My kids, yeah.

  • I've been through.

  • Yeah.

  • Pokémon.

  • COLTON OGDEN: But yeah.

  • TOM BALLATORE: We should do this in Japanese.

  • COLTON OGDEN: Oh, yeah, no.

  • You could do in Japanese.

  • I could not do this in Japanese.

  • TOM BALLATORE: [SPEAKING JAPANESE]

  • COLTON OGDEN: But hypertext means over or beyond.

  • So you can think about going beyond the link,

  • beyond a URL or some other representation of something

  • in your page, be it an image or text, whatnot.

  • But it allows you to transcend the limitation of the domain in which you

  • are currently viewing the web page.

  • So let's say I wanted to link to google.com or maybe cs50.harvard.edu.

  • Maybe I want this to be a landing page where people can come,

  • and I want them to also know about CS50.

  • So I say, click this link and you can actually get access to a web page

  • that David wrote at cs50.harvard.edu.

  • Right?

  • So how would I actually do that?

  • And it's actually very easy to do that.

  • And I'm actually going to make it the most prominent or at least--

  • maybe not most prominent, but the very first thing that people

  • see when they get into the page.

  • I want to say a.

  • I'm going to say-- this is going to be an anchor tag.

  • And I got to look up the exact reason why they call it anchor tag--

  • anchor tag meaning.

  • TOM BALLATORE: Oh.

  • Good question.

  • COLTON OGDEN: Link to another page.

  • Obviously, it's a link to another page.

  • But--

  • TOM BALLATORE: It's like this is--

  • you remember the old Microsoft Word where, like, you'd

  • have an anchor for like an image.

  • And stuff would float around it and stuff.

  • COLTON OGDEN: Sure.

  • TOM BALLATORE: It was really hard for me to figure out how it actually worked.

  • But maybe it's like in this place on the page, you are anchoring something here?

  • COLTON OGDEN: I guess so.

  • I guess so.

  • And then you'd follow that anchor to get to another ship or another web page.

  • I guess you can sort of visually construct that in your mind.

  • Buhrock and Mangozero and [INAUDIBLE],, thank you very much for the follow.

  • Oh, we got some [INAUDIBLE] in the chat.

  • Let me see.

  • TOM BALLATORE: [SPEAKING JAPANESE]

  • COLTON OGDEN: [SPEAKING JAPANESE] Can you speak Japanese?

  • TOM BALLATORE: [SPEAKING JAPANESE] Google Translate's awesome, isn't it?

  • Don't read that one.

  • That's not a good one.

  • We're going to have to get somebody active in the moderation over there

  • if we can please, thanks.

  • COLTON OGDEN: Which one?

  • TOM BALLATORE: Ah, [INAUDIBLE].

  • We won't go there.

  • Anyway, hi.

  • COLTON OGDEN: All right.

  • So let me see what else we got here.

  • TOM BALLATORE: Kawaii.

  • COLTON OGDEN: "Cool mapping."

  • "Kawaii, a Japanese word I know."

  • TOM BALLATORE: Yes.

  • OK.

  • COLTON OGDEN: And [JAPANESE],, which means scary, right?

  • TOM BALLATORE: [JAPANESE] means scary, yes.

  • So she's either cute or scary.

  • Yes.

  • COLTON OGDEN: You want to careful which one of those you use.

  • TOM BALLATORE: And a fun fact.

  • Like, if you want to say something looks cute, you can say [JAPANESE]..

  • But that's really a mistake.

  • It means it's pathetic.

  • COLTON OGDEN: Oh, yeah, yeah.

  • [JAPANESE]

  • TOM BALLATORE: Yeah, and, like, I did that with a baby once.

  • I was like, oh, what a cute looking baby.

  • But it's like what a pathetic baby.

  • I quickly learned that that's--

  • COLTON OGDEN: What was the way you get around that?

  • You say [JAPANESE], and you, like--

  • TOM BALLATORE: [JAPANESE].

  • You don't say that it looks cute.

  • It just is cute.

  • But yeah.

  • COLTON OGDEN: [JAPANESE]

  • TOM BALLATORE: Mm, [JAPANESE].

  • Yeah.

  • So anyway.

  • But yeah.

  • COLTON OGDEN: Japanese lesson.

  • TOM BALLATORE: So I called a baby pathetic.

  • That was really a low point in my Japanese history.

  • COLTON OGDEN: But how would you say something seemed--

  • can you not say something seems cute?

  • Can you say, like-- because I have definitely

  • seen what you're talking about.

  • And someone said that there was a way to get around it.

  • TOM BALLATORE: Yeah, we probably could.

  • Let's talk about that over beers.

  • COLTON OGDEN: Yeah, let's do that.

  • Maybe defer that to another conversation.

  • Anyway, HTML anchoring.

  • So anchoring, as we've illustrated-- and this might not

  • be the original intended use case for this tag

  • or at least the mental construction for this tag--

  • but you can think of it as there's an anchor

  • at this clickable thing on the page.

  • And if you follow where the anchor is, it goes to some other web page, right?

  • So a, and then I'm going to say href, and this is short for hyper reference.

  • And what this does-- or hypertext reference.

  • I'm not 100% sure.

  • But the href is actually what this anchor is anchored to, right?

  • And so I can say http://--

  • https://cs50.harvard.edu.

  • It takes in a URL much like you would type in your browser.

  • And I can say, "CS50 is awesome."

  • So notice that I did a couple of things.

  • I wrapped some text, just like I did with the p tag, right?

  • The paragraph tag wrapped a body of text, a bunch of text.

  • And I not only included in a tag.

  • But within this a tag, I didn't close it right away.

  • I actually typed a space, and then I typed what's called an attribute.

  • And we've seen attributes already so far,

  • but just haven't talked about them in tremendous detail.

  • For example, a meta tag can usually have a series of attributes.

  • And you can define custom tags, which have custom attributes when

  • you get into JavaScript.

  • But for right now, we're just going to use

  • with what's included in the HTML spec.

  • And with anchor tags, you get this attribute called href.

  • And the href is basically some metadata that

  • gets assigned to this tag, which tells it where to go when you click the link.

  • So I'm going to refresh the page.

  • I'm going to go over--

  • I have a lot of tabs now.

  • We've gone on some rabbit holes.

  • We can clearly see that I have actually visited CS50's page already,

  • which is why it's purple.

  • Chrome styles pages that you visited already as being purple and blue.

  • I believe blue by default.

  • TOM BALLATORE: Blue.

  • COLTON OGDEN: We can illustrate this with another a tag shortly.

  • And if I click on this tag, notice that, first of all,

  • on the bottom left of my screen, there is a URL that pops up

  • and a little panel there, which kind of just

  • gives you a hint that says this is where you're

  • going to go if you click on this link.

  • And this is a good way to bypass nefarious websites trying

  • to get people to click on links and go and do all sorts of stuff.

  • David's mentioned this in certain lectures.

  • But we'll trust that I have programmed this not nefariously.

  • And I, indeed, get taken not to a page that I have written,

  • although I have written part of it.

  • I did-- fun fact-- write the Staff page, which is really cool.

  • TOM BALLATORE: Oh, yeah.

  • COLTON OGDEN: Check that out.

  • TOM BALLATORE: OK, cool.

  • COLTON OGDEN: Using an awesome library called Masonry.

  • So bunch of images of all our teaching fellows.

  • So some pretty cool Bootstrap mixed with Masonry stuff.

  • But this is a page that's largely created by David

  • and other members of the CS50 teaching staff, all

  • of these sub points over here.

  • This is not my web page, but I can link to it from my own HTML.

  • It's just something that's a feature given to you by the internet,

  • by Chrome, and by HTML and by the existence of the internet,

  • being linked to the internet.

  • TOM BALLATORE: There's a question up there.

  • "So paragraph tag breaks a new line?"

  • So basically, it gives you a line break.

  • Yeah.

  • Because the paragraph tag, by default, has some formatting with it

  • that includes like a break at the end.

  • So you could imagine a web page in which they have a bunch of p tags

  • instead of having the proper break tag, br tag.

  • You could probably hack it that way.

  • COLTON OGDEN: Yeah, absolutely.

  • And you can get a lot more granular with it when you get to CSS, too.

  • You can decide that paragraph text shouldn't break, for example.

  • You can overwrite that functionality.

  • You can overwrite pretty much any styling

  • that you want with CSS, which is super cool.

  • TOM BALLATORE: Question is, "How do you get the videos to play?"

  • You mean the staff people doing, like, fun things?

  • Those are not videos, actually.

  • Well, they're GIFs, right?

  • COLTON OGDEN: Correct, correct.

  • They were originally videos.

  • And then Dan Coffey very kindly transcoded them

  • and turned them into GIF images, which then got put onto a server somewhere.

  • And we'll get into image tags.

  • But image tags essentially let you embed any image,

  • and GIFs are technically images.

  • And so because they're images, you can put them into your web page

  • just like you would put a regular image, a JPEG or a PNG file.

  • And they'll render because Chrome knows how to render GIF images.

  • TOM BALLATORE: It would be interesting if you went to Dev Tools

  • and checked out how long it takes that page to load.

  • COLTON OGDEN: Oh, sure.

  • The network?

  • TOM BALLATORE: It's a heavy page.

  • COLTON OGDEN: Sure.

  • So let's go ahead.

  • Oh, specifically the Staff page?

  • TOM BALLATORE: The Staff page, yeah.

  • COLTON OGDEN: Yeah, the Staff page is--

  • TOM BALLATORE: If you've got a fast connection, you might not notice it.

  • But--

  • COLTON OGDEN: I mean, we're still loading stuff.

  • Yeah, it's been-- how long exactly was that?

  • That was a while.

  • That was--

  • TOM BALLATORE: I don't know the size of it.

  • COLTON OGDEN: --three seconds?

  • Oh, 2.97 seconds here at the very bottom.

  • It says finish 2.97 seconds.

  • This is part of the Chrome Developer Tools.

  • This is the Network Panel, which allows you

  • to analyze network traffic as you're connecting to and from other websites

  • or asynchronously downloading, fetching information from other websites, which

  • we'll take a look at asynchronous JavaScript in the future,

  • making things like AJAX requests.

  • But that's beyond the scope of today's stream.

  • I'm going to go to Menu.

  • I'm going to go over to the Staff page.

  • And we can see all the stuff is loading.

  • 2.56 seconds, actually.

  • TOM BALLATORE: Fast connection.

  • COLTON OGDEN: Yeah.

  • To be fair, these images are probably cached.

  • TOM BALLATORE: Oh.

  • Yeah.

  • So you could do, like, a hard reload.

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: How would I do that?

  • Hmm.

  • You would hold, like, an option or something, right?

  • COLTON OGDEN: Shift-Refresh.

  • TOM BALLATORE: Look at that.

  • It's 20-- ooh, 30-some megabytes.

  • You can't even say it's fast enough.

  • It's like, oh, ah.

  • 72.3 megabytes.

  • COLTON OGDEN: Because it wasn't cached, it took five seconds in this case,

  • on a fast connection even.

  • And probably not necessarily because that's how fast we can download.

  • We can download much faster than that.

  • Maybe not, actually.

  • That's pretty fast.

  • That's actually pretty fast.

  • But we get faster connection here.

  • Harvard's got insane internet.

  • But yeah, that illustrates not only network fetching but caching.

  • So the power of caching.

  • So caching files, caching JavaScript, caching CSS HTML on your local machine

  • prevents you having to make more network requests in the future.

  • But that is a little bit beyond the scope of today's talk.

  • But a nice tidbit.

  • Very good to look at that.

  • Definitely consideration for building your websites,

  • you want to minify your assets as much as possible,

  • and this often takes the form of minifying JavaScript--

  • taking a full JavaScript file and basically shrinking it down,

  • kind of pressurizing it until it's very tiny but still

  • accomplishes the same thing.

  • We can illustrate that in a JavaScript stream in the future.

  • Cool.

  • "Hard reload and cap the connection speed

  • in Chrome DevTools for maximum fairness."

  • [TOM LAUGHS]

  • Yeah.

  • We're not going to do that.

  • I'm going to abuse the internet here as much as I possibly can.

  • Mangozero says, "When should you use a new p tag over a break tag?"

  • I'm inclined to actually not use break tags that much.

  • I don't know about you.

  • Do you use break tags a lot?

  • TOM BALLATORE: Yeah.

  • I wouldn't use a p tag if you want to break.

  • I mean, break is a break, right?

  • COLTON OGDEN: Sure.

  • TOM BALLATORE: There is this--

  • I can't think of it right now.

  • Like, when you want to have a--

  • oh, jeez, what is it?

  • Like, to put a line in--

  • COLTON OGDEN: Oh, the hr?

  • The horizontal--

  • TOM BALLATORE: Yeah, yeah, horizontal rule tag.

  • I'll use that occasionally.

  • But if I want a break, I use a br tag.

  • But I mean, don't use those if you want, like,

  • margin or something around an element.

  • That's CSS stuff.

  • Like, semantically, when you want to break your text

  • or break two divs or something, that's when a break makes sense.

  • COLTON OGDEN: I see what you mean.

  • So if you're in the middle of a p tag, for example,

  • and you want to space out some stuff.

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: OK.

  • TOM BALLATORE: That's a break.

  • That's when you use break.

  • I mean, that's the great thing about HTML5

  • is you just follow what the tags mean.

  • If it's a paragraph, it's a paragraph.

  • It's not a line break.

  • It's a paragraph.

  • COLTON OGDEN: I guess it's easier than, for example, wrapping that all in a div

  • because a div is going to bulky.

  • And if you're not styling it, then it's not as crucial.

  • I would say if you're styling that broken text in a specific way,

  • maybe use a div instead.

  • But I think I can see your point.

  • The break tag is probably better for a lot of use cases.

  • "Can you shed some light on what flash cookies are?"

  • Flash cookies.

  • So cookies are just files that are stored locally

  • to your machine that preserve some token that you

  • can use to keep logged into a web page.

  • A flash cookie--

  • I'm not actually-- OK, so they are used with flash.

  • So flash is an old runtime.

  • It's an Adobe product, Adobe Flash.

  • And it was basically the precursor to HTML5

  • and things like Canvas, which allows you to do graphical stuff.

  • Flash is very closely tied to things like newgrounds.com

  • and a lot of other things where people were

  • posting games and animations and stuff.

  • Before the internet became as flexible as it is now with JavaScript,

  • you basically had to use a program called

  • Flash, which was an editor, a program kind of like Photoshop

  • that you can draw out an animation or a game in the tool,

  • and then export something that you would embed into your HTML page.

  • And then that would load in the web page as a embedded game

  • or animation or whatever, an application.

  • And so flash cookie looks like something that is somewhat cookies

  • but used specifically in the realm of Adobe Flash.

  • And Adobe Flash is not used as much.

  • I mean, it started dying as soon as Steve Jobs said,

  • we're not going to support Flash.

  • You can still use Flash on Macs and PCs, and you'll

  • see websites that say Adobe Flash wants to be able to have access as web page

  • or whatever.

  • And they'll say if you don't have it installed, install the runtime.

  • But it's much more, I think, modern and more relevant to use HTML in Canvas

  • and those sorts of things, which are much more well-supported.

  • BALLATORE: Especially accessibility, even.

  • I mean, that's a big push in HTML5.

  • If you put everything in Flash, and you can't

  • see what's in it, like we can with, let's say, inspect source.

  • So it's definitely not probably a good idea to be coding right now in Flash.

  • COLTON OGDEN: Yeah.

  • Yeah, Flash is a pretty old technology.

  • I would recommend against it.

  • But you will see it.

  • And Flash Cookie like it's similar to what cookies are for the web browser,

  • just in the realm of Flash embedded applications.

  • Which again, to Tom's point, you can't see what's inside of them.

  • So you don't know what you're actually necessarily storing

  • the credentials or information for.

  • Good question-- a little bit beyond the scope of, certainly, HTML.

  • But let me just clear some of these tabs away, just so

  • that it's a little bit less filled up.

  • Chrome does use a lot of memory, which is unfortunate.

  • We have, now, illustrated hypertext.

  • And hypertext is one of the most foundational, important things

  • that you can learn when it comes to HTML and building web pages,

  • being able to connect back and forth between someone else's

  • server and your own HTML page.

  • But what if we wanted to, for example, connect to our own page--

  • our own HTML, another HTML page that we ourselves

  • have written, not to a page that's stored somewhere else on the internet.

  • And we can very easily do that.

  • If I just go over to VS Code, go over here and make a new file.

  • And I'm going to call this Tom.html because you're here with me, right.

  • TOM BALLATORE: My hand got cut off.

  • There we go, yeah.

  • COLTON OGDEN: I'm going to do the same thing that I did earlier.

  • First, I'm going to press Command-B to get out of the Site Inspector.

  • Type HTML, go down, hit Tab, get myself a starting point,

  • get rid of my script and style sheet.

  • I'm going to call this Tom's Web Page.

  • And are you on the staff page?

  • Did you get a picture taken?

  • TOM BALLATORE: Oh, yes.

  • COLTON OGDEN: Oh, do you have a picture taken.

  • TOM BALLATORE: Oh, I was just zany that day.

  • COLTON OGDEN: OK.

  • Let's go ahead-- this will allow us to get into a few things eventually.

  • But why don't we go ahead and go over to Staff.

  • We'll grab Tom's picture here.

  • So it's sort of by first name.

  • Let me go ahead.

  • Oh there we go, Tom Ballatore.

  • TOM BALLATORE: Ooh.

  • COLTON OGDEN: Let's go ahead and save that image.

  • Save that GIF.

  • And I'm going to save it here in my Streams/Web/HTML.

  • And I'm going to call this Tom.gif.

  • And it's already going to save it as a GIF file by default,

  • because that's the file type-- the MIME type, rather--

  • of that image, which is another thing we can talk about in the future.

  • But now I have two web pages.

  • I have a page that is what we've written so far, with some p tags and an a tag,

  • and an HTML body.

  • And in here, I'm going to do a little bit of what we've already done.

  • I'm going to say, my name is Tom Ballatore--

  • that's how you spell your name, correct?

  • TOM BALLATORE: You got it, man.

  • COLTON OGDEN: And then let's illustrate a new tag, just for fun.

  • So image source equals Tom.gif.

  • And the nice thing about VS Code is it knows what files are actually

  • in your-- because right here, when we added it to our directory,

  • VS Code imported it into its settings so it knows that it exists.

  • So it actually has a reference to it before we've even typed it

  • one time, which is super cool.

  • And I'm just going to do that.

  • And I think I might need the slash.

  • I don't know 100% if I do or not.

  • This is an interesting example of a self-closing tag,

  • so a tag that we don't, for example, need to do this for--

  • this.

  • We don't need to do that with image tags.

  • TOM BALLATORE: Can you actually close it?

  • I know you can close it with a thing inside the first tag,

  • just like you put a forward slash.

  • COLTON OGDEN: Yeah, a slash there.

  • TOM BALLATORE: Can you actually close an image tag with that?

  • COLTON OGDEN: I don't know.

  • TOM BALLATORE: I don't think you can.

  • COLTON OGDEN: It might just parse over it, honestly, and not do anything.

  • TOM BALLATORE: Because I mean, it doesn't make sense.

  • The image is either there or it's not, right?

  • COLTON OGDEN:

  • TOM BALLATORE: Yeah.

  • Yeah

  • COLTON OGDEN: So we have, once again, another tag that has an attribute.

  • And this is something you see when you're referencing assets,

  • typically-- for example, links that link to other style sheets, scripts

  • that link to JavaScript files.

  • In this case, we have an image that's linking.

  • It needs to know what the image is, right?

  • We need to say, this is going to be where an image is in our file,

  • in our HTML document.

  • But more importantly, we need to know what that image is.

  • We need a link to it, right?

  • So that's settled.

  • So we have a web page somewhere.

  • And actually if I go over to my folder where I have Tom.html,

  • and I double-click Tom.html, look-- my name is Tom Ballatore.

  • And this is an excellent web page.

  • So you see, it's very easy to make a personal web page these days.

  • You just need an H1 and an image.

  • And that's actually kind of cool.

  • I kind of like this.

  • It's kind of a meme-y web page.

  • TOM BALLATORE: That's my favorite Radiohead shirt.

  • I'm a big Radiohead fan.

  • I don't know if you like them.

  • COLTON OGDEN: I haven't listened to them too much to be honest.

  • TOM BALLATORE: This stream is over.

  • COLTON OGDEN: They were in, I think, a Guitar Hero game.

  • TOM BALLATORE: Oh, yeah, absolutely.

  • COLTON OGDEN: One of their songs--

  • super cool.

  • TOM BALLATORE: Yes.

  • OK, cool.

  • There's some questions here.

  • COLTON OGDEN: JockDS says, "you can specify the image width directly

  • in HTML?"

  • That's correct.

  • You can do that.

  • But it's not typically looked well upon.

  • You want to typically keep all of your styling separate from your HTML.

  • Those tags that you're referring to are HTML tags that are kind of deprecated,

  • and not really modern and encouraged to be used.

  • So I would refrain from doing any of that sort of thing.

  • If you're doing a quick-and-dirty web page where you just

  • want to test something, totally fine.

  • But for a production web page, CSS is where you

  • want to keep all your styling stuff.

  • Exactly-- a better way to do it is in CSS.

  • That's correct, 100%.

  • TOM BALLATORE: And everyone's aware of how

  • they would add that information into the HTML by adding either a class or an ID?

  • Perhaps we'll get to that later.

  • COLTON OGDEN: We aren't going to cover--

  • TOM BALLATORE: Or the CSS stream.

  • COLTON OGDEN: Yeah, that's going to be in the CSS stream.

  • That'll be the first thing we talk about,

  • actually-- one of the first things, is IDs and classes.

  • TOM BALLATORE: Awesome.

  • COLTON OGDEN: Yeah, so we have our two web pages.

  • But now let's say I want to actually link to Tom's web page.

  • Well, it's not much more difficult-- actually,

  • it's not any more difficult than what we did before with CS50.Harvard.edu.

  • If we just say Tom.html right here in our a tag, it already,

  • in our home page--

  • by default, if we don't specify HTTP or HTTPS,

  • it's going to assume the file protocol.

  • [CHIME]

  • So it knows to look for Tom.html relative to where this HTML

  • file is, which is in the same folder.

  • So therefore, we don't need to specify a subfolder or any of that sort of thing.

  • bullrock and jay_al97, thank you very much for the follow.

  • I apologize if I missed bullrock.

  • I'm not 100%.

  • I know I got mango0, but thanks again.

  • Let's go and refresh this.

  • Oh, actually, sorry, I have to revise my text here--

  • TOM IS AWESOME.

  • Refresh that-- TOM IS AWESOME.

  • And he's so awesome we've already visited his web page.

  • And click that link.

  • You can indeed see, instantaneously, our browser,

  • using the file protocol up at the top left, loaded our Tom.html.

  • TOM BALLATORE: Fully loaded.

  • COLTON OGDEN: So you can load not only certain links

  • to other people's servers and just web pages that exist on the internet,

  • but files that are local to your own file system.

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: Let me make sure--

  • I apologize.

  • I haven't been keeping up tremendously with the chat.

  • Let me go ahead and just make sure.

  • "Macromedia Flash old school," says OMG_busted.

  • Yeah, that was before they turned it into Adobe Flash.

  • "Is there any benefit to using standalone tags?

  • If not, why do they exist?"

  • Standalone tags-- let me first of all define what that means.

  • Standalone tags-- in HTML.

  • [CHUCKLING]

  • Probably in HTML, yes.

  • Empty tags-- "a few tags that do not have any tags

  • because they are used to place standalone elements in the document

  • or on the page."

  • The reason that they are standalone elements

  • is because there is no data between the start of an image

  • and the end of the image.

  • The image is already defined to be with its source attribute.

  • The attribute contains all the information you need about the image.

  • We're not going to say, this is where an image exists,

  • and also, here's some text.

  • That doesn't make any sense.

  • And you can think of certain situations in which maybe you want a text overlay.

  • But you would do that with CSS in a separate tag,

  • or make your own custom tag.

  • But for the purposes of just raw HTML, which has no styling,

  • there is no semantic meaning of an image that also contains within it text.

  • That doesn't mean anything to HTML.

  • So that's why you would see standalone tags-- something that

  • just exists as it is, and doesn't need really

  • any more information so to speak.

  • But good question.

  • The Network tab, somebody mentioned earlier.

  • "Why would you want to close an image tag?"

  • You just have to close it in order to, I guess, tell--

  • I guess, no, you don't need to.

  • You don't need to.

  • TOM BALLATORE: Yeah, you were just showing that.

  • I was asking about it.

  • And it sort of stayed in there.

  • COLTON OGDEN: You don't need the slash here either, do you?

  • I think it's completely optional if I'm not 100%.

  • TOM BALLATORE: It's optional, apparently, yeah.

  • COLTON OGDEN: Yeah, it is optional.

  • Although it looked like-- oh, no, you shifted

  • because your animation was moving.

  • But you just end it.

  • You don't need a slash image tag.

  • Because again, there's not going to be anything

  • between the image where it's defined and something else,

  • like there would be with a p tag.

  • We're not saying, here's an image, here's some text data,

  • here's the rest of the image-- or here's the end of the image.

  • That doesn't exist.

  • That meaning does not exist.

  • "How do you make GIF files?" says jay_al97.

  • There's a lot of ways you can do it.

  • Dan probably used what's called FFmpeg, which

  • is a binary that you can download which allows you to encode video and audio

  • and images in a lot of different ways.

  • You can also use ImageMagick to make GIF images.

  • You can use Photoshop, you can use Gimp, you can use a lot of other programs.

  • Dan probably used FFmpeg in this case, taking a video file, and then just

  • basically saying, FFmpeg, video file, something.gif.

  • And that was probably how he did it-- with some settings

  • to specify the resolution and whatnot.

  • "Aren't GIFs typically larger than mp4s?

  • Why not loop an mp4 and hide the vid controls using HTML attributes?"

  • GIFs typically larger than mp4s?

  • I'm not sure if that's accurate.

  • And mp4--

  • TOM BALLATORE: It depends on the settings, right?

  • COLTON OGDEN: Yeah, I would have to see the settings.

  • I would be inclined to say that they're probably cheaper in terms of disk space

  • than mp4s, especially because mp4s usually have associated audio.

  • But I mean, you could delete the audio channel of an mp4.

  • TOM BALLATORE: Good question.

  • COLTON OGDEN: Yeah, I'm not sure.

  • I'd have to do a cross-comparison between an mp4 and the equivalent GIF.

  • We've also really heavily compressed these GIF images so they're very light.

  • TOM BALLATORE: And the frame rate is probably a lot slower.

  • COLTON OGDEN: It is.

  • You could make the same thing for the mp4.

  • You could change the mp4'S frame rate.

  • But good question.

  • I'm not convinced that mp4s are necessarily cheaper in terms

  • of hard drive consumption.

  • But we'd have to test it.

  • Photoshop, Premiere, probably you can make GIFs with some simple programs

  • as well.

  • You don't need slash.

  • I never used a slash.

  • Probably you can if you want.

  • "GIF size is lower than before because no audio and quality," says MeowCat.

  • Cool, so we've done some of the most important stuff now, so far.

  • Now let's go ahead and look and see what else we have left.

  • We did cover block level versus inline elements.

  • And I have a couple of more elements in which we can actually

  • showcase this difference.

  • Let's go ahead and go to our HTML page here.

  • Our index.html-- I'm going to get rid of this welcome thing,

  • get rid of Tom.html for now.

  • TOM BALLATORE: That's fine.

  • COLTON OGDEN: And then index.html.

  • So what would be a fun way to illustrate this?

  • Now there are two important tags that we can use to just kind of show

  • this sort of block level versus inline level concept, which we've already

  • illustrated with some elements that are intrinsically block

  • level versus intrinsically inline.

  • a tags are, I believe, block level--

  • I think.

  • Is that 100-- no, I'm not actually sure.

  • TOM BALLATORE: You can put them inline with text.

  • COLTON OGDEN: I think they're inline.

  • So in this case, I could say, TOM IS REALLY AWESOME.

  • And [AUDIO CUTS OUT] good?

  • Everything good?

  • Let's wait for the chat.

  • "Who spilled the coffee?"

  • DJ_Crust says.

  • TOM BALLATORE: Can you see us now?

  • COLTON OGDEN: Test, test, test, everybody let us know.

  • "Tom is too awesome so the internet broke."

  • TOM BALLATORE: Oh, you can see us.

  • OK, there.

  • COLTON OGDEN: Cool.

  • Everything's back.

  • So apologies for that.

  • We have a server that's cross-streaming, and it crashed.

  • But everything is back up and running.

  • So we were illustrating before the stream

  • broke that we have two a tags here.

  • Before, we just kind of added them together immediately without this br.

  • And they were just kind of like directly touching each other.

  • Like it just went, TOM IS, AWESOME and then immediately,

  • without any spaces or anything, it said TOM IS REALLY AWESOME.

  • But we wanted those to be on two separate lines.

  • And it doesn't suffice to just do this, because again, HTML

  • is not the same thing as what you're typing in the text editor.

  • And in this case, there was a space.

  • There was a tab.

  • So there was a space there.

  • But if I do this, or I just do an Enter like that,

  • you can see there's not a new line.

  • It doesn't add a new line to our HTML.

  • Even though I'm typing a new line in my text editor,

  • so you would think the two should be separated,

  • the styling is separate from what your text actually looks like here.

  • It's really just the elements themselves that mandate how things are styled,

  • right?

  • TOM BALLATORE: Yes.

  • COLTON OGDEN: So there was one way to do it, which was the br tag.

  • And there's another way to do it using a couple of different tags--

  • well, one tag specifically.

  • And this is a tag that's really, really important, that you're going

  • to want to really pay attention to.

  • And that is the div tag.

  • So the div tag is essentially just used to contain other things.

  • It's a container tag.

  • But the nice thing about the div tag is that it's a block-level tag,

  • meaning that whatever you put inside of a div

  • is going to go down to the next line as soon as it's finished.

  • So I can type in this code here--

  • div.

  • And I'm just going to go ahead and copy this line here, the TOM IS AWESOME tag.

  • I'm going to paste it just right in there, inside that div,

  • refresh the page.

  • And as we can see, TOM IS AWESOME is now on a separate line--

  • TOM BALLATORE: Out of the box.

  • COLTON OGDEN: --from TOM IS REALLY AWESOME.

  • TOM BALLATORE: Sweet.

  • And the implication here is that--

  • [CHIME SOUNDING]

  • --somehow the div just has the styling with it.

  • You probably could hack the p tag or the a tag

  • there, give it an ID, perhaps, that has some characteristic where

  • you could get a break after it in CSS.

  • But obviously this is the easiest way to do it.

  • COLTON OGDEN: Yeah.

  • There's so much you can do with CSS.

  • There's so many different ways you can do the same thing in CSS.

  • With raw HTML, your options are a little more limited.

  • But you do to take into consideration different ways of doing it.

  • "A much more stupid way to do it is a p tag with a styles white space

  • pre-line."

  • Yeah.

  • And again, using attribute styles--

  • probably something I would suggest not doing for a production application,

  • but certainly a great way to easily bootstrap something and test it really

  • fast, if you want to test if some style is

  • working without creating a new separate CSS file and doing all that business.

  • Much easier to actually just use an inline style.

  • But again, not recommended for modularity.

  • Essentially it comes down to modularity.

  • Keep the skeleton away from the skin.

  • Keep your HTML away from the CSS.

  • TOM BALLATORE: So I'm going to thank jay_al97 for the follow,

  • and also for the comment.

  • Yeah, I'm getting a little tired of the TOM IS AWESOME.

  • So let's move on to Colton.

  • Let's move on to who is awesome here.

  • COLTON OGDEN: Colton, H_Improve_It, and [INAUDIBLE] as well,

  • thank you very much for the follows.

  • So yeah, divs-- great way to contain stuff.

  • You can put anything you want inside of a div.

  • I could put a series of a tags if I wanted to.

  • And now notice, if I were to, for example,

  • duplicate this several times, even though I

  • have three elements-- three TOM IS AWESOME inside of this div tag,

  • it's only after the div has finished closing

  • that we actually get this new line break down to the TOM IS REALLY AWESOME.

  • So this illustrates what the div is.

  • It doesn't apply to everything inside of the div.

  • It only applies to the div's contents as a whole.

  • That's what becomes block-level.

  • And so you can envision, for example, styling this div

  • to be a certain background color.

  • And then maybe this becomes sort of a blocker--

  • an article or some other semantically meaningful part of your web

  • page that you want to be on its own area,

  • and then to have content following it on a new line.

  • TOM BALLATORE: I'm from an Italian family in Chicago

  • that owned a pizzeria.

  • So this question about, "does Tom like pineapple pizza?"

  • No, I don't like pineapple.

  • Don't even ask me that again, all right?

  • COLTON OGDEN: This must be a major source of contention for you.

  • TOM BALLATORE: I love pineapple, and I love pizza.

  • COLTON OGDEN: You and Dan Coffey would not get along too well, then, I

  • have to take it.

  • Because he's a very big pineapple pizza--

  • TOM BALLATORE: Dan's a great guy.

  • I won't hold that against him.

  • COLTON OGDEN: Yeah, a little bit--

  • just a little bit.

  • I actually don't know.

  • I think I remain neutral.

  • Because I think I've had pineapple pizza that tasted pretty good.

  • But I don't think I'd go--

  • TOM BALLATORE: There's so many other options with pizza.

  • Why would you default to the pineapple?

  • COLTON OGDEN: I don't think I crave it.

  • But if it's in front of me, I'll eat it.

  • So if it's in front of you, you won't eat it if you're hungry?

  • TOM BALLATORE: Oh, if I'm really hungry and it's all I have, yeah,

  • I'll eat it, sure--

  • after taking the pineapples off

  • COLTON OGDEN: You don't find it disgusting.

  • "Pineapple and ham," says Brenda.

  • Yes.

  • TOM BALLATORE: Dan is awesome, yeah.

  • COLTON OGDEN: I can say, I must say that I am

  • surprised that mp4 is smaller than GIF.

  • Yeah, I mean, it's a video file versus sort of a compressed image file.

  • There's just usually less information and fewer frames.

  • But I can see a particular encoding of an mp4 in which case

  • maybe it would get smaller than a GIF if the right settings were applied to it.

  • TOM BALLATORE: I think we need to look into this.

  • Because the settings might be default for different things,

  • and it might look smaller or something.

  • We should probably test that out and see.

  • COLTON OGDEN: Yeah.

  • But I have to imagine mp4s also have a lot more metadata associated with them.

  • TOM BALLATORE: Yeah, I have that feeling.

  • COLTON OGDEN: But I'm not sure--

  • maybe not.

  • Generally it's the case that an mp4 will be smarter than a GIF--

  • or a GIF will be smaller than an mp4.

  • TOM BALLATORE: This question about the lossless images in HTML.

  • Yeah, you could use a TIFF image.

  • COLTON OGDEN: "Can you use any lossless image formats?"

  • I have to imagine.

  • Yeah, like a PNG.

  • PNG are lossless.

  • TOM BALLATORE: SVG, which is a vector thing that you can just totally expand.

  • COLTON OGDEN: Yeah, SVGs are really cool.

  • That's actually a separate element.

  • There's an SVG element that allows you to embed SVG information.

  • And we can maybe even do a separate--

  • well, we're going to do an advanced HTML stream, which

  • has a lot more stuff than what we're covering today.

  • And in that stream, I think we'll do SVG and some other cool stuff.

  • But yeah, that's really cool.

  • I think even CS 50 uses SVG for our video player.

  • Some of the icons are SVGs--

  • super cool.

  • JP_guy-- oh yeah, the JP_guy is not here.

  • Typically they have pizza discussions.

  • There's a guy named JP_guy.

  • And he and Nuwanda3333, whose name is Asli.

  • They have a conversation.

  • I think he and Asli, and Bhavik, they all have a conversation.

  • Anyway, that is what a div is.

  • Now another one that I want to talk about-- another element that's

  • actually the opposite of what a div is, it's an element that is inline.

  • It allows us to contain something that's inline.

  • Are you're letting them know what it is?

  • TOM BALLATORE: (WHISPERING) Span.

  • COLTON OGDEN: You can see my outline, to be fair.

  • TOM BALLATORE: My eyes are not good for that.

  • Are you going to span?

  • COLTON OGDEN: We're going to span.

  • TOM BALLATORE: Yeah.

  • Span is cool.

  • I love span.

  • COLTON OGDEN: So this is actually going to be kind of underwhelming,

  • because we're not going to be going into styling.

  • A span is typically where you would use styling,

  • to make it clear that that's what you're doing with the span, right?

  • TOM BALLATORE: It would allow you to grab a section of something

  • with your styling.

  • COLTON OGDEN: Exactly.

  • So I can say span--

  • and I'm not even going to grab just one word,

  • I'm actually going to grab this whole sentence,

  • and then close my span tag there.

  • And a span is the opposite of a div, in that

  • rather than making whatever its content is block level,

  • it just makes it inline.

  • But it contains.

  • So we can say, I want to make all spans red color.

  • And normally that would be impossible to do with just some subset of text

  • within a paragraph, for example.

  • So we have to have some way to associate some metadata

  • with specific blocks of text.

  • And if Asli, you're watching, this is kind of

  • similar to what we talked about, where you

  • associate metadata with a particular word

  • or a particular set of words in a game.

  • And this is something that she and I talked about on Facebook.

  • But you would do this with--

  • and you wouldn't probably use a span.

  • You would use an ID or class.

  • But the idea is the exact same.

  • Mark some sort of group of text with some particular metadata

  • that allows you to use JavaScript or CSS to target it

  • and change its functionality.

  • So that's how I see spans, and that's how they're typically used.

  • Spans and divs kind of go hand-in-hand as sort of being,

  • well, not apples and oranges, but sort of like the same two ideas

  • at opposite ends, really.

  • They kind of go in tandem.

  • TOM BALLATORE: And J, yeah, forms are on Colton's list.

  • So I don't know if we're going to get there or not.

  • COLTON OGDEN: Oh yeah, we are going to get there.

  • We have another hour, actually-- over an hour.

  • And we'll try to go a little bit faster.

  • Next thing we're going to get into, and hopefully-- do you have time?

  • Do you have another hour?

  • Or are you going to have to go.

  • TOM BALLATORE: I'm cool.

  • COLTON OGDEN: OK.

  • [INAUDIBLE] I enjoy this.

  • I enjoy this back and forth.

  • TOM BALLATORE: I enjoy this, too.

  • I've never been on anything live.

  • [INTERPOSING VOICES]

  • COLTON OGDEN: You do very well live.

  • You're doing very well.

  • TOM BALLATORE: Well, thank you.

  • COLTON OGDEN: Yeah, this is great.

  • TOM BALLATORE: I have a face for radio, they say.

  • COLTON OGDEN: Oh, yeah yeah yeah-- a voice for radio, too.

  • And I heard that you typically feature sections like this.

  • You teach video section.

  • TOM BALLATORE: I do a video section.

  • I do an online section for CS 50 and the other courses in the stable.

  • And I have a DSLR setup and stuff.

  • I have a bookshelf behind me and stuff, trying to bring a little--

  • COLTON OGDEN: A little class?

  • TOM BALLATORE: A little class, a little "gruh-vah-tiss," what's the word?

  • COLTON OGDEN: Sure, gravitas.

  • TOM BALLATORE: "Graw-vee-toss," yes.

  • But yeah, definitely it's fun doing this.

  • But I'm looking at this, thinking about the video setup.

  • I got to talk to Dan, or you, or whoever made this.

  • Because you use an OBS for the stream.

  • COLTON OGDEN: Streamlabs OBS, yeah.

  • TOM BALLATORE: I'm using another thing that I drop a lot of frames,

  • and it's just not as good as this.

  • COLTON OGDEN: FRAPS?

  • TOM BALLATORE: No, I use Camera-Live and CamTwist.

  • COLTON OGDEN: Oh, yeah.

  • I think Streamlabs OBS might be Mac-specific--

  • or, I don't think it's PC-specific.

  • But regular OBS, which is the same back end,

  • is the program that you can download for Mac or PC.

  • So look into OBS--

  • Open Broadcast Software.

  • TOM BALLATORE: I will do it.

  • COLTON OGDEN: All right, so--

  • and people have some very flattering comments.

  • "You guys have a good back and forth."

  • "Fun fact-- 4th is a programming language."

  • Yep, that's true.

  • "OBS is the best, isn't it?" said Jack_OTTS.

  • I'm reluctant to say it's the best, but it's certainly

  • one of the more popularly adopted.

  • "Banter between Asli and Jan are awesome."

  • "Asli's birthday is next Friday."

  • Oh, we're going to be on stream next Friday,

  • so we'll wish Asli a happy birthday.

  • All right, let's get into something that will

  • allow us to structure our data a little bit more--

  • [CHIME SOUNDING]

  • --I guess semantically useful.

  • Rahul Rajan, thank you very much for the follow.

  • And Superfast Jellyfish, thank you very much for the follow.

  • I like that name, Superfast Jellyfish.

  • TOM BALLATORE: (WHISPERING) Lists.

  • COLTON OGDEN: So yeah, we're going to be talking about how to put--

  • [CHIME SOUNDING]

  • --information in a list.

  • So for example, if I want to create an application or web app

  • that's got my grocery list, or a to-do list, or something.

  • That's a very important thing.

  • Lists are something that we use a lot when we're trying

  • to lay out information in web pages.

  • Even the most basic of HTML documents that aren't styled--

  • research papers are going to have things like a table of contents, for example,

  • or even a sub-table of contents for an article or a section.

  • So let's go ahead and illustrate a simple list.

  • I'm actually going to get rid of all this Lorem Ipsum text.

  • We're going to keep the TOM IS REALLY AWESOME at the very top of the page.

  • But I'm going to show everybody the ways in which Tom is awesome.

  • I'm going to enumerate over them in a list.

  • And we're going to first use an unordered list, because we're not

  • going to sort these by priority.

  • TOM BALLATORE: It's hard to order my awesomeness.

  • My wife is probably going to be tuning in, laughing at this.

  • COLTON OGDEN: She's going to be laughing.

  • She's going to subscribe and provide her own suggestions.

  • But this is how we begin using a list.

  • And so this is going to be using some embedded tags.

  • We saw earlier-- and I'm not sure if I emphasized this well enough--

  • we actually put, within a div, an a tag.

  • We had some tag within a tag and it's closing

  • tag-- this a tag and its closing tag within this starting tag

  • and this closing tag.

  • So you can nest--

  • this is called nesting, putting something inside of something else

  • in the context of programming HTML.

  • But it applies to any programming language, really--

  • any markup or programming language.

  • Some people are going to say, HTML's not a programming language.

  • But inside of this div, we've put another completely separate tag.

  • And we could do even more than that.

  • We could say, for example, image--

  • and I could say, source is equal to Tom.html here, right?

  • TOM BALLATORE: That's going to be Tom.gif.

  • COLTON OGDEN: Sorry.

  • Tom.gif.

  • Thank you very much for that.

  • I could do this, and I could refresh the page.

  • And this is pretty cool, because we have an image,

  • and we have a reenactment in real time, actually.

  • But if I click this image, notice that it takes us to the web page.

  • So we've gotten brand new behavior, which we haven't really

  • enumerated, just by putting some tag inside of another tag.

  • So these puzzle pieces are very interchangeable,

  • and they work together in very interesting ways.

  • I'm going to come back here, just back to our index.

  • We'll keep the image there.

  • But I'm going to betray my own prior sort of recommendation,

  • and I'm going to say the width should be only 50 pixels.

  • Is that going to be too small?

  • TOM BALLATORE: It's cool.

  • COLTON OGDEN: It's a good size.

  • Ah, 100 pixels.

  • And so this is another attribute that you

  • can add to an image which will allow you to specify the size of that image.

  • And it will go no larger than that image.

  • SveaDeu, thank you very much for the follow.

  • TOM BALLATORE: And Superfast Jellyfish and Rahul Rajan.

  • COLTON OGDEN: Oh yeah.

  • "As I was pointing out before.

  • Nice," says Jack_OTS.

  • "I like this tutorial.

  • It makes me feel like a pro since I already know HTML," says SpareKey.

  • Awesome, well, tune in for the CSS and JavaScript ones, too,

  • because those are going to be very fun.

  • This is going to be a very nice way, I think, to bootstrap us up to some

  • really cool, juicy content.

  • "Everyone needs a colleague like Colton."

  • I appreciate that.

  • Thank you very much, [INAUDIBLE].

  • "It looks like a model photo shoot."

  • Talking about you.

  • TOM BALLATORE: Where?

  • [CHUCKLING]

  • COLTON OGDEN: "Colton is just amazing," says Patrick Michaud.

  • Thank you very much, Patrick.

  • I very much appreciate that.

  • "Do you have to specify the size of the image in CSS,

  • or do you need to do it in the HTML?"

  • Either way.

  • You can do it in either way.

  • But my recommendation is to not do it like this,

  • because this is sort of tying in styling information with the semantic content

  • of your actual program.

  • You don't want to do that.

  • You want to keep your styling--

  • you want to keep your skin away from the skeleton, so to speak.

  • The body should be the HTML, and actually

  • have the styling, what it looks like, separate.

  • So that somebody who is a designer, for example,

  • who is just concerned with how things look,

  • doesn't have to worry about how things are laid out.

  • Because that can get kind of--

  • TOM BALLATORE: And the JavaScript's like the muscles moving.

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: That's really nasty, but it really make sense.

  • COLTON OGDEN: Actually, that's a great way to sort of fill that analogy,

  • the JavaScript being the muscles, the verbs.

  • If you were to do noun, adjective-- and this isn't my own analogy,

  • but the nouns, verbs, and adjectives being the HTML, JavaScript, and CSS.

  • TOM BALLATORE: So has somebody really done the skeleton, skin, muscle thing?

  • COLTON OGDEN: No.

  • [INTERPOSING VOICES]

  • That's closer to something that--

  • I've heard of skeletons and skin, but you came up with muscles.

  • I've never heard muscles.

  • TOM BALLATORE: It was said here, first time ever.

  • All right.

  • COLTON OGDEN: "Trying to keep the skin away from the skeleton.

  • That's going in the notebook," NACR.

  • That's going to be clipped.

  • TOM BALLATORE: By the way, one little thing.

  • When you do to the CSS thing, you'll be seeing that probably Pixels might not

  • be the best choice.

  • Because if you're on mobile device, and you're shrinking your screen,

  • and it might be very small, you'll probably

  • be going with relative elements or something, or other measures.

  • COLTON OGDEN: Yeah, we'll get into that.

  • We'll get into to em and all sorts of things, with relative scaling,

  • on the CSS stream.

  • For now, we're probably going to stick with Pixels, just because it's easier

  • to explain and to illustrate without going into too much of the CSS stuff.

  • But the takeaway should be, don't do this,

  • but this is something that you will see sometimes.

  • And it's a great way to test something, but make sure take it out in the--

  • before you actually ship something, put it into a--

  • and this is more of a, do as I say, not as I do, because I've done

  • this in production applications.

  • But you want to keep this in the CSS file,

  • separate, so that you as a designer or your own designer or somewhere else

  • has access to it without affecting the semantic meaning of your web page.

  • TOM BALLATORE: And ForSunlight has a question, "what are you referring to?"

  • I think you're talking about the skin and the skeleton thing.

  • Basically, skeleton being the HTML sort of structure.

  • COLTON OGDEN: Yeah.

  • Analogize the web page as being a human, or some creature,

  • some biological creature, a mammal, whatnot.

  • You would visualize the HTML sort of as being the skeletons.

  • It's the structure that makes up the web page.

  • It doesn't define what it looks like, though, necessarily.

  • Skeletons all kind of look the same.

  • So the skin, or the outward appearance, would

  • be the CSS, the styling that actually applies to the creature.

  • TOM BALLATORE: Later on, if we have time,

  • we got to do a CSS garden or a zen garden,

  • if you've ever showed them that.

  • COLTON OGDEN: Yeah, I've seen that.

  • It's an amazing website.

  • And then the muscles, the things that actually

  • allow that creature to move its skeleton and do things, the JavaScript.

  • That's sort of where that analogy comes from.

  • And that's the origin of that analogy.

  • "I use VW in RAM2," says JM_Chasen.

  • That's definitely the right way to do it for a lot of applications

  • that need to be very reactive and--

  • what's it called?

  • Responsive.

  • Not reactive.

  • Reactive is different.

  • "Some people still stick to Pixels because it's the easiest."

  • Yep, that's what I'm doing here.

  • That's the easiest.

  • So let's get into ULs, so Unordered Lists.

  • So all the reasons that Tom is awesome.

  • And I want to query the chat if the chat can provide me

  • with what they think are some of the reasons that Tom is awesome.

  • We'll put them in here in our unordered list,

  • and illustrate how an unordered list works.

  • Patrick, thank you very much for the follow-- patrick_machado.

  • TOM BALLATORE: "He has not picked his nose yet."

  • COLTON OGDEN: That's a good one.

  • TOM BALLATORE: I haven't.

  • I scratched it kind of.

  • COLTON OGDEN: Oh, you have a PhD.

  • TOM BALLATORE: I do have a PhD.

  • COLTON OGDEN: That's a pretty cool one.

  • TOM BALLATORE: I do.

  • COLTON OGDEN: First of all, let's add an h element in here.

  • And let's just say, why is Tom awesome?

  • I mean, we should say, why is--

  • there's so many reasons you are.

  • What are the reasons Tom is not awesome?

  • TOM BALLATORE: And maybe the number one is

  • I didn't pay very much for the person to write my PhD for me.

  • I mean, it was really cheap.

  • So that was really smart of me.

  • Ah, just joking.

  • COLTON OGDEN: So he has a PhD.

  • And now notice that I'm using a couple different elements here,

  • HTML tags, elements, kind of same meaning.

  • I have a UL, and that just means an unordered list.

  • And what that's going to translate to is these bullets

  • that we're going to see very shortly don't have a numbering system to them.

  • There's no order to them.

  • They're just there, they exist, arbitrary order.

  • No weight, therefore, given to any one over another.

  • Let's see, am I missing the chat?

  • Let me make sure.

  • TOM BALLATORE: No, they're just talking about--

  • it seems like everybody knows about CS 50.

  • But the stream has been going on.

  • This is the 24th one.

  • COLTON OGDEN: They said you worked at a pizzeria.

  • Is that accurate, or did you say your family owned a pizzeria.

  • TOM BALLATORE: No, my father owned it, and I worked there.

  • And my father's best memory of me was when

  • I was away an University of Illinois, engineering guy,

  • supposed to be sort of having an attitude,

  • I actually cleaned feces off the floor.

  • COLTON OGDEN: Ooh, man.

  • TOM BALLATORE: And he's like, that's my boy.

  • COLTON OGDEN: We're about to get taken off of Twitch for--

  • TOM BALLATORE: Oh, I didn't say that.

  • COLTON OGDEN: No, it's totally fine.

  • That's not against--

  • TOM BALLATORE: So yes, I did work at a pizzeria.

  • COLTON OGDEN: That's pretty brutal.

  • I don't know if I'd want to do that.

  • I'm not a huge fan of that kind of labor.

  • TOM BALLATORE: No, well, that's why I would

  • prefer to be sitting in front of this--

  • [INTERPOSING VOICES]

  • But you've got to respect those sorts of jobs.

  • COLTON OGDEN: Oh yeah, absolutely.

  • Somebody has to do it.

  • And if nobody wants to do it, then we're kind of SOL.

  • TOM BALLATORE: "Grooms his beard."

  • The beard, I had shaved a couple months ago, because I'm starting to look--

  • I look much older when I have a beard.

  • COLTON OGDEN: You wanted to look older?

  • TOM BALLATORE: You know, OK, yeah.

  • I'm coming for this CS 50 for lawyers class.

  • So I really want to have a little bit more heft.

  • So I did grow the beard back.

  • COLTON OGDEN: Interesting.

  • I respect that.

  • TOM BALLATORE: On Tuesday, I'm definitely going to be shaving.

  • COLTON OGDEN: You said you're 48.

  • But I would say you probably look like you're 33.

  • TOM BALLATORE: Yeah, I feel about 35.

  • And that's really the secret.

  • There was a recent studies in some--

  • like Nature or Science.

  • The age you feel is really probably your actual age.

  • COLTON OGDEN: And probably have to imagine

  • you're probably not a heavy smoker.

  • I know that that pre-ages people.

  • TOM BALLATORE: No, I don't smoke.

  • I have asthma, so I do not smoke.

  • COLTON OGDEN: Smoking is a large thing across Japan, though, is it not?

  • TOM BALLATORE: Not that much anymore.

  • COLTON OGDEN: Not anymore.

  • But it was.

  • TOM BALLATORE: It was, and it was awful.

  • COLTON OGDEN: Is it still a big problem in China?

  • TOM BALLATORE: China, yeah, every time I've been to China it's usually smoky.

  • COLTON OGDEN: Yeah, smoking, I know that's a premature aging

  • recipe from what I understand.

  • I have to look into, obviously, the data.

  • But I think that based on what I understand the data,

  • does point towards things like that.

  • And obviously a huge risk factor for--

  • [INTERPOSING VOICES]

  • TOM BALLATORE: I am 48.

  • And I'll tell you one thing you might not know about me.

  • I have 17--

  • COLTON OGDEN: People are in disbelief that you're 48.

  • TOM BALLATORE: Well, I have a 17, 14, and 12-year-old.

  • No, I'm 48.

  • September 27th, 1970.

  • Oh, you're 43.

  • I got you.

  • Cool.

  • But no, I do have virtually teenagers in my house.

  • So the fact that my wife and I are on our 20th year together this year.

  • COLTON OGDEN: Congratulations, by the way.

  • TOM BALLATORE: Thank you.

  • We've made it through three teenagers.

  • So I'm kind of not a great guy all the time.

  • But yeah, I must be OK in that regard.

  • COLTON OGDEN: You're taking care of yourself.

  • So kudos.

  • Like I said, 33.

  • I strive to look as young as you when I'm 48.

  • TOM BALLATORE: Sweet.

  • COLTON OGDEN: That'll be a dream of mine.

  • Because you grow the beard to look older,

  • but "you really, really don't look 48," says Asli.

  • TOM BALLATORE: OK, I'll put the glasses on.

  • (GERMAN ACCENT) What do we have here?

  • COLTON OGDEN: Germans wear glasses.

  • TOM BALLATORE: Yeah, why did I do the German accent anyway?

  • COLTON OGDEN: "Complicated relationship with CS 50" joke.

  • And he definitely does not look 48.

  • I'll say that.

  • We'll kind of distill all the comments that people have posted into the chat

  • there.

  • But this is an unordered list.

  • And it's founded on a nice entertaining premise.

  • But it illustrates a very important aspect of HTML.

  • So why is Tom awesome?

  • So let's go ahead and get rid of the developer tools.

  • We have an h1, of course, just so that we bring our attention

  • to the list below it.

  • And we can see that this fact that we've declared a UL

  • has done a couple of things for us.

  • The UL itself is indented.

  • Or it might be a style that's applied per element within the UL, actually.

  • But the UL is, as a whole, indented.

  • And each element within the UL is given its own line.

  • And I believe ULs are block-level elements.

  • So if we were to say, for example, immediately after that, a href equals,

  • I would just say something, and then Tom, and then refresh it,

  • it does indeed get put down below the end of the list.

  • So the UL itself, and OLs, are block-level.

  • They put a space between themself and the prior and ending content.

  • Gesundheit, by the way, to tie in well with the German reference.

  • TOM BALLATORE: [SPEAKING JAPANESE]

  • COLTON OGDEN: But this is how you do ULs, unordered list.

  • And just by simply changing the UL to an OL as I do here--

  • TOM BALLATORE: Interesting.

  • How do you put the list to the right of the image?

  • COLTON OGDEN: The list to the right of the image--

  • so that would be--

  • TOM BALLATORE: You're working on a screen that

  • might be collapsed or larger?

  • How is it--

  • COLTON OGDEN: How do we it without CSS.

  • TOM BALLATORE: Oh, you want to put it to the right of the image?

  • COLTON OGDEN: You would have to disable the block-level styling of the image.

  • And we can maybe do that with an attribute.

  • TOM BALLATORE: And float, that would be another way.

  • COLTON OGDEN: Yeah, float as well.

  • That's all CSS stuff.

  • So it's not really in the realm of HTML, so we won't cover it.

  • But we will cover a lot of that sort of stuff,

  • doing a lot of really cool stuff in CSS next week.

  • TOM BALLATORE: And that's exactly what floats are for,

  • wrapping text around images like that.

  • Don't use floats for layout.

  • It's a hack.

  • You've got other tools.

  • But definitely that exactly is what it's for.

  • The question, why is--

  • they say HTML is not a language.

  • Of course it's a language.

  • It's not a scripting language.

  • COLTON OGDEN: It's not a programming language.

  • It's not a scripting language.

  • It's a markup language.

  • Its goal is to define the layout of some document, of some information,

  • and then be interpreted and rendered in a specific way by a processor.

  • And it differs from a programming language in that you can't actually

  • perform logic within HTML.

  • There's no structure to actually do IF statements,

  • and looping, and anything like that.

  • So you can't get programming functionality with HTML,

  • but you can get sort of layout functionality.

  • And that's the difference.

  • People will split hairs.

  • It is a language, but it is not necessarily a programming language.

  • You can't program and create programs.

  • You can only create documents with it, effectively.

  • All right, cool.

  • So by just changing a simple tag from UL OL, we got the little dots.

  • Notice that these were dots before, the 1, 2, 3, 4.

  • They are now numbered.

  • They are now from sequential order.

  • And based on at least the logic of this list,

  • we would assume that it's most important that you have a PhD.

  • It's kind of important that you worked at a pizzeria,

  • but not as important as the fact that you have a PhD.

  • And so on and so forth.

  • And the fact that you definitely don't look 48 is the least important

  • of all of those.

  • TOM BALLATORE: I'm looking at this, thinking,

  • do you know this Abraham Lincoln's Gettysburg Address PowerPoint?

  • Google it.

  • COLTON OGDEN: Sure.

  • Gettysburg Address PowerPoint?

  • TOM BALLATORE: Yeah, Edward Tufte, this visualization guy, came up with--

  • Gettysburg Address, if you're not familiar with this,

  • is one of the most famous speeches in American history.

  • Abraham Lincoln, on a battlefield, gives this "let's not give up on this country

  • and freedom" sort of speech, right?

  • But if he had PowerPoint, he would've come up with these cheesy lists.

  • Like, yeah.

  • If you know the Gettysburg Address, it's poetic, it's inspirational,

  • and it's just incredible oratory.

  • COLTON OGDEN: I have to admit that I don't remember--

  • I've read it, but I don't remember it offhand.

  • So a lot of this stuff probably won't--

  • TOM BALLATORE: "Four score and seven years ago our forefathers

  • brought forth on this continent a nation conceived in liberty," blah blah blah.

  • But when you put in bullets, it just sucks.

  • Sorry, did I say that?

  • COLTON OGDEN: Consecrate, hallow.

  • TOM BALLATORE: It's not so good, yeah.

  • COLTON OGDEN: What makes the nation unique.

  • Interesting.

  • I can definitely see the point.

  • Everything's distilled down into the bare, sort

  • of intrinsic meaning of the statements, and not the poetry of it.

  • TOM BALLATORE: And HTML allows you to do that because lists are important.

  • COLTON OGDEN: Yeah, lists are very important, I would say.

  • To-do lists are a common first application.

  • We might even write a to-do list application

  • at some point in the future, once we get into JavaScript and CSS.

  • Then we can make it look nice, then we can check boxes and have the list item

  • sort of disappear.

  • But this is how you get at least the foundation of that idea,

  • the idea of a list, written in HTML and displayed to the user.

  • So that's cool.

  • So that's ULs, that's LIs, and OLs.

  • And if I didn't elaborate terribly on LIs,

  • that's just short for a List Element.

  • So every single thing that you have within a list

  • needs to be a list element.

  • Now if I were to say--

  • [CHIME SOUNDING]

  • What's the most important possible thing?

  • Oh, SludgeBeard, I love that name.

  • SludgeBeard, thank you very much for the follow.

  • Another thing that we can say is super cool about Tom.

  • We haven't even considered the fact that you speak Japanese, right?

  • TOM BALLATORE: I do, yeah.

  • COLTON OGDEN: That's pretty important.

  • That's pretty cool.

  • Some people will like that.

  • But notice that when we pass that into the UL, it does

  • get indented-- or sorry, the OL in this case.

  • It does get indented, but it hasn't been given a number.

  • It hasn't been given a weight.

  • So the parser has sort of said, because it's within the OL, it is indented.

  • The indentation is specific to the OL, not to the list elements.

  • But it's not a list element, so it doesn't get a number.

  • It doesn't get a tag.

  • It's just kind of text that's there that gets indented.

  • And so that's kind of why you need to be careful about where you actually

  • have your elements or your closing and ending tags,

  • and what information you put inside of another tag.

  • In this case, you might instinctively think

  • to say something like, Tom is awesome! and then Tom is awesome!

  • and have those all be sort of bullet points.

  • You're saying, oh, it's within an ordered list, it should just work.

  • But no, and actually they don't get sent down to the next line.

  • They're not block-level.

  • These are inline elements.

  • Well, rather, this is inline test because it's not within an element.

  • When you use an LI, LIs are block-level elements.

  • They actually do get sent to the next line.

  • So there's a lot of these little details that are easy to, I think, catch you up

  • if you're not super familiar with this landscape.

  • But as soon as you sort of look at it and understand

  • what you're trying to do, if you understand that an OL and an LI

  • needs to exist within--

  • sorry.

  • An OL and a UL need to have LIs within them.

  • And that's sort of the content declaration.

  • TOM BALLATORE: I think you said list element.

  • And they are elements, but it's actually a list item

  • is what people are saying in the chat.

  • I mean, it is an element.

  • COLTON OGDEN: I apologize, I apologize.

  • List item, list item.

  • That was a misspeak of mine.

  • List item, yep.

  • TJ Enzo, "and nested lists."

  • Yeah, you could do a nested list.

  • Why not?

  • We'll actually demonstrate that in a second here.

  • Let me just make sure I have caught up with the chat.

  • "It just got clear now.

  • Thank you all."

  • "I had to memorize it in fourth grade," says [INAUDIBLE]..

  • She's referring to the Gettysburg Address.

  • Colton_1987, "nice haircut, man.

  • How old are you?"

  • Thank you very much--

  • referring to me, I'm assuming, because my hair is probably more exaggerated.

  • I am 27, and you are

  • TOM BALLATORE: 48.

  • COLTON OGDEN: Because we talked on the stream, 48.

  • But people probably think you and I look about the same age, to be fair.

  • If you were shaved, especially.

  • TOM BALLATORE: You have the proper pompadour, man.

  • I love the hair.

  • I love the hair.

  • I wish I had it.

  • I'm losing-- it's gradually going up, and up, and up.

  • COLTON OGDEN: I don't know, man.

  • TOM BALLATORE: Not too much yet, but every year.

  • I used have hair, like, down to here.

  • But then it's coming up, and up.

  • COLTON OGDEN: Hairline went up a little bit.

  • TOM BALLATORE: It's going up.

  • COLTON OGDEN: DJ Crest says, "I'm learning Japanese very, very slowly."

  • TOM BALLATORE: Hang in there.

  • I don't know what your native language is.

  • But if it's English, like mine, it's totally different than English,

  • which makes it fun.

  • COLTON OGDEN: Yeah, it's super--

  • very different.

  • But that's why I like it a lot.

  • TOM BALLATORE: That's why I like it.

  • COLTON OGDEN: I'm more entranced by Japanese

  • than I am by Spanish and German, although I like Spanish

  • and German a lot, as other languages.

  • But Japanese, as a mental exercise to me, just seems so exciting.

  • And recognizing Kanji after a while, and knowing how to read--

  • learning how to read Katakana was actually very difficult for a while.

  • Because everything looks so similar.

  • And I'm sorry.

  • I apologize, going on this side note about Japanese.

  • But if you're interested in learning foreign languages, I advocate for--

  • and I think Tom would advocate for-- learning something so

  • different from English, like Japanese.

  • But learning any language is honestly great.

  • It's honestly terrific.

  • TOM BALLATORE: [SPEAKING JAPANESE]

  • COLTON OGDEN: It's super hard to read that cause it's so small.

  • TOM BALLATORE: [SPEAKING JAPANESE]

  • COLTON OGDEN: Going slow--

  • that means, "going slowly," right?

  • TOM BALLATORE: I'm going real slow, yeah.

  • Cool, awesome.

  • COLTON OGDEN: "My kid is in Japanese school," says Brandon.

  • Oh, that's pretty cool.

  • You know, actually, I do know that it is popular for Japanese

  • to go to New Zealand.

  • It is a very popular thing.

  • So it makes sense, because there's going to be Japanese tourists in New Zealand

  • for them to do so.

  • In California, there's no Japanese in school anywhere.

  • It's such a very niche thing, just because I

  • don't think there are very many--

  • I guess there probably are Japanese tourists and immigrants that

  • come to California, but probably not to the degree

  • that they come to places like New Zealand and Hawaii

  • and things like that, right?

  • [TOM LAUGHING]

  • TOM BALLATORE: Yeah.

  • No, it's funny, because when I was getting into Japan,

  • that was when they had their bubble, like early '90s.

  • And it's kind of like China now, where China

  • is seen as a language that should get taught in schools and stuff.

  • But hey, just learning a foreign language if you don't speak one.

  • And most of you who are attending here probably

  • do speak more than one language, unlike many of my patriots.

  • COLTON OGDEN: I think it's becoming--

  • TOM BALLATORE: Compatriots.

  • COLTON OGDEN: --increasingly common.

  • I think people are--

  • TOM BALLATORE: It's great.

  • COLTON OGDEN: Yeah.

  • We're all sort of getting more interconnected, which is pretty cool.

  • TOM BALLATORE: Sweet, all right.

  • COLTON OGDEN: "I look old as hell.

  • I definitely don't look like a 43-year-old child," said [INAUDIBLE]..

  • I don't know if that's a stab, or if that's a--

  • is he saying you look like a child.

  • TOM BALLATORE: No.

  • They're talking about themselves.

  • COLTON OGDEN: Oh, OK.

  • I got you.

  • "Every time you say no to--"

  • TOM BALLATORE: Why do you keep saying 43, though?

  • COLTON OGDEN: "Every time you say no to a woman, a man's hair--

  • TOM BALLATORE: You probably shouldn't read that one.

  • COLTON OGDEN: --1 centimeter.

  • Oh, actually, yeah, I think that I probably shouldn't have read that one.

  • "This has been a great tangent," says--

  • [INTERPOSING VOICES]

  • Yeah, it's not terrible.

  • Probably a truth.

  • "Only Japanese I know from anime," says Bhavik.

  • Anime's great.

  • Anime is great.

  • It's a little bit hard, because Japanese anime

  • is a little bit different than what you would see conversational Japanese a lot

  • of the time.

  • It's very exaggerated.

  • TOM BALLATORE: Oh, yeah.

  • All the kids who studied anime in my Japanese class,

  • they called themselves "or-eh," which is sort of like, (GRUFFLY) me.

  • And you're not going be saying that normally.

  • But you could immediately spot them.

  • COLTON OGDEN: How many people say, "seh-sha"?

  • [TOM LAUGHING]

  • TOM BALLATORE: "Seh-shaw."

  • As a joke, we say it.

  • COLTON OGDEN: Do you really?

  • TOM BALLATORE: Yeah, some, dude, samurai thing.

  • Anyway--

  • COLTON OGDEN: [SPEAKING JAPANESE]

  • TOM BALLATORE: [SPEAKING JAPANESE]

  • All right, so that was a tangent.

  • COLTON OGDEN: That was a cool tangent.

  • At the end of the day, learn a language.

  • So we did lists.

  • Oh, we were going to do a nested list, actually.

  • Why don't we do that?

  • So we have an ordered list.

  • And just for the sake of demonstration, I'm actually going to--

  • "He knows the following languages."

  • And notice that I'm doing a couple of things.

  • So I have an LI.

  • So this nested list-- if we want a list inside of a list,

  • it needs to go in an LI, because that's part of the list, right--

  • an ordered list.

  • So this is going to be number one, this list.

  • And there's going to be a text--

  • "He knows the following languages."

  • And we're not going to assign these any particular order

  • but notice that I have the text within the LI, which is separate from the UL.

  • And then within the UL, I'm going to do just what we did earlier with LIs--

  • List Items, not List Elements, as I unfortunately erred earlier.

  • And I'm going to say, English, because I'm

  • assuming that was your first language.

  • Second one, we'll say Japanese.

  • Well, actually, to be fair, I think German was your second language

  • if I'm not mistaken.

  • TOM BALLATORE: (SCOFFING) Yeah right.

  • No.

  • COLTON OGDEN: But it was the second language you studied, right.

  • TOM BALLATORE: Yeah, but I mean--

  • COLTON OGDEN: You know enough German to be dangerous.

  • TOM BALLATORE: Oh, yeah.

  • COLTON OGDEN: To be very dangerous to yourself.

  • So we have English, German, and Japanese.

  • [TOM LAUGHING]

  • TOM BALLATORE: I do.

  • I only know bad words.

  • Oh, God.

  • Sorry.

  • COLTON OGDEN: "How to get a job in the USA

  • from Russia knowing only HTML and CSS?" says Paulton.

  • Probably not going to get a job in the US from Russia knowing only HTML

  • and CSS.

  • I think you need to know at least JavaScript

  • to be competitive in the web scene.

  • As a designer, I will say if you have incredible CSS design abilities

  • so that you can make absolutely the most beautiful web pages, maybe you

  • can do that, maybe you can get a company to sponsor you.

  • And I don't know the laws offhand.

  • I don't know how it works.

  • But generally, to be competitive in the web scene,

  • I would say HTML and CSS is nowhere close to what

  • you need to actually be marketable.

  • I think you need a lot of skills and a lot of familiarity

  • of programming and programming concepts beyond just CSS.

  • At that point, you're just a designer.

  • You're not really a programmer.

  • But HTML and CSS is a very valuable foundation

  • upon which to build web development career, definitely.

  • Definitely look into JavaScript after that.

  • All right, so we have a list element within our ordered list.

  • And notice that within that list element, I've included--

  • and this is nesting again, which we've looked at before--

  • some text, and then another UL, within which is more LIs.

  • So a lot of nesting here.

  • But this is just a way to sort of structure our data in the way

  • that we want.

  • And so at the end of this, as soon as I refresh, we're going to see number 1,

  • and it's going to have "these are the languages Tom knows," and then

  • within that, we're going to have another list.

  • And as I said, indeed, number 1, he knows the following languages.

  • And then indented, once again-- so lists indent--

  • we get another layer of indentation, and then we

  • get English, German, and Spanish.

  • And there is styling in lists, inasmuch as if one list is indented at one level

  • and another is indented at another level,

  • those two list get different default stylings.

  • And you can default style--

  • you can override the style for whatever lists you want and their elements.

  • But notice that the circles here are hollow.

  • They're white circles.

  • And when we had it just at the base level,

  • just a single layer of indentation, they were black circles.

  • So you get different styling, and it kind of helps you to visually see.

  • For example, if we make this a UL and I make this a UL,

  • taking away the numbers, adding those dots again--

  • and I refresh-- the black is like level 1, and then hollow is level 2.

  • And I actually don't know, offhand, what level 3 is.

  • But easily we could just say--

  • let's pretend that Tom is an actor.

  • TOM BALLATORE: Midwestern.

  • Oh, OK.

  • Thomas Ballatore actually is an actor with a Kevin Bacon number of 2.

  • COLTON OGDEN: Interesting.

  • So you have a second degree towards Kevin Bacon?

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: You know somebody?

  • TOM BALLATORE: Well, the same name, Thomas Ballatore, Bacon number 2.

  • Because he was a Jim Carrey movie.

  • COLTON OGDEN: Ah, interesting.

  • Gotcha, OK.

  • So if I go into what we just did here, and I type in another UL.

  • And again, I'm going to say "English dialects--"

  • and this is just fictional at this point.

  • I don't know whether you do or do not, and I won't ask you to prove,

  • unless you want to.

  • TOM BALLATORE: I can do the Boston one.

  • COLTON OGDEN: Let's say that he has a--

  • TOM BALLATORE: (WITH ACCENT) It's a baby whale.

  • COLTON OGDEN: I guess, how would you describe the default?

  • I guess you would just say Western accent, I guess, a Californian--

  • not Illinois.

  • TOM BALLATORE: (WITH ACCENT) Hey, pard'ner.

  • Midwest, Midwest.

  • COLTON OGDEN: I guess Illinois, right?

  • Oh, Midwest, I guess, is fine.

  • TOM BALLATORE: Chicago.

  • Them Bears-- da Bears.

  • COLTON OGDEN: I would say your accent, to me,

  • sounds more just like vanilla American.

  • TOM BALLATORE: Vanilla Ice, yeah.

  • COLTON OGDEN: Yeah, Vanilla Ice, yes.

  • We'll say that he has a southern accent of debatable quality, and then

  • an English accent--

  • proper English accent--

  • TOM BALLATORE: (WITH ACCENT) Yes, of course.

  • COLTON OGDEN: That sounds pretty good actually.

  • TOM BALLATORE: (WITH ACCENT) Yes, thank you very much.

  • COLTON OGDEN: I'll take it.

  • I'll take it.

  • So now we have three lists that are nested.

  • And then notice, once again--

  • TOM BALLATORE: Is that a square?

  • COLTON OGDEN: We don't have a black circle, we don't have a white circle,

  • we have black squares.

  • So you keep nesting lists, and you'll get different styles.

  • And this is just a kind of debatable-quality low-key savage.

  • Just a friendly jab.

  • TOM BALLATORE: (WITH ACCENT) Spot on.

  • COLTON OGDEN: Just a friendly jab, just a friendly jab.

  • But this is how you nest HTML, in concept.

  • And you can apply this to any HTML.

  • And you can nest, arbitrarily, HTML elements, in and out of other elements.

  • "Change the style manually, Colton," [INAUDIBLE]..

  • Oh, oof.

  • TOM BALLATORE: There was actually a question

  • that went away about a PSD file to HTML, like a Photoshop design file.

  • We're not going to address that tonight.

  • But yeah, you would have issues with trying

  • to get things lined up into your HTML.

  • Maybe that will be a CSS issue.

  • But I did see the question.

  • We just don't--

  • I'm not going to address it, probably, tonight.

  • COLTON OGDEN: Yeah, I'm actually not an expert

  • on Photoshop and getting that to work in the context of a web page.

  • I know that there are tools like Dreamweaver

  • which have normally tried to solve that problem, which

  • is another Adobe product--

  • kind of an older Adobe product.

  • And I don't think people typically use it much these days.

  • People tend to use something like Wix or WordPress

  • to lay out their websites because it's a little bit more reliable--

  • popular, and they have a lot of really cool tools built in.

  • But yeah, based on an article Tom pulled up,

  • you can mess around with websites and PSD.

  • I says that they can be sliced and turned into HTML code.

  • But that sounds like it's a pretty manual process, honestly.

  • It sounds like they're referring to somebody actually, as a designer,

  • going into the assets and manually figuring out

  • where all the alignments are.

  • So probably not a one-to-one mapping of any kind.

  • Video2232, Harry [INAUDIBLE],, and Luna079,

  • thank you very much for the follow.

  • Cool.

  • So we did that.

  • Somebody asked me if I could style something, I guess, manually-- a list

  • manually.

  • And I could do that.

  • I offhand don't know the exact CSS tag.

  • And again, this will be something I prepare in advance for the CSS stream.

  • But I can go into CSS list elements styling, for example,

  • and just pull up what they have on W3 schools maybe.

  • And let's see, what do they have?

  • List style type.

  • Yeah, that looks like the particular CSS attribute

  • that you would use to change the style.

  • So if I were to just to say--

  • and I'd have to figure out--

  • oh no, I would just do it by overwriting it on the UL itself.

  • TOM BALLATORE: Exactly.

  • COLTON OGDEN: Yeah, so I would say, UL.

  • And I would say style is equal to list style type.

  • And let's say that I wanted the first one to be square instead of circular,

  • which it is by default. I would just literally type, square, like that.

  • And this is sort of like embedded CSS within a tag.

  • And this is, again, what we looked at earlier, kind of

  • with the width attribute.

  • But that's a specific attribute.

  • This, more generally, just means I can put any CSS in here that I want to.

  • And it will apply just to this tag, just this specific-- sorry,

  • to this specific tag.

  • And so let's go ahead and run this.

  • Let me make sure that I am correct in this.

  • So if I am correct and I've done this properly-- and I may not have--

  • these circles on the very far left should turn to squares.

  • And they did.

  • So, cool.

  • Easy-- wipe my hands.

  • TOM BALLATORE: Wix-- is that the one that's heavily advertising on YouTube,

  • like the first five seconds I skip through it.

  • I think it was a Wix thing.

  • COLTON OGDEN: I don't know.

  • I have an ad blocker, so I'm not sure.

  • TOM BALLATORE: Anyway, yeah, but Wix, yeah, definitely, hm.

  • [COLTON CHUCKLING]

  • I remember the first web page I made.

  • Then I had somebody actually that did web stuff do it.

  • And he did everything in Notepad.

  • And I was like, well, why aren't you using, like, Macromedia Dreamweaver?

  • He's like, dude, you just type it in.

  • And David said that the other day.

  • And people were like, really, you don't use an editor?

  • And it's-- yeah.

  • COLTON OGDEN: The modern tools are really good.

  • And I think most people now are trying to do a basic website,

  • like a blog or even a very basic e-commerce site,

  • I think it's generally pretty common that they

  • will use a tool that lets you sort of self-serve like that, like a Wix

  • or a WordPress.

  • But it's a little different.

  • There's a learning curve associated with learning that tool versus learning

  • web development.

  • And you're limited.

  • They have only a core set of plug-ins that you're

  • going to able to use to get the content that you want.

  • So you kind of have to do it depending on what the needs of your website are.

  • But I think it's great.

  • WordPress-- I'm not an expert on WordPress or Wix.

  • WordPress is based in PHP if you want to actually program

  • the plugins and stuff like that.

  • I don't know as much about Wix.

  • But they're great for, like I said, more static websites.

  • It's a cheap way to get a website up and running

  • without needing to be a web developer necessarily.

  • TOM BALLATORE: But if you're following the stream,

  • you probably could just get Bootstrap and play along, and probably

  • come up with something pretty good.

  • COLTON OGDEN: Yeah, Bootstrap is going to be an awesome stream.

  • We'll cover that, probably in a few weeks.

  • I want to say maybe two weeks or so.

  • Next week we have CSS and Render 50.

  • And I'm going to take Bhavik up on his challenge to do Minesweeper actually.

  • We're going to program Minesweeper in LOVE in Lua, which would be awesome.

  • I've never programmed Minesweeper, but it's a very simple game.

  • We can check it out.

  • TOM BALLATORE: WordPress is-- oh, no, they're

  • talking about the Microsoft Word for HTML.

  • Funny, like that client I was talking about-- what

  • was the issue with the client?

  • I forget.

  • Oh, the Lorem Ipsum sum thing.

  • They had a 30-page Word document that they just

  • wanted dumped into a single HTML file.

  • And design-wise, it was just horrible.

  • So in Word, I just saved it as HTML, and just put it up.

  • Because nobody's going to look at it anyway.

  • So here you go.

  • That's what you want?

  • That's what you got.

  • So I did actually use Word for HTML.

  • COLTON OGDEN: That's interesting.

  • I can't say I've ever done that.

  • But that's pretty cool.

  • "Chip's Challenge-- Colton, do you remember that game?"

  • No, I don't-- Chip's Challenge.

  • "Top-down tile-based puzzle video game for the links."

  • Oh, yeah, it looks kind of like Minesweeper, doesn't it?

  • And there's a Windows version.

  • Oh--

  • TOM BALLATORE: Commodore--

  • COLTON OGDEN: --wait.

  • TOM BALLATORE: --Amiga, OK.

  • COLTON OGDEN: No, I do remember this game.

  • I played this on Window 95, back in the day.

  • I totally remember this game.

  • That's crazy.

  • Wow, OK.

  • That just opened up a pocket of information in my head

  • that I thought was long gone.

  • So I appreciate that, Adam.

  • That's awesome.

  • Wow, I totally forgot about that.

  • That's super cool.

  • We could make a game similar to that eventually.

  • It's very simple.

  • It's just if you have a particular key, move through a block, and then get rid

  • of it when you have it.

  • The challenge there is just laying out your level such

  • that it's logically solvable.

  • That's really the only challenge in that kind of tile-based game.

  • It's very simple.

  • Just move on a grid, which we've essentially looked at with Snake.

  • But in this case, you would control your position.

  • "Do you know the game Jazz Jackrabbit?"

  • I do know the game, but I haven't actually played it.

  • TOM BALLATORE: There's a question about that about,

  • "any advice on not turning your HTML into div soup?"

  • OK, so a really important change with HTML5

  • is that a lot of the things where people would have div header, div footer,

  • div main.

  • There used to be hacks like that.

  • And now they are their own full-fledged tabs.

  • But of course divs are still very useful when

  • you do want to have a division of something in your page.

  • You could use sections instead, perhaps, sometimes.

  • But divs are definitely probably going to decrease in provenance

  • as these other tags become more used.

  • COLTON OGDEN: Yeah, the sort of so-called semantic elements,

  • the header, footer, section, article, those kinds of things, yeah absolutely.

  • I mean, even Bootstrap kind of abstracts that out.

  • It has Jumbotron.

  • Actually it uses, not Jumbotron, but it has some of its own tags

  • that it uses kind of semantically.

  • And it doesn't have a ton of--

  • it does have quite a few divs, but not, I think, as many.

  • I see Bootstrap likes to do nav a lot.

  • I see that a lot in there.

  • We'll cover all of that.

  • We'll have a separate stream.

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: Cool.

  • "Creating themes for WordPress is not that hard.

  • It's way better than using third-party plugins to add custom HTML and CSS."

  • I'd have to do a deeper dive into it, because I'm not

  • super familiar with WordPress.

  • But yeah, it's pretty popular amongst people

  • for making quicker, smaller, more static web

  • pages that aren't as infrastructure-heavy,

  • like the Facebooks and Googles and stuff, the crazy things that

  • need crazy algorithms to work and manipulate massive amounts of data.

  • Kind of e-commerce blogs, simple websites--

  • good use case for WordPress and Wix.

  • All right, so we covered lists now.

  • So let's go ahead and talk about tables.

  • [INTERPOSING VOICES]

  • What did you think we were doing?

  • TOM BALLATORE: I though we were going to do forms.

  • But hey, tables are cool, too.

  • COLTON OGDEN: No, forms I actually have after tables.

  • Right after tables, we do forms.

  • So let's get rid of Chip's Challenge.

  • My name is Tom Ballatore.

  • I love that.

  • That's awesome.

  • So we have a pretty cool web page here, and I

  • feel like it'd be cool to make a table that kind of illustrates aspects

  • of your character, or something--

  • TOM BALLATORE: Oh, OK, character, yes.

  • OK, fine.

  • COLTON OGDEN: Your character, or of you-- something.

  • We'll have a Tom table.

  • TOM BALLATORE: A Tom table.

  • COLTON OGDEN: We should have a Tom table.

  • But we have to figure out, first of all, what that Tom table would include.

  • So would it be maybe--

  • TOM BALLATORE: Countries I've been to.

  • COLTON OGDEN: I guess.

  • TOM BALLATORE: Oh, that'd be too long.

  • COLTON OGDEN: I'm trying to think.

  • Because we need rows and columns, right?

  • A table is essentially kind of an Excel doc almost.

  • It's a set of rows and columns where you arrange

  • data in a rectangular sort of layout, where you have things

  • that are a row of information every--

  • I guess maybe our rows are people, maybe CS 50 staff.

  • Tom is the first row.

  • And maybe there's foreign languages that that person can speak.

  • [INTERPOSING VOICES]

  • TOM BALLATORE: I see.

  • You're getting 2D, man.

  • COLTON OGDEN: And maybe there's programming languages

  • that that person can speak.

  • So maybe, I don't know, JavaScript?

  • I'm trying to, in my head, kind of frame it out

  • so we can have a bunch of diverse content.

  • But this is great, because we can actually use those GIFs.

  • We can use the GIFs from the other website

  • to integrate elements and make some really cool tables.

  • So I'm going to delete--

  • TOM BALLATORE: [INAUDIBLE],, see you later.

  • It's 3:26 in the morning where he is.

  • COLTON OGDEN: Oof, that's late.

  • Well thank you so much for tuning in, in spite of how late it is.

  • Appreciate your attendance.

  • We'll see you next time.

  • Let's delete this overarching UL.

  • Let's get rid of it.

  • And I can I can afford you the luxury of taking the emphasis away from you.

  • We'll say, why is CS 50 awesome?

  • TOM BALLATORE: Oh, it is.

  • COLTON OGDEN: CS 50 is awesome, right?

  • And we'll get rid of your image, too-- for now.

  • It's not gone forever.

  • It's not going to be gone forever.

  • We're going to use it again.

  • I promise you that.

  • So we're going to get rid of that.

  • I'm going to go back here and refresh.

  • And you can see that now we have a web page that

  • just says, "why is CS 50 awesome?"

  • CS 50 is awesome for a lot of reasons in my opinion.

  • But we're going to specifically say, "why is this is the CS50 staff

  • awesome?"

  • So it would be kind of tedious to just have a picture of maybe Tom

  • here, a list of all the things that are cool about him,

  • and then a picture of David underneath that, and all of the things

  • that are cool about David, and then a picture of maybe Brian,

  • and all of the things that are cool about Brian.

  • But instead, what we can do is lay things out in two dimensions,

  • and actually take use of some of the horizontal spacing

  • that we have in our web page.

  • So let's go and do that.

  • And the way we do that, first of all, as we've already sort of alluded to, is we

  • use what's called a table.

  • And a table is not unlike what you would see,

  • for example, in an Excel spreadsheet, something that looks kind of like this.

  • I'm looking for-- here we go.

  • This is perfect.

  • So this is exactly sort of what a table is.

  • It's effectively a 2D layout of rows and columns.

  • So you can see here, all the rows are marked with numbers,

  • and all the columns are marked with letters of the alphabet.

  • So in this case, at cell A1--

  • and each of these little individual rectangles are called cells--

  • we can maybe say that at column A, for every single row,

  • that's going to be the person's name.

  • So if Tom were the first entry, if he were at row 1, column A would be name.

  • So Tom would go here.

  • This would be Tom.

  • And then maybe languages that they can speak--

  • Japanese, English, German-- that would go in cell B1.

  • B would be the column for everyone's language that they can speak.

  • And then maybe C would be instruments they can play.

  • So do you play an instruments, by chance?

  • TOM BALLATORE: Yeah, piano, marginally.

  • No concerts.

  • COLTON OGDEN: We'll say, "piano, marginally," in cell C1.

  • That'll be Tom, his instrument that he can play is the piano, marginally.

  • We'll just say piano.

  • TOM BALLATORE: The stream brought to you by Snapple.

  • COLTON OGDEN: Yeah, there you go, exactly.

  • TOM BALLATORE: The best thing about being on CS 50 staff

  • is you can go to the refrigerator and just take a drink.

  • COLTON OGDEN: Yeah, true.

  • We've got a lot of--

  • [INTERPOSING VOICES]

  • Shout out to Valerie, one of our staff who is our logistics specialist.

  • She takes care of a lot of things, including making

  • sure we have amazing snacks and drinks.

  • I'm going to go ahead and create a table.

  • So I'm creating essentially a spreadsheet here.

  • And you can format this however you want.

  • Eventually, by default, the formatting is

  • going to essentially take the largest element of any given column or row,

  • and just kind of make that row or column that large.

  • It just accounts for the largest possible use case

  • that we have the content.

  • So it kind of auto-sizes, which is pretty great.

  • So you can have an arbitrarily-sized image.

  • And it won't override the size of a grid.

  • It's not a uniformly-sized grid.

  • It's a dynamically scaling grid.

  • Brenda says she misses Snapple.

  • I guess they don't have Snapple in New Zealand?

  • That's tragic.

  • TOM BALLATORE: The sheep drank it all.

  • COLTON OGDEN: Brenda, Snapple?

  • TOM BALLATORE: The sheep drank it all is what I said.

  • COLTON OGDEN: Sorry, does she drink it--

  • I thought you said--

  • TOM BALLATORE: The sheep drank it all.

  • COLTON OGDEN: I thought you said, does she drink at all.

  • TOM BALLATORE: I'm making a New Zealand joke there.

  • COLTON OGDEN: Got it, got it.

  • OK.

  • It flew right over my head.

  • TOM BALLATORE: Sorry.

  • COLTON OGDEN: I misunderstood.

  • Table-- so a couple of things.

  • So tables are a grid of cells in rows and columns, but they also have a head.

  • And you probably have seen this in an Excel doc, for example, that--

  • well, I got rid of the image, tragically.

  • But we'll say Excel spreadsheet once again.

  • And I'm going to go back down here to where this was.

  • And looking at a spreadsheet, you might not know necessarily what it is,

  • what the data is.

  • If you're just looking at it, and especially if the data is relatively

  • arcane, it's not as basic as name, languages spoken, instruments played,

  • if it's financial data or other information,

  • we might not know what column A, or column B, or column C denotes.

  • So we usually have what's called a header row, a head.

  • And this is where we can say, names go here, instruments go here,

  • languages go here.

  • And that will apply to the entire column for every subsequent row.

  • [INAUDIBLE] 77, Luna079, Robex123, and [INAUDIBLE],,

  • thank you very much for the follow.

  • Let me make sure I didn't miss anything else.

  • Harry [INAUDIBLE],, Video2232-- I believe I got them.

  • So thanks all of you for following.

  • Appreciate it.

  • There is some crazy stuff going on out back.

  • TOM BALLATORE: Yeah, can you hear that?

  • COLTON OGDEN: I don't think anybody can hear that.

  • But there's like a herd of animals out there doing something.

  • thead is going to be that exact idea that I just

  • illustrated, the idea of a single row that's

  • going to basically enumerate what's going

  • to be in each column for our table.

  • And it's going to display as such.

  • And just like a thead, we also have a tbody.

  • And this is kind of an analog to what we see with the HTML document itself.

  • So I'm going to go ahead, and in my thead, I'm going to do--

  • so I believe you can technically use td's here,

  • but the trend is to do th, so a thead element.

  • This is going to be a table head element rather.

  • And what this is going to do is these are the individual 1 by 1 columns

  • in our spreadsheet, in our table.

  • So I can say, name--

  • or actually, what I should say is, picture--

  • because we are going to want a column for the picture.

  • We're going to use the GIFs again.

  • I'm going to say, name.

  • I'm going to say, languages spoken--

  • just short for languages that that person can speak.

  • And then, instruments played.

  • Or rather, we'll just say, instruments, and then we'll say, languages.

  • And I'm just going to render this as-is first,

  • so we can see what it looks like.

  • And indeed, we do see that we have, sort of laid out here, picture, name,

  • languages, and instruments.

  • But one thing that people are probably noticing is that this looks pretty bad.

  • We actually don't have any way to differentiate where our columns are,

  • where our cells are, where our rows are.

  • So I'm going to do just a very quick and dirty border equals 1 string.

  • And notice that it sort of marked it in red.

  • And that's just basically saying this is a this is a deprecated attribute.

  • You don't want to do this.

  • You typically don't want to do this.

  • This is another sort of styling, going with the HTML, kind of an old attribute

  • not working out.

  • But it allows us to very quickly illustrate the way that this table has

  • laid out our information.

  • We have picture, we have name, we have languages, and we have instruments.

  • TOM BALLATORE: That is ugly as sin, isn't it?

  • COLTON OGDEN: A little bit.

  • It's better than nothing, though--

  • TOM BALLATORE: Oh, absolutely, absolutely.

  • COLTON OGDEN: But yes, certainly--

  • [INTERPOSING VOICES]

  • Tom got angry for a moment.

  • I'm sorry.

  • TOM BALLATORE: I was not angry, no.

  • I was just--

  • I don't know what I was.

  • I'm always happy.

  • COLTON OGDEN: Tom's a pretty happy guy.

  • I've never seen Tom angry.

  • "Only if you're working in multiple dimensions.

  • Why would you do that?"

  • TOM BALLATORE: There was a question about using nested tables.

  • And there's somebody asking--

  • and I can't read the name from here-- but about using email in a--

  • where was it?

  • Did it go off the top?

  • COLTON OGDEN: "How to create a responsive HTML email using tables?"

  • This is going to kind of different depending

  • on your email provider, right?

  • Because I think in Gmail, you can embed HTML.

  • But for example, if you're using Outlook or if you're using Yahoo or Hotmail,

  • I'm not sure how they actually serve it, whether they

  • have an HTML parser on their back end that

  • can take HTML that you specify within your email message,

  • and actually render that on the--

  • It also depends on the client of your email.

  • Maybe you're using an email program that doesn't render HTML.

  • So it literally will just, in that case, show you HTML--

  • the HTML words.

  • It will basically render it like it's plain text.

  • So it's kind of up to your service at that point.

  • It's not, I don't think, a standardized thing.

  • MeowCat says, "that is a beautiful table."

  • And "the table has a retro feel."

  • I would agree.

  • I would agree that it's a retro feel.

  • I'm not sure if it's beautiful.

  • But it's going to look beautiful because we're

  • going to have Tom's picture in there pretty soon.

  • So we'll show you how this looks.

  • So tbody-- now, within a tbody we have to specify.

  • Because I can just start writing elements again,

  • but how is it going to know when to break to the next row?

  • How is it going to know, this is Tom's row, this is Colton's row--

  • I don't know if I'm going to put myself in here.

  • But I actually don't have a picture on the CS 50 website,

  • embarrassingly enough.

  • I didn't show up that day.

  • I should have.

  • I think it didn't occur to me we were shooting pictures.

  • But we'll use David, we'll use Tom, and then we'll use Brian.

  • Because I know Brian plays some instruments and speaks some languages.

  • And I know he has a picture on the CS 50 website for sure.

  • So the way that we actually enumerate the rows in our body is going to be

  • using tr's--

  • so table row is how you can think of it.

  • I think that's actually what it's short for.

  • But within a table row, now we can actually

  • do kind of what we did up here with table head, in that we can enumerate

  • all of the columns, all of the cells--

  • table data, rather-- with the td keyword.

  • No, it's th, it's like a table head piece of data.

  • And I think you technically can use td here.

  • It just won't be bolded.

  • But td is what it expects to exist within each table row.

  • So these are the individual cells within a given row, the td's.

  • And then the row itself is marked out by the tr.

  • TOM BALLATORE: td standing for?

  • COLTON OGDEN: I think it's table data.

  • TOM BALLATORE: Yes.

  • COLTON OGDEN: I'm not 100% sure.

  • Is that--

  • [INTERPOSING VOICES]

  • So we're going to say--

  • this is going to be our first row.

  • And this is a great opportunity, actually,

  • to say how to do comments in HTML.

  • TOM BALLATORE: Oh, yeah.

  • COLTON OGDEN: I want to say, this is Tom's row.

  • TOM BALLATORE: You just did some wicked short-cutting there.

  • COLTON OGDEN: No, I just typed it.

  • TOM BALLATORE: Oh, and it auto-completed.

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: Oh, OK.

  • COLTON OGDEN: So VS code is great, and it does that.

  • A lot of text editors will do that.

  • But what I did was I typed this less than,

  • and then an exclamation point, which is kind

  • of what we've seen with a doctype HTML thing, and then dash dash.

  • And what that's done is, anything that I type

  • within the bounds of this new sort of tag that we've seen

  • is actually going to be completely ignored by our web browser

  • when it renders the HTML.

  • So this allows us to associate hidden data that's only for the programmers

  • or for the people reading it in Chrome.

  • This is going to be Tom's row.

  • And then when we want to close it, we want

  • to get back to the actual HTML that contains our information,

  • we can say, dash dash greater than, and that closes it.

  • You can sort of think of this as being its own sort of tag that

  • can be arbitrarily sized.

  • So this is going to be Tom's row.

  • I'm going to say-- it's Tom Ballatore, right?

  • And actually that' not accurate.

  • There needs to be a picture first.

  • So td-- so here's another showcase for embedding tags within other tags.

  • I can say, image source is equal to Tom.gif, right, just like I did before.

  • And then I can say-- because we're doing it in order of picture, name,

  • languages, instruments.

  • This needs to be the case for every row.

  • Otherwise there's going to be some inconsistency with our information,

  • which is important that we not do that.

  • So I'm going to say, Tom Ballatore.

  • I'm going to say languages that you can speak.

  • So we'll say English, Japanese, and German.

  • TOM BALLATORE: No, stop saying German.

  • COLTON OGDEN: Let's say a little bit, just for--

  • TOM BALLATORE: Swahili.

  • COLTON OGDEN: Just for a little bit.

  • And then instruments-- piano, a little bit.

  • TOM BALLATORE: Yeah, a little bit.

  • COLTON OGDEN: A little bit.

  • And then let's go ahead and refresh this.

  • And notice that now, not only do we have a new row, it also styled everything.

  • It included the styling that we included with our table head.

  • But it also put it into our row here.

  • And notice that every cell is only as large

  • as it needs to be to contain the largest size of the other cells.

  • For example, all of these cells are as vertically tall

  • as they need to be in order to support this image because they're

  • all in the same row.

  • If this image were larger than these other cells,

  • your data would look a little weird.

  • Your table would be kind of skewed.

  • These would be bumped up in a weird way.

  • Each individual cell, in terms of its horizontal width,

  • is as large as the text that it contains.

  • For example, you can see all of these cells

  • are exactly as large as the strings they contain--

  • Tom Ballatore; English, Japanese and German; and piano, a little bit.

  • TOM BALLATORE: Good question here.

  • What if, let's say, you were missing the one for English, Japanese, and German

  • if you only had three td's inside there?

  • COLTON OGDEN: Good question.

  • I have to imagine--

  • [INTERPOSING VOICES]

  • Probably gives it a--

  • TOM BALLATORE: Comment that out maybe?

  • COLTON OGDEN: Yeah, let's do that.

  • So missing the languages one, you said?

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: So the first thing that we can immediately assume

  • is that this is going to get shifted over one.

  • Because it does it based on the order it sees the tags.

  • So we know that this is at least going to get shifted over.

  • But what's going to happen to instruments?

  • That'll be fairly interesting to look at.

  • So let's refresh.

  • And we see that it's just empty.

  • Nothing gets placed there.

  • No box actually gets placed.

  • And so part of the styling involves putting a rectangle there,

  • if and only if there's actually some content in that cell.

  • TOM BALLATORE: So the workaround would be to just have an empty td tag.

  • COLTON OGDEN: An empty td tag.

  • [INTERPOSING VOICES]

  • If you wanted to get the square there.

  • Because I actually kind of like the fact that there's no square there.

  • So I guess it comes down to a matter of style.

  • But yeah, in that case, you would say maybe put an empty td.

  • But I guess if you mean to say, if for example, name was empty--

  • oh, I see what you mean.

  • In this case, yeah, this needs to get shifted over.

  • I misinterpreted what you said.

  • TOM BALLATORE: Yeah, sorry about that.

  • COLTON OGDEN: No, don't apologize.

  • My fault. So in this case, if I wanted to, for example, just say--

  • let's say that we don't know what languages you speak and we

  • wanted to comment this out, we would exactly do what you said.

  • We would put an--

  • did I screw that up?

  • [INTERPOSING VOICES]

  • What it would do is we would just put, like you just said,

  • an empty td, refresh, and indeed the emptiness is in the right spot, but--

  • well, that's it.

  • The emptiness is in the right spot now.

  • It's not shifted.

  • We just had to put empty placeholder data

  • into our DOM to make sure it worked.

  • Let's make sure I'm keeping up with comments, because I feel like I

  • have not been reading any of them.

  • TOM BALLATORE: I've been reading them.

  • And we've-- of course skipping a few things.

  • There are good points here, though.

  • This issue about tables with responsive design.

  • I think there's definitely other ways of--

  • I think tables get abused in the sense that people

  • want to lay out their thing in a grid or something, so they use tables to do it,

  • and just don't have margins.

  • That's definitely a problem.

  • There are other ways around that, with either flexbox or grid.

  • COLTON OGDEN: Oh, sure, yeah, flexbox would be great for that--

  • Align data that's responsive.

  • TOM BALLATORE: It just does all that work for you.

  • COLTON OGDEN: Yeah, we'll use flexbox in a future stream,

  • and we'll cover sort of the use cases for that.

  • One thing I don't like about this table is that the picture is really large,

  • and it's also kind of grainy.

  • I want to make the image just a little bit smaller.

  • So I'm going to do that.

  • I'm going to actually set this width to 100 pixels, just how we did before.

  • So now the table is a little bit easier on the eyes, I think.

  • And then we can go ahead and take out this--

  • and that's not a jab at you and the size of your image, by the way.

  • TOM BALLATORE: That's fine.

  • 100 pix is cool enough.

  • COLTON OGDEN: Oh, I screwed that.

  • Because now we have the empty td.

  • And notice that if you have an extraneous td--

  • if that's the right word.

  • I apologize if that's the wrong word.

  • If you have an extra td, it actually does the same thing

  • that we saw earlier, but with the table header.

  • The table header gets added an extra bit of space

  • to account for this weird sort of external element

  • that's not accounted for by the table head.

  • So that's kind of a cool little thing to look at.

  • So let's refresh.

  • Everything's aligned.

  • Let's go ahead and add an entry for David.

  • I'm actually going to just copy and paste this whole thing.

  • And the table body will just scan for as many tr's as it sees.

  • And it will just add a row, a row, a row, a row,

  • until it reaches the slash tbody tag.

  • And I'm going to change some of these.

  • So first of all, what we need to do is we

  • need to get David's picture off the CS 50 website.

  • So let's do that.

  • That's the most important step.

  • And I'm going to get Brian's as well while I'm there.

  • So I'm going to go over to the staff page.

  • It should be cached now, which is nice.

  • We'll save David's image.

  • We'll call this David.gif.

  • And then we'll call Brian's Brian.gif.

  • And now what I can do is I can say, this should be David.gif.

  • I'm going to copy this again.

  • And this should be Brian.gif.

  • [INAUDIBLE] David.gif and then Brian.gif.

  • The comments need to be updated.

  • So this should be Brian's row, this should be David's row.

  • David's name is not Tom Ballatore.

  • It is David J. Malan.

  • He speaks English, Spanish, and Italian, and he plays drums.

  • And then Brian's row--

  • Brian Yu.

  • He speaks English and Spanish.

  • He might speak more.

  • I actually don't know if he speaks more than English and Spanish.

  • I know he at least speaks Spanish and he plays piano.

  • And he might play more instruments than piano.

  • That's just the only instrument I happen to know that Brian speaks.

  • If Brian's in the chat, Brian, definitely

  • let us know what languages you speak and what instruments you play,

  • and I'll add them.

  • I'll update it.

  • But you can see that now, because we've added a couple of table rows--

  • tr's-- and the right td's-- the table data-- in the right places,

  • we have a full table here, a list of information that's sort of all evenly,

  • nicely, horizontally aligned.

  • It's not a bunch of verticality inasmuch as we have a image

  • with a list of all these interests.

  • Everything is laid out in a way that we can visually see it much more easily.

  • And this is an important thing, obviously,

  • in the era in which they created HTML, and HTTP, and the internet,

  • and wanted to transmit information.

  • And in science, certainly you see tables laid out all the time

  • that pair data with other bits of data.

  • So this is a useful thing.

  • And it's something that we can certainly use now, even in the modern era.

  • With some styling, we can make it look awesome.

  • "What is your name, author?"

  • I'm guessing this is referring to me.

  • So my name is Colton Ogden, and this is Tom Ballatore.

  • I am a CS 50 full-time staff a technologist at Harvard.

  • And Tom, what are--

  • TOM BALLATORE: I am a teaching fellow.

  • COLTON OGDEN: And what company do you work for again?

  • TOM BALLATORE: Lake Basin Action Network.

  • It's basically doing remote sensing and GIS work.

  • COLTON OGDEN: Nice.

  • And like you said, you teach at CS 50.

  • You're here all the time.

  • Well, I mean, as much as you can afford to be.

  • TOM BALLATORE: As much as I can, yes.

  • COLTON OGDEN: Because I know it's probably

  • very time-consuming to make that trip.

  • It must be exhausting.

  • TOM BALLATORE: Flying from Japan, I get real tired.

  • Sorry, that was really stupid.

  • COLTON OGDEN: But yeah, that's that is tables.

  • You know, tables are very important.

  • It's the basics of tables.

  • You can do the same thing with tables that you can do with anything else,

  • inasmuch as nesting, tags, and getting very intricate layouts for things.

  • You could put lists into tables.

  • You can put paragraphs into table elements.

  • You can put more images.

  • You can put lists with images in them.

  • Really it's meant to be a very flexible format that

  • allows you to do just about anything.

  • Now I realize we're getting close to the three-hour mark.

  • So the last thing I want to cover before we end is forms.

  • Because we said we'd get into forms.

  • Forms are a very important aspect of HTML and HTTP in general.

  • And so it serves us, I think, to--

  • appropriately, it serves us.

  • It serves us a--

  • [INAUDIBLE]

  • TOM BALLATORE: And while you're getting that ready,

  • there's a great discussion on the bottom here, with Brendan, saying,

  • "do you need alt attributes for images.

  • And somebody is saying--

  • COLTON OGDEN: [INAUDIBLE]

  • TOM BALLATORE: And then somebody is saying,

  • alt attributes are not necessary."

  • I mean, yeah, the page will render fine.

  • But if people can't see, they're not going

  • to be able to understand what the image is if they can't see it.

  • So you really should be having alt images.

  • I mean, we're just sort of playing around now, and assuming

  • that everyone's seeing this.

  • But definitely, any image you have, you have to have good alt text.

  • There's really an art to that.

  • Let's say if you have, like, Mona Lisa.

  • What do you write?

  • I'm like, woman in old painting, like semi-smiling, kind of.

  • I mean, alt text is really difficult. But you can definitely

  • find ways around that.

  • So you definitely put alt tags for images and other things like that.

  • COLTON OGDEN: Yeah, I forgot that that was--

  • we got so caught up in this awesome set of stuff that we--

  • originally, you wanted to talk about all the alt stuff.

  • We should definitely do that.

  • So I think we should maybe take an extra--

  • are you OK with taking an extra 20, 30 minutes to cover that, in addition

  • to forms, or do you have to leave?

  • TOM BALLATORE: No I'm cool with that.

  • But I think people are probably getting tired.

  • But yeah, that's fine.

  • Go ahead.

  • COLTON OGDEN: So let's definitely do that.

  • And I apologize for not keeping up with the stream.

  • And yes, to Paulton-- yes, Colton Ogden is my name.

  • Clipped.

  • And [INAUDIBLE] says that they took a subclip of the video.

  • I don't remember exactly.

  • Do you need alt attributes for those images?

  • And to your point, yes, ideally.

  • We would say, a man who does not look 48 spinning around in place,

  • we would say for this one.

  • TOM BALLATORE: I wonder if we actually did alt images here.

  • I'm checking right now.

  • Oh, OK.

  • So there we go.

  • COLTON OGDEN: I'm going to sort of nix this table.

  • And instead, I'm going to turn it into a form.

  • So we're going to say this, why is the CS50 staff awesome?

  • And then I'm going to make a form that says, give me all of your information.

  • Just like that.

  • And this is going to be an illustration of a very important idea,

  • and that is sending information to other places.

  • So it's one thing to be able to click links, and to go places,

  • and to see information, but it's another thing

  • to actually interact with people via the web page.

  • And the only way you can really do that is,

  • discounting things you can do with JavaScript, is the use of an HTML form.

  • And so all form is-- and I'm just going to lay out some simple stuff--

  • is a set of fields, a set of UI elements that are interactive,

  • that you can type information into, select information from a predetermined

  • list of things.

  • We're not going to cover every possible use case for forms in this example,

  • but we are going to talk about some of the basic stuff,

  • some of the basic fields and bits of UI that you can indeed use.

  • So I have a form.

  • That's just like we've used any other tag.

  • It's just a form.

  • And there's going to be other elements to that--

  • attributes that we can look at.

  • But for now, we're going to focus on input.

  • Now, I'm going to say input type is equal to text.

  • And if I do that, we notice that we get a little text bar here.

  • And so this is something that you see when

  • you're doing for example a login form or a registration form

  • and you have to take your name.

  • It's going to be in a text field.

  • It's going to be in an input that is of type text, type being

  • an attribute on that HTML tag which sells the browser

  • to render it and give you certain capabilities--

  • certain user interaction.

  • And I can do yet again another field.

  • And I can say this one's going to be type is equal to password.

  • And so now I have two--

  • and notice that these are not block-level elements,

  • these are inline elements.

  • So they are all just going to completely keep going and wrapping

  • when it gets to the far right edge of the screen.

  • If I type into the first element, it gives me the ability to do that.

  • I now have interaction with my website in a way that I didn't have before.

  • I can type things.

  • If I were to type something in the other one,

  • because of type is equal to password, Chrome is actually saying,

  • you shouldn't be able to see what's in there.

  • I'm going to put dots there, and you won't actually be able interact--

  • you won't be able to visibly see.

  • This is meant to be private.

  • This is a private field.

  • The password, people might be looking over your shoulder,

  • put dots there, right?

  • So that's essentially what using--

  • [INAUDIBLE] basically what a form is.

  • And usually after you've combined and mixed and matched

  • a bunch of other elements, which we'll take a look at,

  • you're going to use what's called a button.

  • And your button can say Submit.

  • And once you Submit, you end up triggering

  • that form, a formal trigger and HTTP request, and it will go to some URL.

  • And by default, that URL--

  • if you don't specify--

  • is the same page that you're on already.

  • So normally, for, example if I'm logging into Facebook and I click Login,

  • I'm not going back to the login page, I'm

  • actually going back too maybe the way they structured it

  • it could be a redirect to the login page.

  • But generally, It'll be too like a serve page-- serve me my data page--

  • and they've probably done it abstractly in software.

  • So there's not like a concrete HTML page.

  • Everything's in software, but it's that idea.

  • That form needs to send its information somewhere.

  • If I have my name Colton and password 123, and I submit this.

  • I should send that form, that information, to some other URL

  • on the internet.

  • And it is going to be a URL, it's going to be an HTTP or HTTPS URL.

  • What version of ATM are you Targeting?

  • HTML5.

  • His photo isn't on the site since he didn't show up

  • on the day they were taking them, but he mentioned it a little while ago.

  • [INAUDIBLE] Oh, yeah, for sane my picture is not there.

  • Yeah.

  • My bad.

  • I should have done it.

  • He wasn't there when he had a photo shoot.

  • W3C has some good documentation regarding accessibility.

  • [INAUDIBLE] also has a course edX.

  • How is HTML parsed?

  • Can you talk about the internals, says Rosala36.

  • That's going to come down to the browser implementation.

  • That's going to be like chromium.

  • That's going to be part of the code base.

  • And I haven't taken a deep look into it, and I'm sure that engineers of that

  • could probably go on for hours, and days, and weeks about how

  • they've designed their parser.

  • But effectively, it's going to have to look for symbols

  • and figure out, given the string that it's in, basically, if it sees a tag

  • and that tag is p, and it sees the closing bracket,

  • read everything until it gets to the next tag, the next to less than sign.

  • And make sure that is the same tag, and if it is,

  • create some information and software that maps.

  • Render it using some drawing logic.

  • It's kind of complicated, and you need to be

  • I think on the actual engineering team to build a talk

  • authoritatively about it.

  • TOM BALLATORE: Yeah.

  • If you look at the developer tools, let's

  • say, in Chrome you'll see like DOM load time--

  • the document object model.

  • Obviously, all these tags are going to be

  • loaded in some sort of tree structure in which there are parents

  • and children and children of children.

  • So I think you can see a load time for that,

  • but the actual mechanics of how do they put things into that tree structure

  • and what exactly the tree structure was.

  • What is it called?

  • It's like a bee tree or something?

  • COLTON OGDEN: The name's familiar, but I'm not entirely sure.

  • TOM BALLATORE: I can't remember.

  • COLTON OGDEN: Red black tree.

  • I'm not sure.

  • That's used in a lot of realms measure I doubt they used --

  • it this case they're not giving a red black tree.

  • But for the DOM, I'd probably not.

  • But all that's a b tree.

  • Yeah, Something like that.

  • Pirate pants, thank you so much for the fall appreciate it.

  • And mixel, I do remember I said mixel.

  • mixel1, no I not say that.

  • It was one minute ago.

  • Mixel1, thank you very much for the follow as well.

  • but yeah good Question.

  • That's a very advanced engineering topic.

  • I don't have the knowledge about it, so we probably

  • shouldn't talk about it too much.

  • But certainly-- what's it called, was what they're runtime?

  • V8?

  • The chromium V8 engine?

  • TOM BALLATORE: Ahh.

  • COLTON OGDEN: That's on--

  • and I'm not sure if that's--

  • That's actually no.

  • That's not chromium.

  • Sorry.

  • That's Node.js.

  • Chromium, which I think has the back end for all the rendering is probably--

  • I'm not sure if it's open source, I think it's open source.

  • Google that, and see if that pulls anything up.

  • If anything, you can see the code base, and I think it's all C++.

  • Yeah if hates the JavaScript engine I have that

  • conflated with the chromium engine, which I believe, and I'm not 100% sure,

  • but I believe chromium is the back end that

  • actually does the literal parsing of HTML to can bring that into the DOM.

  • And also the visual elements of it.

  • Digicrests, thank you very much for the follow.

  • I Appreciate it,

  • I've seen you in the stream, and glad that you're now following.

  • OK, cool.

  • So we have text fields-- another important thing.

  • Like I said, we won't go into the detail.

  • I have a lot of other stuff we could talk about with forms,

  • and I think we might go into more detail on forms in a later stream.

  • We are going to do an advanced HTML stream, which is going to cover Canvas,

  • it's going to cover iFrames, semantic elements is going to cover--

  • what else do I want to

  • Cover?

  • Client-side validation using the built-in evaluation tools

  • you get in Chrome, which isn't the be all end all of validation,

  • but certainly a nice thing to look at.

  • And then forms I think in more detail, with posts, and get requests,

  • and how that actually transfer translates to query strings,

  • and how you can use that to interact with your own website

  • and other people's website.

  • We'll talk about all that stuff.

  • The one thing I do want to talk about is select objects.

  • And a select is essentially--

  • and I believe these taken options--

  • a fancy way of saying a drop down menu.

  • And a select so I can say options.

  • I don't think they take place holders.

  • I think I would need to say option and choose an instructor.

  • And then we would say, Tom Ballatore.

  • We would say-- and these will probably actually be on one line--

  • David J. Malan.

  • Got some tough competition there.

  • TOM BALLATORE: Oh yeah.

  • COLTON OGDEN: But we'll put your name first to give you a leg-up.

  • TOM BALLATORE: Ooh, thank you.

  • COLTON OGDEN: Option.

  • And then we'll say, Brian Yu.

  • And if I refresh this, notice that we do indeed get a dropdown.

  • It's nicely styled, because this is actually

  • done by your operating system, all these UI elements.

  • But you can see, it says choose an instructor,

  • and then we do indeed see in the order that we added them, Tom Ballatore,

  • David J. Malan and Brian Yu.

  • And I don't think we have time to go into submitting forms, and how that all

  • works, and actually parsing that information

  • when we get to another web page, because we are at three hours.

  • We do want to talk about alt stuff real quick before we conclude,

  • but this is the foundation upon which you would submit

  • this information to another location.

  • And this is how you get UI elements effectively.

  • If anybody has any question on the basis of forms?

  • I know we didn't cover as much about forms as I would have liked to.

  • We will in the future.

  • But if you have any questions on the stuff that we have covered,

  • definitely toss them into the chat.

  • And then if not, I think we should talk about alt.

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: Or accessibility in general, I should say.

  • TOM BALLATORE: Yeah, let's talk about some things.

  • I like that.

  • Yeah

  • COLTON OGDEN: Sure.

  • Let me know--

  • TOM BALLATORE: Can I have your HDMI, or should I do it on your computer.

  • COLTON OGDEN: Yeah, you can do it on your computer.

  • So it's going to go back for just a second.

  • Apologies while we do that.

  • All right.

  • Just go ahead and plug right in.

  • TOM BALLATORE: All righty.

  • COLTON OGDEN: We have a switcher normally, but it's not hooked up,

  • so we could have done a little bit of fancy searching.

  • TOM BALLATORE: And I was late.

  • COLTON OGDEN: No, that's OK.

  • Actually, you were earlier than expected.

  • TOM BALLATORE: Yeah.

  • I was.

  • All right, here we go.

  • Let's see.

  • COLTON OGDEN: Would you separate stream about DOM?

  • It would be nice.

  • Yeah, that's a plan.

  • I do want to go into DOM, and I actually want

  • to go into Dom scripting more specifically,

  • so talking about using the window API, doing

  • things like document.get, [INAUDIBLE],, that sort of thing,

  • manipulating the DOM manually, as opposed using jQuery,

  • that sort of thing

  • Let me resize your window here.

  • TOM BALLATORE: I was going to say, can I go to--

  • COLTON OGDEN: Yeah, it resized based on the display settings of your machine.

  • TOM BALLATORE: Yes.

  • COLTON OGDEN: So I'm going to--

  • TOM BALLATORE: Should I not be doing this?

  • COLTON OGDEN: No, you're fine.

  • What size do you want--

  • TOM BALLATORE: [INAUDIBLE] scale for.

  • COLTON OGDEN: Do you want to do 720?

  • TOM BALLATORE: 720 is probably best, right?

  • COLTON OGDEN: OK.

  • I might have to resize then.

  • OK, cool.

  • Blip.

  • All right.

  • TOM BALLATORE: Looks good.

  • COLTON OGDEN: Cool.

  • TOM BALLATORE: Yeah.

  • So when I was first learning HTML, I had the question of, well, what tag

  • should I really learn?

  • Because there's like 100 and how many tags out there?

  • I don't know.

  • And at the time, there was really no Information

  • COLTON OGDEN: You want to actually come a little closer to me too.

  • TOM BALLATORE: Sure.

  • All right.

  • So at the time, like I couldn't really find any information.

  • There was a Google study from 2006, where

  • they would scrape a bunch of web pages and see how many tags that were.

  • And I'm speaking about like unique tags on a given page,

  • like how many pages use a div tag?

  • Now, how many div tags are on a given page?

  • And just before coming here, I was like, hmm,

  • I should see if they have updated information, and there is some.

  • So if you're looking at this and wondering, watching the stream,

  • thinking, what tags are really important?

  • Head and HTML are in, apparently, every page.

  • And you can-- Oh, the link for this, if we have a chat, which I'm not

  • COLTON OGDEN: Oh, we do.

  • It's a little bit finicky at the moment.

  • TOM BALLATORE: OK.

  • COLTON OGDEN: Yeah.

  • I'm not getting into the channel.

  • [INAUDIBLE]

  • Can you go to-- what did you type in, Google?

  • Type in the Google words and then folks online can type the same search thing.

  • TOM BALLATORE: Yeah, I would type in-- actually, how did I find it?

  • Let me go back.

  • Frequency of tags-- HTML.

  • COLTON OGDEN: Yeah that's the first thing.

  • TOM BALLATORE: It was not the first thing.

  • It was the CSS Tricks was just an incredible page.

  • COLTON OGDEN: OK, cool.

  • So

  • TOM BALLATORE: Yeah frequency of HTML l tags, and then CSS tricks.

  • Yeah.

  • So let's take a look at these.

  • The top ones were, of course, what you're expecting--

  • head, HTML.

  • body.

  • COLTON OGDEN: So 1% of pages don't have a body tag.

  • TOM BALLATORE: Yeah.

  • Which makes you wonder.

  • I guess it's just an SEO thing.

  • COLTON OGDEN: Yeah.

  • I guess it must be.

  • TOM BALLATORE: Who knows.

  • Title--

  • COLTON OGDEN: Search Engine Optimization,

  • for anybody who's not familiar with that terminology.

  • TOM BALLATORE: Yes, yes.

  • Meta, div, a, script.

  • Script surprises me.

  • I mean I guess everybody is just using JavaScript.

  • COLTON OGDEN: Yeah.

  • Well, JavaScript's pretty ubiquitous.

  • I would expect--

  • TOM BALLATORE: But 88.5?

  • Aren't there more static things out there?

  • COLTON OGDEN: I mean, even the static websites will sometimes

  • have really simple JavaScript.

  • TOM BALLATORE: That's true.

  • Yeah.

  • And then link, image, p, span.

  • What didn't we talk about?

  • Style?

  • Yeah.

  • This one's sort of like, you shouldn't be doing that.

  • COLTON OGDEN: Style, we'll be covering that in the CSS one.

  • Yeah.

  • That shouldn't be in necessarily.

  • In and of itself it's not terrible if you do it in small amounts.

  • But I would say it's much better practice

  • to just use a separate CSS file.

  • And you use that with a link tag.

  • And also--

  • TOM BALLATORE: Input.

  • COLTON OGDEN: Darkworld saying, what a great language HTML.

  • HTML is awesome.

  • Digicrests says, any plans for Vue, React, or Angular?

  • And then Jaques says, Colton already said they wouldn't cover React.

  • And that's actually not true.

  • I actually very much wants to cover React.

  • It's less likely that we'll cover Angular, but maybe.

  • I'll look into Angular.

  • It's another sort of single page application, UI, HTML extension

  • language, kind of like React is.

  • Or not a language-- framework like React is.

  • It's another way of modern web development.

  • We'll take a look, possibly, at that.

  • But definitely React, ostensibly Angular and Vue, but less likely.

  • TOM BALLATORE: Cool.

  • So this had nothing to really do with accessibility.

  • And the reason I was talking about accessibility is just--

  • COLTON OGDEN: Well, I think it's cool.

  • TOM BALLATORE: --coming up--

  • and definitely, check out this page.

  • There's a lot of other things here I'm not going

  • to be talking about-- the doctypes.

  • Mostly they're HTML5 now.

  • You've got some of this transition stuff still there.

  • Yeah.

  • Just go through this.

  • This is really cool.

  • OK?

  • COLTON OGDEN: Stats.

  • Big data.

  • TOM BALLATORE: It's nice, because I was thinking,

  • I wanted this more modern data than the 2006,

  • because so many types have changed since then.

  • And I was thinking, I've got to have a student for CS50, for a final project,

  • do this.

  • And maybe they still could, but yeah.

  • So a lot of it's done right here.

  • Let's look at some other things.

  • There's this issue I always have with HTML.

  • It's really hard to find mistakes in your code.

  • And you'll be doing something--

  • and especially we'll get to this with CSS, if you forget the closing brace,

  • you won't have some certain styles.

  • Maybe some might go through, but others won't.

  • And it's really hard to debug, I think.

  • So one of the things here is this validators that exist.

  • There's many of these.

  • And online,

  • COLTON OGDEN: W3Schools.

  • Oh, right.

  • You did mention that, yeah.

  • TOM BALLATORE: Yeah.

  • So let's do this.

  • Let's take CSS tricks, this web page, copy the URL,

  • go over here, and let's actually validate

  • it and see if it passes the test.

  • COLTON OGDEN: This would be hilarious if it does not.

  • TOM BALLATORE: OK.

  • So they're getting some warnings.

  • OK, there's.

  • A Let's see, you don't need this, I guess.

  • But warnings-- OK.

  • Air.

  • Element style not allowed as child element of header.

  • Ooh.

  • COLTON OGDEN: Ah, Interesting.

  • TOM BALLATORE: Element stop is missing required attribute offsets.

  • OK.

  • I don't know what stop is.

  • But I guess it's something.

  • COLTON OGDEN: I don't know either to be honest.

  • TOM BALLATORE: OK.

  • So and then you can go through here and basically see the errors.

  • Now, obviously, the page is rendering well from my perspective

  • when I'm looking at it.

  • And I'm getting great information from it.

  • But generally, if you're taking a class on HTML or something,

  • you should probably be running it through one of these checkers

  • to just make sure that your code actually is as per the specification.

  • Another thing you can do is let's say we go here , and we go to--

  • I'm going to do a little short-- well, no I won't do a shortcut.

  • I'll do view, developer, view source, and I'm

  • going to actually just control all, copy all of this over here,

  • and I'm going to go to Sublime Text, and I'm going to drop all of this HTML

  • that I just Stole from that page right into my thing here.

  • COLTON OGDEN: This is literally what you're getting sent

  • over the digital airway so to speak.

  • TOM BALLATORE: If it was not being sent to me,

  • how would my browser be able to render the web page?

  • COLTON OGDEN: Exactly.

  • TOM BALLATORE: This is all in the open essentially.

  • So you can just totally like copy web--

  • well, whether you can legally do it or morally do it.

  • But you can just go grab it and just make your own web page based on this.

  • But one thing you can do--

  • I like Sublime because it's got all these different packages

  • that you can put into it.

  • And validators is one of those.

  • So you could then validate this file with HTML5.

  • I kind of like this one because it gives you nice list of the line number

  • and it's just pretty much pointed to a lot of errors here.

  • COLTON OGDEN: That's pretty cool. and this is actually

  • kind of similar to what somebody requested earlier.

  • They were saying, are there any cool plugins for web

  • development for VS code.

  • This is something I have to imagine there is an analog for with VS code.

  • But in this political example you're using Sublime Text.

  • TOM BALLATORE: Yeah.

  • It's got to.

  • COLTON OGDEN: But the key takeaway being,

  • there are plugins catered towards for text

  • editors that function for these awesome use cases to help you debug,

  • or in this case better distribute your web page for certain folks.

  • TOM BALLATORE: Yep.

  • COLTON OGDEN: Certain demographics, in this case.

  • TOM BALLATORE: Let's see.

  • Unless there's a stray end tag "a" on 2045.

  • Let's actually find it--

  • 2045, 2045, 20.

  • 20-- this is a big word page--

  • 20 45.

  • COLTON OGDEN: Another illustration--

  • TOM BALLATORE: Oh, right here, maybe.

  • COLTON OGDEN: Another illustration that one given web page ultimately

  • is just one huge file too.

  • It's not being sent to you in multiple files.

  • Even if you have multiple files, when we get to frameworks like Flask or React

  • where you have JavaScript and you have HTML or templates, and multiple files,

  • ultimately it all has to get put into one file

  • that you get into your browser renders for a given window.

  • It's not like you're getting multiple different files that all come together

  • at the browser level.

  • That's all packaged ultimately into one thing, including the script.

  • TOM BALLATORE: Yep.

  • You can do the same thing with CSS.

  • Why don't we try CS50?

  • I checked it earlier, there were no errors.

  • COLTON OGDEN: CS50 is on top of it.

  • TOM BALLATORE: Yeah.

  • But let's do this.

  • COLTON OGDEN: I'm not terribly surprised.

  • TOM BALLATORE: CS50.

  • Let's check out-- what's CSS are they using?

  • They're using Bootstrap, but they've also got some of their own CSS

  • I'm sure.

  • Is this-- where is it actually?

  • Is it right.

  • COLTON OGDEN: Hello from a sunny Saturday afternoon.

  • Longtime listener, first time caller.

  • Thanks Dave Code.

  • Appreciate it.

  • Thanks very much for tuning in.

  • Good to have you.

  • TOM BALLATORE: OK.

  • Let's just assume this is the CSS.

  • So I can pull this down, copy all of that.

  • I'm going to dump it into a new file right here,

  • and we're going to run a validator for CSS also, which you can do.

  • COLTON OGDEN: And kerberosX, I apologize if I didn't mention,

  • thank you for your follow.

  • TOM BALLATORE: OK.

  • And errors come back.

  • This is still the errors from the other one.

  • I don't know why that's not coming up here.

  • Oh, I didn't save it as a CSS file.

  • So CS50.css.

  • OK, save it right there.

  • Oh I'm in the wrong location.

  • Of course.

  • Yes, I understand that.

  • Just one second.

  • I don't know why it went to my hard drive, though.

  • It's kind of weird.

  • Desktop, and we're just going to save it.

  • That's OK-- test, whatever.

  • Boom, save it.

  • And now let's try the validation on the CSS, which tells us that, indeed--

  • I don't know why it's not coming up.

  • Of course, because I'm doing it live without having tested this.

  • What we could actually do is go to the online checker for this.

  • And I've got it somewhere, the W3Schools CSS validation service.

  • And you could just pop up a web page [INAUDIBLE] or a CSS file in here.

  • And you can get all the errors that might be there.

  • Another thing, you'll get to--

  • [INTERPOSING VOICES]

  • COLTON OGDEN: Oh, there's the Zen garden.

  • Yeah.

  • TOM BALLATORE: Well, can I finish with that?

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: OK.

  • Because that will a nice lead-in to the CSS stuff that's coming up.

  • Yeah, definitely.

  • With the accessibility stuff--

  • yeah, let's see, favorite websites.

  • Does somebody want drop a website, a nice, legit, family-friendly website

  • into the chat that we can check out to see if it's accessibly friendly.

  • COLTON OGDEN: And [INAUDIBLE],, I'm studying advanced algebra

  • for a final on Sunday.

  • It's 1:10 AM, and I'm watching you guys.

  • Greetings from Serbia.

  • Thanks very.

  • TOM BALLATORE: Sweet.

  • COLTON OGDEN: We appreciate it.

  • Good luck with your final on Sunday.

  • TOM BALLATORE: WaniKani?

  • WaniKa--

  • COLTON OGDEN: Oh, WaniKani.

  • That's a Japanese studying thing.

  • I've used it.

  • TOM BALLATORE: Oh, OK.

  • Cool.

  • T-T-P. [INAUDIBLE]

  • COLTON OGDEN: Well, before you do that, let

  • me make sure that's the same WaniKani.

  • TOM BALLATORE: Yeah, I'm not going to hit Enter here.

  • COLTON OGDEN: WaniKani.com, is that what it says?

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: Looks good.

  • COLTON OGDEN: I have used this, yeah.

  • TOM BALLATORE: All right.

  • So here it comes.

  • Ooh, there are nine errors on the WaniKani, with one alert,

  • one feature, blah, blah, blah, blah, blah, blah.

  • So let's see.

  • If we go right here, you can get the errors.

  • Oh, basically it's missing alternate text on--

  • if you click right here, you can find--

  • well, where will it be.

  • If I click on this one like this, it will say--

  • OK, right here.

  • Basically there' this picture of Andrew Elliott.

  • But if you go under the hood--

  • let me do this one here, Andrew.

  • Is that?

  • Oh, hold on.

  • So let me go to WaniKani directly.

  • WaniKani.

  • That means crocodile crab by the way.

  • COLTON OGDEN: WaniKani?

  • TOM BALLATORE: Yeah.

  • What am I doing now?

  • I'm going to go to View Source, and then I'm also going to find--

  • what was that guy's name?

  • He didn't have an--

  • COLTON OGDEN: Andrew Elliott.

  • TOM BALLATORE: Thank you.

  • So let's find Andrew Elliott.

  • OK, so he's got to have a JPEG somewhere.

  • Yeah.

  • So basically, it's a testimonial.

  • There's no alt text right here.

  • There should be alt that says, picture of Andrew Elliott or something.

  • But without that alt text, you don't know what it is if you can't see it.

  • COLTON OGDEN: [INAUDIBLE] saying, crocodile crab.

  • My daughter just said that.

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: Or the alt crab.

  • TOM BALLATORE: The alt crab.

  • All right.

  • So that's another thing you can do with this.

  • And this website is WAVE.

  • We can just put in Web Accessibility Evaluation Tool,

  • and it comes up some really cool stuff.

  • One thing-- my eyes, as I get older, the issue I

  • have mainly, some of the colorblind issues.

  • But also, right here there should be something-- go back to here--

  • contrast errors.

  • Something that's really popular lately is

  • sort of light gray, thin fonts on a white background.

  • And if you've got young eyes, maybe it's really easy to see.

  • I just struggle with that.

  • So if you go to contrast errors, you can see that, indeed--

  • where is this listed?

  • Right here perhaps.

  • Oh, right here.

  • So if you go to this tab up here, you'll see that in various areas-- yeah,

  • maybe depending on your screen and your eyes, it might be contrasty enough.

  • But definitely, they'll give you very low contrast.

  • And there's ways of looking at the brightness or color

  • of the text on top of the background.

  • And maybe the size even gets figured in.

  • I'm not sure how they calculate that.

  • But this is really nice.

  • If you want to make sure your website should be really visible,

  • and if it's not somebody who can actually see, it has a proper alt tags.

  • This is a good way to make sure that all of your errors.

  • Should we do CS50?

  • COLTON OGDEN: Sure.

  • TOM BALLATORE: I got confidence, because I'm open, but--

  • COLTON OGDEN: So far it looks like we did really well

  • with that last evaluator.

  • TOM BALLATORE: Come on.

  • Fingers crossed.

  • COLTON OGDEN: Some contrast errors.

  • TOM BALLATORE: Contrast.

  • Well, forget that.

  • That's no big deal.

  • Yeah.

  • OK.

  • Anyway, let's go right here.

  • Question mark errors.

  • Let me reload that.

  • And let me reload here, I guess.

  • Zero errors.

  • David-- are you out there, David?

  • Good job-- or whoever is designing this page.

  • There's some-- oh, and there are no contrast errors.

  • I don't know why that happened.

  • COLTON OGDEN: Oh, maybe it was still looking at the contrast from last--

  • TOM BALLATORE: I think it was.

  • Because it was the same number.

  • Yeah.

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: So good job CS50.

  • There's one alert.

  • What is the alert?

  • COLTON OGDEN: Website is awesome.

  • Website is too awesome.

  • TOM BALLATORE: Very interesting.

  • So why this is so cool is, OK, apparently on here

  • there's a link to a PDF.

  • And all they're saying is, by the way, when you linked to a PDF,

  • that PDF may not have its accessibility settings set properly.

  • We don't know, because we haven't looked into it, but make sure it is.

  • So that's really nice service this WAVE provides.

  • You may not have that issue if you yourself don't have those problems.

  • But it's something that you should really consider doing for your viewers.

  • COLTON OGDEN: People say, rip, well played, in the chat at the CS50.

  • TOM BALLATORE: Yeah.

  • Cool.

  • One last thing, Zen Garden.

  • COLTON OGDEN: [INAUDIBLE] Zen Garden, yeah.

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: I have seen this.

  • This is a really cool website.

  • I like this a lot.

  • TOM BALLATORE: OK.

  • So let me set this up.

  • I'm going to be the straight man, OK?

  • COLTON OGDEN: All right.

  • TOM BALLATORE: Or you be the straight man.

  • I don't know.

  • So OK, there's so many different websites in this world.

  • You've got this sort of, I don't know, modern.

  • Is this fuchsia?

  • Is this periwinkle?

  • I don't know what color it is.

  • It's got these ball things with symbols and stuff.

  • Some websites look like this--

  • nice design.

  • It looks great.

  • You've got other websites in the world that look like this.

  • Ooh, it's kind of this sliding over the background.

  • It almost looks like CS50.

  • It's the same font.

  • Gotham, I believe.

  • Well, that's ironic.

  • But yeah, it's a pretty cool looking website, totally different

  • topic, totally different website.

  • Oh, let's check this out--

  • Steel.

  • Sounds tough, hard, awesome.

  • So steel, what's going on here?

  • Oh, yeah.

  • COLTON OGDEN: This one was my favorite when I saw it.

  • TOM BALLATORE: You know, it's weird.

  • When I do it through a projector, it doesn't render the animations.

  • If you actually go on your computers right now the Zen Garden and go to like

  • zengarden.com/219, you'll have all things moving around like construction

  • cranes.

  • I don't know.

  • When I connect to a projector, I lose that.

  • I gotta figure out why that's happening.

  • COLTON OGDEN: That is weird actually.

  • TOM BALLATORE: So here's what you do--

  • this will freak people out.

  • And this is why CSS is so cool.

  • If you go to View Source for each of these pages-- let me do this.

  • OK.

  • So here's the View Source for this page.

  • We could dig in there.

  • Oh, there's definitely a head tag, an HTML tag-- blah, blah, blah.

  • Cool stuff here.

  • And then we go to this page's View Source.

  • We check that out, and we look at the previous one.

  • OK.

  • Well, maybe it just made a mistake.

  • Let me check this one out.

  • OK, View Source here.

  • Let me check out the previous one.

  • They're identical pages.

  • COLTON OGDEN: First of all, I'm impressed

  • that you can keep track of which they are because of how small

  • those tabs are.

  • TOM BALLATORE: Oh, I just remembered, because I did it before

  • and it messed up.

  • But, yeah.

  • So HTML is literally your content and the semantic structure of your content.

  • CSS is just the dressing of making it look

  • like this, or like this, or like this.

  • Identical content, but looks totally different.

  • And that's why I think the CSS stream, or Twitch,

  • or what do the young kids these days call these things.

  • COLTON OGDEN: That would be a stream.

  • TOM BALLATORE: It is a stream, yes.

  • COLTON OGDEN: Because Twitch is the website.

  • Twitch is the website.

  • TOM BALLATORE: OK.

  • The stream is going to be really interesting.

  • I wish I was in town for that.

  • COLTON OGDEN: Cue the skin and skeleton analogy.

  • TOM BALLATORE: Yeah.

  • That one grosses me out.

  • COLTON OGDEN: We beat that one.

  • We beat that one, Dad.

  • But yeah, CSS is the skin.

  • HTML is the skeleton.

  • TOM BALLATORE: Woo.

  • All right.

  • Ram is screaming from so much tabs.

  • I got the new MacBook Pro, which is, even like the--

  • yeah.

  • COLTON OGDEN: It's so nice and thin too.

  • I

  • TOM BALLATORE: Saved up for it.

  • COLTON OGDEN: I mean, mine's pretty thin as well.

  • TOM BALLATORE: Yeah.

  • Oh and you don't need the dongle.

  • I'm in dongle hell.

  • But here's your LAN cable and stuff.

  • I got it, because for work--

  • and I'm totally going to plug something.

  • I'm going to do it.

  • Because are you going to cut me off?

  • You're not going to cut me off.

  • OK.

  • Go to--

  • COLTON OGDEN: All right, and we're done.

  • I'm just kidding.

  • TOM BALLATORE: Capi.adbx.online-- this is a Google form.

  • If you're interested in learning how to collect data in the field for surveys,

  • this is a course I'm running for Asian Development Bank and Food

  • and Agriculture Organization of the UN.

  • Right now-- how many people do we have for this course?

  • We've got--

  • COLTON OGDEN: You said 700 or something, right?

  • TOM BALLATORE: 736, yeah.

  • COLTON OGDEN: Wow.

  • TOM BALLATORE: Yeah.

  • I'm a little bit nervous, because I'm running--

  • oh, I just showed a email there.

  • Sorry about that.

  • I'm running the back end using Open edX software for this.

  • And I know things are just going to crash on the first day.

  • But definitely go here, sign up if you want to do that.

  • And why am I talking about that?

  • COLTON OGDEN: It's super cool.

  • That's just a project that you're working.

  • Share.

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: That's what we're all about.

  • TOM BALLATORE: So there you go.

  • So this is capi.adbx.online.

  • And a little final plug for CS50.

  • If it weren't for CS50, I wouldn't be doing stuff like this.

  • I'm making online courses and stuff like that.

  • I would have never had the courage to actually think

  • I could do something like that.

  • But after making it through really hard psets,

  • I was like, I think I've kind of tricked myself into thinking I can do it.

  • And in the end, it works out, because the greatest lesson for CS50 was?

  • Well, two things-- one, you can do it.

  • And second, just google.

  • COLTON OGDEN: Yeah.

  • TOM BALLATORE: Because you can find the stuff

  • [INTERPOSING VOICES]

  • COLTON OGDEN: That should be the only bullet point-- just google.

  • TOM BALLATORE: Google.

  • Google it.

  • [INTERPOSING VOICES]

  • COLTON OGDEN: I was there when you did your first hackathon--

  • your first hackathon with us.

  • I was there.

  • That's where I met you.

  • TOM BALLATORE: That was a JavaScript app, yeah.

  • COLTON OGDEN: Yeah.

  • I remember that.

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: Been there.

  • I've seen Tom since the very beginning.

  • Well, maybe not the beginning.

  • TOM BALLATORE: Wah.

  • Wah.

  • COLTON OGDEN: But your coding career.

  • TOM BALLATORE: Sweet.

  • COLTON OGDEN: But certainly since the very beginning of your time with CS50.

  • TOM BALLATORE: Oh, yeah. adbx.online will give you a internal service

  • error, because we're not up yet.

  • So don't go there.

  • dot online-- yeah, this is currently down.

  • Because we're launching in about two weeks,

  • and I didn't want to pay the bill for the server.

  • COLTON OGDEN: Sure.

  • TOM BALLATORE: So it's not live yet.

  • But it will be live.

  • COLTON OGDEN: OK, cool.

  • Well, thanks so much for that.

  • That was awesome looking at data like that

  • and looking at validation and accessibility.

  • Those are all very important things that I think a lot of people

  • take for granted, certainly.

  • But if you're in that space, then it sort of

  • becomes something you're always thinking about I have to imagine.

  • TOM BALLATORE: Yep.

  • COLTON OGDEN: And to be fair, I haven't done a lot of work

  • in that field myself.

  • But thanks to folks like you who do that, who try to spread that knowledge,

  • I think more people become more conscious of it, certainly.

  • TOM BALLATORE: Yep.

  • COLTON OGDEN: Well, thanks, everybody.

  • So we've been at three hours and 23 minutes, and that's just this stream.

  • We had the last stream as well, which was cut slightly short.

  • We had to get everything ready to cross post, cross stream.

  • But thanks so much everybody who tuned in.

  • This was a big departure from what we normally

  • do in terms of game programming and kind of going from the ground up with HTML.

  • This was a lot of fun.

  • I enjoyed it.

  • I'm looking forward to the CSS stream next week.

  • We'll cover a lot of really cool stuff.

  • And thereafter, the sky's the limit.

  • We'll go into JavaScript.

  • We'll go into Bootstrap.

  • We'll go into jQuery.

  • We'll go into DOM manipulation.

  • We're going into React.

  • We may or may not go into Angular and Vue.

  • We'll go into Flask.

  • I'm talking about Kareem might do a Flask stream.

  • So everybody get Kareem-- let's get Kareem in here.

  • It'll be a good time.

  • But, yeah.

  • Thanks to everybody who tuned in.

  • We had a lot of viewership today consistently.

  • Thanks to [INAUDIBLE],, and Brenda, TJHeinzo.

  • What's your stream schedule, TJHeinzo says.

  • Not a consistent schedule yet.

  • We're going to be more consistent when the undergrads all come back.

  • But on Tuesday-- I have to remember.

  • I'm definitely doing a stream next week.

  • I think Wednesday I'm being minesweeper.

  • And then Thursday, I think, is CSS.

  • TOM BALLATORE: Cool.

  • COLTON OGDEN: And then Friday is Render 50.

  • But it'll be on our Facebook.

  • Go to facebook.com/cs50.

  • We post all of our upcoming events, upcoming videos there.

  • And so special thanks also to Tom for joining us for--

  • TOM BALLATORE: Hey, thanks for having me.

  • COLTON OGDEN: --almost the entire duration of the stream.

  • So that was great.

  • I enjoy very much having a back and forth.

  • It was a great time.

  • And can you push to Twitter too?

  • They are all on Twitter.

  • We do notify all of our--

  • now, we post an event, or post a tweet, I should say.

  • Oh, you're talking about the stream?

  • I have to look at that.

  • I'm not sure.

  • I wasn't aware that Twitter had a live stream functionality into it.

  • [SPEAKING JAPANESE]

  • COLTON OGDEN: Thanks for the stream.

  • Thank you both.

  • See you next time.

  • Ajax?

  • Oh, Ajax Too We will cover Ajax.

  • Tom may not be here, because Tom has to, unfortunately, fly back to Japan.

  • Which makes me sad, because I would love to do more streams.

  • But unfortunately--

  • TOM BALLATORE: I'll be in town.

  • I'll be in town mostly in the spring.

  • COLTON OGDEN: Whenever you're around-- are you

  • going to be around the whole spring?

  • TOM BALLATORE: Yeah.

  • COLTON OGDEN: Oh, OK.

  • You're not flying back to Japan?

  • TOM BALLATORE: I am flying back to Japan.

  • But officially, I have to be in the US to do the work.

  • So I will be in the US-- wink, wink.

  • COLTON OGDEN: Oh, OK.

  • Gotcha.

  • So yeah.

  • We'll get Tom in here again, because Tom was awesome.

  • Jubon3, [INAUDIBLE],, Arizawa36, and TJHeinzo,

  • thank you so much for the follow.

  • Appreciate it.

  • I'll see all of you soon.

  • TOM BALLATORE: Good seeing you, seeing all the other people

  • I know in the stream.

  • Really fun to be here tonight.

  • COLTON OGDEN: Pitch more ideas for us to do too.

  • Because the more of these sort of lower level, from the beginning videos we do,

  • the more we can start to make case study style stuff.

  • And that's the goal, is to start making actual websites,

  • and to take all of these abstract ideas and actually make a product.

  • So we'll do that.

  • We'll do that together.

  • But until next time, we'll see all of you.

  • Have a terrific weekend.

  • Yeah.

  • This was CS50 on Twitch.

COLTON OGDEN: All right, good morning, good afternoon, good evening,

字幕と単語

ワンタップで英和辞典検索 単語をクリックすると、意味が表示されます

B1 中級

HTML BASICS - CS50 on Twitch, EP.26 (HTML BASICS - CS50 on Twitch, EP. 26)

  • 6 0
    林宜悉 に公開 2021 年 01 月 14 日
動画の中の単語