Welcome everyone to the August Developer Hours. Just a reminder that this session is being recorded and as I just said, it's going to be uploaded to YouTube and to WordPress TV. So you'll be able to catch up with it there. Please do turn on for your video. It would be great to see you all. But if you don't mind remaining muted during the presentation, when it comes to the question and answer session later on, you can unmute to ask your question. But please remain muted for now and during the presentation. So today's topic is all about the HTML API, part of it which is already available and the rest is coming soon. And it's my pleasure to welcome Dennis Snell, who's one of the key developers of the HTML API, as the guest for this session. And he'll be doing a presentation on the HTML API. Dennis, would you just like to introduce yourself? Tell us a little bit about yourself, what your background is, how you came to be in WordPress. Thanks, Michael. Well, I have been working at automatic for nine years, nine and a half years now as a software developer. And I have been working with WordPress for much longer than that. I got started like many people. Kind of I was doing web design on the side and building sites for people and I built a couple of really terrible content management systems for my own use. And one day I stumbled upon WordPress and I said, I'm never doing all this work again. So I eventually got a job as a software developer at automatic and I've been working with WordPress since. Love the platform. Love to see the community that it's grown around the web and love to see the ways that it kind of provides all the tools we need to handle everything to build everything from a small website to a big one. And this HTML API is just the latest part of that that kind of took my passion. I've been thinking about it for about seven years now and decided, you know, we need to have WordPress provide the tooling to read and modify HTML reliably. So it's fantastic. We look forward to your presentation. Do you want to do your presentation and have questions at the end? Or are you happy for people to ask questions during the presentation? Your choice. Well, I would love it if people feel welcome to interrupt with the question. I think there's a raise the hand button and there's chat. If somebody can monitor the chat, because I think sometimes the questions can help lead us, but I may hold some questions to the end if we're going to get to it anyway. Okay. Yeah, I was going to say that anyway about the questions. Either put them in the chat or raise your hand and we'll get your questions answered by Dennis. Okay. Before I hand over to Dennis, let's just do a couple of announcements. As I'm sure you're all aware, WordPress 6.3 was released a bit earlier this month. That means WordPress 6.4 is now under development. It's slated for release on the 7th of November. And WordPress is, of course, open source. Anyone can contribute. So if you want to get involved with the development of 6.4, I've just put a link in the chat for you to follow. WordCamp Asia is the next major flagship WordCamp. WordCamp US has just happened. Were you at WordCamp US, Dennis? Not this year. I actually had a pre-existing commitment. Right. Yes, I wasn't either. But WordCamp Asia is the next one. Oh, I haven't put the dates in my notes. I think it's in March next year. Anyway, I'll put the link there. The call for speakers isn't currently open and is open until the 30th of September if you want to speak at WordCamp Asia, which is in Taipei in Taiwan next year. As I said, I omitted to put the dates in my notes, but if you follow the link to their website, you can have their dates there. I'm pretty sure it's sometime in March next year. Dennis has just posted March 7th to 9th. Thank you, Dennis. And finally, on the announcements, as I say at every developer hour session, now that we're effectively post-pandemic, more and more local WordCamps are being organized. And if you go to central.wordcamp.org, the link is in the chat, you can find a WordCamp that's happening near you. Okay. The floor is yours, Dennis. Thank you. And thank you all for letting me come in and speak with you today. Will this chat be saved? We've got a question. Yeah, I'm just responding. Yes, you can save it at the end. I'll give you instructions towards the end of the session. And tell you how you can save the chat locally. Sorry for that, Dennis. Carry on. Oh, good. Oh, good. So I don't know if anybody's willing to share a hand or give any mention of it, but I hope some of you have worked with HTML before in WordPress. And what I mean by that is maybe you're looking for some tags that you want to add or replace the CSS class name or you want to, you know, you've got this button and you want to swap it out with something else that serves the same purpose or you identified a string that you wish you could just target on the server. And just cut from the rendered page. This kind of operation is pretty straightforward in JavaScript. But in PHP, it's a little bit more challenging. Anybody here ever written a regular expression to match some HTML? Got a couple. How to go? Yeah, I've tried it and struggled with it. Regular expressions are hard. About seven years ago, WordPress added support for an image source set attribute. So the idea is that when it renders an image, it adds an additional list of optional images to download that are different sizes. And the browser can choose whichever size is appropriate for the screen it's rendering on. And this is to save on bandwidth. And this is kind of where I became involved with what I call like the HTML problem in WordPress, which is we had to identify image tags in the content and read the source attribute and write out a new source set. Many years later on, I kind of ended up hugging a lot of HTML issues that I saw at work and in random community projects like Gutenberg, where we have these regular expressions and we get into a kind of vicious cycle. We write something. We make it work very quickly. We find out that there's a lot of cases that fails to work. So we make it a little more complicated. Then we find out that it doesn't work again. So we go back and we make it a little more complicated. We do this a few times and we get to the end. And our code is so confusing that we can hardly even remember what we were trying to do in the first place. Let alone debug an issue. I'm going to share my screen here.  It's a poor name. I apologize for the name, but what it does is it renders and then it calls PHP's die function. And we'll be doing some coding here just to illustrate what's going on. We have a post in the editor with a bunch of HTML. And when we call render die on it, what it does is it prints out the HTML. So this is what WordPress sends to the browser. And it's just a shortcut to opening up the console and coming in and see what HTML produces. So what is often the case that I see, we'll say, okay, content equals p rig match. And we'll say we're going to match an image tag.  And then there's going to be source equals quotes. And then there's going to be more stuff that we match quote, and, and we're done. And then there's going to be content and let's just call p rig replace. And if I did that right. I didn't. I've got the zoom window kind of in the way. What did it do. It looked right that definitely matches the image. But now the entire contents all of my HTML has disappeared. Maybe let's just make sure we got those in the right order pattern replacement subject. Yeah, I got those out of order. So let's try it again. We swap those arguments. We read the docs. We come back. Okay, that works. Now let's go find their image. And I don't see it because we match the whole thing. I don't want to spend too much time on this, but I'm trying to show the process that I always take when I start writing. These expressions. It's a matter of trial and error, and I get everything wrong. And I'm always consulting the documentation and going back. And finding problems. And, and kind of the real trick on this is this stuff. This stuff always breaks. Right here. When we get content that looks like. Image source equals with single quotes. Anybody been bitten by this one before. Or HTML is actually sneaky HTML allows us to, to have unquoted attributes. And this pattern would match. Sometimes we have custom data elements. So a lot of the frameworks, a lot of the visual builders will add things like data. Lazy source equals. A, a larger copy. JPEG.  And all of these matches. They always end up over simplifying what's going on. So this one that we wrote here. Because of the star actually matches this data lazy source attribute. And we do other things like we try and match tags. We say, you know, anything but a closing. And then an eventual closer. To try and match the case where we have an image inside of an a tag. And this is a good example I like to use because this, this kind of pattern right here broke Gutenberg once. And it didn't make it into a Gutenberg release. I don't think. Or maybe it did. But the, but the offending HTML had a space here. And we developers when we wrote this pattern, we didn't anticipate the space because we're like, okay, tags follow tags. But HTML is actually happy with enters and tabs and even technically you could have a carriage return without a new line. So it's really, really quite funky. So to get out of those weeds, we won't even cover DOM document. Some of you may have used that. But the idea with DOM document is that we can, we can create a full blown HTML parser in PHP. And this one is even worse than regular expressions because unfortunately, when this part of PHP was written, it was written for PHP or for HTML version four, which hasn't been in use in 20 years. And it was incorrect from the beginning because it was built based off of XML instead of HTML. And it loads the whole post in the memory and it's really slow and it gets really basic things wrong. So, again, I don't want to dwell on all of where we've come from but in case you haven't really dealt with the pain. I just wanted to kind of motivate what we're doing here today. We are coming to the end of an attempt to interact with HTML when we're thinking about characters and symbols and text. We're thinking about quotes, we're thinking about angle brackets, and we have lost the vocabulary that we use when we're speaking with other developers about what we're trying to accomplish. So, in WordPress 6.2, we introduced the first interface in the HTML API. We've got new terms to learn, unfortunately, but these terms have been modeled up of how we talk about what we do with HTML. And the idea is we shouldn't have to be constantly going back and forth to the documentation and second guessing ourselves and finding these edge cases. So instead of talking about characters and quotes and angle brackets, what we're going to do is we're going to adopt HTML terms. We're going to talk about tags. We're going to talk about class names. We're going to talk about attributes. So in this case, what we might do is we might always have to start with the same thing. And we can get into this again later so don't worry that you have to follow everything that's going on. This thing is called the tag processor or more fully the HTML tag processor. And what it's going to do is it's going to allow us to find tags and modify their attributes. So if we wanted to find an image, then we're going to call next tag, and we're going to tell it to find us an image. And then we're going to say the source is get attribute with source. And at this point, what WordPress has done is it has started to load in the HTML. It has found the first image tag in the document, and it has returned the value of the source attribute. Now this value could be one of several things. If we have image source equals a large, a fast image of JPEG, then our source value will be a string in PHP. If it has single quotes, it'll still be a string value whose value is a fast image. If it has no quotes, it'll still be the same string. If it has a, I'm going to mess this up, dash fast image dot JPEG with one of these HTML named character references. It'll still be this string in PHP when we read it. And edge cases we never even thought about when we were developing before with the regexes are going to be unique. Somebody just puts src that we actually get a value of true for this attribute to indicate that the attribute is present. And if we have something like this, where there is no source attribute, our value is null. And again, all we did is we told it, find me an image, get me the attribute. And if we wanted to set it, anybody have a guess at how we're going to tell it to change that attribute? That's right. We're going to call set attribute, we're going to give it a name, and we're going to give it an updated source for our value. And it doesn't matter. You know, if we give it something that will trick our regular expression, if we say an image, an image dot ping, then the HTML API is going to spit out on the image tag. And we don't have to think about escaping. We don't have to worry about escaping. So the HTML API is here in WordPress to allow us to write in our source code, the vocabulary and the terminology that HTML uses to talk about itself, and it handles all the details. We don't have to worry about escaping. We don't have to worry about unescaping. We're always going to follow a simple process. We're going to create the interface. We're going to start querying the document for a given location. And when we get to that given location, we're going to do something with it. And right now in 6.2 and in WordPress 6.3, the tag processor is the only part of the system that's here. We can talk about more to come later. But for this session, I thought it'd be good if we focus on what's here today. And I know we just covered a ton, but I wanted to give us a moment's pause, since we covered so much and give anyone a chance to either just take a breather or ask a question about something we've sprinted through. We do have a couple of questions in the chat. So I'll just read them out from Mattias. Is it using really smart regex inside or was it built with another strategy? This is a great question. The HTML API started with a regex. I was naive. I was on a train, leaving WordCamp Europe, and I thought we could say, okay, let's create a regex that starts here with an angle bracket.  And I was so wrong. I was so wrong. So we discovered that in order to parse the HTML document, we have to start at the very beginning and we have to parse every every bit of syntax that could change something. Because, for example, if you have a text area in HTML, then inside of that you have an image tag. Well, that image tag doesn't actually exist. It's considered plain text by the browser. And this is one of those cases where even DOM document gets this wrong, because this should all be treated as text, not as HTML. So there's one regular expression in the HTML API. Let me just jump over to it. My code come up here. Yeah, there's one regular expression and you might laugh when you see it. It is when calling set attribute, we use a regular expression to nag at you if you if you supply a name that isn't isn't valid. But this this one regular expression could actually disappear entirely because it's just a warning. The browsers will handle almost any attribute name you give it. But we wanted to warn and this is the only part of HTML API that deals with Unicode. And we didn't want to hand in code Unicode functions in here. So what we actually have. If you look in the source code, which is linked in the documentation on the class, it all starts with this next tag function. And what happens is, we essentially start at the beginning of the document. And then we jump through looking for angle brackets. So the fun thing about HTML is that nothing in the document changes until you encounter angle brackets. We've implemented kind of the state machine in the HTML specification. And we've, we've simplified where we can for the purposes that we have, and we just basically jump from angle bracket to angle bracket and we say look is this a tag name. If it is, then we've got a tag. If it's not, you know, is it one of these 13 kinds of comments. And you can read the code almost like a book to see what it's doing. So no, it's not built on regular expressions. It's actually, it's directly built from the specification of HTML and how the HTML document describes parsing HTML. We used this 12 megabyte HTML document from that is the HTML five specification for testing during its development. Thanks, Dennis. Matthias has actually responded with impressive exclamation mark. Okay, we have another question from Elliot Richmond. Hi, Elliot. I know Elliot. He, he organizes the Cheltenham meetup here in the UK. He asks, what if there are multiple tags that are the same? I presume the next tag method is the first tag. Are there other methods to get all tags? This is a great question. And we're going to lead into this after the after this questions anyway so now is a great time. You'll notice something that we did here that I did out of habit already. And I wrapped this call to next tag in an if statement. So what's going to happen, let's, let's start looking at real content now. Let's render processor. Get attribute source. Oops. So we took our HTML post we found the image tag, and we rendered the source attribute and we got exactly what was saved. If, on the other hand, we search for a picture element, then nothing prints out. And let's render as HTML, just to give ourselves extra confidence found nothing happened. What's going on is next tag will actually look for a tag based off the query that you pass into it. And if it is able to find another tag in the document, it will return true. And if it's unable, it will return false. So in this case, this whole thing returned false, it didn't find the tag and the body didn't run. This can be important, even though it's safe to call functions on on a tag match that doesn't exist, it's not going to do anything so your code isn't going to do what you're looking for. This also means if we're looking to iterate through all of the images in a document, instead of calling if next tag, we can just change that to while next tag. Because this works as a loop condition, as long as it can find another image tag, it will continue to stop and visit each of those images. So in this case, I think we still only have one image in the document. So if I come back in here, and I duplicate this a few times, and make sure that it saves, reactivate the plugin. I'm not a very robust developer, so if I activate my plugin when I hit save, it breaks. So it has found every image, and it's got other junk out there too. I probably shouldn't do that. Let's do that. So it found all five of those. So yeah, we can find everything. And in fact, again, this pattern is the same initialize the tag processor, give it a query, and when you visit a tag do something with it. I'm going to pull up WPHTML tag processor. The first result, it's the WordPress documentation for it. I'm going to look at that next tag function. I do encourage y'all to go to this documentation because we spent a lot of time developing this to try and find a way to make the documentation guide you into how to use it. Dennis, could you post a link to that in the chat? Happily, thank you. Amazing, thank you. Another class documentation is the section on finding tags. And there's actually a query syntax, a full blown query interface to this next tag function. The most common thing we're going to use is passing a tag name. And in fact, there's a shorthand for that. But we can supply an array to provide more options. The tag name is image, but we can also limit it to tags containing a specific class name or tags. We can actually do one more thing, which is we can visit closing tags, which is not usually need to do. But then if we also jump into this function, wherever it is, let's go down here to the big list of functions, and let's go to next tag. You can see here the query, the query parameters are described. And if we jump back to our code, let's take a look at how that is. Array, tag name, image, if we save this and run it again, nothing has changed because that's the same. But now if we add class name as full width, it's not going to find anything because we didn't have any images with the full width class. I'm not entirely sure what the appropriate classes. I'm just going to sneak a peek here. They put it, you know what they don't put it there to that they put it on the figure. We'll get to that in a minute. We'll just add it. How about that? We'll add one class here is full width. And if we reload our page, we're going to find that it only found the single image. The final way that's really common. I like to think of these as shortcut queries because almost always all we want to do is find a given tag. There's one final way which is not passing anything. And any guesses on what happens if we don't pass any query to the next tag. It visits everything. So in this case, when we run it, you can see there's a lot more information here that we can clear this up every time that you stop at the tag or match a tag. You can call this get tag function and it returns the name of the tag that it stopped. So in this case what we're going to find is here's a listing of every tag in the document. These are all capitalized. That is something that was just a decision we had to make in the HTML API. I'm sorry, the HTML specification talks about them in uppercase, so we do. But it doesn't really matter if you pass an uppercase or a lowercase or a mixed case because in HTML, it's all the same. So those are the little things, you know, a lot of regular expressions.  It's all built in here. Why would you want to visit every tag? Go ahead, Michael. Yeah, so I was just going to say that's fabulous because we have another question. Sorry, did you have more to say on that? I'll wait for the next question. Sorry. I'll wait for the question. Okay, shall I move on to the next question? Yeah. Okay, can the process, this is from Rob. Can the processor find custom elements, template elements inside custom elements? Another great question that leads perfectly into this. I'll finish up what I was saying because it works well. Why would we, why would we call this without any query arguments? Sometimes we want to query more complicated situations. Now, this is one of those things. If you go and you read the recent post on make blog HTML API progress report, make WordPress. Yeah, I've got that link. I'm just posting it now. So I go into some discussion about the limitations of what we can do here because this first interface, this tag processor doesn't know HTML structure. So it's unaware that your images inside of a template. Now we have code in WordPress trunk that will be released with WordPress 6.4. It starts to bring the ability to do that. Like for example, we can say there's a thing we call breadcrumbs. And we can tell, tell it find, oops, find us an image tag that is a direct child of the template. And it will do that. But this, this is not available in the tag processor, but there's some ways we can cheat for the moment. And I kind of urge caution at the moment because the better interface is coming soon. But we can, we can start to build kind of more complicated state machines. We can say in template equals false. And now, as we visit every tag, we can match the tag name and case template. In template, you can see I'm already making programming mistakes. Continue here. That should be, you know, if not in template. But we can also tell it to, this is where I said we can visit closing tags and you probably don't want to. We can. And we can say, processor is closing tag. And negate this. So, you know, once, once we get to a template tag, we're going to, we're going to track it. Okay, we're inside of it and we're going to assume that we're inside of it until we come to the closing tag. And for the case of our image. You know, if in template process. So, this does get kind of tricky. And like I said, what's coming next is something that is also kind of funny when you, when you look at the term, but we've got the tag processor. What's next, the HTML processor. And I know these terms are very close and we couldn't find anything clear and better, but the HTML processor. Is going to not only visit tags, but it provides all of the semantic global processing in HTML, which is really complicated. I actually had some of these cases available to us. This in this example, this really simple example we have an a tag that's not closed. And we have a second a tag. And according to the HTML specification, what happens when we encounter the second a is that it implicitly closes first a tag. So the first a tag extends to here. And the second. The second a tag closes here. And then this is an unexpected closing a tag. And these things are not nested inside of each other and what the tag processor does is it's going to stop at this a tag. It's going to stop at this a tag. And if you tell it to it'll stop at these closing tags, and it's it it's completely entirely focused on tag and attribute. So it's not going to tell you we're inside of a figure it's not going to tell you we're inside of a div. You can track some of this stuff on your own but I encourage you not to because particularly with the templates. If you if you base this parsing off of the idea that tags open and tags close, you're going to get led astray. So this is not an a inside of an a it's actually a sibling to another a the HTML processor will be able to give us that information but for now.  We've been playing with this at WordPress.com looking for how to use these functions and that's kind of leading how we build this more complicated about higher level interface. Okay, we have another question. What are the performance implications. One of passing the HTML and to relative to traditional methods. Yeah, so this is something we're still gathering data on what I can say is that during the development. I was getting around 20 megabytes per second parsing speed on HTML of random test documents, including the 12 megabyte document. That doesn't sound like a lot, and it's a whole lot slower than a regular expression. But it is been designed to try and be fast enough that we can reliably use this without worrying about speed. One of the things I always like to keep in mind is what is what is the cost of of being right versus the cost of being wrong. So when we came into this situation where we had data lazy source equals something, our regular expressions through like 10 different iterations of code review and patches was still wrong. And we spent developer hours getting it wrong. And, you know, in the case where we had a space in the HTML people were seeing white screens instead of their content. And there's that kind of saying it's always faster to be wrong. It's true here. A single rejects will be significantly faster than the HTML API. The HTML API should be fast enough for you to use without worrying that it's going to slow your site down. And in addition, as we look to some of the complicated things in core and I was working on a refactor just the past couple days in our jetpack plugin. A lot of times we end up with a combination of regular expressions and state machines and code, like we have a bunch of ifs and conditions, it gets really nasty. We can sometimes do multiple passes through document with a regular expression just because we're trying to target different pieces. And there's this funny thing about the HTML API where we start at the beginning and we scan through in a straight line. And there's a lot of places where we can do in a single pass what is done in multiple passes. And if we start looking at the security functions and core, which to this day are still full of plenty of vulnerabilities. Sometimes we're running 100 regular expressions over the entire document. And when I say we're still gathering numbers, it's because it's kind of hard to gauge performance until we can completely replace what cases and formatting and texturizer doing. But I think there's a good chance that in some situations this will be faster, just because it allows us to to proceed linearly and do things once instead of a bunch of times in a hacky way. In the long term, I hope we can get this built into PHP itself, which, which in my tests I should give us another 4x bump in speed. And the final note that's really important here is that this is essentially a zero memory overhead system. So, if you're comparing to DOM document, DOM document is not only slow, but it is memory heavy. The tag processor in the HTML processor almost used, you know, they use so little memory it's not even worth mentioning because if they only start using memory once you start making modifications to the HTML. And every time you jump to the next tag was modifications are fleshed out to the HTML so they get garbage collected anything that was kind of temporary. Thank you. That was the last question we've had so if anybody's got any more questions, please post them in the chat or raise your hand. There's a reactions button in the bottom of your zoom window there. You can raise your hand if you have a question and we can get you on screen asking, or as I said earlier, just type your question into the chat. I'll ask it on your behalf. I'm sure Dennis will be happy to answer. While we wait for that I've got a question myself. What if you want to replace one HTML tag with another one or in certain new one within an existing one how can that be done. Great question. We found an image and we want to transform the image into a picture with a source. This can't be done today. As we look at the HTML tag processor, and we think about jumping from tag to tag. I don't want to provide any means to do this. And this has everything to do with the semantic rules in HTML, where attempting to make a change without the knowledge of the document in the context it's in could break things. Now, I mentioned the text area snippet before the tag processor will not get confused. If you have a text area or a script. I mean, when we search this HTML, it is not going to, it is not going to think this is a picture. But it's not going to be able to replace those tags because it is unable to assert whether doing so would change something. For example, if, if changing the image to source or to picture would leave the rest of the document broken because it doesn't have a closing tag. And that it's unable to confidently do. And this whole API, all of the different interfaces that are being developed for it only proceed cautiously with what they can confidently do. Now in the HTML processor, we will actually be able to do this. Again, this is coming in WordPress 6.4 and it will probably see expansion in 6.5. Let me see. I think this should be working because I'm on, I'm on trunk here. Let's just, let's just be friendly. Yeah, we did that wrong, but that's right. There we go. Okay. So this is a little different. We won't get into it today, but in this case, we're actually going to have as HTML. It may not be merged yet. We're going to have functions get, get outer HTML, set outer HTML. Probably we're going to have replace tag. And we're going to have replace HTML. So these interfaces will come and they're going to do what you want to do. I think we're also going to have a wrap with. So you could say wrap with picture. And we're also going to have another method on this class that is going to say unwrap, which will just take whatever element surrounds it and pulls it out. And the cool thing about what's coming soon is that in these cases where we have weird things going on with the HTML. It preserves the structure of the document when we perform these changes. Tag processor cannot do this because it is so focused on tags and attributes. It makes it so much simpler and gives it predictable performance. When we start to take that structure into consideration, we have to realize that, you know, if you have an HTML document that has a thousand nested lists, that will have an impact on performance more than if you have a document with one level of list. So these are the kind of things that we're stewing on and, you know, we have to, we have to either be patient or fall back to the methods we're comfortable with in the meantime and jump in the HTML API MetaChannel in Slack and share our input. Hey, I'm trying to replace this tag. Help me out here. I'd like to use this new API. How can I do it? So did you say that the HTML processor, the coming iteration of this will actually preserve the HTML structure? So if you have mismatched closing tags, it'll actually preserve that. Yeah. Another great question. Also, I see Elliot raising his raising hand. If you look, if you really get curious and you look through some of the unit tests in WordPress for the HTML processor, what you're going to find is a lot of broken HTML.  We're going to leave it in place. And in the tag processor, I just recently, or I just briefly mentioned that we skipped some of the parsing rules that we were allowed to.  Don't ask me why this is on my most recent or my most frequently used characters here. A little question mark. So when HTML encounters this, it's supposed to replace a null byte with that character. We don't do that because the browser is going to repair a structure when it gets there. We may not match on it because there's no legitimate way to match on that in HTML. But we leave things in a broken state in as much as they don't affect us. And I'm looking for some of these tags. Now that I think about it, it's probably in another, it's probably in an open patch. Here's a good example where there's buttons, closing buttons, and I don't have what I thought I had. I apologize. But yes, it will leave the tags that were there that looked like they were broken because as long as the structure is preserved, it's happy. Because what we're doing is we're jumping into a spot in the document, making a change and moving on. So any malformed HTML will be preserved in the processed output. Yeah. We're not going to fix it, but we're also not going to break it more. Yeah. Okay, Elliot has a question. He's raised his hand. So I'm going to invite him to unmute and hopefully come on screen to ask his question. I've unmuted but I don't know if I can get him on the screen. No, that's fine. My screen is in a different place and my camera is in a different place. I look a bit old. We can see you. Yeah. Now my question was, will this work with HTML comments? And I'm asking because, yes. So HTML, so we can move blocks around if we want to. Well, I actually, I have to qualify this. What it does is it's over comments and we have, we have a PR open. That's kind of just been sitting there since 6.2 was released. We kind of got distracted. There's no way to stop at a comment, but I think we want to add that in. And so right now, when I say it works with comments, it just jumps over them in their entirety. We're going to be focused on those tags. We will probably add a mode to visit a comment. But right now, you're not going to be able to rearrange those for the same reason that you can't replace the tag or change the contents. The HTML API will be able to do that. Sorry, the HTML processor will be able to do that, but the tag processor can't. In fact, there's never a point in time where string indexes are exposed where we could change things around. Although if your, if your goal is looking to rearrange blocks, then that's actually faster to do through WordPress with parse blocks and serialize blocks. And that can be done today. It should be a good thing to ask about in the forum somewhere in Slack. The reason I asked is because I got involved with a bug that was to do with the create block theme. And there was an issue with, when you save, when you try and save a pattern that's got an image, and it sometimes it breaks wherever you put the header and that's because I don't remember fully what why did it but I suggested that you could probably pull out and reorder them somehow in, you know, with an index and then specifically get the, I think it was a slug name, because it was stripping out the slug name and then it was breaking the headers and footers and stuff. So I wondered if this could be used for that purpose, because if it's part of call then obviously it would be useful to use that I guess but. But yeah, it's an interesting idea. Go ahead. No, I was going to say, if it's not quite there yet then, I guess, yeah, it probably requires a discussion maybe. That's an interesting idea we'll take a look at. There's one thing this is in its own HTML API folder and core and one of the, one of the things that has kind of defined it is it's focused solely on HTML itself. We've actually wondered about finding it more closely into WordPress because right now it doesn't handle short codes it doesn't handle blocks it doesn't handle any of that. And according to HTML, a comment is semantically neutral. And it's kind of funny there's multiple comments there's the comments we're all familiar with. But there's also this is a comment and there's there's broken syntax. This, this is also a comment this is a comment.  And what it does, including for C data. Is it just, it just hops over it. And then the same thing it does for script tags, like it doesn't, there's no reason to jump inside a script tag so it just, it just skips it. Comments script tags, the contents of a text area or the title element title is a special HTML element it's just like text area, there are no tags inside of it everything is plain text. Yeah. We're looking at that because we're looking at powering some little dynamic tokens in WordPress, kind of like a short code again but we're looking at powering that through some other comments themselves. Okay, cool. Thank you. Thank you for the presentation as well by the way it's great. Really interesting. Thank you. Thanks Dennis. We've got and thank you Elliot for that question. We've got one more question from Rob. Will the HTML parser be block aware. In other words, will it read and write the Jason in the blocks HTML comments. I guess he means the comment did the blocks comment to the meter. Yeah, there's, there's actually no plans right now to bridge the block and HTML processing. And I would say that's mostly because I'm nervous about the implications of coupling those two systems together. What we have right now is a fairly pure HTML system. Again, we can talk about HTML on its terms and we don't have to worry about these other things. So what I would expect to find is if we want to start processing block material, we'll find a feature a functioning core that is built on top of the HTML processor. So all of these things that do stuff, you know the HTML API is kind of the workhorse that provides the engine to do these things in a clean and elegant way. The functions that work with WordPress are going to be incorporating the HTML API to do what they want to do. That'll keep those things separated and it'll, it'll allow us to continue to, you know, we haven't had hardly any bugs with this so far, but like when you do come up with a bug, it means we can fix it and only have to think about HTML. We fix separate HTML, we fix every single function that works on this. It's one of the things I like to draw in comparison to regex is like a fix here affects everybody's code but an attribute is always going to be an attribute. So by using this API, we can, the code we write can remain solid forever because it only does one thing. Okay, great. Thanks, Dennis. We're at the top of the hour now. I just want to ask quickly, where is development work if people want to contribute where is development work on this happening. Great question. I would encourage anybody who's interested in developing to jump into the HTML API meta channel in WordPress Slack. There's also an HTML API component when press HTML API component in track. These are also linked in the, in the progress report post. Let's jump back to that. At the bottom of the progress report, there's some links. And if you click on track tickets and HTML API component, I think it takes you to, that's the list of tickets. And it's not loading component overview page. That's what we wanted. So we have, we have this, this area where you can follow the tickets. I think there's a button or link right here to click to follow. What's this in chat? Okay, but in, in short, or the, all the necessary links for people who are interested are in that progress report post. That's correct. Awesome. Okay, let's, let's wrap things up now. As somebody asked earlier, can you save the chat? Yes, you can. There's lots of links been posted. And so you, it's a good idea to save the chat if you want to follow the links a bit later. If you look below the chat, you've got a number of buttons, the right most button, the three dots for more, you've got an option there to save the chat. So you've got a minute or so while I wrap up to do that and make sure you've got the chat locally. Reminder also that the video is going to be posted to WordPress TV and YouTube. Give me a bit of time to do that. Hopefully they'll both be there by in 24 hours by this time tomorrow. Another reminder that WordPress is open source. If you want to contribute to WordPress, maybe not just to the HTML API, but I'm sure Dennis will be happy to receive your contributions there. But go to what make.wordpress.org is where all the activity for WordPress. The community based WordPress happens so you can contribute there. Next developer hours is going to be on Wednesday the 27th of September. It's going to be one hour earlier than usual at 1400 UTC due to a scheduling conflict. I'm not going to be hosting that one. I'm going to be on holiday that week. So Nick Diego and Ryan Welcher will be participating in that one. So that's Wednesday 27th of September at 1400 UTC for the next developer hours. It remains to thank you all for joining this session and to especially thank Dennis for his presentation and answering all the questions and educating us on the HTML API. Thank you very much Dennis. Thank you everybody. Okay, thank you all and goodbye.


For more videos and people's struggles, please subscribe to our YouTube channel. Let's take a look at what's happening and talk to the protestors here to find out why they are here and why they are present. We are here to tell you about the opinion of Indian people who don't have a vision to be seen by American people. American people don't have a vision to be seen by American people. American people don't have a vision to be seen by American people. American people is imposing their opinions on the world and now India has become a target of American influence. They are looking for a big market in India. They are trying to make people as strategic partners in the Asia Pacific region. And this is going to be detrimental to the influence of the country. They have a good strategy to set. We are in a subnautic country. And we have a very good strategy to help American people with this power. That is why we are protesting and opposing the policy. Both of them share an inherent bias against women, against Muslims. They share Islamophobia and they are against migrants. So it is for these reasons that we are organizing protests throughout the country. And as for the information that we have now, protests were organized in Puducherry, Hyderabad, Kerala and many cities in Kerala and Calcutta. To this country or great Pradhanamantri decided to attack millions of rural women on their livelihoods. We all know, poultry and dairy are major industries which are giving life. Which are the main breadwinners among rural poor. Particularly the Trump, they are trying to influence our government to import dairy products and chicken legs from America. If this will happen, naturally our dairy industry and poultry industry will be affected very badly. My feeling of India by American equipment has been that since India started this strategic partnership dialogue with the US. With the nuclear deal on the one hand and the defense partnership on the other hand. My view has always been that the nuclear deal was not the primary target. The nuclear deal was the key with which to open the lock for the defense partnership partnership. Because the US was not entering into defense partnerships with India because of India's nuclear position. So that if the act got normalized then the defense partnership gets to open up. And then America would get access to India's lucrative defense. And we have seen now that over the past decade India has bought more than 10 billion dollars worth of American military equipment. With another 7 billion in different states, so much 17 billion dollars of money is remaining in India. As far as we are making India's equipment, even these military purchases have all been for high value. Our markets but which are in small numbers. As you see the current visit is in discussion for 24 helicopters. And you can pay additional appagy by that helicopter. If you buy equipment in these small numbers there is no scope for indigenization. And it's actually in India. And although things can happen, it will always be untried purchase. But my mind is that the more important aspect of this is not just that India is buying defense equipment from the US. But the US is dragging India closer and closer into its strategic orbit. Whose main purpose in this part of the world is to encircle China. And India has fallen into that trafficking trap of the US which is going to impinge on India's strategic autonomy and freedom to take its own national security decision based on national interests.  Because whether it's Trump or not Trump, this is a trap that India is going to find very difficult now to get rid of. We also reject the deal of the century proposal proposed by Donald Trump against Palestine. Also we reject all his attempts to do global policing in different countries in the world. We also express our solidarity with the people who are struggling in Palestine. We also express our struggle, our solidarity with the people who are protesting, resisting the restrictions and embargo put by US and the Cuban people and different sections across the globe.


Okay, for our eyeball here, you have your superior rectus, your inferior rectus on the bottom. You can identify the medial rectus by finding your superior oblique, and it points medial. So off to the side here. Our lateral rectus is going to be on this side, and our inferior oblique is going to be along the bottom here.


This study uses bibliometric analysis to identify areas for further study in the field of digital product service systems, highlighting the growth and popularity of terms such as digitization, sustainability, and business, and providing insight into how Industry 5.0 will incorporate digital product service systems while also identifying three new service orientations in manufacturing firms, resilient, sustainable, and human-centric. This article was authored by Slavko Rakik, Nenad Metic, Janika Leost, and others.


Okay. First screen. Okay. Good afternoon. My name is Harriet Chan. I'm a volunteer for the San Francisco Bay Area Chapter of Better Investing. So I'm here this afternoon to assist better investing in a nationwide campaign to design to encourage individuals of all backgrounds to start a lifetime of investment in stocks and mutual funds. Next screen. Okay. So my name is Harriet Chan, and this is my email skcots at yahoo.com that skcots is the word stocks fell backwards. Okay. Little thing about cooperation from Value Line. It is copyright, so no reproduction of the survey is permitted without the written permissions of the publisher. I also have the next slide for a disclaimer. I just want to tell everybody that what I'm seeing now, the presentation is for education purposes, and it's not intended to be a recommendation to purchase or sell any of the stocks or mutual funds. Okay. Next screen. On our agenda, what are we going to cover? I'm going to tell you something a little bit about better investing, how to access Value Line, and what is Value Line? The parts of Value Line that we're covering is probably most significant in section one and three, and the company report, and then we'll have a summary in questions. The class goal is to show you how to access the Value Line at the San Francisco main library. We're going to highlight where to find and identify parts of the Value Line, and I'll share some brief description of some of the key points. Okay. And due to the time limit, we won't really go into details, but I definitely will show you online where you can get more information. Next screen. We are Better Investing.  We're a volunteer base, and we're member-driven. There's no commissions. We don't recommend stocks or recommendation. Our website is www.betterinvesting.org. I've been a volunteer for Better Investing since 1999, so I've been doing this for over 20 years. Okay. Next screen. Our mission is basically to create successful long-term investors through education, resources, tools, and support. And so I always tell people, do you have a question? Email me. I'd be glad to answer any questions you have. Okay. Next screen. Core Insight. This is Peter Lynch. Peter Lynch was a famous mutual fund person of the Magellan Fund from Fidelity, and he said that everybody had the brain powers to follow the stock market and that you only need fifth grade math. I strongly disagree with that because you only need third grade math because basically all you really need is to know how to add, subtract, multiply, and divide, and do the percentages. And I know that because I volunteer to teach third grade math to eight-year-olds for five years, and I've been investing for over 40 years. So it's really, it may seem daunting, but actually when you find out that the math is not difficult at all. Next screen. Okay. To get to the online version of Value Line, you need to have, well, right now with COVID, you have to be a resident of San Francisco, and you can apply online to get a library card for the San Francisco Public Library. Hopefully when things clear up, people living outside of San Francisco will be able to get a library card. I know I did many, many years ago, and I had my investment club all go down to the San Francisco main library to get a library card so that afterwards we could use Value Line online, which has made it very, very convenient. Okay. Next line. Next. Value Line comes in a hard copy. So back in the days, we used to have to go to the library and check it out from the reference section, and we would be allowed an hour, allocated an hour to use the Value Line hard line. This screen shows you all the libraries that has the hard copy. Now in the main library, it's located at the page desk on the fourth floor. So there's the picture of that page desk, and it's over to the right shelf on the right, but you can find them, you know, at Sunset Richmond, Noe Valley Mission. So there's a lot of libraries that have the Value Line hard copy. So, and I think that even though it's nice to have the online, I think that if you can go to your local library and sit down and take a look at the hard copy, you will learn a lot from that too. So, okay, let's go back to the online. Oh, do we have any questions right now before we get started? Okay, good. Okay, next screen is how to log on to the San Francisco Public Library. So you type in SFPL.org, okay, and what you want to do is click on the research and learn. Next screen. And when you get to the next screen, what you want to go to is the articles and database. Next screen. Okay. And then you click on the V in the letters there for Value Line. Next screen. So that pops up right there at the very top, say Value Line, and you click on Value Line. Next screen. And so this, you get to the log on to the San Francisco article and database. And you can see here that it remembers my ID and type in your password, press Enter. San Francisco Library has greatly improved this website. So it works very, very smoothly now. Okay, next screen. So this is the next screen. So this is the front page of Value Line. So under the tab of the Browse and Research, okay, everything I'm sharing with you today, it's in the Investment Education section, a little bit over in the red arrow there, okay.  The other thing that I want to mention is the Dow 30, and it's free, the Dow 30. Now what is the Dow 30? Dow 30 is the 30 blue chip companies of the US. And why is it called blue chip? I believe it came from the poker chip. The blue chip is the highest value chip there is. So they call it blue chip. And that's how it somehow got attached to the Dow Jones 30. It's a great place to start. If you're new, these are large companies that makes money, okay. So that's a great place to start because when you're buying companies, a company's main purpose is to make money. So you want to buy a company that makes money. And these are large companies that have deep pockets. And so you want to be, you want to reduce your risk as much as possible, okay. And you want to have to make sure that you have a good experience, okay. Also want to mention that there's good, I noticed that the brokerage firms, whether it's Fidelity or Charles Schwab or Tasty Work, they are really beefing up their education sites. So use that as a resource too. Next screen. So we're going to do, type in the company symbol J and J. And we're going to press enter. And what, next screen. And so it will bring up Johnson and Johnson. And Value Line is a report card on a company. It does fundamental analysis. And what we mean by fundamental analysis is that it looks at the company's books to see how well they are doing. In fundamental analysis, PE is very important. And future PE is more important than trailing. So it's all about the future of the company. So what exactly is PE? PE stands for the current price of the company, of the stock. And E stands for the earning. So we're comparing the price of the stocks to the earnings of the company. Okay. And so you could change the earnings. It could be, you know, the last 12 months or the future, the next 12 months in the future. So looking at that is very important. Now, according to this, the last price on Johnson and Johnson, well, on 10, 26, 2020 was $143.97. The trailing PE is 16.7. That's for the last six months. It is important to figure out the forward PE. So the forward PE means the future earnings was going to make next year, okay, or two. And brokerage firms have those estimated earnings and growth rates in their data. And you might, I know in fidelity, it would be under key statistics. You know, when you're doing research stocks, it would be under key statistics. So key statistic would be kind of like a buzzword that you would need to know. Relative PE last year, here says it's at .84. FY stands for fiscal year. Okay. So what the relative PE ratio is saying is .84 is comparing Johnson and Johnson against the value line 1700 stocks. So you can see that J&J is not a hot stock. It's rather a dull and boring stock. But it's a steady eddy stock. Dull and boring has its appeal. And I will be doing the dividend class on the 20th. And it's really surprising of the numbers that Johnson and Johnson comes up with. Now, the current yield, percent yield of this current stocks based on the current price is 2.78%. Now that's better than any money market fund that I could find out there. And the other thing about Johnson and Johnson, it has increased its dividend since 1963. They are a member of the aristocrat dividend companies. Companies that have increased their dividend for the last 25 years. Stories, I did a class back in 1998. And I started the spreadsheet saying that if you had invested $50 a month starting in 1980, and that would be $600 a year. And how much would you would have accumulated in 18 years? And the number came up to be over $100,000. So I thought that was very impressive for just investing $50 a month for 18 years. The market volatility has increased the last few years. And so now the market swings more widely. So figure out how you can use volatility to your advantage. Now, in blue, there is next screen. Let's go to the next screen. If you click on the orange arrow there, if you click on it on the right side, it says 18th month explain. It will give you an explanation. And it explains what the target date that they think the stock was going to be. Currently, it's at 143. And they think that this stock could go up to $224. So this class, when I first taught was in October. And now it's April. And currently, the stock right now is at 160. But the stock market's been going up, even though with this pandemic, the stock market is still doing well. Next screen. Okay. The red box, safety. This is Johnson and Johnson ranks number one. Okay. There's only about 100 stocks that has a ranking on number one. Okay. The average price to build the index into financial ratings. It goes one through five. One is the highest and five is the lowest. So if you're a newbie and you're just getting started, you want to stick to the ones that has a safety rating of one or two. Okay. So out of the 1700 stocks that value line tracks 100 or rated number one, 300 or rated number two, 900 or rated number three, and 300 or rated number four, and 100 is rated number five. Okay. You want to avoid the 300 and the 100. I would stay with the 100 and 300 and the ones and two. Right.  So start with something safer. Okay. The green box, the timeliness is number two. Now it tells you that it was upgraded on 1023. So number two means that there are another 299 other stocks that has rated number two. Now the purple one is the financial strength box. And the rating for Johnson and Johnson is an A plus plus. There are nine grades, A plus plus, A plus, A, B plus plus, B plus, B, and a C plus plus, C plus and a C. The lower grades it's reserved for companies with financial difficulties. So you want to stay away from those. Okay. So also what you see with Johnson and Johnson, you could see that the sales has been increasing. The cash flow is increasing and the debt is going down and the return on the capital is up. Okay. The percentage return to the shareholder is going up. Okay. So that's, and the opera margin is up. So cash flow is very important and you must have liquidity because even on a personal level, when I improve my liquidity in my investing, I was able to increase my total return. Okay. So this goes back to Johnson and Johnson having enough money to increase their dividends every year for the last 63 years. So okay. Next screen. Okay. The arrow shows you, this is show. When you click on that, what's hidden behind there is an explanation of what those things mean. Okay. Next screen. And then to hide it back, you would just click on the arrow again. This is high rating definition. Okay. Just a little bit about how to maneuver around. Okay. Next screen. Okay. Articles. Here over on the top is articles and the ranking and rating change. Okay. Three to five year projection. You need to ask yourself when you read these numbers, do you like what it's telling you? And you need to learn how to form your own opinion. So read the commentary. It's about 400 words in here. Click on read more. Okay. The green arrow there and it records the rank and rating changes from technical to timeliness and earning predictability. So and also in regards to next screen, the articles, we all of them, I really highly recommend that you read them all. You get a better view of the company. On this particular report, it was a positive report, but I went back and looked at the middle one and the report was not so positive. So even Johnson and Johnson's biggest was big company, you know, sometimes it will put out good reports and bad reports. Sometimes the Mr. Sales, sometimes the sales increase or something happens. You know, Johnson and Johnson, it's being sued because of the baby powder issue. So they do have some liabilities and some risks involved. Okay. Valuation. Next screen. Okay. So, you know, all of these, there's a lot of numbers here. The valuation, the per share data, compared to data. If you see something in italic, like right here on the left hand side there, if it's italic, it is an estimate. So you could see that for cash flow per share, which is the second line, it's going to be $10.30 and for 2020 it was 11.85. Those are projected numbers. Anything italic means that is the estimate. So when you see these things, like we see things increasing, you know, you have to determine what is the company doing that's doing right. Okay. Dividend's been increasing since 1963. What does that mean to you? Are you looking for income? Given the dividend data, $50, a monthly investment for 24 years is $14,300, but that generated $22,000 of dividend and reinvesting the dividend into the J&J stock would have given you a value of $190,000. Is that impressive to you? So, you know, when you're getting all of this information, you have to think about it and see if that looks good to you or not. Okay. The long-term growth is growing. I'm sorry, the long-term debt is growing. And the reason why the debt is growing is because the interest rate is so low. So that's the time when you need to borrow the money because the interest rate is so low. We're practically down to, you know, 1% or 0%. Okay. Next screen. Here's the sales graph. Okay. Numbers are italics. So again, it's projecting for 2021, so it's estimated, so it's an italic. And over on the right-hand side, you see some numbers there, total returns with competitors. And some of it looks impressive. So when I look at this, I will go check out those companies too. Just want to make sure, you know. Okay. Next screen. The annual rate of change. I'm very much into the growth company, so I'm very interested in looking at the future growth rate. The past performance is already priced in. Okay. Johnson & Johnson is a large company. And general expectation is about 7% for a large company. Small companies are more agile, but the finances are not as robust. So J&J is a global company and it operates in over 120 countries. Having a strong or weak dollar will have an effect on the bottom line. Okay. 2019 changed the adjusted earnings. It went from $6.85 to $8.65, and that's why you see that big spike. And what happened? I had to do some research on it. And apparently, Value Line decided to make the adjustment for the 2019 only and did not change the numbers for previous years. So that's why you see the spike. So going forward, it should be consistent with the way they re-figure out the 2019 earnings. It was an accounting tax issue. Next square. Okay. Here's the thing about dividends. One-year dividend. 6 to 8.5% increase in dividend. So the question I always look at this is how many are you getting, how many people are getting a 6 to 8% raise in your salary? So getting a 6 to 8% in the money that you put away in investing is a pretty good increase. So security increase was 2% last year. And so an average of 7.5% increase looks good. And with the history that they can sustain this dividend increase. Okay. Next screen. Okay. The score rating. I found this in a Better Investing magazine. And this one way to screen stocks is to add up the score. The price stability score, the price growth, persistent score, and their earnings predictability. And it must score 200 or higher. If it does not score 200 or higher pass, go on to find another company. I like the earning predictability near 100 or at 100. If the price stability is lower, it means there will be buying opportunities for me. So that's part of buying on the dip. If the financial strength is good, the earning predictability is good, but the price stability, that means the stock prices fluctuates, it creates an opportunity to buy it when it goes down. Okay. Next screen. So if you scroll down and read about the industry data, okay, click on read more down on the bottom, it's in teal color. Really, this is a must read, get an insight about the industry that J&J is in. The teal box in the middle, it talks about the insider transaction. It tells you about who is buying and selling in upper management. This data used to take up to 30 days, but now it only takes a few days. Okay. As you can see over here for institution buyers, many mutual funds and pension fund owns J&J. There's only a problem when the market crash. People call in to redeem for redemptions and this may cause tax issues and valuation flux in the short term. Next screen. The business description. In this particular one, there wasn't any, there wasn't a lot of data there and my suggestion is just to go directly to the Johnson & Johnson website and they have a history and re-up on Johnson & Johnson. They were established in 1885 and the first thing that they sold was a sterilized gauze pad. So it's very interesting to look at the website too. Technical ranking. The technical ranking is number two and if you click on the show, okay, it'll display of the technical, the history of the technical ranking. Okay. The orange box, okay, tells you, it provides you two years of reports in the PDF file. Okay. All right. Do we have any questions? This is a good stopping point before we go on to the PDF file. Harriet, there's a question from Dave. Does Value Line only have 1,700 stocks and then he has some 100 plus 300 plus 900 plus 300 plus 100 equals 1,700 and more than 1,700 public companies? Yes, there is. There are, I believe it's close to 8,000. Okay. The 1,700 Value Lines cover is based on, the 1,700 stock would represent about over 90% of the stocks that are traded. Okay. So it covers the majority of the stocks that are traded. There's a lot of companies that are listed, but they don't trade very often. Okay. Does that answer your question? Dave, did that answer your question? You can unmute yourself for a minute. I think so, but I've never heard of a thing of a public company that's not traded. I mean, that doesn't really sound like it's a public company. Well, I mean, as far as volume is concerned. Yeah. Do they have the volume? Even though it's a publicly traded, it doesn't have a lot of volume. Not a lot of people are trading it. Okay. Does that answer your second question? Why is the sum of the number of companies with a safety rating 1,700 based on the numbers Harriet mentioned? Did that answer your question? Yeah. Yeah. Those numbers, I just added up the numbers she said for each different rating number. And that's where I got the 1,700. But now I understand. It's just those are like the big companies, I guess. Right. Okay. And then a question from Ming. Do you have the latest report? Value line updates their reports, I think daily. Isn't that right Harriet? No, value lines updates like if we, well, the next slide that we're going to go to, there's a date on it. And it, the cycle is 13 weeks. And what the 13 weeks means is that when you look at the PDF file, it'll give you a date of when that report is. And basically it's every three months. So if you add three months to it, that will be when the next report will come out. And then Linda asks, how do you find an investment club where you might share doing this kind of research on stocks? I can send her the link for better investing. Yes. Good one. It's a good nonprofit. And they're active. Yeah. Okay. I've got that one covered Harriet. Okay. That's it on the questions. Okay. Let's go on to, okay. You're there already, Laurie. Okay. So here is the format of the PDF file for Johnson and Johnson. Okay. So this is the hard copy. And you could see the new online format is much easier on the eye. This hard copy format in the beginning was very intimidating to me because it was just so much data. And it was very stressful that I had to figure out this page. But eventually I did, you know, discipline, persevere, and I'm being patient with myself. I did figure it out. Okay. And down, David, write down on that very corner. This one says August 14, 2020. Okay. So three months, August, September, October, November. So the next report would have been about November 14.  That's how you calculate. Okay. Next screen. So what I did was I tried to map out the online version to the PDF data. Okay. So here in the statistical array in the per share data. Okay. Now the way the online version, they kind of combined it under the PDF format, they have the per share data up here on top with the handle kind of like it looks like Nebraska. And then the bottom half would be company data. So you can see over on the right hand side, the first thing is like sales per share. Okay. And down on the company data is say sales. Okay. So that's the difference. Sometimes you want it per share and sometimes you want the company data. Okay. Next screen. So the annual rates, this is the orange squares. Okay. The estimates from 2023. If you look at the estimate for the annual rates, 2020 estimate from 17 to 19 to 23 to 25. That was very uncommon. Value line was the only one that was doing this. And it was very, very valuable to me. Because if you're new, it was hard to make a guess. So here, Value Line was telling you that they expected sales to grow by 5%, that the cash roll was going to grow by 8.5%. And Ernie is going to grow at 10%. And dividends were going to grow at 7.5%. So that's why I was saying, wow, you know, if dividends growing at 7.5%, that's pretty good. Because like definitely when I was working, my raises weren't 7.5%. That's for sure. Okay. So, but things have changed now. Like in better investing, where we do the stock selection guide, there's many sources available now. Morning Stars will give you an estimate now. Warriors give you an estimate. Finance Yahoo will give you an estimate. So there's a lot of places and your brokerage firm will give you an estimate what the sales and dividends sales going to be. So now it's much more readily available. The other thing that I really want to mention was the footnote, the smaller the print, the more important you read. And over to the right hand side, where is it the company strength. Remember that was a part where I says you add up the numbers to 200. And if it doesn't, you pass. And so this is where it is on the PDF file. So you see that 185 and 75 there. And if I'm looking at a company that I don't know anything about, the square that I will look at is that light blue square is called business. And it will tell you something about the company. And so if I come up with a conglomerate and I go, well, I know it's a conglomerate, what does it do? When I look up value line, this is where I would go. I would look up the business section and give me, I would start from there reading up about their business. Okay, next screen. Okay, back to talking about the Dow Jones 30, that it's the reports for the Dow Jones 30 is available for free. And you get that when you first sign on to the front page of value line, and you can click on value line, and the Dow Jones 30. So this is also a good place for you to consider looking for a large company that has good liquidity and is profitable. And it's a good place to start looking for a quality company. Next screen. The other place is, you know, again, back to the beginning of value line, you can do browse and research. And there's a tab called fine ideas. Okay, so those are resources that you can take a look at. The fine ideas, you can look for preset screens. Next screen. Next screen. Okay, so if you click on the screen, under fine ideas, you can see the arrow that says screener. When you click on that, next screen, these are the preset screens, basic criterias. So whatever you're interested in, next screen. I clicked on conserve to stop, right number one for relative safety. Okay, so you click on that, then they'll give you a listing of those stocks. Okay. And next screen. Here's the safety ranking. So if you want to look at a stock screener that lists all the stocks that are ranked number one or number two, that's what you do. You click on number one, and it will give you a listing. Okay, if you want to do the rating and the ranking, you can click on that. And when you click on that, you get to the next screen. Are we on the same page here? Excuse me, I lost myself here. Ranking. Okay, so rating and ranks. Okay, there's an arrow here. If you look at the screen when you get online, if you have a touchscreen computer, you can scroll or you can go to the bottom of the screen and scroll that way. Okay, because there's a lot more data over hitting on the side there. Next screen. So the estimated projection screen. So do take the time to look at these things and look at the data. This really should take quite a bit of time. So you might want to allocate some time or allocate a certain day or a certain hour so that you can spend some time uninterrupted to go through this kind of stuff. Okay. Next screen. Earnings and projection. So here they give you like a three to five-year projection. I'm sorry, Harriet, which page are you on? I'm on 46. You're on 46. I'm on 46. Okay. Yeah, estimated and projection. And so on that screen, you'll find the dividend, what they're going to project the yearly dividend is going to be. So this is kind of very nice to see, especially if you're older like me and I'm looking for income. This is a screen that I will use a lot because I like those seven to eight percent increases because my social security check is only going up by one percent. Okay. All right. Next screen. Profability. So again, profit margin is really important. So you want to check out these companies, check out what their margin's going to be. Again, there's a lot of data and there's a lot to digest. So give yourself some time to go through this stuff. And again, if the, you know, profitability, gross margin, operating margin, operating margin estimate, percentage of net profit margin. If you don't understand any of these terms, go to the education tab and they have a glossary. So you can go there and find a definition. And I also tell people, I says now that you have your phones, you can always type in or ask series about, you know, the definition of any terms you don't like. So it's very convenient now to get the definition. Next screen. Safety ranks. Okay. Profability. Annual rates. Okay. Okay. So here, when you're looking at the annual rates, it'll break it down. You can see multiple companies, you know, what the growth rate is going to be.  So, I mean, it's really sometimes I go, wow, Allstate, their growth estimate growth rate is 30%. That kind of peaks my interest and I might, you know, check into that. So there's a lot of information and a lot of resources to go through. Next screen. Okay. The industry. So here's the listing of the industry. And if you're, you know, there's probably over close to a hundred industry that you can look into. And I would say stay and they have the industry's ranking too. And I would say stay in the top third. If you're a new beginner, a new to investing, stay with the top 30 industry. Just be safe about it. Okay. So next screen industry here on the dashboard. Okay. And it will point to you the quick links for value line. So you can go to the summary and index section options, all of that. You see this all in teal, teal color. If it appears in gray, that means the system has locked you off. And then you have to log back in. Okay. So took me a little while to figure that one out. Okay. So here next screen, we can see a hard copy of the front page of value line. And there's a lot of information on this page. This is the summary and index page. If you want to see it online, it's just a very long document. So you could just scroll down the page that you want or you need. Okay. Take the time and look over this page. The top half of the summary and index currently, summary and index contents and screen. A lot of the ideas that you can check out the ranking, the dividends grow. You know, if I'm looking for a dividend stock, I could be looking for dividends, growth, three to five year potential, the highest annual return, low PE, high PE. Many ideas. You just need to figure out a discipline so you can allow yourself some time so that you can review. Okay. And look at the numbers and try to make sense of it. Like the red arrow here, the median estimate, 18 month appreciation potential to target price is only at 15%. This kind of tells you that the stock market is pretty high. The stock market confirms that. And a lot of information that you think that you have, try to think about the implication. So it's very important that if you're new to investing, you start to, you start out with a quality stock. The bottom half, next screen. This is the bottom half of that summary and index page. And what it does is it lists out the industry in alphabetical order. Okay. And so I said, same thing, stay in the top 30% to reduce your risk. Okay. And then scroll down next page. This is page two on hard copy. But if you're doing this online, you would just scroll down and it will list the stock in alphabetical order. Okay. So you can see that's on page two, and it starts out with the alphabet A through AK. Okay. And I found that when I first started out looking at value line, this page was very important. The numbers was very important. But it took time to understand it and to compare it. And that's what I like seeing this page because I use those numbers to compare. So now this is, this, if you use it online, you'll be scrolling from page two all the way down to page 23. So it's quite a long list of stocks. Okay. And the next screen I want to say on the bottom of each page, this is the footnote. Read the footnotes. There's different footnotes. Next page. Different ones on different pages. And I would say, read those footnotes, get familiar with them. Okay. Okay. So this is the last page. This is on page 23. So you can see here, over on the right hand side, it says, it's W-Y through Z-Y. And it's on page 23. And again, you had footnotes down there. So basically the online version lets you scroll down as much as you like. The hard copy, you'll have to turn the pages. But I think that Value Line did a great job putting this thing online. Okay. Next page. Okay. Stocks with three to five year price potential. That's on page 32. Okay. And guess what? You can find this also online under Fine Ideas and you look at screeners. And over to the right side of the column, you will see earnings, projected earnings per share. Any growth rate, any growth in double digit is appealing to me. Using the rule of 72, if your portfolio is growing by 10%, it means your portfolio will double in 7.2 years. Okay. This is a lot of information for new investors. So really allocate some time. But you'll really have a chance to secure your future. When I taught this class in person, when we rented a classroom, it took me three and a half hours to get through this. And I only did the PDF file. I did not do the online version. So please, you know, allocate yourself some time to log on to invest in yourself and go to the Education tab as often as you can. Okay. Next screen. Okay. Oh, okay. See what I want to see. So this one is what I was talking about. I like projecting. I'd like to see any, like this one here is this review, Allegiant Technology. It's going to grow 10%. I like to look at any growth company that grows double digit returns. Okay. So, okay. Next. So Value Line. Oh, let me tell you about Value Line. Value Line was started in 1931. It has a way of developing a method of evaluating stocks. So they don't take any money from any company. In 1965, they developed a timeliness ranking system. They hire about 70 analysts there. And a lot of the way they do things, all the numbers in Value Lines are developed by the analysts. Next. They are published weekly. So they cover 1,700 stocks, 96 industry, food processing, telecommunication, companies are categorized into industry. Every page is revised every 13. And then we begin again. Now they do, when something happens, they do also issue supplemental reports. Next screen. Okay. So in summary, you can get a San Francisco, but right now you have to reside in San Francisco and you can fly for that library card online. And that way you can access Value Line online. I heard that the Potoliff library is going to be open soon. So that's great. You know, you can get Value Line access anytime, anywhere. So that's great. Value Line Report Access, it's fast, easy, and it's free. If you buy this Value Line report, I believe it runs about $600. So the library provides you, you provide it to you for free. So it's a great resource. Okay. This is the end. Thank you for attending. Oh, I do want to mention that Better Investing have a 90-day free membership. We don't ask for credit cards. So, but you know, we have a lot of webinars that you can take for free. So if you're interested in a 90-day free membership, you can email me, and I'll send you, I'll email you back to form. You can send in the form or you can do it online. Okay. My next class will be April 20th, Dividend Investing 101. And the same time from two to four is an Introduction to Dividend Investing. Any questions? There are a few, Harriet. Let's see. So there was a comment from somebody that, because I was sharing the PDFs that are on the database and, or in the database that are easy to access and if you're saying they're grayed out, they were looking, they were looking in the dashboard, but if you go to the menu at the top on the black line that says Investment Education, and then you go to the tools guide and click on that, then Value Line has posted a bunch of PDFs on how to use the database that are useful. This person was offering that they have a lot of videos on YouTube, and I'm saying they also have PDFs that you can access through their database as well. Let's see. There's a question about, somebody wants to know which version we subscribe to. I'm not sure, but I'll find out. There's a question, what is the best way to find the stocks that did best in the 1970s? Repeat the question. What is the best way to find out the stocks that did the best in the 1970s? Well, how do you find best in regards to profit or sales or? Dave, you want to unmute yourself and explain what you're asking? Best in terms of the price of the stock. I was just thinking in the 70s, there was a lot of inflation, and so if we're going to get inflation in the future, it'd be interesting to know what did well back then for that reason. I don't think Value Line has that information, but I think somebody did share some site out there. You'd have to Google it and find it. I don't think Value Line covers that kind of stuff though. No, yeah. I thought Value Line went all the way back to 1931. Yeah, it started in 1932. Shouldn't they have the prices going back that far? Well, it would be on a hard copy. It's actually, they do have it, but you have to have the premier subscription, and we don't have that, but they do, I don't know. We have this question a few years back, so I'm racking my memory. We did try and look into getting the history aspect of the database, but I guess it didn't happen because we don't have it, but you would have to pay for that service. You might want to write to them and see if there's some way to access that information. They do collect it. They have it, but we just don't pay for that part of the subscription. So is there some other thing like one of the other things that you do have that would have that information? That's a good question. Lori and I can research that and get back to you. Okay. Okay. All right. So then Linda has a question from your years of experience, Harriet. Are there some financial ratios that you feel are most important to look at first regardless of the company? If you're looking at ratios, PE ratio, I think is the most important. Looking at asset ratios is important to me, but then when I'm talking about ratio for newbies, what is that? Basically, it's two numbers you're going to compare. For the PE ratio, it's going to be the price of the stock, and you're going to compare it to the earnings, and you get a number. The current ratio or the asset ratio you're looking at, the current asset versus the current liability, because I want to make sure that a company has more asset than liability. Simple little things like that. I do look at numbers and see it's how it's balanced. It's just like in your personal life. You want to make sure that your debt load, how much you have on your credit card, is a lot less than what you have in your savings and your checking account. So you can look at that as a ratio, because that measures the risk factor. And that tells me how well the company is managing their money. So if she's into that, kind of like the current, your current ratio, your asset ratio would be something I'd be looking at, my PE ratio, profit margin, percentage wise, those numbers are important. Okay. I'm busy answering a question, and I'm about to read the next one. Let's see. Somebody asked if it will be recorded, yes, and we'll share that after the program. How to sign up for the April 20th dividends class? Go to the sfpl.org forward slash events to sign up for the, to register for the program. Let's see. And it looks like Lori posted the link in the chat. And Ana provides a suggestion Yahoo Finance provides historical data going back pretty far. Yes, but their historical data is stock split adjusted. Okay. Then Geo's suggesting to look at the beta. It is a primary indicator for variability versus risk pre-return. Okay. That's all the questions so far. Does anybody have a question for Harriet that you haven't asked in the chat? Yes. I just missed how you navigated to the book version online. To the print version of Value Line? Is that what you're asking? You saw an online copy of the print version, but that is in the Value Line online? Yes. Yes. I missed how to get there. Oh, okay. So like when I did the Johnson and Johnson and I scroll all the way down. Okay. Let me see if I can find it. Screen 30. Oh. Lori is screen 30? Okay. Screen 30. Okay. So over here on the, okay. So they actually list you two years worth. Okay. So you can just click on that. So you could see the, when I did this class back in October, I think it was November, you could see the latest one was data October, August 14th. So you can click on that one. That would be the most current one. And then you could go May 15th if you wanted to. Two years of data there. I'm sorry. I did not ask the question correctly. I mean that talked about, oh, the one that had 23 pages. Oh, okay. The one that has 20, okay. I think it's 50, page 50. It's from dashboard. You click on summary and index. I think that's what she's asking about. I think it is. Thank you very much. Right. Yeah. And I talked about it's just one long, long page. You can keep scrolling and you'll get to a listing. That's it. All right. Thank you. Thank you. Okay. Yeah. Okay, Harriet. Next question is what is the advantage of buying stocks rather than mutual funds? The advantage of buying individual stocks or mutual fund. Okay. With mutual fund, you get diversification. That's for sure. But with mutual fund, with stocks, you can buy and sell anytime. With mutual funds, you usually have to wait until the end of the day. So actually, when you sell a mutual fund, you never know what the price is going to be because you have to wait for the NAV. So the net asset value at the end of the day. So then the market meets the close and then they figure out what the value of the portfolio is. And then if you want to sell, then that's the price you get to sell. I started out with mutual funds and it felt safer to me at that point. And that's what I started out with. And then I gradually, once I started to form my own opinion, then I went to individual stocks. Okay. But I understand that the mutual funds and ETFs is a way of instant diversification and it's an instant way of when you diversify, you do reduce your risk because you don't have all your eggs in one basket. Thank you, Harriet. Okay. Let's see. Okay, Dave, I'll look for Sarah's question. Hold on. Okay. There's a question that I apparently skipped. Laurie, do you see what? Yeah, there was a question sent to me directly, but it's for Harriet. And the question is, does Battleline make its money from selling the reports, Harriet? Yes. It sells the reports to the San Francisco Public Library or it sells it to individuals like me if I wanted to buy it. And I did subscribe to Value Line for a short time. But I found it was much more convenient to use the libraries. Yes, it is. Yeah. I found the question that we overlooked. This is from Sarah. Sarah asks, are there any simulation websites you would recommend to practice investing before using personal savings? Well, you don't have the application. If you want to do that, you can do it with pencil and paper, really. I know that I think that Charles Schwab has a what they call a paper trading system. OIC, the option industry council, used to have one, but they have not been able, Charles Schwab used to supply it for them, but they couldn't agree to continue that. Tasty work has a paper trailing. But a lot of people say, I want to do it online, but the actual reality, I said, you don't need to. You just need to say, okay, today I want to buy whatever stock. You need to just write down the information. And what it is, is that you're creating a journal. And you say, on this particular day, I want to buy X amount of stocks, and you just record it. And once you record it, you can always go back and look at that piece of paper and compare it to the current price and see how well you did. So you don't need anything sophisticated. You just need to write it down. So if you just write it down on a piece of binder paper, it's recorded. And then you go back and you look at it and see how you did in the future. Thank you. There's a question from Elizabeth. How much is a membership to better investing after the 90 days free membership is over? That's a good question. I believe it's $124 or something like that. The reason why I don't know is that I'm a lifetime member. So I paid the fee many, many years ago. And so I have not kept up. But the last time I checked, I think it was about $100. I think there were talk about it being just under $100 or it's just over $100. But if you email me, I'll go dig up the information. And she's email me. I'll send her back the information. Is that okay? All right. Yeah. Thinkorswim by TD Ameritrade. You can Google paper trading options. Oh, she's answering somebody else's question. I don't see any more questions. Does anyone else have one for Harriet? I have a comment. TD Ameritrade. TD Ameritrade was a thinkorswim. Tom Snoff was a co-developer of Thinkorswim. And they sold it to TD Ameritrade for $750 million. Tom Snoff has now created his own brokerage firm and it's called Tastyworks. So I know that they have a lot of online classes because they're really into education too. So there's a lot of classes on that. But they like to emphasize options. Just want to FYI on that. Okay, sounds good Harriet. I don't see any more questions. I guess we have reached our end of our program. Okay. Thank you everyone. Thank you Harriet. Another great program. And people are asking if we're sending the recording, yes. We're also sending the slides. And you can send questions to our email address by tech at sfpl.org. And we'll happily forward them if they are about investing to Harriet. So thanks for joining us today. And thank you again Harriet for your expert teachings today. And we will see you at the next program on the 20th. Okay. Thank you. Thank you very much.