All right. Welcome, everyone, to today's Webmaster Central Office Hour Hangouts from home. My name is John Mueller. I'm a Webmaster Trends Analyst at Google in Switzerland. And part of what we do are these Office Hour Hangouts where folks can join in and ask any question around their website and web search. And we try to come up with an answer for you.  So we can go through some of that. But we can also go through some kind of urgent questions from people who are joining here live. Anyone has anything? I mean, if not, I'll just jump into the questions from YouTube. And you can stop me at any time along the way. And I can't answer your question. All right. Go for it, Barry. So I've been obviously tracking how you guys are manually changing the search results constantly. No, I'm joking. But the algorithm seems to be, it's impossible that the tools that are tracking the changes to the Google search algorithm rankings, like the 10 listings and so forth, that there's so much change because of how maybe search or behavior is changing that Google's algorithms are adapting to it. Meaning, I mean, if you look at these tools, like the past couple of weeks, it literally feels like there's a Google algorithm update every day in terms of how much fluctuations there are in the tools that are tracking. One master is saying my rankings are changing. So is it possible that search or behavior is influencing the algorithm itself? I don't know. So I haven't been watching what's happening with these tools. So that's probably something that you see more. But in general, we do try to adapt our algorithms to provide the information that's relevant for users at the time when they need it. So that could be something where things are kind of evolving to make sure that people have the right information at the right time. But I imagine that's more specific to certain kinds of searches. I don't think it's like we would just change all of the search results around. So if you're looking for a manual for washing machines, like why would you change the search results for that? Things are essentially still all the same. But I do know that there are various teams working at Google on improving the search results, and particularly around kind of the whole crisis situation where people have higher expectations from search. And they want something that they can trust. And that's probably something where we're trying to provide, I don't know, better quality of service or good quality of service, at least, for those that are looking for this kind of critical information. So you wouldn't think it's specific to anything? If it's not COVID-related searches, you don't think maybe the way people are searching less for or more for buying toilet paper versus less for going to the movies, that would influence how the algorithm maybe adjusts. Does that make sense, that question? Like the search trends influencing the Google algorithm and the rankings around that. Yeah, I don't think that would be happening. I mean, it's something where we always see user behavior shifts. And sometimes certain topics become really popular, and we try to show the right search results for those kind of things. And this happens all the time. This is one of those things where it probably is a little bit bigger and is lasting longer than kind of like the Oscars when they come and go. But these kind of shifts are things that our algorithms have to watch out for anyway. So it's not something that I'd say would be specific to this current situation. Thank you. Sure. Just have a question, John. OK. So today I found out that there is a website that is scrapping the hell out of my content. And I found out that it's ranking very close to my website on Google search results. This also happens when I look for some technical solutions for my software problems. And I find some Stack Overflow links. And then it doesn't satisfy my need. I scroll down a little bit, and I find exactly the same question with the same content. Does Google make any kind of efforts to ban or penalize these scrappers? Or how does it work if I want to report this website that is stealing my content? Well, I think first of all, if it's your content and if it's copyrighted content, then maybe the DMCA process is the right approach. That's something where you need to double check things from a legal point of view. So I can't give you legal advice. So I can't tell you like you should do this or you should not do that. But actually, my website is about legal advice. So I can handle that. OK. Perfect. Yeah. So maybe that would be a process that would work there. That's generally the most direct way to resolve this kind of thing, where if the content is taken down, then that's resolved in search. So that kind of just automatically works out. Otherwise, the web spam reports are something that you can do. In general, we do look at the web spam reports that come in. But we don't take manual action on every single one because we try to use them to improve our algorithms overall. So that's kind of one thing where it's useful to get feedback like that. But I wouldn't see it as something where within a couple of days, you will suddenly see that website disappear from search. Those are generally the main approaches there. Sometimes it's also tricky in that if we don't have a lot of other good content for that specific query, then we end up showing these kind of things. So oftentimes, if you search for a quote, then someone else will have copied that. And we'll show that in the search. But that's because you're searching for that one specific piece of text. And it's like we have that page index. Maybe we don't rank it first for that piece of content. But it's known to us. So we would show it in the search results if you're explicitly looking for that. So that's something where sometimes the perception is also a little bit skewed in that if it's your content, you explicitly search for it. And you see some spammer also ranking. Then you're like, that shouldn't be happening. But at the same time, maybe there's nothing else that we would show there. And we happen to know about this page. So at some point, we'll just show it. Yeah, gotcha. Thank you. And I think another thing to also keep in mind is that sometimes people have more information to individual pieces of content. So we see that all the time with our blog posts, where someone like Barry or someone else will take it and quote parts of the blog post and add some more information, or open things up for comments from other people. And that's, from our point of view, that's kind of a normal part of the web. Like technically speaking, you could look at that and say, well, they're copying the content. But actually, they're providing something different. It's a slightly different version of the content. It's maybe a commentary on that piece of content. Maybe it's just other people's comments that are also around that piece of content. And that's something where we would say it's not even about who wrote that first, which one of these should we rank higher. It's just it's a separate piece of content overall that happens to have quotes that are the same. But essentially, it's a unique piece of content. Thank you. Thank you for the clarification. Sure. Can I jump in with the question? Sure. So in another hangout, you mentioned that the publisher or organization schema doesn't need to be on every single page of the website. If it's on the home page or the contact page, that's good enough. Now, what about if we're talking about an article or blog post schema that's on an article? Does it need to be on every single paginated page of that article or can it just be on the first page of that article? What are you trying to achieve with the article markup there? I think that's kind of what I would look at there. If there's something that you're trying to achieve with that article markup that's relevant to the whole set of those pages, then put it on all of those pages. If it's something that's just the intro of the article is relevant enough for that extra piece of markup, then maybe it's enough to just have it on the first page. That makes sense. Thank you. Hi, Mr. Moller. Hi. Can I ask you a question? Sure. I'm Vahan, lead developer at Search Engine Journal. So I'm looking at Google Discover specifications and read how to enable the website to use a large image in the Discover. And it says one should use high-quality images at least 1,200 pixels wide and ensure that Google has a rise to display your high-quality images to users, either by using AMP or by filling out the form expressing your interest to opt-in program. So my question is, is it possible to have large images in the Discover still without AMP? Yes. Yes. So I think they want to move away from that form. And another option that you can do, I don't know if we documented it there or in the other documentation, is to use the Max Image Preview robots meta tag, where you can specify, I think, large as the large preview image. That would also apply to Discover. OK, thank you very much, because I did notice that CNN website sometimes has a large image but doesn't have an AMP. And I wondered that Max Robot image could you please repeat? Let me see, Max Image Preview, I think it's called. Yeah, Max Image Preview. Meta tag. OK. Thank you very much. Sure. Appreciate it. OK, let me run through some of the submitted questions, and we can get back to more questions from you all towards the end. And of course, if you have any comments to individual questions or answers, feel free to jump on in. Question for e-commerce website, from March 21, we saw that Google removed the indexing of most of our categories. Suddenly, all of our categories are marked in Search Console as duplicate to unique category, and Google is picking up another canonical or declaring not available. When rendering the pages in Search Console, I can see that sometimes none of the images are rendered, and sometimes they are. I need to precise that we implemented JavaScript to load the product listing in the category. Do you think that could be the reason, even if Google is rendering different product names with different links, possibly for Google, this is the same page? It's really hard to say without looking at specific pages, but often that sounds like something that would be more of a technical issue with regards to those pages. In particular, if you're saying this is a specific type of page on your website, if there is no other reason for things to be dropped from Search, then my hunch is that for one reason or another, we're seeing the same content for these pages. And if we're seeing the same content, that can either be because on your server, you're doing something unique for Googlebot, where maybe you're serving a page that shows a server error, or maybe you're showing a page that says, it looks like you're a robot. Can you fill out this captcha? It could also be that it's something where you're providing the content in JavaScript in a way that we can't process properly. So those are the options that would fall into the situation. And usually, these are things that you can double check with the testing tools, where you can work out, is this a technical issue in my infrastructure, or is this something with my JavaScript implementation that I have, and then you can work to fix that. What I would do here is maybe post in the Webmaster Help Forum with the specific, so some sample URLs that you're seeing this with. Alternately, if you feel it's really tied to the JavaScript side, we have a JavaScript working group, which is kind of a closed forum that you can just join in, and you can ask questions there as well. So those are probably the two directions I would take there. Can you give us more details about how image indexing and ranking works? We know many things about HTML URLs indexing and ranking, but when it comes to images, few things are really known. For example, how does Google decide to rank an image instead of another? Are backlinks important for an image? Does Google use cloud vision technology to rank an index images? How important is a text surrounding images? So many things. OK, I feel this is almost a topic that would deserve a completely separate hangout. So I don't know how much detail I can go into here, but we do have a fairly comprehensive help center article on best practices for Google images, which includes a lot of the things that you're asking about here. In general, what I would assume with images is that Googlebot doesn't see the contents of the image and instead needs to understand the context of how it's used from your web page. So essentially, we look at the HTML page. We see there are some images embedded there. There's text on the HTML page, there's text around the image, there's an alt attribute associated with the image. All of this is on the web page, but it's about the image. And for us, the combination of the image plus the web page is essentially what we need to use for ranking. So if someone is searching for, I don't know, a beach vacation, then we're not going to look at all images to see where there might be a beach on that image, but rather we'll try to find matching web pages that have unique and compelling images that we can show that kind of apply to this situation, this query that someone is looking for. So that's kind of the thing that I would watch out for is really like we primarily use a web page to understand the image, and we always need the combination of a web page and the image file when it comes to ranking. Can general mistakes, such as missing a space between two words, showing 20 products, but a heading, you're showing 10 products, replacing a hyphen incorrectly in schema, heading tags, et cetera, affect SEO? So I guess it depends on where you make those typos. When you're talking about structured data in particular, since you mentioned schema, that's something where if the structured data is wrong, with a typo, for example, then we might not be able to process that at all. Because structured data is something that we process automatically, we need to be able to process that one to one as it comes in. And if there are errors in that structured data in a way that we can't parse it, then we're not going to try to interpret it. However, when it comes to content, if there are typos in your content, if you have extra dashes or periods or spaces or things like that within your content, usually that's less of an issue. That's something that happens on pages. We understand that. And I think the only case where these kind of typos would be problematic is if with those typos, for example, you're making it impossible for us to understand what the primary content is on a page. So for example, if you have a specific product name on your website and it's mentioned on one page one time and that one time it's mentioned completely wrong, maybe with missing spaces around the product name that you're describing, then it'll be really hard for us to understand that this is a unique product name that's actually shown in an incorrect way on a page if we can't extract that out as a word, for example. However, if you have this product name multiple times on a page like you normally would do and one of them has a typo, then that doesn't change anything for us. We can understand that this page is about that product. So that said, so normally things essentially just work out with regards to typos. It's not something where you need to have a 100% perfect page. I don't think any web page is completely perfect anyway. So it's usually not a matter of something where you need to panic if you recognize typos on your pages. Page A is canonicalized to page B and page B is canonicalized to page C. How does Google treat this? So first of all, I think what you need to figure out in a case like this is what you actually want to have happen. So do you want page A index? Do you want an index as page B? Or do you want an index as page C? And as soon as you work out what you want to have happen, then you should make it as clear as possible to Google what you want to have happen. So if you're working with the rel canonical link attributes, for example, then make sure that you're consistent, that you always point at the version that you do want to have index, and then we'll try to follow that. On the other hand, if you're using rel canonical in inconsistent ways, if your internal linking is inconsistent, your site might file mentioned things in different ways too, then we're going to have to make a guess. And it's not that you can determine ahead of time what will Google guess, but rather, it might be we guess this way. Might be we guess a different way later on. It might be that it changes over time as well. So with canonicalization, it's really like if you want something to happen, make it really clear to us. The other thing with canonicalization that people kind of forget, I think every now and then, is that canonicalization is for us essentially a way of picking a URL to show in search. It's usually not a matter of kind of things ranking in different ways. So if we pick one URL to show in search and a canonical, or we pick a different URL, if the content is exactly the same, we would rank it exactly the same. So that kind of decision around canonicalization wouldn't cause your site to jump up or jump down in search. It's just, well, this URL or that URL. In the end of February, I bought an expired domain. Afterwards, set up all things fresh and verified with Search Console. Then I realized they're crawl anomaly and software for errors. I tried to fix them with 301s or 410s, but it's still showing errors in Search Console. How can I get those off? So in general, if you have a domain that was used previously, then we probably have a bunch of URLs that we know about from that domain. And we'll try to re-crawl them over time. And if we notice that they don't work because they return a 404 or if they redirect somewhere else, then we might flag that as a 404 or as a soft 404 in Search Console. And that's perfectly fine.  So Google sees errors, and we show them to you. And then you can look at those errors and say, yeah, that's on purpose. I removed all of these URLs. Or I didn't reinstate all of these URLs. And that's perfectly fine. So it's not something that you need to suppress or hide or anything like that from Google. The other thing maybe worth mentioning is if you're using an expired domain, just because there used to be a website there doesn't mean that you have any kind of advantage of using an expired domain. So if the expired domain name is really what you wanted, kind of as a domain name, then that sounds like a good thing. On the other hand, if you're just picking up that expired domain name in the hope of artificially being featured high in Search because that previous website was actually pretty good, then that's not something that I would expect to happen. I want to remove an image in Google Search. I used the Google Outdated Content Removal Tool. Submitted a request, put the status of the removed content in Google. When I visit the image, it's not removed. So it's really hard to understand exactly what you're trying there. I would strongly recommend posting in the Webmaster Help Forum, maybe with a screenshot so that someone can take a look and see what is happening specifically with those pages that you're mentioning. One thing to keep in mind is the outdated content tool, I believe, just updates the content that we have indexed in Search. And if you're using that for images, that would be the wrong thing to use there. You'd need to remove that page from Search, essentially. The other thing to keep in mind is that Google doesn't remove the images on the server. But rather, we can remove them from the search results. So if you're searching for something and that image is there, then that's something that you could potentially remove, depending on the situation. On the other hand, if you take that URL, where the image is hosted and you try it out in your browser, it might still be that it still works, because that's something that we can control. So those are some things to keep in mind. The other thing, maybe also worth mentioning, is that in particular with images, sometimes the same image is used on multiple pages. And if you remove the image once, it might be that the same image from a different location pops up in the search results afterwards. And essentially, you just need to watch out for that and then also have that other location removed as well. In the view of the recent nofollow changes, what is now the best practice in terms of links to a PDF version of the same page? Previously, we would just add nofollow so that the original HTML would appear in the index. But now PDFs are sitting ducks for indexation. We can't, I guess, add a noindex instruction to the PDF and we don't want me perceive duplicate content issues. So what can you do? So first of all, you can do a noindex for images. That's essentially the xrobots tag. That's an HTTP header that you can add to the PDF files, well, not to the files, but to what the server returns for those files. And with the xrobots tag header, you can use any of the robots meta tags. And I believe even in our robots text documentation, we have examples of specifically how to block PDFs from being indexed for probably both Apache and NGX. So I will double check that. The other thing with regards to nofollow, my guess is that this will continue to work essentially the same way internally within a website in that we just won't treat that link as being as important overall. However, like before, just because you have a nofollow link to that PDF doesn't mean that we will never see that PDF. Other people might have other links to that PDF. We might see links from other places in certain periods of time where we see the normal link to the PDF file and we'll go off and index it. So even previously, just having a nofollow link to a page does not mean that that page will never get indexed. My blog is just three months old and my posts would sometimes keep appearing on the first page and then suddenly disappear after one or two days. Why does this happen? It's really hard to say, but my guess is with a site that new, it's just a matter of our systems not being 100% sure how they should treat kind of the new content that you're providing there. Over time, as we understand the website better, we're a little bit better at understanding how new content on this website fits in with the context of the rest of the web and we can work out which of these things we should be indexing faster or slower or showing differently in search, but especially if it's a really new website, then sometimes we have to guess and then our algorithms might say, oh, we'll index this quickly, it looks like something good and then afterwards we might be like, well, maybe we didn't need to do that and that's usually something that settles down after maybe half a year or a year or so. In terms of headings best practice and particular headings that currently include internal links, is there a benefit to moving these from the H2s to the body of the text? So I think there's an example here. I took a quick look and some of the H2 headings are links to other pieces of content, some of them are just headings. From my point of view, that's totally up to you. I don't know if there are usability issues that you might need to watch out for with regards to headings that are also links, but in general from Google's point of view, these things don't really matter that much. It's something we do use headings to better understand the content on a page, but when you're talking about those links from one page to another page, I don't think that link being in a heading would play any visible role at all with regards to search. We had a situation where one of our keyword website is ranking at position two, while against the same keyword, it's on position six for desktop results. Why is that? That can happen. So on the one hand, it's possible for rankings to change fairly quickly. It's also possible for things to be in experiment, essentially, where different people, when they try it out, they might see slightly different results. That's completely normal from our point of view. It's also possible that there are different rankings from mobile and from the desktop search results. That from our point of view also makes sense. So in particular, if we recognize that a page is not mobile-friendly and that when users go to it, they can't really use it on their mobile device, then that's something maybe on mobile search results we would show a little bit lower. So these are the kind of things where sometimes the mobile and the desktop search results are just slightly different. Can excessive div tags in anchor text reduce rendering performance? I have no idea how that would work out. Essentially, with regards to rendering performance, we use something that's very similar to normal Chrome. So if you use a normal performance testing tools in Chrome that you have available, the Lighthouse test, the different other testing tools that essentially build on the Chrome stack, and you see that you can improve the rendering performance of your pages, then that's always a good thing. It's good for users. And if Googlebot can render pages a little bit better, then that's also good for our servers as well. But whether or not just having excessive div tags on a page would cause a significant difference in rendering performance, I kind of doubt that. But I'm sure you could create a test page that does cause this kind of an issue. On our e-commerce and Ahref and menu filters, then the same Ahref is used somewhere in the middle of the primary content. Is there any difference? Don't quite understand the question, but I think it's kind of like if you have the same link on the page in multiple places, is that a good thing or a bad thing? From our point of view, that's perfectly fine. There's nothing special that you need to do if you have the same link on the page multiple times. That's kind of a common scenario that happens with a lot of sites. So that's not something I would see as something that you'd need to artificially suppress or change. Some info is about the consequences of COVID-19 and search results. How does Google react when such a word appears or what's impact on search results? I think Barry talked about this in the beginning. Essentially, these kind of situations, I mean, this is certainly a unique situation, but these kind of changes happen all the time. I believe maybe a couple of years ago, we mentioned again that something like 50% of all searches every day are completely new. And these kind of things happen all the time. Suddenly, something completely new comes up and people search for it, and we need to figure out what they're searching for, what does that actually mean, and which pages will be relevant to show there. And we need to do that in an automated way in the sense that we can't manually double-check every search results page that we ever show to people because there are just so many different variations. And like I mentioned, like so many new kinds of searches every day. So this is something where our algorithms, from what I've seen, just from personally browsing around, it feels like our algorithms are able to deal with this fairly well. And I think that's almost also a testament to all of the work that the engineers and the ranking teams have been doing over the years to make sure that whenever something completely new comes up, we're able to deal with that appropriately. I have an eight-month-old website that ranks for keyword city plus SEO, position 19 in the non-US search results or locations. But when I check my rankings, US, it seems I'm ranking very big. Last month, we temporarily reached the first page of Google and we started slowly losing rankings again. Yeah, I don't know exactly what to say here, but essentially, we do have different results in different ways in the sense that if we can tell that someone is trying to find something local and we can tell that a specific webpage is matching their intent in a reasonable way, then we'll apply that in the search results and rank that appropriately. So if you're looking for kind of one nation from one kind or one keyword in one country and you're looking for the same keyword in a different country, it's usually pretty normal that we would show different results for those kind of things, especially if you're asking about something that's more locally related. So if you're looking for, I don't know, washing machine manual, then probably we don't need to use geotargeting that much to figure out which of these pages we should show. But if you're searching for washing machine repairman, that's probably something where it makes sense to use geotargeting to figure out this user located, which of the web pages that we have would be best suited for this user at this time. So that kind of locally search results and different rankings, that's pretty normal depending on the kind of query. We're a hosting provider and some of our customers are hosted on subdomains of our domain. Some of these domains are 301 redirected to our own domain. Some not, therefore we have some valid and mini excluded of those subdomains in our Search Console property. Unfortunately, we can't change anything about how we handle those customers hosting right now. So all official guidelines for permanently removing URLs are not possible. Next idea would be manually removing those subdomains in Search Console with a removal tool every six months. I don't think you need to do that. So essentially, if these are pages that no longer exist or where you have a new page that replaces the pre-page, then serving a 404 or serving a redirect for things that have moved, that's perfectly normal. In Search Console, we will show those as excluded in the reports, but it's not something that you need to manually fix. You don't need to suppress those errors or that status that's completely normal. That's something we show that in Search Console so that if you're not aware of this situation, you can follow up there and see why are these pages excluded? And then from their workout, was this a technical issue on my server, perhaps, or in a certain time, or is this by design? And if it's by design, if you really remove those pages, if you don't want them serving anymore, if you want them redirecting or whatnot, then that's perfectly normal. It's not that we will rank your website anywhere lower just because you have pages that are currently not valid. From our point of view, it's a sign of a healthy website if you're serving the proper status code. So if things are gone and you tell us they're gone, that's perfect. In the mobile-first indexing world, will the hidden content behind tags and accordions still be devalued, for example, because there's a lower chance that it'll be seen by a user? No. Specifically, when it comes to content on mobile pages, we do take into account anything that's in the HTML. So if there's something there that might be visible to users at some point, we will include that in the indexing. So that's completely normal. If we have a fragment URL in an href, does Google completely ignore that whole link or just the part after the fragment? We essentially see that link, and we will drop anything after the fragment and just take the earlier part of the URL and assume that's the page that we can fetch from the server and that's the page that we can index and that's the page that we'll use to forward any signals with regards to links on those pages. I've seen a ranking drop on my domain since the March update and noticed in Search Console that many of the staging links were referencing the live domain. But the website has already been removed from the server and is serving 500, but still in Google cache. I've requested to remove the cache from Search Console. Will this have a worse impact on my rankings? It sounds like there are a lot of things happening there. So it's kind of hard to say what exactly is relevant there. I think maybe offhand, worth saying that we make ranking changes all the time and we try to make sure that these ranking changes reflect what we think is relevant and useful for users. So it might just be that you're seeing the results of a normal ranking change that we make kind of all the time. The other aspect with regards to kind of staging site, you remove the staging site, and maybe there's still index, that's something where I would make sure that the staging site URLs are just removed properly so that they return a 404 when someone tries to access them, not a 500. A 500 error is a server error. And essentially when we see that, it means that our algorithms will see that as a sign that maybe they're causing an error on your server, and usually they'll slow down with crawling. So that's something where serving a 500 on a regular basis is probably not something that you want to do. Is there an hreflink with no follow attribute and uncrawlable links the same for Google? By uncrawlable, I mean something like with an onclick handler. So we use no follow as a signal in the meantime when it comes to crawling, indexing, and ranking. So that's something where the effects will vary depending on how our algorithms kind of approach that individual link. And things like the onclick handler that you mentioned in the example, that's something where usually we would not see that as a link. So it's not that our JavaScript systems will go through all pages and see where is an onclick handler and what happens when you trigger that. Usually we would not see that as a link. So if you're making a JavaScript-based website, don't use onclick handlers for navigation. One thing that might happen in that particular example that you have there, where you have a JavaScript snippet in the onclick attribute that mentions a URL directly, what will probably happen there is we will recognize the URL in the JavaScript that you're mentioning there, and we will try to see if we can just index that page individually if we haven't seen it before. So it'll be something we wouldn't be able to treat as a link, but we'd find a reference to that URL and we might go off and index that. So lots of kind of edge cases involved there. But if you're using a JavaScript site, don't use onclick. Use normal AHRF links instead. And if you're using nofollow, then just keep in mind that that's a signal. That's not a directive. It's not a way to block indexing of a specific page. You mentioned in Google Search News that only indexed the content that is on the mobile version of the page. It doesn't mention hidden content behind tabs. I think we talked about that just before. My images are ranking good, but my content is not ranking. I have unique content, which is helpful for users. Structured data is good. I'm unable to figure out the problem. Everything seems good and no technical issues on my website. It's really hard to say what you should be doing differently with regards to a website in general. So that's something where I almost get a second opinion and maybe post about that in the Webmaster Help Forum so that others can take a look at your pages and at the queries that you're trying to rank for and give you some honest, raw advice maybe on your website overall. Sometimes it's useful to just get someone else's opinion on things that you've been working on for a while. Can I ask a question? Sure. Go for it. Thank you. It's about schema. I'm just wondering, aside from the obvious schema types like FAQ or event or how-to that may directly influence the snippet, do you still recommend using some of the other schema types? Maybe things like local business or maybe more specific to the different types of businesses or even web page.  What page would you not consider a web page? Would you use those schemas as well? Is there any benefit to it aside from SEO maybe? I don't know. So the thing I would primarily watch out for with structured data is if there is a specific kind of visible treatment for that kind of structured data, then that's kind of the direct one-to-one relationship that you're aiming for. Everything else, apart from that direct and visible treatment, is something where it kind of depends on the pages and the structured data helps us to a little bit better understand the content on the page. But it's not something where you'll have any visible effect from that directly. So if you have different cities and you mark them up as cities and locations, then that helps us to better understand, oh, this is a mention of a city, maybe not a brand, for example. But it's not something where there would be a direct kind of ranking relationship there. Right, but you may look at those structured data types to help understand the page just a little bit better. Yeah, yeah. So that's something where usually people are limited by the time that they have available. So I tell them, focus on the visible things. And if you can do a little bit more, that's perfectly fine. It's not a bad thing. I just wouldn't go overboard. It's like if you're marking up every other word on a page, then you're doing a lot of work that doesn't really result in anything useful for search engines. OK, wonderful, thank you. All right, maybe we can open up for more questions from any of you all. I come back. OK. So it turns out that attribute you mentioned was already in there by the Yoast plugin, as we use WordPress. So in the pair all tests, like non-amp articles never ever shown the large news, anything else we can do help there? I don't know. It's hard to say. I mean, if you can send me some examples or maybe copy them into the chat here, I can take a look with the team. I believe it's also the case that we just don't show large images all the time, that maybe we show them as a small thumbnail if we think that's good enough. But if you think you're doing everything right and you're pretty sure that we're never showing the large image, then I'm happy to double check with the team to see if there's something that either we need to document differently, or maybe that you specifically are doing in a slightly weird way that I can get back to you on. Do you have a lazy loading made that effect? It could, theoretically. I mean, it depends on how you mark up the images on the page. I believe, I imagine you're using the article markup for those papers. The image is in there. And the image is probably linked directly in the markup itself, and you probably have the large image linked there. Then probably we would just pick it up from that. However, if you didn't have the article markup and we had to find the image on the page, then lazy loading is something where sometimes we see problems. But it sounds like that's not the case with you. Yeah, OK. I will tweet in that feature a couple of URLs. OK, cool, sounds good. All right, more questions from any of you all. What else did we miss? I could ask one more, John. On our website, our navigation, which is site-wide, has about 10 links. And now two of them lead off to an external partner site, and they are nofollow links. Is this likely to affect our ranking in any way if there's two links with that or not there? No. I don't think that would change anything. So usually we would recommend using nofollow for things like ads or if these are placed in user-generated content on a site. But that's something which is completely normal. Lots of websites have ads, so they tend to have the nofollow links. Or if you're using the newer attributes, I believe that would be sponsored or UGC, for example. But that's completely normal. It wouldn't negatively or positively affect your website if you had those there or not. Even if it's in the site navigation? Even there, no. Sometimes people buy site-wide ads, and using the nofollow is a proper approach for that. Or using rel="sponsored is another way to do that. And that's perfectly fine to have these kind of site-wide ads. That's good. Thank you. All right. More questions for many of you all? No questions? All live. OK, go for it. Pedro, go ahead. I've asked one. I have a question regarding, more regarding, how is the flow of reconsideration requests taking on this period of pandemics? Is it operating at normal scheduled intervals, like the regular? Can we expect the usual two, three weeks response time? Or is it longer? How is it affecting everything? I don't know of hands. But my guess would be that it's slower than usual, just because of the way things are set up when we have vendor teams that review these kind of things. Then probably during situations like this, they have to get reorganized first and work from home and get all of the setups working. My guess is it'll be a bit slower than usual, but I don't have any first hand data on that. Yeah, thanks. Be patient, Pedro. Your spammy sites will come back. It's not me. Sure, sure. That's fine. Your friend. I had just a question about videos. OK. Is there any advantage, disadvantage to using a local player versus YouTube and embedding them from an SEO perspective? I think the main difference, I guess there are two things. On the one hand, we have to be able to recognize the video there is there. If you want the video to be indexed in video search and kind of with the video snippet, we have to recognize that the video is there. With a common player format, if that's YouTube or Vimeo or whatever the common formats are, then that's really easy for us to do. So if you use your own player format and you're using something that you custom-made for yourself, then we might have a little bit of trouble understanding that. If you're using something kind of, I don't know, open source scripts or whatever there are out there, then probably we'll be able to pick that up. The other thing is, especially if you're using YouTube, the landing page of the YouTube video might rank as well in search. And when you're specifically looking at the videos themselves, it might happen that the YouTube landing page ranks above your content or below your content. It's really kind of hard to say. So that might be something where you say, it doesn't matter for us. I don't care which of these pages is ranking as long as people find the video. It might also be that you say, well, my web page is the one that I really need to have ranked. And I'd rather kind of rank a little bit lower than to have a YouTube landing page above mine. And that's kind of a call you can make. Got it. Cool. Thanks. Joe, I have a couple of questions, actually one question. So regarding the Google Search Console API, if I'm guessing giving the current situation, there's probably not a lot of work in adding new features to it. Just wondering if you heard anything on adding the fresh data maybe to it or any other developments. We discussed the fresh data a while ago. I don't know what the status is there with the team. But in particular, with the fresh data, the issue we noticed is we can't just start including that by default because that would kind of confuse the way people are going to use the data from the API. So we'd have to add some kind of a flag or something like that to it. I don't know what the status of that is at the moment. I believe that's something that was not that far away recently, but I don't know how things are different now. OK. And also on the API front, is there any chance there would be a Google Trends API in the near future given that, especially right now, Google Trends is a very valuable resource to kind of see how things are moving along day to day? I don't know. I thought we had an API for Google Trends. Well, it's mostly a hack, a workaround. There's the export option, so people just use the export URL and get URL by keyword by keyword and stuff like that. But there's no official API. OK. I don't know. Sounds like something we should ask for. Yeah. I think, in general, with these kind of things, if you can give us some really good reasons why it makes sense, like you can post them on Twitter or anywhere where it's kind of visible, then that's something that's always useful to go to your team and say, look, all these people want this, and here's why they want it. Like, you should do it. OK, awesome. Cool. Cool. Pedro will help me out, definitely. All right. OK, so I guess we're kind of over time, so we can take a break here. I have the next Hangout lined up for Friday in English and Thursday in German. I think Martin is doing a JavaScript Hangout this week as well, maybe tomorrow or something? Next Wednesday. Next Wednesday. OK, you have to hold out. Until next Wednesday, if you care about JavaScript. And I think we just uploaded a whole bunch of YouTube videos from the Webmaster Conference product summit that we did in Mountain View, so that's another cool set of stuff to look at. In particular, I guess the more advanced people will be keen on listening in to Paul Horace talk, which I thought was really, really cool to see. So stay safe, stay healthy, and hopefully see you all in one of the next Hangouts again. Bye, everyone. Bye, guys. Bye-bye. Bye.


So, I'm here today to talk to you about the computer game called Friderid RPG. Friderid RPG is, as the name implies, a role-playing game. Oh, is that supposed to work? No, mind. So, Friderid RPG is a role-playing game. It is fully playable and can provide you with about six hours of fun right now. In the game, you play as a creature from another planet, wakes up on Earth in our future. In our future, robots will have turned against the human masters and started attacking and killing humans.  The most obvious way of doing that is using weapons. So, we have melee weapons and we have ranged weapons, so you can use table, laser, bat, or laser rifles if you can find them in the game. But weapons are not your only choice. You can actually execute programs on enemy droids. So, the idea is that Warcraft actually is part alive and part computer, and therefore, it has the ability to execute computer programs. Now, the enemy robots have a very lousy operating system with a lot of security problems, and basically, you can send codes that will be, that they will actually execute. By the way, the firmware for the bots has been written by a company called Megasys. Yeah, so you can run code. For example, we have the Calculate P program that will send some code to Calculate P to enemy robots, and they will start calculating P, and this will slow them down for a little while. As a special thing, we have one program that starts a minigame, which, if you win the minigame, will turn your enemy to your side, so it will start attacking other robots. Freerader RPG is a single player game, so we try to have a very immersive environment and something that can actually get the player emotionally involved. So, for that, we have about 29 playing characters with dialogues that we tried to make fairly rich and interesting. We have 10 original music tracks written by two different people over the years, and we have a fairly specific and consistent graphic style. So, let's move on to our first screenshots. Okay, so this is the main interface of the game. The resolution could admit it a bit better. So, here you see the main interface of the game, and at the left of the screen, you have the inventory screen open with a few things that you can see. So, there is the iron pipe here, which can be used as a weapon with the explanation of what it does. Here you can see four programming books. I'm going to get back to it. You have an ammo, you have a shield, and what I think that should be pretty straightforward for anybody who's played games like Diablo because the interface of Freerader RPG is fairly similar. All right, this is a dialogue in progress. Here we have Bender telling me about his brain management pills. Apparently, it took too much of them and it made him heal. And now, at the bottom of the screen, there are several options that I can click to select what to say and make the dialogue go forward. As I said, we have 29 playing characters. We try to give the widest range of options possible every time. So, quite a bit of work went into dialogues because they have to be sufficiently complex for players to like them. And we try to put a few jokes here and there. And basically, the dialogues are really a central part of the game because this is how you will progress in the game. This is how you will get quests and items. Here we have the programs screen. So, as I mentioned already, you can execute programs. Some of the programs, like the analyzed item, for example, will be executing on yourself. Some of them will be sent to enemy robots. Here we have the foundation of what the currently selected program says. And we have, yes, you can certainly see it, we have a field here called it produced for each program. The idea is that whenever you execute a program, you use your CPU. And when you use your CPU, you will increase your temperature. And there is a maximum amount of heat that you can stand. And actually, if you want to run a program and you reached that maximum amount, you can actually still run a program. But you will then overheat and start losing out points based on how much extra temperature you have. So we have the running bar, experience bar. And there we have the else bar and temperature bar. Here it is completely empty. Whenever I run a program, it will increase the temperature. And when it reaches the maximum, I can actually still run programs, but I will not be using else points. You can gain else points by finding else portions on the map. And for temperature, we have coolants. So we have bottle dyes, liquid nitrogen and industrial coolants. This is the mini game that I mentioned. So if you, I'm not going to explain it because a significant part of the fun is to actually figure it out. If you win it, the enemy comes to your side and fights for you. What is interesting is that this is actually the legacy of Friedrich RPG, which started off as a 2D arcade game, which was called Friedrich Classic. It was a clone of the Commodore 64 pro-adroid computer game. Basically, you were playing a robot and you had to take over other robots and clean up a ship. The original also started turning Friedrich Classic, which is ended now. It works perfectly and nobody is working on it any longer. And I started turning the 2D arcade game into Friedrich RPG, which is an isometric 3D game. At the beginning it was mostly two people, one grapheast, who is still with us now, and one coder who has the project. I took over in 2004 and my focus was on getting more people involved because by then while the game, which was mostly working, the basics were here. But, for example, we had unbalanced items, so we had lots of what was it, laser swords or something like that, we had 20 laser swords and it wasn't actually fun to play. The engine was good, but we needed a bit more work on the content. I succeeded in getting more people involved and the record we achieved was 5 active people at the same time. The problem is that very often it's only myself or another person who is active and it's very few people for a game like this because there are lots of things that we should do in order to improve it and we need a bit of help. So what does Friedrich need? We have a game that lasts about six hours right now. We can obviously increase the difficulty to make it last a bit longer. I think we've already been to the fullest extent of this concept. Now we need more content. So we need more levels, we need more dollars, we need more quests, we need more items so that players can actually have fun for, let's say, 20 hours which would be a good value for a single player game. I mentioned that we have music, we have good music, we have people working in it but only with some effects. This is not very good because it has a negative impact on the emotion of the player when it doesn't get auditive feedback of the actions. We need more graphic content but everybody does. We need perhaps better development tools because the idea is that we're a very small team, as I said, we need more people and having easier to use development tools would probably help us attract more people. And obviously, well, many of you probably didn't know about us already so we're not very good at communication. We have a game that we think is fairly great.  If you like, try out the game, if you like it, talk about us. This is something that everybody can do. And if you find bugs, you know what to do. Okay, I think I've run through everything I had to say so I have a little demo video that shows the game. It's actually short, it lasts two minutes. If you want to see more, we can talk afterwards. And that's it. So, video. That's for later, but I'm sorry, I'm not. Here we are in the city, which is the kind of safe place in the game. And this is where you will get most quests and talk to most people. Because the outside of the city is surrounded by enemy droids. So there are many people who live outside of the city. I have some time left. So otherwise, I forgot to mention that your character is actually from another world and he happens to be penguin shaped. Now I have just one last thing. I have a bit more time left. So this is the contact information for Fridoids. If you want to try the game, the game is written in C. This is one thing I forgot to say. It is licensed with other GPR. It's been around for a few years. We have made a release about once per year. It depends on who is active because, as I mentioned, we're not many people. So sometimes real life gets in the way a bit. But we try to make a release every year and we're planning to do a new one fairly soon with a tutorial for the game because Fridoids reported that it was a bit difficult to understand at first. And better development tools so that people can actually help us on levels because this is the thing we need the most right now. I guess I have time for a question or two. Do we have questions? Dole? Story improvement also. What kind of story improvement? Well, the story most of the storytelling actually happens through dialogues. So if you want to extend the story, it's actually going to be done with dialogues. And then you have the dialogue. You have the character for the dialogue and the character has to be at a certain place. So you have the level to go with it. So you have to add the map, the character and the dialogue. That's how we extend the story. For now, I don't know what to say about the story but for now it's enough. We're not thinking about extending it for now because we can still elaborate a little bit without making a second act, for example, which is planned but for later. We have considered it and we are a single player game. Now seriously multiplayer games are different. You do not focus on the same things. Here we really want to get the player emotional when involved in his actions and this is world playing. What I saw for example of Diablo in multiplayer is different kind of game. It's really a different kind of game. Okay, I guess we're done then. Thank you.


Welcome to ITU Telecom World 2019 in Budapest, Hungary this year where I'm very pleased to be joined in the studio today I'm Mr Hiroshi Tominaga, who is the general manager of the Japan Battery Regeneration Company. Mr Tominaga, welcome to the studio. I'm happy to be back in four years. Very nice to see you, very nice to see you again So I wanted to ask you what is the role of Japan Battery Regeneration in widening access to digital economy? Okay We have technology to regenerate all abandoned led us batteries and we can extend battery life and we can reuse all Batteries and those are very helpful for people in developing countries people in non-electrified regions, so To be here is we have we know how to contribute to those people in the problem of a digital divide and For business we can go other place else place, but our contribution can be Important for this world. How complex is the technology required to regenerate batteries? Material we have additive for leadership batteries. It's proven technically proven and the very Highly reliable products and we have a lot of a good record and It's not difficult to use our technology and our additive, but we need a Partner who understand the battery and who understand the regeneration service? So we need a partner in each country Because we cannot do a regeneration service by ourselves We can we can surprise the product and we can teach and guide how to do Regeneration successfully and I know you were here Four years ago here at ITU telecom. Well, I wanted to find out from you How how has it been going for you? How how how is business? well very good and Because we are small company. We cannot Move very fast as we would like, but still we are making a steady Progress and especially as you know after we receive the award a similar award from ITU telecom world It was a very good excellent tool for us to start a new business with new companies and in terms of The award itself actually I wanted to ask you what what impact has winning the award had on your business? And what has changed since winning the award? Okay? now we Supplying our additive and our tech regeneration technology which is used by Nitsu Shoji It's show these are big group company over Japan's number one logistic company called the Nippon Express and Before we came here four years ago in Budapest We already had the discussion for new business discussion with Nitsu Shoji, but It's a Japanese big company. So they do a extensive research before they make Decision and we are discussing and after it took almost more than one year until they finally made a decision to use our technology to Utilize our advice and finally we could make a deal and one important thing is we could Ah Reliability from receiving SME out from ITU telecom world because because There are person in charge of a new business Fully understood our technology and he was confident But they had to convince top management and the two come for convincing top management Yes, ITU award was very helpful for us Excellent. So you would recommend other SMEs to come here and to their products and their ideas because We didn't know about ITU much about ITU before we joined four years ago, but it is very effective and whenever I see a Japanese venture companies who have a Innovative unique technology. I tell them or there is such a Telecom world and you could join and there is a It's a good Platform and we we are really appreciate the ITU ITU telecom world and also I want to mention Three-person name Mr. Zhao and the Mr. Kawasumi Mr. Semmy those people helped and the guy did us very A lot and we are really thankful Thankful for this organization. Great. Well, I'm sure they'll be very glad to hear that in terms of Innovation in technology policies strategies. What do you think has the most potential to drive digital transformation? For our company, it's a little different from majority of Participants in this telecom world and that from our viewpoint Important thing is that people in developing countries non-electrical regions to our countries and they need They need okay. I heard Roughly 50% of people in the world don't have access to internet. That's a big problem and We want to help them by supplying a local That's batteries because they they need a power and Power source and they need an inexpensive power source Well, that's wonderful. Well, look, we wish you the very best of luck with the next four years Yes, and hopefully we will catch up with you again soon. Thank you very much for joining us in the studio. Thank you very much Thank you


As you guys can see, we got a little change of scenery. I decided to pick up this game called Outer Wilds.  I'm kind of nerdy, so I like learning about the solar system. And tea! I've actually been playing this, getting a feel for it. You know, I've died, like, five times already. I've been messing around on what's it, whatchamacallit, fucking, the deep dick? No, it's not what it's called. It's called Blue Deep. Something along like that?  What's that?  That's frickin' sketch. Okay, well, we need to land it in the trees. It's good enough for me. Oh, my God! It's not broken, it's just camouflaged. We're gonna go over here. Chachow! Oh, slow down, eh. Very nice. Very nice. Venice? And Venice? Dude, let me in here. Come on, dude, what's this? What's this, eh? These guys were escaping from here?   Yeah, there he is. Oh, dude, that just scares me. Like, I need to find a good plan for getting through here, because I've died the past couple of times. What's this, say, use caution.  You must not slip.  I've slipped like 10 dimes. I keep getting fricking spit out into nowhere. A million miles away from my ship, and then I just, they don't even let you have a suicide option, either like a kamikaze option.  Or at least, you know, that's just what I've experienced.   Seriously, props to them. This environment is just great. It's so fricking cool. What's this, say? Be sure not to wander far from here, though this area is somewhat unstable. It's safer than any we've found so far. The temporary settlement is finished, but remember to be cautious of falling rocks and dust traded by meteor impacts.  I'll heed your warning. What is this stuff? This knowledge is too dear to lose. Here's everything we can recall about the signal we accounted while aboard the vessel. The signal was older than the universe itself. This is the most significant detail. What? They picked up a signal. There was like three big veins. So what I'm hearing? Imagine what rare and profound knowledge it might offer when we find this eye of the universe. I'm assuming it's something from a different universe, which is bigger and older than ours. They're visiting to say hi to the smaller universe. Just got tons of stuff to read around here, dude. Do I keep falling? Do I keep dropping down onto these? Dude, this is scenic. Let's over yonder. Oh, oh yes. Oh my gosh, look at that. Holy, you see that, boys? All that shit's going right into that big daddy black hole.  You see what I'm talking about.   I'm doomed to waste even more time. Frickin' A, bud, I know. I am fully aware that I'm using oxygen right now as a propellant. I can't wait to take those last few breaths. No, not cutting it close. It's called suicide, bud. All right, let's get going. If I'm being honest, I don't even care. I wanna go back on that planet again.  Autopilot, engage. Come on, we're waiting for the trees again. All right, let's see what's in here. Just kidding, we already know. All right, round two.  That's cash money. All right, we just gotta make sure we don't go anywhere too weird. Just walk right into the black hole, dude. Don't even gotta get sucked into it. There's a direct path to it. No, I'm just kidding. I hope this is something really cool. It's looking less cool. Looking more like the place that I got sucked from. Hawks floor nonetheless. Looks sturdy. I don't think it's gonna be breaking. Oh, look at this. There he is, just chilling at the table and dying.  He's like, I understand starving to death when I had no resources, but...  How do I even, how do I look? See, I detected nearby.    I need to find that planet.   We'll not stand for it. Daddy's coming, maybe he's still, but he's coming, he's close to ya.  It's creepy, it's weird. Excuse me. All right, we're landing. We be landing. I know where I wanna go. I wanna go right over here. I don't know where to get Chouserville. Bam, look at that, freaking, oh, almost. That control, that pizzazz. Bam, landed it perfectly too. Almost, almost landed it perfectly. Nearly landed it perfectly, perfectly landing, nice. Oh boy. All right, do this again. Getting a little bit better at these controls. So, just fucking, beautiful, beautiful. Oh my gosh, dude, I'm a legend.  I'm not gonna try and speedrun. I don't even know if that's a thing in this game. I guess we're gonna explore a little bit more over here. I'm just not gonna take any weird paths, so I'll just walk around, mosey around, look around, see what's going on. Such sad, dramatic music. It's almost as if an entire civilization lived here before and either were exterminated or just couldn't keep up with the black hole.   Oh, I feel like it's a really bad idea to go with these lower ones. This looks cool, though. Ooh, spicy. Ooh, spicy. A little bit spicy. Spicy. Spicy. Well, this makes a whole lot of sense. Obviously, it makes tons of sense, thank you. It was precisely in one of these little spots.  We are not dealing this again.  So, not today, Satan. I hear the music, but be sure not to wander from here for someone and stay as safe than we found so far and temporary. So I was finished for a moment to be cautious of falling rocks and dust. Okay, I understand, understood, okay? I'm just curious, how do I get to that big old fat city over there? Does this have something to do with it? Like, I'm confused, is that what this is? Okay, I already read that.  This is bad. Very, very bad. 60 freaking seconds. I need some oxygen, yo. I need some oxygen. Is there any oxygen in here, guys?  Oxygen, yo. Oxygen, where is it?  Dude, where is the oxygen?  Oh my God.  Unrelenting, dude. Ruthless freaking game. All right, it's okay, we'll get her done. We don't get her done. Surprise, motherfucker. Median, it's time. I simply ran out of oxygen because I was having so much fun exploring, dude. I died from that.  Good, good, oh good.  Again. There's a master alarm? How do I use that? How do I use the master alarm?  I'm coming for you. Aligning flight trajectory. Accelerating torrents and detonation. I'm firing retro rockets. We're gonna have a soft landing. Softy poo landing, come on.   I just lit on over there. Oh, you know. Oh, you know. That's what I'm talking about, all right.  Okay, I trust myself.  Ah, ha, ha, ha, ha, ha, ha, ha.  Oh, thank God.  Okay, I'm just gonna keep going up.  Look at that. This looks nice and tall. It's like people died in here, maybe. Picnic baskets. This is just a whole straight, nah, it's not a whole straight down. So we're here. Just a neat little view of everything. All right, falling down here. My life is in your hands, God. Um, who was he able to board in a state pod at all? Ooh, that's sweet, sweet, actually.  I was looking for this goddamn thing. This is also dangerous. Yep, that's why, that's why this is dangerous. Close calls for all. That thing, point somewhere. Is it daring me to fly over there?  I doubt that has any significance of what I think it means. I'm not gonna, I'm not gonna fly over this. Okay. Was that me? Am I dead? Nope, okay, thank you, Jesus. Take a look over here. Okay, no, now we're good.  Please. Beautiful sweet release. We don't get her done. Okay, yeah, it's me. I know, ha, ha, ha, funny, funny, funny. Let's try and roast a marshmallow again. Stend my stick outwards and, oh, okay. I'm just not very good at this. Okay, I'm done. There's a point where you just gotta realize it's not worth trying. Not worth your goddamn time. Much like this game, is this worth my goddamn time?  It's pretty fun.   Maybe I just have horrible hand-eye coordination.  Bam, boom, bam, boom.  Probably not very high. Oh, this looks, no, this looks good. This looks very good. I'm just a trash can, so. Okay, we're landing. Damn, I really heard this thing. This looks cool. Oh, what's in there? That's gonna be my interest peaked. The trees are moving, the trees in this grove wander about freely the entire plant, roots, and all. This is not normal, even. What? Okay, weird, dude. Stuff moves unusually, significant we should study it. Could it be what is causing other nearby to also move about this area? I mean, maybe if they're gravity crystals, there's definitely a possibility there. It says beneath the feet lies the tower of quantum knowledge. If you're ever preparing to make your first pilgrimage to the quantum moon to send the steps to the entrance below the knowledge held within, we'll help you on your journey. Quantum moon sounds pretty freaking sick. Hello. So, I think I will descend these steps wherever they might be, right? Oh my gosh, I was literally on the steps.  I'm descending said steps. This looks super interesting. Southern Observatory, interesting. See what's this? Edges to the Tower of Quantum Knowledge. So, okay, I'm gonna do this. Yeah, because that was the original way. I'm just kind of afraid because it goes into a freaking thing. Ooh, scary, dude. This is the Quantum Knowledge place. Be welcomed in this place above you stands the Tower of Quantum Knowledge. If you're making your first pilgrimage to, okay, I understand. That's not, I can't do it though. Cause it's broken. We're screwed, bud. Unless we use our big boy brains and... Oh, no, no, no.  Do you hear? Which way do I wanna go? Let's go this way over yonder. Dude, this is honestly pretty sweet. I'm really liking this game. Apart from me dying like every two seconds, which I mean, honestly, that's the purpose of the game. Purpose is to die and explore.  So, oh dude, we got friends here. Right back. Can I ask you something? What? Where should I? Yeah, I wanna know. Where shouldn't you explore? The Hayen City. You can kind of see it from this. It's also this big dome on the South Pole called the Southern Observatory. No, no, no, no, no. That shit's just falling behind him. Nice, good conversation, bud. Appreciate that. I'm curious how to get there. Sleep in a bed. So that needs to be swapped. What does this say? Tower of Quantum Knowledge, yeah, I know. All right, maybe I should go this way again. Oh, dude, no, what the heck? Did I maybe escape it? Yeah, I think I maybe escaped. Very slim, slim, slim chance. Yes!  Get out of here. Oh, I hate this game. That was butthole clenching, man.  There's literally these gravity freaking rocks right here. Stones, stones, what's it say? Gravity crystal workshop. So these guys are the ones that made the gravity crystals. Interesting. I thought for a second that we made them. I was thinking, can I make that? I can totally make that, dude.  Okay, we're making some good freaking timing on this. Oh, hey, dude, what am I going up for now? What does this do? Okay, I'm a little nervous about this. Oh, that's all it does. I don't even know where the heck I am. Yep, this is most certainly a new spot. What? That's so cool. It's like a little entrance. That's super dope. All right, I'm going back the other way. I gotta go somewhere else for the other ones. Go down here. What is this? Oh, nice. Is this the forge? What did I do just now? Oh my gosh, look at that. See if I can like jump on that black hole forge thing or something. I really hope this place doesn't fall while I'm trying to do it. Okay, I can get this to go up.  And I'm gonna try and find another entrance because I know that the black hole forge thing is like right over here. So, I'm gonna see if there's another way in just out here. This could be the forge. I think this looks special. Oh, dude, it is. Oh my God, this is the forge. Heather, how do I do this? Oh, sweet. All right, this is a pretty decent run if I do say so myself. The Hanging City is below. Oh. I need to find a way to get underneath this thing then. Thanks. Can we not? Can we not do that? Can you just? To our friends on Brutal Hollow, I just warped here from White Hole Station. What? There's a White Hole Station over there?  All right, this is fucking, this is crazy. The White Hole Station.  I don't know how to feel about this.  Oh my gosh, please. Whatever that is, stay away. Okay. Cause I am afraid of you. You stay over there.  In a perfect world. Maybe I can just go up here.  I'm here to find something. Has anyone observed the phantom moon that sometimes greets us? There's, okay, there's a phantom moon now. So it disappears. Suppose the moon is too shy to show us its face. Interesting.  It doesn't even care about gravity. This is all cool, but I guarantee there's another place over here that needs to be explored. Probably has some answers for me. What is that? What was that? And what is this? I didn't see this. Come here. Here we go. What is this thing? Probably should wear this. Spare jet paraphernalia. Oh, that's all it's. A good, seems like a good guy is just being a good guy over there. So, so we will have fuel to explore even more. I need to make sure I do not run the set like that. No, no, no, no, no. No, dude. No, no, no, no. Come on, baby. Give me a second try. Please, please, please, please.  Too good. Wait.  That's what that was. All right, well, I'm kind of tired of this. I mean, actually I had a lot of fun, okay? I'm gonna give another crack at it.  You know, I wanna see what they're up to. This has been a good one. It was nice playing a different game.  And, oh, right time for Snooper Supernova. I'll see you dudes on the next one.


Hello everyone, I am Vaishnavachad from Texas Instruments. I would like to talk to you today about picking device drivers for achieving real time or deterministic performance in embedded systems using RT Linux. I work with the Texas Instruments Linux development team, primarily working on Linux and Uboot for TI devices. I also maintain the TI platforms in SAP RRTOS as well. TI has a strong history of open source collaboration, and we develop long-term sustainable products that focus on open source ecosystem in the device architecture phase itself. I have with me, Vignesh. Vignesh is a software engineer at Texas Instruments India. He commandeers the TI-AM64 resources in mainland, along with a few other device drivers as well. Also, Kirti, who is a significant part of the work, he is attending virtually, and he is a software application engineer in Texas Instruments India. So this is the, like, our view of the talk. So RT Linux is being used more and more in embedded use cases, and customers and users expect MCU-like performance from RT Linux. And traditionally, in use cases, where an external MCU was used, those are getting replaced by an application processor running RT Linux. So we'll just go through the first, what the problem we were facing on our DRA devices. We have multiple spy controllers, and using RT Linux, using spy in the DMA mode, with RT Linux enabled, we were seeing poor performance in the spy target mode. Spy target mode is the mode where we are the receiving entity, or we receive the clock and the chip select, and spy host mode is the controller entity where we initiate the transaction. In the target mode, the RT Linux host does not have control of when the transaction is getting initiated, so we need hard real-time capabilities to process or not have any packet loss introduced. And we were seeing also another issue in spy host mode, where we were continuously initiating transactions. We were seeing that, we were seeing latency spikes. So almost all the nominal transactions took 250 microseconds, but some transactions within a few minutes takes, goes to a five milliseconds spike. So this analysis, we are trying to solve the problem and make generic suggestions on how someone can extend to their own solutions as well. So why do we care about these latencies? So now RT Linux is more and more getting used by customers and users in embedded use cases, where a traditional MCU was getting used, and the expectation is to have an MCU like real-time performance, so that they can have a real-time deterministic performance and also the versatility and the flexibility provided by the high-level Linux OS. And this demand for the deterministic performance is very high when we are interfacing with external peripherals in an embedded system, and this demand is getting even higher when the RT Linux host is not the controlling entity for the external peripheral. The external peripheral starts the transaction and the host does not have control over when the transaction can happen. So we need real-time capabilities and with the common embedded buses like SCAN, SPI, UART, or the ones that request these deterministic performance. And of these, SPI is the simplest one and the most popularly used one because of the simplicity and the low cost. So these are some use cases that we came up with that were getting used with SPI. So in industrial robotics, we saw ladders were getting interfaced with SPI. So in this case, the host processor running RT Linux is the controlling entity or the one that initiates the transaction. So we have all control over when the transaction starts, but since it's a robotic application, the system demands some deterministic capture of that sensor data, which is very critical for the system functionality, like taking the leader data and performing the motor control. Then we see use cases where the host processor emulates the SPI target on it. And in these use cases, it is typically being used as SPI is being used as a device management interface. So it's used like there will be an external supervisor which used to control the host running RT Linux and it's getting used for different purposes like firmware management and also like an external watchdog doing a ping-pong of the RT Linux host. So we know that it's important to look into these latencies in the typical embedded systems running RT Linux. And so we will go through the steps that we went through to analyze and reach our solution. So the first thing we would do before going into the device drivers or analyzing an RT Linux latency issue is that ensure that your platform can run RT Linux and get your expectation correct. So first thing would be to get your platform, get working with the preempt RT kernel. The RT Linux wiki has all the details for it. So this was also discussed in multiple talks in RT Linux mini-conference and ELC. So the first test that we run is the cyclic test. So this test measures the threads intended wakeup time and the actual time at which it wakes up. So this is how we get our expectations correct and we get our overhead correct for our future budgeting in our RT stack. So this is the example command we run in one of our TI K3 platforms. This was before the next thing, but we wanted to keep it as it is so that it's not overlapped. And from Thomas' comment, it's actually fixed, right? So yeah, yeah, but apparently if we go to the next slide, the OSDL benchmarks are still running with the same command. So this is what we get when we plot these results. And so you can see that the almost most of the threads wakeup time is between 30 to 40 microseconds, but still there are some excursions to 70 to 80 microseconds. So from this plot, you get your expectations correct and you can get an understanding of what your particular platform performance can be when you run RT Linux. And RT Linux or the real-time or the performance is something like a system concept and it's not, we need to ensure that the complete system is tuned or the perfect for this particular workloads. So there is a tool called LM Benz, which is used for DDR bandwidth and latency analysis and it's used for identifying any bottlenecks in the hardware. So all these tools have been discussed in their own particular talks. I am just going through what generic steps, what you can do to ensure that RT Linux runs on your system and what expectations you can have. Then there is RTLA TimerLat. It's a front end to the TimerLat tracer and it helps you identify the scheduling latency in your system. And once you have all the benchmarking and all done and you have your expectation correct, then next thing you would need to check is your configurations. Let's say you have some extensive power management configuration on your RT Linux system, then it will hinder your performance or extensive debug configs. So that would be the first thing to check then the real-time policies, then you have multiple tuning knobs that you can have as part of RT Linux, then you can, even the application process, you can bump up the real-time priority and all these details are available in the RT Linux Viki as well. So in our case, we fundamentally had issue with our device drivers, but if you have some issue with the device drivers, even if you have all these tweaking knobs, if you have a weak path or a slow path in your device drivers, even if you tweak everything using all these options available, you might not be able to get the best performance. So, and it becomes more complex when you have more than one subsystem interacting, like you have this pie in DMA mode where you have this pie core subsystem, then you have this pie device driver, then you have the DMA engine subsystem and the DMA controller driver. And also in this case, we were using user space to trigger the spy transactions using the spy driver, then user space application also plays the role. So this debug becomes a little bit complex when you need to have an overall picture to understand where exactly the latency is. So I just wanted to give a quick overview of what is why almost everyone would know it. It's a simple embedded interface, synchronous interface, where you have the clock, then you have the data lines and there is a chip select. So spy can operate in host and target mode. Host is the entity that triggers the chip select and starts the transaction. And it's also the same that provides the synchronous clock. In Linux kernel, we there was historically there was support for spy host mode or the controller mode. And we forwarded it in, the spy target mode support was added and six spy controller support target mode as well. So why do we take or discuss this spy target mode in particular? So because if you take UART or I2C, it has its own flow control mechanism. So UART has ready to send flow control signals which helps to introduce a flow control between the sending entity and the receiving entity. We have something like that in I2C as well, but for a spy target host target, there is nothing as no standard flow control mechanism as well. And the next issue is that the transfer is full-duplex. So the RX and TX packets are sent at the same time. And in Linux, if you are running on a spy target mode, you cannot have the response for the incoming packet in the same packet itself because RX and TX, it happens in the same packets. You will need to have more than one transfers to have the proper response to the sending entity. So these are some challenges with spy target mode in Linux. So I told earlier that we faced the latency issues. The first thing that we did when we faced the latency issues was to analyze what's happening in the spy subsystem. So are there any work use or tasks in this spy subsystem, core subsystem that can affect our performance? So what happens in the spy subsystem is that we have the spy client driver that pushes the spy transaction messages to the spy message queue. This is a controller specific work queue. And then it goes to the spy controller driver. The spy controller driver performs the setup, then initiates things like the DMA setup, and waits for the completion of events. In the CPO mode, it could be the interrupts. Then in DMA mode, we will be waiting for the DMA completion as well.  So when the user space initiates the transaction using its spy driver, so we call the spy message Ioctel, then it goes to the spy core subsystem, then it goes to the controller, it performs the setup. Then it queues the DMA operations to the, it sets up the DMA, then the DMA engine configuration is called, then the specific DMA controller driver is being set up, and this transaction is queued in the DMA controller queue. And on the hardware, we perform the setup and the transaction happens. So this is what happens during a spy transaction with DMA enabled, when triggered from user space. So earlier, we saw that like, we saw a large latency. So we captured the trace using traceCMD and analyzed it using kernelSAR. So we saw that the RX happened within 800 microsecond and at TX, it took 850 millisecond, which was very large. And if you look at it, it was a full duplex transfer. The RX and TX actually happened in the hardware at the same time, but we got to know it 850 millisecond. So this is one of the worst case capture we had, like some 100 milliseconds as well, but compared to what the transaction size was and the clock speed was, this was way of our expectations. So then we found that the delay, the most of the delay is getting introduced by the DMA controller driver. Initially, we did not have a suspect of the DMA controller driver because we were just queuing the DMA requests and waiting for the DMA completion in the spy driver. Looking at the spy driver, we could not find this issue, but looking at the traces, we can see that the most of the time is getting taken with the DMA check TX completion. And the spy driver is waiting for that completion as well. So then we found another option. So we discussed that the spy core already has a message queue for the each controller, and there was a way to bump up the priority for this message queue to make that the message queue, the work queue real time priority. But in our case, the delay was already introduced only by the DMA driver, but I'm just discussing this in case someone wants to. So we can look at subsystem level tweaking option to change the work queue priorities and all. So then we analyzed our spy controller driver. So then we found that in looking at the spy controller driver, the issue is not very evident because we are just queuing the DMA request and waiting for the completion at the spy driver. Then we had a look at the DMA engine and the DMA driver. So we saw that the typical operations that happens, we submit the DMA request, then it goes to an async issue pending queue. Then we wait for the completion and once the completion happens, we call the callback from the requesting entity, in this case, the spy controller driver. So there is a very two level deferred work queue setup in this DMA engine driver that we found out. And so we saw that most of the delays was there in the UDMA TX completion. What happened was that in all our SOCs, we had something like a network on chip architecture where there are multiple DMA controllers. So there is a central DMA controller and there are small DMA controllers nearest to these peripherals. So what happened in this deferred tasklet was that we were checking the status of these peripheral DMA controllers and checking whether the complete transaction, ensure the pipe is flushed before marking the operation as complete. So all the issues in our case was caused by this tasklet or deferred work queues and in a generic case, we were having a non-RT code path in where we expected an RDP performance. So just to add the way the DMA works is that once the DMA transaction is done, there is a tasklet that gets scheduled, which then informs the client that submitted the DMA request that the transfer is done and does it all back to that. So that's one level of tasklet and it is per channel and it depends on number of channels that are in use and it's kind of a shared, there are multiple threads as you can imagine and they are all competing for the same set of resources in the system. So I mean the scheduling time that is. So to add to that, we have described in the second of the architecture that we were working on had an additional layer wherein we had to monitor multiple DMA endpoints to be able to successfully say that the transaction is done which is in combination of IRQ and a threaded IRQ bottom handler. So basically we had at least three threads in the system, one is a spy message queue which is where the data is coming into the driver. There is a queue through which the submission is being reported back to the driver and a queue within the DMA driver itself that's also playing the role. So there are at least three or four threads that are competing here to get the things done within a given amount of budget that we have. Sorry, go ahead. Yeah, so these are all the three places that indicated the latency graph like we just mentioned. So what we did was just tune the priorities, make all these pipe controller pump messages to the work queue as real-time priority, then make the DMA tasklet as real-time and higher priority and also convert the work queue within DMA driver to real-time priority. So even though this reduced the jitter and brings in a slight level of determination but we still had these deferred tasklets and all the non-RT code in the real-time, RT path where we are expecting real-time performance. So the best thing to do would be to eliminate these non-RT paths and eliminate these deferred tasklets in your code. So this is what we did to make the DMA driver work queue a real-time, then we saw how we made this pipe controller work queue also real-time, the pipe subsystem already provides an option for that. So then we discussed with the hardware engineers and found out a way that our pipe controller already has a way to provide an event that gives us a local understanding of the completion. So we can use that to eliminate all these deferred tasklets and completion in the real-time path. So earlier we were relying on the DMA, all this, we were checking up on the small DMA, peripheral DMA controllers and getting the understanding of the completion, but now we are programming the pipe controller to provide an event upon shifting out or shifting in a given number of words. So in this case, we have all these fixed size, this works for all fixed size packets and this was the case when we use pipe target mode always. So this is what happened, so in our new flow earlier, we were setting up this pipe controller then queuing the DMA transaction, then we were waiting for the DMA completion, but if you look at the DMA system, we have the data in the memory, then the DMA controller takes it to the pipe controller and pipe controller shifts it out. And if you look at it, so if the pipe controller could shift it out, then we already know the data has already reached the pipe controller. So if the pipe controller could shift the data out and provide an event, then it is already understood the DMA transaction is already complete. So in general, what we need to look for is if there are different tasklets, we need to somehow make, first thing would be to eliminate that task or bump up the priority for those. You want to add something? Sorry, so just to add to that, the point here is that we are trying to eliminate the amount of work that is done in a real time path. So defer all the works to be background tasks. The general way the driver is written may not always be the best choice when you're working with an RT kernel. So the general way of writing a driver is you would wait for a signal from a subsystem to which you have submitted a request for you to indicate that it is done. But because of the nature of how the Linux driver subsystems are, how we are interacting across the subsystem, there may be quite a bit of latency by the time you do get back the response. So the idea is that when you are writing an RT path and we are creating an RT path, you should kind of try and keep it as minimum as possible so that you can achieve much more determinism in the path. So that's the point that we are trying to bring out here that we had to kind of rewrite the spy driver that we had to look at the signals, to look at the indications that are available from the hardware at that point in time to kind of get the indication of that whether we are ready to take up the next request or start servicing the next request without always waiting for the round trip from the DMA subsystem for us to indicate the same. And you could always ask that we could entirely eliminate the other subsystems such as DMA, for example, here, but that has its own challenges. For example, with a spy target mode kind of a new case, the CPU just can't be quick enough to put data at the rate that the spy controller needs it. You may have to buffer it up beforehand, right? So that's one thing and the CPU itself is also working with other user space applications to get the processing done and get the data out as well, right? So basically the interdependencies would still be there and you kind of really have to make sure that the path is as small as possible at this point. Sorry, go ahead. Yeah, with all the new changes, like when we had rewritten the spy driver to use its own event and not rely on the DMA callback, so we saw significant changes in the performance and where we saw kind of 850 millisecond delay, which is very poor. We were kind of seeing some more realistic numbers kind of 800 microsecond per transaction, which was very well within our expectations. So and in RT Linux cases, we can bound this latency to what our expectations is, but to increase the robustness of the system, we discussed earlier that there will be an external entity that's sending the messages to the RT Linux host and there is no standard flow control mechanism. So we used a simple GPIO based ready signaling so that the target can signal to the host that it's ready to receive the message. So when we are using the controller in target mode, we need to have the message already queued because once the chip select is toggled by the host, we need to, and once the clock is set, we need to start pushing the data through the spy lines. So like we use something like a ready signaling from the client or the target to signal that it's ready to, and it's ready when it's queued the transaction. This is like increased robustness in an RT system and also it makes this pie target use case or more realistically possible in non-RT systems as well. So once we check the traces after making these changes, no, we are not relying on the DMA controller interrupt. Now we saw that the completion was happening within 800 microsecond, which was our realistic values. And we saw earlier that the RX was already happening at 800 microsecond, but only in the TX path, we were understanding that it completed after a long time due to those deferred tasklets. So this is what we changed. We eliminated UDMA, they checked completion path and on the DMA engine, we made some changes. So usually on all the DMA transactions, when we perform the DMA transaction setup, we will always be requesting for callback by default. So we made a change to not request the callback and rely on a local understanding or the controller level understanding in this use case. So this is what we saw earlier. After making this change, we saw that in host mode, I did not speak much about host mode here because as part of making this change for target mode or relying on the controller interrupt, we could see that the latency spikes that happened due to the deferred tasklets, that the root cause for that was also the deferred tasklets. That also went away and we saw peak latency staying less than 400 microsecond, which was realistic for the robotics control use cases. So I just wanted to show from our learnings, what the first thing to do for any particular system would be to first get the system, we can ensure that the system can work RT workloads and also get your budgeting and our expectations correct on what delays you can expect from the scheduler and also keep the hierarchy of state to minimum. And also in our case, we had the RT task that's despite transaction waiting on low priority work use on the DMA controller side. That was the root cause of all our problems. So we should eliminate those kinds of situations and just multiple level work use always kills the deterministic performance and we should try to rely on the hardware state as much as possible to make the software complex or make the RT path very simple. So if that kind of hardware features are not available, we should communicate that to the hardware designers as well. So these are the references we use. So we also did some testing with the, usually despite how we do testing is, we do a loopback of the MOSIMISO signals and perform the testing at the host. We don't perform a host target loopback kind of testing. So I have a GitHub where we mention how we capture the traces and lays and how we tested this in our system as well. Okay, thank you. We are open for questions. You said at the beginning that this SPI controller might be used without the DMA, right? Yes, this can be used without the DMA. So, but you will be going up with the CPU usage a bit and that was something some of our customers was not very happy with. So they want to not for this particular use cases, they wanted to use it with DMA. And as Wigner Schaller mentioned in the target mode, we cannot use it with DMA because we need to be already be ready with what we need to push through this SPI shift register. And CPU cannot be that fast to do that. CPU also has to do other tasks as well. So two things in host mode, we can always use CPU but customers prefer to offload and keep the CPU usage very low and offload things to DMA. Okay, thanks, that was my second question. Okay, I hope there are no other questions. Thank you everyone for your time. Please speak to Richard on the mic.