00:00 Michael Kennedy: As developers and technologists, it's easy to think that powerful and unique ideas will percolate to the top. If we build something amazing, enthusiastic users will find and share our creations. Sometimes this happens, but more often success is an iceberg on so many levels. We're going to look at one of those icebergs on this episode. Join me and Christian Medina as we discuss SEO, search engine optimization for developers. Some of your search rankings are out of your control, but as you'll see, there are many tools in the developer's toolbox that directly affect your search rank. Let's dive in. This is Talk Python To Me. Episode 263 recorded April 23rd, 2020.
01:21 Christian Medina: Hi Mike. How's it going? Glad to be here.
01:23 Michael Kennedy: Yeah, it's going really well. You and I, we were supposed to be catching up at Pycon and we're not actually.
01:29 Christian Medina: That's right. That's right. We had some interesting plans for Pycon on this year and we were unable to do that, but Oh well we roll with the punches and move on I guess, right?
01:38 Michael Kennedy: Yeah. What a bummer. I'm a little bit bummed that Python is not happening this year, but at the same time, you know, it's first world problems, right? Like everything could be way worse than we don't get to go to our [inaudible], but at the same time I really was looking forward to it and yeah, we had some cool stuff for the expo floor we were going to do together, but not to be, maybe 2021.
01:58 Christian Medina: That's right. I tweeted a little picture of all the badges and stuff. I had, I was going to bring online, but, okay.
02:04 Michael Kennedy: Yeah. I have a big box of stickers that will now have to wait until the next event. So welcome back. Welcome back. You've been on the show a couple of times. You first came on the show with episode 166 for Continuous Delivery with Python and that was really interesting to talk about continuous delivery, but it was also one of the shows that just had so many little tips and tools and techniques that was just like so many people wrote in and talked about. It was like, it was awesome and it was like, it was awesome even if you don't care about CICDs. So that was, that was fun. And then you came back and we talked about Python packaging and the options that you explored there. Well, what I'm wondering though is if somebody went to the internet and they did a search for those things, would my site come up?
02:48 Christian Medina: I could tell you mine won't. Yeah. I've been reading a lot about what makes all of that work. So in running the stuff I do, I try to pass. It's been interesting trying to understand how the internet actually works. You think you know how it works but you don't. You think you actually have control over what you see and how you get to it, but you also don't. So it turns out that a lot of that is filtered through a bunch of companies and those tend to be mostly Google, but Bing plays a little role in it as well. So that's why, you know, if you've ever had the situation where like you're talking to a buddy and you Googled something and you're like, why didn't you find it? I Googled it and it's right here. And then your buddy Googles it and the search results are completely different. There's a lot of stuff that happens in that algorithm that really has an effect on how well your pages show up on search results.
03:43 Michael Kennedy: Well, I think that that's a good indicator or data point for just how much the algorithms are playing a role here, right? Like if I go and search for something when I'm logged in, I get different results than if I search when I'm not logged in. And anytime I want to try to assess how is this thing actually ranking for the world? Like how is it really being relevant to others? I go and open an incognito or private window and do my search there because there's a lot of different things at play, right?
04:16 Christian Medina: There are a lot. And so for example, like I have like I don't log in like in my work account, isn't tied at all to my home stuff. The results are completely different when I'm at work and do Google searches. And so it's interesting because you know, one of the main reasons the internet is what it is, is like this freedom where everybody can post information and make it available to the whole world. But actually it turns out there's all these gatekeepers that have come up in recent years and it's all based on all the search algorithm and all the search engine rankings.
04:48 Michael Kennedy: Yeah, everything is free and there's like this abundance of information, but when there's too much of an abundance, then it's not providing the information or the actual information itself that's valuable. It's the filtering and the grouping and the directing you through and just mostly get rid of all the stuff that's not there. Right? Like, okay, what do I actually care about when I'm saying like, I need to learn this thing in Python or I want to read something about this news event? It's not right. It's trying to show it all. To me the actual role is to like not show me the stuff, like show me only what matters. Which I think is a, it's a little bit contradictory to the way the internet started, right? Like it started out with like, I don't know, I think of Yahoo is like the most prototypical early, early, early days where it was literally a directory like, yellow pages of the internet, right? So crazy.
05:40 Christian Medina: Yeah, that's right. It's all been kind of like incremental steps on how to make it easier for you to find stuff, but also how does the search engine determine what is a valid result for you? But you know, by them doing that, that means they have applied a filter on all of the websites in the world, right. In order to do this. And if you're just a lonely old guy that wrote something that you just want to make it out, Polish it out there, people finding it is not as easy as it sounds. Just publishing something on the internet these days is not enough.
06:08 Michael Kennedy: Yeah. It's not a field of dreams. Build it and they will come sort of thing. Right. So maybe let's take a real short step backwards and talk a little bit about TryexceptPass what you're doing there, what you're trying to grow there and whatnot. Just to give people a sense of like, why are you studying these things? What are you trying to do?
06:26 Christian Medina: Sure, sure. So, I started Tryexceptpass almost five years ago now. Just kind of crazy. As a medium blog. Right. And so then I had the domain name that tryexceptpaths.org and then, you know, I wanted to get off the platform and start building my own thing. So I have a, you know, it's a website, there's a collection of articles about how to build real world software problems you run into with engineering and stuff like that. And now we have a podcast on top of it, right?
06:52 Michael Kennedy: Yeah. Your podcast is pretty new, right? You've got like six, seven episodes?
06:55 Christian Medina: We're up to episode eight this week. Yup. Yeah. I'm going to be putting them out more regularly now. But yeah, so based on that, I really wanted to go hard on trying to get more visitors last year and I started to read about what I needed to do in order to make that happen. And I have discovered all this stuff that I thought about SEO as a SEO, meaning search engine optimization, right? Cause we technically haven't defined the term. So when people talk about how to make your website visible in a search engine, they're talking about optimizing it so that it shows up appropriately. Right? So I had traditionally thought about this being more kind of like a keyword thing that maybe marketing does or sales or somebody else does for a large company website. But I have the real life.
07:40 Michael Kennedy: Yeah, the site works, I wrote it for you now its up to you. Get it to rank.
07:42 Christian Medina: That's right. Your turn. Here you go. Fill in the fields and you're done. Right. But it doesn't work that way. It turns out you need a bunch of hooks in there in order for it to actually be picked up appropriately by the search engine algorithms. And I'm not just talking about the traditional, like there's always been these like robots dot TXT files or site maps, XMLs that help search engines a little bit. But it's a way, way deeper than that with a bunch of meta-tags and you know, formatting, and a bunch of stuff that we'll get into in a minute.
08:14 Michael Kennedy: Right. And, you know, performance is playing a much more significant role in SEO than it has traditionally.
08:20 Christian Medina: That's right. And one of the main things is that because mobile is such a big thing, then performance has become a lot more important. Like it's always been important because the better performance you have, the more global access your website gets because internet is not the best everywhere in the world. But with mobile that has become more of an issue because not everybody has like the fancy high-speed phones. Right. So it turns out that a lot of how your website is ranked is tied to that.
08:53 Michael Kennedy: So I'm looking forward to about all of these things. I just kind of want to put it out there at the beginning though, I feel like that it's so easy to fall into the trap of, well a little bit of like if you build it they will come, right? Like if I build something cool, people will eventually find it and it will rise to the top. If I build some amazing sites, some service, some product or whatever, I want people to come check it out. If it has merit, people will come and love it. And you know, stuff like this, as you know, the SEO, as well as like the other sides of marketing and just getting the word out, right? It's so tricky and vague. But it is actually what you have to do to make that succeed. Especially in a world of abundance like we are now.
09:37 Christian Medina: Yeah. So building great content is just like step one. However, there is still an aspect of if you build it they will come because if you built something that's fantastic that everybody wants to read, then more web pages will link to it and that also has an implication in your rankings as well. But yeah.
09:55 Michael Kennedy: I'm sure you probably don't have any insight to this answer and I'm just speculating. But, Google was built on page rank, which is sort of how many pages refer back to a given page, you know, super early days that was like the primary link and then people would go do stupid stuff. Like they would buy links on other domains like just pages of links or other really shady stupid stuff. I wonder at some point though, when is like machine learning going to be the thing that decides, right? When is it going to be just like, well there's a deep neural net.
10:25 Christian Medina: It already is.
10:25 Michael Kennedy: Yeah, you think so?
10:27 Christian Medina: Oh, it's big time. So that's why, that's why Google is pretty much an AI company. That's what they have, right? Vast amounts of machine learning to try to parse. I mean these things are reading the content of your web pages to decide how to rank it. It's not just about links, it's about the structure, the grammar, how many images you have, how well the images are formatted, how it flows, that's all machine learning.
10:52 Michael Kennedy: Wow. Okay. It's crazy. That's pretty awesome.
10:54 Christian Medina: Yeah. I didn't realize this was so advanced. I mean, I always kind of knew, but I didn't expect it to be this advanced.
11:01 Michael Kennedy: Yeah. Well there's so much money behind it, right?
11:03 Christian Medina: Yeah. Yeah, that's true.
11:04 Michael Kennedy: In terms of advertising, right? It's one of the most valuable companies in the world and that's basically makes them an advertising company. But the ads are around like this kind of stuff. So I can see, I guess so, why there's so much effort.
11:17 Christian Medina: And the other interesting part of this, that ranking algorithm, the SEO algorithm that Google uses generates entire industry. There's people that exist around how that algorithm works. And Google doesn't tell you how it works. It kind of gives you clues here and there. But what happens sometimes is they update it. And so then there's people that have been sitting at the top of the first page of your 10 results off of Google and all of a sudden become number 100 and there's like real economic consequences out of that. Especially for like blogging community, people that live off of a content that they produce in smaller websites kind of thing. They're always on top of that. Right.
11:57 Michael Kennedy: So let's start with defining a couple of terms that are up here. One is a domain rank and one is page rank.
12:03 Christian Medina: Yeah. So we've been talking about ranking a little bit. So what happens is each page in your website gets ranked and there's a lot of things that come into that and it's like you get a grade, right? And the higher the grade, the better. From the tidbits of information I've been able to gather here and there, that we just kind of talked a little bit about it. It's the content matters. How many words in the page matter, grammar, performance. We'll get into that later. The links from external websites that are linking to your page and the links from your page that are going to external websites, not just how many but like what specifically, how that hierarchy is set up matters. Right. And so that gives you a grade, right? And so then to your page, but there's also a grade to your domain. So like I have Tryexceptpass ORGE and that has a rank and that rank might, I just checked just a little bit ago, that rank was in the thirties, 33 or something like that, which is, I'm actually happy about that, which is not a great rank but, it's good. Cause I started in the twenties but it took me a year to get to 33.
13:10 Michael Kennedy: Now, where do you check this rank?
13:12 Christian Medina: Yeah, so there's a bunch of tools that do this. So, aside from Google having their own little internal search engine ranking stuff, there's entire companies that do this and so I use moz.com but there's also Alexa. I've seen some of those. They have some free accounts you can get with them that gives you some extra information on, allows you to do some searching and limits how many searches you can do. But you can also, you know, if you get like a full blown account, you can like get into like a nitty gritty details, but those guys keep their own thing too. Right? They give you a ranking, but it's not the ranking that Google's giving you. It's just an approximation of what we think Google will be giving you. And really, really the key player is Google. It's crazy.
13:57 Michael Kennedy: Yeah. I mean there are other search engines, but they're pretty safe to just ignore them. Right? I mean there's Bing.
14:01 Christian Medina: Yeah, Bing still gets a little bit, but.
14:06 Michael Kennedy: There's Duck Duck Go.
14:06 Christian Medina: Yeah. Actually I've been using Duck Duck Go for six plus months now as my primary search engine.
14:12 Michael Kennedy: Yeah. Okay. How's that experience been?
14:14 Christian Medina: Yeah, it's been working nicely. I like it. And they got very, very similar. It's also what you get out of Google search, but, you know, they're still building up their stuff. So every once in a while you still got to do the Google search.
14:25 Michael Kennedy: I don't know. I've wanted to use Duck Duck Go and I very much support the privacy side of things. Like I would prefer to give less to Google, although I don't hate them. I think they offer a lot of great services, but I'm a big fan of using Firefox over Chrome for example. Duck Duck Go seems like a really easy choice. But like searching for stuff is so essential that like even if it was down 5%, I feel like I really want to do that to myself. You know, like, I'm trying to find that one. Like the red race condition for sequel alchemy. I'm like, I just don't want it. Like it's already, I'm already frustrated a lot of times if I'm in that kind of scenario and I'm like, I really need the best answer. Like the best answer.
15:04 Christian Medina: Yeah. So I've had a few of those lately and yeah, it helps, you know, the Google algorithm is better for some of that stuff.
16:05 Michael Kennedy: We talked about domain rank and those kinds of things. So I went to moz.com and I clicked on free SEO tools and that comes up and says enter your domain and we'll tell you a couple of things. And then also went to a private incognito window and did a search. So one of the things that I am a little bit proud of, impressed with myself that I was able to do, is that if you do a, it's super important that you're not logged in, right? Cause it totally could vary on your history. At least where I am now at the time it is now has been here for awhile. If I go to Google and I searched for free Mongo DB Python course, the number one result is freeMongoDBcourse.com which is my course for my like, landing domain and like number three is Mongo DB's actual free courses, are taught in python. So I'm feeling really good about that. I put that into that domain. There's only one page there. Right. So I think that hurts it a little bit. But if the search lines up just right, it's okay. So because it only has one page, it is like a page basically, the domain authorities 22. So that's kind of, okay. I'm not sure what to think about that, but.
17:22 Christian Medina: It's low, but it's okay.
17:24 Michael Kennedy: It's low, but it's like one niche thing, right? It's ranking. Keywords are 36 I don't know what that is, but the spam score is only 2% so that's pretty good. And then I threw talkpython.fm in there and that's domain ranking of 49.
17:37 Christian Medina: Yes. That's very good.
17:38 Michael Kennedy: Yeah, that's awesome. And it's spam score is 1% and it has one point 6,000 ranking keywords.
17:44 Christian Medina: Sure. Okay. Yeah. So the ranking keywords is the, the stuff that says search would use to figure out whether to list your website as a result or not. Theoretically, the more you have, the better.
17:57 Michael Kennedy: I see. It. Shows also shows you cool things like here are the top ranking keywords and it's, I guess this is where it ranks. If you were to search for this like Python podcasts, it's number one, async techniques and examples in Python. It's number one. That's kind of cool. And then it has like more by number of clicks. So it has like a Hundred Days of Code where we're not that high, but it's like there's a ton of search clicks for it. I feel like this actually gives me a lot of pretty interesting information.
18:28 Christian Medina: If there's another tool in there about link research and you can pop your website in there and it tells you the things that link to you. That's also important. So we were talking about your rank, what links to you matters because it helps me rank but the quality like the domain authority of the sites that are linking to you is a modifier on how much that link matters to your website. Because there are aggregators. So like I found that like I have a bunch of aggregators that linked to me, but their domain authority is so low that they don't really affect, those links don't really affect my stuff.
19:04 Michael Kennedy: Yeah. So it was like multiplying by zero. Right. These links are coming in but they mean nothing because they're like so badly ranked.
19:10 Christian Medina: That's right. And interesting, we talked about like my domain rank for tryexceptpasses is 33 but some of the pages in there have a different page authority. Like the microservice article of mine has the highest page rank of page authority of 52.
19:26 Michael Kennedy: Oh, that's pretty good.
19:27 Christian Medina: Yeah, it's interesting how all that plays a little bit and so if you go to that tool that does some link research for you, it'll show you the number of links you have as well based by the domain authority of the linkers. And that brings me to something else we'll talk about later about how you do your A tags, your [inaudible] tags in HTML and why that matters. Well, we'll talk about that later.
19:50 Michael Kennedy: Yeah, I think there's some really some of these great tools out there that I think people just don't think to use. Like I used Moz a long time ago when I was setting up my training sites to try to understand how I might make it rank better. Then I actually forgot about it. I didn't forget about Moz, but I like it went off my radar and I stopped using it. Like, I literally haven't been to moz.com or whatever the URL is for like a year. Right. But I should be going there frequently and like looking at how things are evolving, what are new trends and how can I get involved with that? Like what has some traction and what can I make it grow? Right.
20:26 Christian Medina: You got to be careful not to do it too often because all this stuff takes like weeks to propagate. It's like changing DNS servers or something, you know, it takes days. Well this takes.
20:38 Michael Kennedy: Does it work now, does it work now. No, you really need to stop asking and just wait a while.
20:39 Christian Medina: Yeah. So in terms of tools, while we're on it, like the Moz one's great for getting domain ranks and links and stuff like that, but there is Google search console as well. Have you used that one?
20:50 Michael Kennedy: I have used that one and that is pretty good. You can say, show me some of the keywords. How do I rank against them? What are my keywords? And you can trust that even a little bit better because it literally is from Google, right? Google says, just tell we would rank you for this thing.
21:04 Christian Medina: Yeah. And the interesting part is you get like how often people have been clicking in search results to your domain. You get total number of times you've shown people your domain. Like I was looking at my stuff, I have like 2% average click through ratio is what they call it. So my domain has been shown 240,000 times in the last three months I guess. And out of that it's been clicked 4,800 times and it gives me the average position that shows up on the Google search results. And the goal is, like you said earlier, to bump that into at least the top 10. Right. And depending on what, and you can play with that to find which search keywords give the highest position. Like I have, if you look for distributing Python applications, I'm number four, according to the search console. Right. But the domain just in general is on average of 20. It's a lot of little things.
21:58 Michael Kennedy: Yeah, there are. So, let's see if I go here. Yeah. For I got to have a range. I guess this is, over for the last couple months, search results, 18,688 total clicks. That's pretty cool. The other one that's really interesting, I guess we should maybe talk about this is like definitely on the developer side is error pages, site mass, that kind of stuff because the next graph that I see here is a graph that says here's the coverage of our searching of your site. You have 3,573 valid pages which might blow people's minds, but there's like all the courses in every lecture of the course of its own transcript, landing page for SEOs, somewhat and for usability, like there's a ton of pages and then it has the number of errors. Right now I have zero errors and 3,573 valid pages and it shows the growth of errors over time and pages over time. And I put a lot of work into making sure that my site map is like complete. How much do you think that matters?
22:59 Christian Medina: It's important and they use the site map to figure out how to crawl. So, not only is that important for your main page, so you have a staging page. I don't know how you do your stuff but like I have like a staging version of Tryexceptpass, where I try stuff out. You can configure stuff not just with the site map but with, with like robots. Dot TXT. So they don't crawl those pages cause you don't want those to show up and affect your search results, especially because they're going to have errors and stuff like that. So as a developer, that's one of the things you got to worry about. I was working on a website for my company and application service a while back and that's like we had a staging version. I didn't know about any of this and I'm like, Oh man. So our domain, we had like staging done our stuff and just the regular production version. I'm like, Oh maybe all this effected our page rank out on the real unit. Right.
23:48 Michael Kennedy: Yeah. It's basically, it might divide it by two, right. Cause it's the same content. And so.
23:53 Christian Medina: That's right. So that brings me, might as well talk about it now. So, so we've been talking about links, so having copies of your content counts against your rank, right?
24:03 Michael Kennedy: It basically dilutes the value and then other things are able to get above it, right?
24:07 Christian Medina: Yeah. So essentially they try to figure out whether you're plagiarizing your own content, like whether the domains are plagiarizing it essentially, right? So if you have like the exact same article show up somewhere else, that becomes like that whole page, that whole article, both yours and the other person's, will have a lower ranking compared to yours. And so that's why like if you go to sites like dev.two when you publish something there, you can link to your article, to your original source and you add an extra piece of information in the tag, in the HTML tag that says this is a canonical link. So that means that the original source, you're pointing to the original source and then the search engines won't count dev.two against your original article And they will actually compliment each other.
25:00 Michael Kennedy: Right. Okay. So I ran into something like that recently. I had the strangest problem, which I came up with an even stranger solution to. I spent days, days trying to solve this problem. If you went to talkbyphone.fm/forward/or training.talkbyphone.fm/four/i don't remember which of those two sites it was that had the problem. They are both on, they're both on a boon 218 they're both running engine X. They're both running the same type of certificate. They're basically identical servers. One of them in Safari, whether it was mobile like this is actually where it matters a lot. It's like all of iOS. You would go to one of them. It would say it was an error where like the site said it disconnected, like the connection was reset was the error. You look at the log, it was fine. But any other page on the site was fine. Like slash episodes was fine, slash about was fine, slash anything other than slash home was fine on one server. The other server was fine everywhere. I spent days trying to figure this out and figure out what the, like everything I could tell the two servers were set up the same and I just finally said, do you know what if iOS is happy with slash anything, but the slash like by itself, I'm just going to redirect it to slash home and have slash home be like a copy of the homepage. That is for anytime I connect to Safari, I'm like, dude, we're just going to redirect you to like another URL that's deeper in the site, but it shows the same content because that one renders fine and just before I slashed, you know where I thought I was like forget this. But what I didn't think about was the SEO impact of that, right? Because if Google comes, today I want to be Safari, let's see what's up. Like, Oh, I'm over on this other page, which looks like the same content as Chrome saw yesterday on forward slash, one of the listeners said, you know you over the same content. You really should use this REL equals canonical on there. And so what I did to like stop undermining myself while still making iphone to work was it just put like do a test, like if it's slash home in the template, just put a meta tag that says or whatever kind of tag. It says REL canonical is the forward slash URL, not the forward slash home URL. But this can be used in other places, like if you want to write on Medium, but also on your blog, but have your blog get the SEO juice.
27:26 Christian Medina: I don't know if it works on Medium.
27:28 Michael Kennedy: It worked in some others, like dev two and other places.
27:30 Christian Medina: Dev.two has it like in their stuff to set it up. You have the capability of doing that. In Medium, I know you can add some HTML stuff in there, so it might, that's one of the reasons I got off of Medium a while back.
27:42 Michael Kennedy: Honestly, I'm not a fan of Medium. I think it's a beautiful site. It's a nice experience, but I, it just, there's just.
27:49 Christian Medina: The paywall killed it for me.
27:50 Michael Kennedy: There's just too many things that go against the grain. Like, I'm not even against a paywall. Somebody says like, I want to do like deep writing and have people pay for that. That's great. Like that's their work and their choice. But I feel like Medium was built up on the back of this is a free place that people can do awesome writing, let's all get together and then like yank on the rug and now it's paid. Right. You know what I mean? It's like, I feel like they didn't build on that ethos and so it's like a bait and switch. Which is why I don't like it. Yeah, yeah,
28:18 Christian Medina: Yeah. That's what killed it for me. And so like for me, that switched off of Medium, it was really hard. I mean, I still get people following me on the Medium article. Right. And I'm like, how do I bring that traffic to my website? Right?
28:31 Michael Kennedy: Yeah, yeah, for sure. So while we're on it, this is not exactly SEO, but it does talk about rank and keyword and relative stuff and it's really good for exploring other sites. So have you played with Similar Web, similarweb.com?
28:46 Christian Medina: No, I saw you added the link. I pulled it up but just barely looked at it.
28:51 Michael Kennedy: Yeah. So if you go in there and you just type in any domain, like you could type in like talkpythonFM or you could talk real Python or [inaudible] or whatever you want. It'll come up with a ranking. It only has like tons of information for sites that are ranked well enough, but it will show you like traffic over time, month by month. Right. So right now it says I'm getting 56,000 unique visitors a month who spend an average of four minutes and visit 3.45, 3.42 pages, and so on during their visits. And this is not because there's plug, yeah, well he's got to get to like a certain level. Right. But yeah, but you could take any, like if you have a competitor or something, you're trying to like, Hey, we're building a site. We want it to rank, here's some of our competition and I though they're ranking well, you can put that in there and you can see like traffic by country's, traffic sources, the referrals, the places that are linked, like you talked to, linking into it. So apparently Get Hub, Python.org, forums.fast.ai, all of these are like strong linking referring sites to mine. Not because I know that, but because this external thing is like tracked it just. Whether the traffic has paid. So this is a good one for like how, and then you could put another domain next to it and it'll put those charts next to each other and say, here's how you compare to that other place in general ranking traffic types of traffic and whatnot.
30:10 Christian Medina: I could have sworn that some of this was also available in Moz. If I find that, I'll give you a link. That type of analysis is really interesting and useful. Yeah, that help determine how well your stuff is going to show up.
31:27 Michael Kennedy: Speaking of Moz, they wrote a pretty interesting article called The Beginner's Guide to SEO, which you're linked to and we'll put it in the show notes. Yeah. And we've heard of Maslow, Maslov, Maslow's hierarchy of needs, right? You need shelter and then you need like human contact, you know, then you need food. Or maybe you need food then shelter, right? But whatever, like eventually way, way up there is like entertainment and fulfillment, you know nothing, right? So there's something like, they put together like this for SEO and says like, you must have this to be ranked and then like you can be more competitive as you layer on more advanced stuff. Do you want to talk us through that?
32:04 Christian Medina: Yeah, yeah. So we can go through the pyramid, in some of these we'll dive into a little more detail in a little bit. So like right at the bottom is a crawl accessibility. So that means that your website must be the search engine crawlers, robots that go out and just scrape the internet and formulate the model or whatever to find search results. Your website needs to be crawlable essentially. And then that means you have to have good HTML and good things for those robots to actually be able to parce the information.
32:35 Michael Kennedy: Right. That's a little bit like what I was talking about with the site map and number of pages versus the number of discovered pages. Right? But it also means like if you go to a part of your site is behind a login or a paywall or some other interaction that is blind to the world, right? That is no longer part of the search index of the world. And so you just got to like it might be fine, that might be a personal account or whatever you don't want it to be. But sometimes I see people building sites in a way, but I think, Oh, you don't want to do that because Google's not going to get there and that's a problem.
33:10 Christian Medina: Yeah. So that's why single page web apps are an interesting, have an interesting situation when trying to be searchable. So we all find that a lot of like say just to pick something like say Linoed or whatever. And I'm not saying that they are a single page web app, but you'll find that a lot of these companies that have consoles or something that some application type of thing that's available through the website. They actually have a landing page and then from the landing page you can load up the web app. You can't have the whole thing be the web app or the stuff just won't show up on the search engine. It's behind JavaScript.
33:46 Michael Kennedy: Exactly. If you look at view source of like a VJS app, it's entirely an underwhelming and it always looks the same because the data is not shared yet, right.
33:55 Christian Medina: That's right, and in fact it might even might even count against you, which is like the next ring in the pyramid is having compelling content. The only thing that the search engine will find there is just JavaScript. So it's not going to know what any of that means or what the paragraphs are, what the information is, nothing.
34:15 Michael Kennedy: So yeah, I'm wondering if these days, if like when Google sees that they're like, you know what, we have to fire up Selenium and hit this page to like get the answer right. They may look for VJS angular, the couple popular ones and say we got to.
34:29 Christian Medina: Yeah, I'm sure they do got.
34:30 Michael Kennedy: We got to do a little more. They probably do, but it can't be helping. Right. Like even if eventually it does figure it out. I just feel like these spa apps cannot be helping their SEO case.
34:40 Christian Medina: No, there is some stuff that's been built to help all of that. I haven't looked too much into it, but there are things to help that side of the world. But yeah.
34:48 Michael Kennedy: Yeah. Okay. So compelling content that's important. It's sometimes tricky to do, I suspect like images. I think if you try to tell the story with a picture instead of with words, that might actually hurt you a little bit in terms of SEO.
35:00 Christian Medina: When you make that image tag you can have enough information. The image tag which also helps the rankings
35:07 Michael Kennedy: Like in the title or the alts or something like that.
35:09 Christian Medina: Yeah. The alts. Yeah. Okay. Yeah, so there's that. And then just like the size of the content, just general grammar stuff, how the paragraphs are broken up, how many, in fact having content for multiple languages also counts for you. There's all kinds of stuff like that. And if you're doing like international stuff like that where you have like multiple versions of your site, that's like a whole new, like I wanted to do that recently because I wanted to, you know Spanish is actually my first language so I wanted to write the site in and provide Spanish version of it. And I started to look into, wait, what about like the canonical stuff and like what's going to show up here? And it's like there's all these rules. I was like I don't have time to look at all this.
35:44 Michael Kennedy: It was already going to be a lot of work to rewrite it in a second language and now you've got to like re SEO it and like not just redo the SEO, but you got to make sure you don't hurt yourself. Right. Because if it shows up in two languages, it could be worse than just having a one if that thinks that's like copied, right?
36:03 Christian Medina: Yeah. When we're talking about this, you know, we're not just talking about like, do I have the right keywords? Was it just actually the next ring in the pyramid? You know, having, having the words that are searchable that represent what the article is about. Right. But we're talking about like, just like HTML formatting, right? If you don't have the right tags in the right places with the right properties, stuff doesn't get picked up correctly. And I mean, as a developer, I mean it makes perfect sense if somebody wrote some code to go and crawl this website, right? And you know, they're at Google, they're like, well, I'm going to look for this. If you don't put that in there. Oh, well, right. You want me to rank you, well then put that in there and Google's got like, they're all documented, all that stuff as you search around.
36:46 Michael Kennedy: Yeah, yeah, yeah, for sure. Next up, I guess keyword optimize is that, have we talked about that yet?
36:52 Christian Medina: That's what we were just talking about.
36:53 Michael Kennedy: Yeah. Okay. Then above that is the great user experience.
36:58 Christian Medina: Now we start getting a bit deeper into actual developer action.
37:01 Michael Kennedy: Yeah. And this is where the developer story starts to like really be your story around SEO. I mean obviously you've got to have crawl accessibility, right? If your site crashes, if it's unreliable, if it doesn't generate the site map quickly or correctly, then all those things are, right. Like you're not even alive on the hierarchy or at the bottom and you're not there. But here you have things like fast load speed and ease of use and the wording here is compelling you why on any device, but like the developer word is like a program, not a program. Yeah. Like viewports and like responsive is the word. I was looking for a responsive UI that like actually would look right on the device. Now you're well into the web developer Python developer side of the story
37:48 Christian Medina: And there is so much here and we can talk, let's skip ahead a little bit around making your load times better. There's a bunch of tools. There's some, there's a website from Google called Page Speed which you can go and plug in a URL and it'll go do the these rankings for you, these checks for you. And then there's a tool called Lighthouse, which runs on Chrome. So if you have Chrome developer tools, you can get it to actually launch and run it locally. And so what it does is it analyzes a website and you can ask it to do it, do an analysis, assuming you're running from a desktop or assuming you're running from a mobile phone with a fast speed or assuming you're running from a mobile phone with a slow connection, right? And do all this analysis and you'll get into a bunch of things like what format are images, you know, are you PNG, are you JPEG and all that? Right. And then it turns out that do they have the right compression ratios? How big are they relative to the page? Are you loading a 2000 pixel wide image on a 400 pixel wide page? You're just wasting people's time when you do that.
38:51 Michael Kennedy: Right, right, right. And when I logged into the Google search engine console that you talked about before, I got a big pop up that said there's one of these domains I hadn't visited for awhile. And it said your site has now been switched to mobile first indexing.
39:06 Christian Medina: That's right. That's right.
39:07 Michael Kennedy: And one of the considerations is does this page render good on a mobile phone? And they also think when they think about performance, I think a lot of developers, they think, okay. And I totally count myself among this group in the early days and I'd like to hear your thoughts as well. I go and I hit the server. How fast is the database? How fast is pyramid, Flash, Django, whatever, getting it out the door. Like how quick am I getting? Like first bite to user basically? And then there's kind of like, I'm done. Like I've solved it. Like I've now it's down to the browser to deal. Right?
39:39 Christian Medina: Yeah. But that's just the beginning. Right?
39:43 Michael Kennedy: That's where you are apparently when you try to like start doing this analysis, Oh my goodness. Yeah.
39:47 Christian Medina: I did my stuff. My stuff is a static page. So like I was like, Oh yeah, this is awesome. It just loads the page. There's nothing else to worry about
39:54 Michael Kennedy: But it's going to blade your stuff. One millisecond. We're good. So what did you get when you first put it into the page Speed insights? Which is like the hosted version of lighthouse. Do you remember?
40:04 Christian Medina: I was probably like in the sixties yeah. Or something like that. And so, so that has a ranking zero to a hundred.
40:11 Michael Kennedy: Yeah, exactly. So zero to a hundred I put a training.talk.fm in there. And then talk Python and then Python Bytes and whatnot. And those sites are crazy fast in the way I described like the database out first bite out of, you know the server is really fast. It's like totally reasonable to have a page that's 10 milliseconds. And I'm like well how could it possibly be slow? So let's see what amazing numbers I get if I throw it in here. And I got like 50 and it says which is on the bottom end of moderately slow. And I'm like, what's that? What is this? What is going on? And so I spent three days going through the recommendations, like three eight hour days working on one of the sites and now I've got it up, if I go to training.python.fm on mobile, I get 94, on a desktop I get a hundred.
40:55 Christian Medina: Cool. Yeah, I'm in the nineties as well now finally.
40:57 Michael Kennedy: Yeah. There's flexibility, right? Like if the server hasn't requested a page, it might be a slightly, there's like there's some variability here even if you just rewrite it. But what's interesting is the 94 is the mobile version. Like how fast can, if you've got an image that has to be resized. It's one thing to do it on a high end desktop, but if the phone has to resize it, that's going to hurt your ranking because it's like computationally slow for the phone to render the page. And there's all these different layers of stuff that you've got to look at.
41:26 Christian Medina: I mean, if you just loaded the image itself, the wrong size, it's bigger. So you just, you just sent the phone extra that it's not really needed. Right. So to stick with it. So there's a few pieces here. Just stick with the images. So the first thing that I, the Google stuff recommends is to use a web P as the format, not PNG, not JPEG as a compression format for your images. And that's great. It works great. It's, you know, it's usually lower image sizes, which is why they recommend it. It's Google's proprietary image format. Right?
41:58 Michael Kennedy: That's right. Of course they're going to recommend it.
41:59 Christian Medina: So I was like, I did all this. I'm like, I got my stuff into the nineties we'll get to the rest of it in a minute. I'm like talking to a buddy at work that also runs some websites and stuff and he pulls out his iPhone and goes to my website. I was like, Oh that's cool. Yeah. Hey, what's up with your images? And I'm like, what do you mean. So far he doesn't render a webP cause Apple, right? So that leads to you. In order to do this correctly, you can no longer use the image tag. You have to use the picture tag.
42:30 Michael Kennedy: There's a picture tag? This is like totally changing my, like blowing my mind.
42:33 Christian Medina: Yes. And the picture tag has all backs. So I'm trying to find the good one I have on my site. But essentially you can specify a list of images and you say if the screen size is of this many pixels load, this image. If it's have this many pixels, load this image, it's a, you know, whatever. And then in the end, if you can't load any of those, load this image. So I had like, so for every image in my website, and that's important for me. So in tryexceptpass we do illustrations and they come on like I'm like I want to load, you know the 4,000 pixel illustration cause it's really nice. Right. But obviously they can't. So I have four different files for every image. Each one optimized. You know, there's like a one at like a, I think it's 1280 pixels. I do one in the eight hundreds and one in the four hundreds and then I automatically pick which one to use with the picture tag. And then I also have a PNG format for the people that are using Safari to render it.
43:31 Michael Kennedy: Yeah, that sounds really tricky, right? Because now you've got to have all these different types. And then how do you know about like the 404 missing image cause you viewed it on a device that supports that. It's like the right format and whatnot. Yeah. So I haven't gone down that path on the, I'm just going to export it as JPEG with a slightly lower quality. And make sure the sizes, like I might have multiple sizes that are all JPEG or like one's PNG and a bunch of smaller, but I don’t know like the varied support. It just, it threw me off. I'm just like, I just don't know that I want to go down this path of having like unsupported image types that I've got to swap out, take care of.
44:08 Christian Medina: Yeah. That was an interesting adventure for me. Continuing down that you get the screen optimizations in the fallbacks with the picture tag. But outside of images, right. These days people use CDNs a lot to load things that run on their website, so I have to delivered a static webpage and I need jQuery to do something. I go link to some CDN that has jQuery. Well that's yet another connection that client's browser needs to open and that connection is going to open to a different server, which means you guys know how this works. Right? If I went to tryexceptpass.org, I did a DNS query to figure out what IP address it was. Open a TCP connection, download some data. If I'm talking about JavaScript, I'm then parsing that and loading it up, right? Well now if I, I have an extra script tag in there. Now I have to do that same thing for whatever DNS is providing, whatever domain is providing that. So if that's coming from Google fonts, right? So that's got to do the DNS query, open up Google fonts, download the font, do whatever, parsing, show it in the website. So for every CSS or script or external thing that loads into your page, you're doing all of these things and that has an impact and that actually shows up.
45:23 Michael Kennedy: And it counts against you regardless of whether it's a CDN link, a second link on your site or what, like it's just number of connections we've got to do the more of the worse.
45:33 Christian Medina: Yeah. It's more work for the client. For the browser, right? Yeah. So, so in order to help that around, there's a number of things that you can do in your header, in your HTML that will serve as a preloads. So there's a couple different commands. There's a, the link tag, like you would add a style sheet or whatnot, but there's also, there's a rail property that you can set to preload or pre connect and pre connect means do the domain name resolution. So that means you do that once because ahead of time, like for example the Google analytics that get added to my website, I do a pre connect to Google analytics so that, all of that is resolved. The TCP connection is already open at the start of the page. And by that, by the time it makes it all the way to the bottom and actually needs to load something, it just needs to go in and get data versus having to.
46:26 Michael Kennedy: Right. It's probably done the DNS resolve and actually already done the SSL exchange. The port opening to the server, even maybe that's just waiting to issue the HEP get.
46:37 Christian Medina: And for that, when I needed a pre connect, because to get changes slightly, I'm looking at dumping the whole Google analytics stuff. So at some point that that's a different conversation. We should also have.
46:48 Michael Kennedy: I've since dumped them. So yeah, I hear you.
46:49 Christian Medina: There's also a preload command you can give out, which actually essentially just loads the file that you say. It just loads it and keeps it in memory. It doesn't use it immediately. It's just there and then when you run into it in the rest of the document then it uses it. So I use that for like the fonts, the fonts get preloaded and some Java script gets preloaded and stuff like that.
47:09 Michael Kennedy: Yeah. I just recently saw my first page that was like full of these preloads and pre connects and I'm like, Oh this is the thing that I didn't know about, how interesting. And it's clearly like we're going to set this up and fire these off and like as soon as you can get them, as soon as you got a break and loaded stuff, go get these. And yeah, that seems, it seems pretty cool. You know another one that really probably basically not help you on page speed on, on the Google page speed site, but will really make your users happy is just browser caching.
47:37 Christian Medina: Yes. And there's different aspects of that and different problems that it generates. You can give the browser instructions on what to cache and how long to cache it for and the page speed stuff actually takes that into consideration for how long you're caching things. I actually took advantage, so I have like a set default kind of thing. But I also took advantage of using, I use Cloud Flare in front of the website so I can dynamically change that in Cloud Flare depending on what it is. So I can, I can add like rules that say well tell our clients to cache the images for a year. Right. Because I'm not going to change the image for an article. Only cache to HTML for a week.
48:19 Michael Kennedy: Yeah. Interesting. Yeah. On mine I have it, every CSS, JavaScript image, everything is cached I think for a year.
48:27 Christian Medina: Yep. Okay. They recommend a really high number.
48:29 Michael Kennedy: Yeah. And it's really good in terms like speed, like I was at a hotel in Israel and trying to get back to some sites and you know, so they were all just dragging and mine is like zip, zip, zip. Because it just exchanges just the HTML and nothing else. Right. One connection to everything else is out of the browser. I'm like, this is really super cool. It is working well. The problem is if you change anything, like you update your style, then it's all busted, right?
48:54 Christian Medina: That's where a question Mark and some hash comes into play.
48:58 Michael Kennedy: Exactly. I have a whole infrastructure that says here's the URL and on the server side generate a hash like cache ID equals whatever the hash is and if that file changes it's going to rehash it. So it's an entirely different thing. That's cached again for a year. Like it might use ups and know another 200K of somebody's browser cache. But who cares, right? It's, memories cheap.
49:18 Christian Medina: Yeah, sure. So on that, right, there's a sites from the caching, right? Don't forget that any JavaScript or CSS that you give out to your customers, you want that to be minimized. And that means what does, what does minimization means? That means removes all of the spaces for example.
49:42 Michael Kennedy: Yeah. You also want few [inaudible], which bundle you want less of them and you want them to be smaller. Taking it as an aggregate.
49:51 Christian Medina: That's right. And so then like there are minimizes, Google has a tool that you can use for minimizing CSS and JavaScript and it's not just removing spaces, but it also like in the case of JavaScript, it'll rename all your variables.
50:04 Michael Kennedy: Oh, interesting. Okay.
50:05 Christian Medina: So it does a little bit of a obfuscation, right? So if you have a, like as a developer you want to have descriptive variables, but the tools will actually take that variable name down to one letter as much as it can. Okay. So you will find your users dot username, users.email, whatever. It can turn into a.b, a.c, or something.
50:24 Michael Kennedy: Right, right, right. Yeah. Which can be significant. Yeah. For the write up.
50:29 Christian Medina: Just the whole point of that is to reduce the size of the file that you're transferring to the clients.
50:35 Michael Kennedy: Right. You want to reduce the size and if you can, you want to bundle them. It doesn't always work because sometimes like the JavaScript might refer to a relative path back to like an image or a CSS file or something. And then like if you bundled them up the directory, then they get all broken. I had something like that with FontAwesome. I had to stop. I'd like unbundle FontAwesome. Or something cause it was, it couldn't find pieces of itself.
50:58 Christian Medina: There's some tricky stuff as it refers between files. Yes. But theoretically, which is contrary to usual programming practices. The more that you can put all of this stuff in the one file, right? So if you can combine, so there's a, the tools will do that for you too. If you load jQuery and FontAwesome and bootstrap and a bunch of Java script and then the JavaScript for your website, you can run it for these tools and it'll put everything into one file and then minimize it. And so then you're transferring one thing, which means one TCP connection, one request, and you're just moving data back.
51:33 Michael Kennedy: Well one thing that I came across and started using exactly in this space when I was going down the Lighthouse thing is I said, you're making 26 requests for JavaScript and CSS. Oh my gosh, I'm done. Like, there's nothing I can do to like how can I fix this? Right. And I knew about bundling like, this is going to be what a lot of trouble cause I, I like to have small CSS files. Like this part of the site has its own CSS file so it's not huge and I can reasonably deal with it. Right. But Google was hating on it because it's like, here's another request. I'm like, yeah, but it's cache for a year. But like it doesn't matter. My page rank is what they say and it's the first request, not the cache request. So whatever.
52:09 Christian Medina: Along those lines, there's a progressive web apps. Yeah. If folks have heard about that. So Tryexceptpass is a PWA progressive web app. I think that's, I might disable that. But what that does is it makes your, you can write a little bit of Java script that will make your website run even when your site is not online as much as possible. And it can be executed, like if you have a Chromebook or an Android phone or an iPhone, you can actually make a shortcut to the site. So you'll have like a, an icon just for your site. You can just click it and it'll come online. And all that JavaScript does is it registers what they call a worker. And the every request that the webpage makes for content goes through this worker essentially. And the worker, you can do whatever you want with it, but the main point is the worker keeps a local cache and the worker knows what to pre-cache. So when your website is online, it says load all these images for you. And then for every request, go get them and load it into a cache that gets stored in local storage in your web pages. You can see it all in developer tools. And so then you know, that makes your website run fast and you can even have an, you have to have and offline page. So if you need to like fetch the content and you get to it, you can provide the users and like, Oh, I can get to the internet right now. This is what it looks like.
53:29 Michael Kennedy: Okay. Yeah. That's really cool. What I came across was this thing called WebAssets. All one word. Yeah. Which is a Python library that does that bundling and magnification you're talking about, it uses JSmen and CSSmen, which are Python packages that do that for a JSN, you know, JavaScript and CSS. And so now when my site starts, it just does like a quick check, Hey, do I need to rebuild the one giant CSS and JavaScript files so I don't have to remember to take it and like, Oh, I forgot to run that. So that's out of date. Like it's just like at the start it goes, here's the hash of the files, is there anything new? Let's regenerate them. And it's kind of just all automatic. Right. So that's a pretty good set of Python tools.
54:10 Christian Medina: Nice. Yeah. I knew about this at work. I actually hadn't thought about looking at that for the stuff I have at home for some reason I'll have to go, I have to go see it might help me out with a few things.
54:19 Michael Kennedy: I have one really quick one that'll totally help people. This one only works on macOS but I think they link to other options on their site. And image Optim. I am like image OPTIM. And what it is like just an a collection of algorithms that do lossless recompression and re encoding of images. Right? So like you visually, literally there is no visual change to what's happening, but it might rain code it like it might change the color spectrum for a PNG because it realizes only 256 colors. Right. And so what you can do is you can take just the root of your website and throw it at this. It'll traverse the directories, find all the things in place, replace them with their optimized but unchanged version. Yeah, I did this on my sites and I got like 40% less. It went from like 20 megs of images to, I don't know, whatever that was like nine and it takes forever, but you just literally drag, drop, wait, done.
55:20 Christian Medina: Cool. I'll check it out. Yeah, so I was going to say on the image side I use, I was talking about webP earlier, I forgot to mention that I use CwebP, which is you can just go install it and it'll produce web images and you can have it resize the images for you.
55:33 Michael Kennedy: You feed it like a JPEG and PNG and it would put out [inaudible].
55:38 Christian Medina: Yeah. And you can define what quality you want and what size you want for the image. So you even resize it automatically for you.
55:43 Michael Kennedy: Cool. Yeah, those are, I like those because they're so easy. Like they take no work and they're like, as long as you got your stuff, get checked in source control, like you're not in real danger of messing up stuff. All right Chris, we're getting kind of closer to the end of the show running short on time. I feel like we've just scratched the surface though, you know? What else? Quickly, what else should we like point out for folks that they should go check out?
56:05 Christian Medina: We can talk about a few pieces. So in Google search, okay. Trying to figure out which one works best. So you put a link in Twitter, Twitter pulls up like a little card with an image and a little summary of the website or whatever it is that you like. Right, right.
56:21 Michael Kennedy: For the cool sites it does, right.
56:23 Christian Medina: Yeah, they're right. Like ours. Right, exactly. So all that is configured through meta-tags and there's actually a standard, there's a Twitter, it seems like Twitter came first and or maybe just Twitter was different.
56:33 Michael Kennedy: Everyone else seemed to grab it or whatever. Right?
56:35 Christian Medina: Yeah. There's a thing that's called open graph that describes a set of meta-tags you can put into your website to provide a title, a description, a summary, what image do you want to use for that little, a summary, a bunch of stuff like that. And keywords as well, which is also important. So all those meta-tags you have to put in there because not just it works for Twitter, but it works for your search engine and as part of the rankings.
57:02 Michael Kennedy: Yeah, that's awesome. And it definitely helps your stuff look more professional and anybody happens to grab it and just [inaudible] social, right. It's got this cool visual, like you've structured how it looks rather than just depending on like a weird truncated URL.
57:14 Christian Medina: Yeah, exactly. And along the same lines, there's actually a whole other standard called Jason-LD, which is used to essentially provide a Jason version of the stuff in your website and your page. So for example, when you go to tryexceptpass, in the main index, I can say I am a website of articles and here are all the articles and the titles and links and all that stuff. So that's parsed by search engines, but not just that, that information is actually used to generate the little cards that show up in the Google searches. You know, if you search for a recipe, it will sometimes have the little, and all of that stuff has higher priority then the rest of the content because it shows up top in your search results. Right. And that is actually used. If you go to the Google search console, there's a little discovery section on the left side, which is part of like if you're on an Android device and it's one of the Google built-in things in there, and then shows content that Google thinks you'd be interested in. If you have these things available, then it shows up in discovery a little bit more. You can characterize your website with it. You can say it's articles, it's recipes, it's video or whatever. There's like all this stuff to help do that.
58:36 Michael Kennedy: Okay, awesome. Yeah, so that's Jason LD, huh?
58:40 Christian Medina: That was a piece that's important. Jason LD.
58:42 Michael Kennedy: Yeah, I'll put that in the show notes as well as people can have that. So many things. It's so awesome. And the thing is, it's rewarding if you get this right. You know, people just engage with you and your content more or your products or whatever and it's awesome. All right, Chris, could you leave it here? But you know, maybe they'll have to be a second edition to like dive deeper into this. Well, before you get out of here, you got to answer the two questions again. Your Rights and Python code. What editor do you use?
59:07 Christian Medina: I'm on VS Code these days. Loving the remote extension.
59:10 Michael Kennedy: Oh yeah, that's super cool. I wanted to start using that as well. Some more. I'll probably will. I was talking about redoing my servers maybe at the time to get like a little hook for that in there as well. And then a notable Py PI package.
59:22 Christian Medina: I'm using Unsync these days a little bit. I know you like that one.
59:25 Michael Kennedy: I'm all about Unsync. I love that. It's like awesomeness’ per line of Python code. Can't be beat.
59:31 Christian Medina: Yup. It's a really nice one. Awesome.
59:32 Michael Kennedy: Yeah. So basically it's a unifying API across threaded parallelism, multiprocessing parallelism and asyncio. And a slightly better API for all of them. Right, and its so clean?
59:47 Christian Medina: It's really nice. Really simple.
59:48 Michael Kennedy: Great recommendation. Yeah. Alright. You want to call it action. People want to like they've got their site, maybe they just throw it into a page speed and they're like, how could it be 54 this is, I can't believe it's 54 or you know, they thought that the crazy in the search console, they want to take some action and make this better, get their stuff to rank better. What do they do?
01:00:05 Christian Medina: If you're using Page Speed, just take advantage of the actual output. It's really descriptive. There's links to all the documentation while all of the things matter. Just like take your time and go through it and start optimizing. You'll probably be able to get a bunch out of just optimizing images first so you can prioritize stuff like that. Then you can head over to the JavaScript stuff and then you can start looking at the connections and whatnot. I think reading through the Moz guide that which is a long guide, we'll link in the show notes is very useful. Remember producing a good website, not only it makes more people come to it though, you know people will be happier with it and it will seem responsive and more professional. Right.
01:00:45 Michael Kennedy: I agree. Yeah. All these things help SEO, but most of them also help the users directly.
01:00:50 Christian Medina: Yeah, that's right. Awesome. Happy users is a good thing.
01:00:53 Michael Kennedy: That's for sure. All right. Well Chris, it's been great to have you back on the show until next time.
01:00:57 Christian Medina: Thanks for having me.
01:00:58 Michael Kennedy: Yeah, you bet. Bye bye.
01:00:58 Christian Medina: Catch you later. Bye.
01:01:01 Michael Kennedy: This has been another episode of Talk Python to Me. Our guest on this episode was Chris Medina and it's been brought to you by Kite and Linode. Kite is the smart AI powered autocomplete for video editor and the more powerful your editor is, the more effective that you are. Get kite for free at talkpython.fm/kite. Start your next Python project on Linodes state-of-the-art cloud service. Just visit talk python.fm/linode, L, I. N. O. D. E. You'll automatically get a $20 credit when you create a new account. Want to level up your Python? If you're just getting started, try my Python jumpstart my building 10 apps course, or if you're looking for something more advanced, check out our new Async Course that digs into all the different types of Async programming you can do in Python. And of course, if you're interested in more than one of these, be sure to check out our everything bundle. It's like a subscription that never expires. Be sure to subscribe to the show, open your favorite podcatcher and search for Python. We should be right at the top. You can also find the iTunes feed at /itunes, the Google Play feed at /play in the direct RSS feed at /rss on talkpython.fm. This is your host, Michael Kennedy. Thanks so much for listening. I really appreciate it. Yeah, get out there and write some Python code.