<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Janet Spellman</title>
    <description>The latest articles on Forem by Janet Spellman (@ghiblimagic).</description>
    <link>https://forem.com/ghiblimagic</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F889713%2Fc55e6742-4842-4556-9d9f-7d05a3cbafee.jpg</url>
      <title>Forem: Janet Spellman</title>
      <link>https://forem.com/ghiblimagic</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ghiblimagic"/>
    <language>en</language>
    <item>
      <title>Expression? Statement? What's the difference?</title>
      <dc:creator>Janet Spellman</dc:creator>
      <pubDate>Mon, 31 Mar 2025 03:04:46 +0000</pubDate>
      <link>https://forem.com/ghiblimagic/expression-statement-whats-the-difference-392m</link>
      <guid>https://forem.com/ghiblimagic/expression-statement-whats-the-difference-392m</guid>
      <description>&lt;p&gt;I went on a deep dive to figure out the nitty-gritty difference between an expression and statement. I figured I'd share my findings here so you don't have to hunt for the answers 😉&lt;/p&gt;

&lt;p&gt;Disclaimer: this is written with JavaScript in mind&lt;/p&gt;

&lt;h3&gt;
  
  
  Expression
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Expression&lt;/strong&gt; ==&amp;gt; code that is evaluated (aka it turns into a VALUE, thus e~VALU~ated) &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffvz2rwfay3s0k15taobr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffvz2rwfay3s0k15taobr.jpg" alt="a sandwich that is cut in half and wrapped in paper&amp;lt;br&amp;gt;
" width="389" height="129"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;example: 2+2 evaluates into value of 4&lt;/li&gt;
&lt;li&gt;metaphorical example: "grab 2 pieces of bread + add condiments and meat + add veggies" ==&amp;gt; value of "sandwich "&lt;/li&gt;
&lt;li&gt;expressions can't exist by themselves, expressions have to be wrapped up and carried in the strong arms of a statement 💪&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Statement
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Statement&lt;/strong&gt; ==&amp;gt; the smallest piece of code that tells the computer to do something. Essentially it's a full coding sentence&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1seyisfanwuvd4bijbm.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fn1seyisfanwuvd4bijbm.jpg" alt="a dog running" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;think of it like an action/movement, ex: a dog running&lt;/li&gt;
&lt;li&gt;it is executed not evaluated&lt;/li&gt;
&lt;li&gt;it can be a simple action like console.log(5)&lt;/li&gt;
&lt;li&gt;expressions can be inside a statement, but statements do not DIRECTLY return a value&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How statements relate to expressions
&lt;/h2&gt;

&lt;p&gt;Now for the mindfuckery: expressions are never statements! 🤯&lt;/p&gt;

&lt;p&gt;2+2 is only an EXPRESSION, it's NOT a statement. &lt;br&gt;
2+2 IS wrapped in an invisible statement&lt;/p&gt;

&lt;p&gt;So think of it as: every delicious sandwich (expression, that evaluated into the sandwich value) has to be wrapped in saran wrap (a statement) BUT the "color" (visibility) can vary&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;it can have invisible saran wrap
ex: 2+2&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwd8470jmi9p5dzmuqmuc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwd8470jmi9p5dzmuqmuc.png" alt="showing a sandwich getting wrapped in saran wrap. The sandwich is labeled expression, aka code that turns into a value, in this case it turns into a delicious value of sandwich" width="800" height="288"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Or it can have colored (visible) saran wrap
Statement = /* expression slot */;
let number = 2+2 &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhiykbaekpsxzr447ckw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frhiykbaekpsxzr447ckw.png" alt="a sandwich wrapped in colorful blue paper" width="375" height="239"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Wait! Backup, what does this mean for function expressions versus function declarations/statements?
&lt;/h3&gt;

&lt;p&gt;ALL functions are expressions (because they return a value or undefined). But whether they're called a statement/declaration or expression depends on if they're focused on evaluation or execution&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;function declaration/function statement:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;function foo() {&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the function must have a name&lt;/li&gt;
&lt;li&gt;although this will return a value or undefined, its focused on being EXECUTED versus returning a value. Remember that statements are focused on actions/executions&lt;/li&gt;
&lt;li&gt;A declaration basically means "binding identifiers", and its binding the name to the function &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;function expression:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;let foo = function() {&lt;br&gt;
};&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;does not have a function name, the function is instead stored in the foo variable&lt;/li&gt;
&lt;li&gt;The focus is on EVALUATING, aka returning a VALUE into the variable, so it makes sense that its called a function EXPRESSION. It makes sense because an expression is a piece of code which is evaluated (returns a value)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Technically Let And Const Are Declarations
&lt;/h2&gt;

&lt;p&gt;Technically var is a statement and let and const are declarations, not statements. But that seems like a small detail that even Josh Comeau didn't touch on in his article? &lt;/p&gt;

&lt;p&gt;This difference seems to mostly matter in specific areas of the code, but if you're curious about this technicality:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can see declarations as: "binding identifiers to values",&lt;br&gt;
and statements as "carrying out actions"&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements#difference_between_statements_and_declarations" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements#difference_between_statements_and_declarations&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fact that var is a statement instead of a declaration is a special case, because it doesn't follow normal lexical scoping rules and may create side effects — in the form of creating global variables, mutating existing var-defined variables, and defining variables that are visible outside of its block (because var-defined variables aren't block-scoped).&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements#difference_between_statements_and_declarations" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements#difference_between_statements_and_declarations&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Some Resources I felt were most helpful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.joshwcomeau.com/javascript/statements-vs-expressions/" rel="noopener noreferrer"&gt;https://www.joshwcomeau.com/javascript/statements-vs-expressions/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://coderwall.com/p/f4t65q/javascript-function-expression-vs-function-statement" rel="noopener noreferrer"&gt;https://coderwall.com/p/f4t65q/javascript-function-expression-vs-function-statement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#defining_functions" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions#defining_functions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/46351924/javascript-declarations-vs-expressions-vs-statements" rel="noopener noreferrer"&gt;https://stackoverflow.com/questions/46351924/javascript-declarations-vs-expressions-vs-statements&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>explainlikeimfive</category>
      <category>learning</category>
    </item>
    <item>
      <title>Debugging Appwrite CORS Errors!</title>
      <dc:creator>Janet Spellman</dc:creator>
      <pubDate>Fri, 14 Mar 2025 03:00:14 +0000</pubDate>
      <link>https://forem.com/ghiblimagic/debugging-appwrite-cors-errors-39h6</link>
      <guid>https://forem.com/ghiblimagic/debugging-appwrite-cors-errors-39h6</guid>
      <description>&lt;p&gt;Welcome! So if you’re here it looks like you’re facing a stubborn CORS bug. Good news, although my error ended up being a niche issue, the debugging steps I used will help with most Appwrite CORs errors.&lt;/p&gt;

&lt;p&gt;So I was trying to set up the recovery password process for my website that uses Appwrite. Specifically I was setting up account.createRecovery(). But I kept getting this persistent CORS error: Cross-Origin Request Blocked&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F01dkmwpdwogpma3kcj7y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F01dkmwpdwogpma3kcj7y.png" alt="screen shot of the error message: Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://cloud.appwrite.io/v1/account/recovery. (Reason: header ‘user-agent’ is not allowed according to header ‘Access-Control-Allow-Headers’ from CORS preflight response).  Cross-Origin Request Blocked: The Same Origin Policy disallows reading the remote resource at https://cloud.appwrite.io/v1/account/recovery. (Reason: CORS request did not succeed). Status code: (null)." width="800" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging Step 1: check for typos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I thought, maybe there’s a typo or somethings undefined.&lt;/p&gt;

&lt;p&gt;So I console logged&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;All 3 environmental variables (yours will likely be process.env)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;data from the form&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But nope, everything was fine on that front.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging Step 2: checking if the hostname was set up as a Appwrite platform&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Essentially this error is saying there is a mismatch between&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;the “origin” host where the request came from and (ex: dogs.com)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;the domain of the server, where the request is coming from (ex: cats.com)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So in the case of Appwrite, you need to tell Appwrite what strangers (domains) its allowed to talk to it. You might not have your hostname (ex: &lt;a href="http://www.chewy.com" rel="noopener noreferrer"&gt;www.chewy.com&lt;/a&gt;) setup as a platform on Appwrite. Localhost should work by default but if you’re having this issue when using your actual domain, then this is worth a shot:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;go to your project&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;click overview&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;click on integrations and add platform if you see none there&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69xpiz4ft8w9vqo388mc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F69xpiz4ft8w9vqo388mc.png" alt="showing that you need to scroll to the bottom of the page to see integrations" width="800" height="656"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was using local host but I tried every version of localhost and my actual domain I could think of, but no dice 😔&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging Step 3: Is the right type of request being sent?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m using Next.js and I wrote it out as a server function. I double checked that&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;account.createRecovery() is a post request (checked the docs, yes it is)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://appwrite.io/docs/references/cloud/client-web/account#createRecovery" rel="noopener noreferrer"&gt;https://appwrite.io/docs/references/cloud/client-web/account#createRecovery&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next.js server functions can only send a post request&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;They both use post requests, so the error isn’t related to it being a server function&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging Step 4: Using a different browser, since they sometimes give slightly different error messages&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;With the normal suspects declared innocent I tried the chrome browser to see if there were any more hints&lt;/p&gt;

&lt;p&gt;But funnily enough it worked on chrome with no issues! But alas, the issue persisted on firefox&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging Step 5: see if an extension is the reason you’re slowly losing your sanity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Since it worked on chrome, I figured it might be an extension issue.&lt;/p&gt;

&lt;p&gt;You can either turn off the extensions or use a private window&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxlj8wgpusd15tzu1jre.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxlj8wgpusd15tzu1jre.png" alt="showing how to open a new private window in firefox" width="278" height="185"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alas, Firefox still refused to work 🙄! So it wasn’t the fault of any extensions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging Step 6: Cast your suspicions on the imports&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I looked toward the imports&lt;/p&gt;

&lt;p&gt;Normally you’ll import {Client, Account} from “appwrite” but because I’m using next-js 15 I was instead importing from node-appwrite&lt;/p&gt;

&lt;p&gt;node-appwrite is a newer feature they rolled out, so of curiosity I changed it to the normal version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Account&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node-appwrite&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; 
&lt;span class="c1"&gt;// Changed to: &lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;Account&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;appwrite&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And go figure, now it works on Firefox!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Debugging Step 7: Thinking of alternative solutions&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;node-appwrite is supposed to just be on the server side, so what if firefox for some reason didn't see that files supposed to be a server function? 🤔 So I added node-appwrite back and added use server to the top&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"use server";

import { Client, Account } from "node-appwrite";
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and it worked! So all this time I just needed to add "use server" to the top 🤦‍♀️&lt;/p&gt;

&lt;p&gt;Best of luck debugging your CORS issue and I hope seeing my debugging process helped you conquer your error too!&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;"use server";

import { Client, Account } from "node-appwrite";
import conf from "../config/envConfig";

//https://appwrite.io/docs/references/cloud/client-web/account

export async function createRecoveryPassword(currentState, formData) {
  try {
    const client = new Client()
      .setEndpoint(conf.appwriteUrl) //api endpoint url
      .setProject(conf.projectId); // Your project ID

    console.log(conf.appwriteUrl);
    //https://cloud.appwrite.io/v1
    console.log(conf.projectId);
    //671111111111111c

    //since react 19 useActionState sends data from forms as a formdata object
    let objectFromForm = Object.fromEntries(formData);
    let emailString = Object.values(objectFromForm)[0];

    const account = new Account(client);

    console.log(emailString);
    //blahblah@gmail.com
    console.log(conf.baseFetchUrl);
    //http://localhost:3000

    const result = await account.createRecovery(
      emailString, //email
      conf.baseFetchUrl, //url
    );
    console.log(result); // Success
    return result;
  } catch (error) {
    console.log(error); // Failure
    return error;
  }
}

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>programming</category>
      <category>development</category>
      <category>nextjs</category>
      <category>appwrite</category>
    </item>
    <item>
      <title>Do-It-Scared: Making a Game Plan to Get A Software Engineer Role</title>
      <dc:creator>Janet Spellman</dc:creator>
      <pubDate>Sun, 26 Jan 2025 09:46:08 +0000</pubDate>
      <link>https://forem.com/janetthedev/do-it-scared-making-a-game-plan-to-get-a-software-engineer-role-3plf</link>
      <guid>https://forem.com/janetthedev/do-it-scared-making-a-game-plan-to-get-a-software-engineer-role-3plf</guid>
      <description>&lt;p&gt;I got motivated to do this after listening to this episode of the programming podcast! I highly recommend a listen: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;If you prefer videos:&lt;br&gt;
&lt;a href="https://www.youtube.com/watch?v=zSUItHvifVY" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=zSUItHvifVY&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you're short on time and just want to sneak in a listen:&lt;br&gt;
&lt;a href="https://open.spotify.com/episode/5RVkNhLYJFZgSXQmctOxrW?si=DVTZFTHzRBC9BxyJ9CHLgQ" rel="noopener noreferrer"&gt;https://open.spotify.com/episode/5RVkNhLYJFZgSXQmctOxrW?si=DVTZFTHzRBC9BxyJ9CHLgQ&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I'll use three icons throughout this article&lt;/p&gt;

&lt;p&gt;🔥 fire = related to my why / helps with motivation&lt;/p&gt;

&lt;p&gt;🦀 crab = a challenge to face or a block (real or self imposed)&lt;/p&gt;

&lt;p&gt;🛠️ hammer and wrench = a tool to get over the block or help achieve the goal&lt;/p&gt;

&lt;p&gt;If you're scared when you see how long some of the embedded videos are, fear not! The links have a timestamp so it will start at the important section.&lt;/p&gt;

&lt;p&gt;Do you know a tip that's not listed here? Please comment or send me a message! I'll add it and link to your social next to the tip as a thank you 😁.&lt;/p&gt;

&lt;h2&gt;
  
  
  Take your WHY to the gym, unlock your beast mode!
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foja2ekq5jmv3fi867h02.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Foja2ekq5jmv3fi867h02.gif" alt="woman is lifting heavy weights over her head and two guys jump with excitement when she successfully lifts it over her head" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"And so what's special about that 1% of individuals that are making it all the way through? There's a couple things I've noticed (from) helping so many people to through it. And a lot of them come from lots of different sources, atomic habits, things like this. But there's some things that I've noticed. &lt;strong&gt;People that have a strong why can make it through&lt;/strong&gt;" &lt;/p&gt;

&lt;p&gt;".... (remembering a tweet that went something like) my co-founder just had a child I'm excited for like the next nine months of ridiculous productivity. Right? Where they have such a strong why they know they're going to just like go beast mode to provide for the little one. So there are moments in our lives where our whys can really crystalize" 🎤 Leon Noel @  11:30&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zSUItHvifVY?start=676"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;First up. I highly recommend solidifying out your why! What is that FIRE that's going to push you to dive through that window to actually reach your goals?  When you're exhausted what is going to make you peel yourself off the ground and keep going?&lt;/p&gt;

&lt;p&gt;Dig deep and be as honest with yourself as possible. Take the time to nurture your why, to make it's flame as big as possible 🔥&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0x5m6bntgo06nzhgfeg6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0x5m6bntgo06nzhgfeg6.gif" alt="clip from vikings where a man in a viking outfit and surrounded in snow says what are you fighting for" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For me: &lt;/p&gt;

&lt;p&gt;🔥 I want to be able to provide for my inner circle as needed, why? It would feel good and be a source of pride&lt;/p&gt;

&lt;p&gt;🔥 I enjoy software development, even though it can be extremely tedious at times. Solving bugs and seeing changes is a huge dopamine hit. It feels great when you see your code turn into real, live websites and full stack applications. It's a source of pride when I realize how much I've learned over the years. &lt;/p&gt;

&lt;p&gt;🔥 comfort of having extra money&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;reality check&lt;/strong&gt;: lifestyle creep needs to be kept in check, or the amount of money won’t matter&lt;/p&gt;

&lt;p&gt;🔥 It feels great when people tell me they were motivated by my posts and it helped them keep grinding and reach their goals&lt;/p&gt;

&lt;p&gt;🔥 It would be cool to have the ability to drop a huge tip or donation to make someones day better. why? It would feel good&lt;/p&gt;

&lt;p&gt;🔥 I could go to events or do new hobbies that I felt too guilty to use money on, or it was out of my means&lt;/p&gt;

&lt;p&gt;🔥 It would be cool to one day be on the other side, and connect with other engineers looking for work and help them network into a role&lt;/p&gt;

&lt;p&gt;🔥 Shallow but honest: software developer/engineer is a respected job title&lt;/p&gt;

&lt;h2&gt;
  
  
  Look around! Scope our your windows of opportunity!
&lt;/h2&gt;

&lt;p&gt;Figure out how you can reach your goal and figure out which "windows" fit your personality best! The key is to really sit down with yourself about the true challenges and self-imposed challenges. Dig deep and really be honest with yourself about the self-imposed challenges.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvmiq19lartm3csxxbk3v.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvmiq19lartm3csxxbk3v.gif" alt="guy sneaking around on the 2nd story and going into a window" width="1024" height="1024"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;1 Networking/ making friends/ making yourself known to the community&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/6nz8GXjxiHg?start=7640"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/a0bzf4h4jjg?start=471"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Time and time again the same advice pops up: You've got to network your way in. &lt;/p&gt;

&lt;p&gt;“windows”: (easiest to hardest, for me at least)&lt;/p&gt;

&lt;h3&gt;
  
  
  engaging with others content on social media
&lt;/h3&gt;

&lt;p&gt;🦀 can become a time-sink / distraction&lt;/p&gt;

&lt;p&gt;🦀 can be easy to miss specific peoples posts&lt;/p&gt;

&lt;p&gt;🛠️ Twitter/X and Bluesky: set up specialized lists or feeds on and then USE THEM&lt;/p&gt;

&lt;p&gt;&amp;lt; "the trick... is I have private twitter lists. I put every person that I'm trying to network my way into. Like to get a job, on that private twitter list. I start liking their posts. Retweet them every once in a while. Leave a comment. You do that for a couple of weeks, you went from a nobody to an acquaintance. And acquaintances get their dms read." - Leon Noel @ 37:00&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/bZf6_ld9u9A?start=2220"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🔥 I get inspired by watching their journey, celebrating their successes and being there for the challenges&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;liking others social media posts &lt;br&gt;
easy to do and it will help them become familiar with you if done regularly&lt;br&gt;
&lt;strong&gt;reality check&lt;/strong&gt;: but eventually you'll need to directly interact with them to build a real friendship&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;sharing their content on my feed&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LinkedIn: Follow relentlessly&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"FOLLOW a TON of new people every single day, or at least 2x week. People in tech, other engineers, recruiters, marketers, product design, hit that Follow button without reservation" &lt;br&gt;
🎤 Anna Miller &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7282805507789103104/" rel="noopener noreferrer"&gt;https://www.linkedin.com/feed/update/urn:li:activity:7282805507789103104/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commenting on other's content &lt;br&gt;
🛠️ HUGE for helping build up a real friendship&lt;br&gt;
🔥 Can be lots of fun! especially if we're both allowing ourselves to be silly&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;LinkedIn: Like posts that talk about job openings you're interested in&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"LIKE posts that mention job openings. Like them All. The more you like them, the more other posts like those you'll see. That's how Linkedin works" &lt;br&gt;
🎤 Anna Miller &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7282805507789103104/" rel="noopener noreferrer"&gt;https://www.linkedin.com/feed/update/urn:li:activity:7282805507789103104/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  creating and posting content
&lt;/h3&gt;

&lt;p&gt;🦀 Nerves/ feels awkward&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reality check&lt;/strong&gt;: the great outcomes can't happen unless you have the courage to do-it-scared. Whats the worst &amp;amp;&amp;amp; best reasonable outcomes&lt;br&gt;
Ex: making friends, seeing others get motivated by your posts, getting known in the industry. &lt;/p&gt;

&lt;p&gt;🦀 feel tired some days&lt;/p&gt;

&lt;p&gt;🛠️ if extremely tired, I can manage to at least do the easier versions everyday        &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;100 days of code/ daily check in posts on twitter and bluesky &lt;br&gt;
🔥 others have mentioned how it can motivated them in their own journey or reminded them to do anki 😂&lt;br&gt;
🛠️ Use Fedica to make it less tedious to post the same thing on multiple socials&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Make threads about my project's progress &lt;br&gt;
🦀 longer threads about the development process takes more energy and can throw me out of the flow state &lt;br&gt;
🦀 What if I'm bugging other people about clogging up their feed with long threads?&lt;br&gt;
🛠️ this account is literally a tech account, if they're not here for talking about tech they've made some unfortunate life choices 😂&lt;br&gt;
🛠️ I try to keep them limited to one thread, so it should be easy for them to silence the thread if it really is clogging up their feed&lt;br&gt;
🛠️ focus on logging the most important changes made and learning moments&lt;br&gt;
🔥 others have mentioned how it motivated them in their own journey                   &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Post on LinkedIn&lt;br&gt;
🛠️ This helps you get found easier and helps you develop a name or brand for yourself. &lt;br&gt;
🦀 LinkedIn tends to feel more stiff so it feels like you can only post serious content. But people have gotten lots of positive responses by posting some personal content like sharing photos of a hike, so you aren't actually limited to posting serious content.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Post! Post about your career lessons, life lessons and more. When you post, you can find more relevant posts in your industry from other engineers." &lt;br&gt;
🎤 Anna Miller &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:7282805507789103104/" rel="noopener noreferrer"&gt;https://www.linkedin.com/feed/update/urn:li:activity:7282805507789103104/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;post on Instagram&lt;br&gt;
🦀 I haven't used Instagram much so I'm not sure of the best way to use it for software development. I feel like I prefer bluesky or twitter over Instagram's format. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;stream on twitch &lt;br&gt;
🛠️ helps you become more known in the community while you code, study or recharge by playing a game&lt;br&gt;
🛠️ get practice for talking about code out loud, which can help during interviews&lt;br&gt;
🛠️ some people have gotten job offers through connections they made while streaming&lt;br&gt;
🔥 can be lots of fun when you get over the nerves! &lt;br&gt;
🔥 More motivated to show up for others than yourself? Then do what rufio did and make streaming a way to show up for the community! This way people are motivated by seeing you stick with it, so they show up for themselves and code as well&lt;br&gt;
Links to Rufio's content: (She's currently not streaming much because the place she's staying at for the time being doesn't have a great internet connection)&lt;br&gt;
&lt;a href="https://bsky.app/profile/helloitsrufio.bsky.social" rel="noopener noreferrer"&gt;https://bsky.app/profile/helloitsrufio.bsky.social&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.twitch.tv/helloitsrufio" rel="noopener noreferrer"&gt;https://www.twitch.tv/helloitsrufio&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;
  
  
  Reaching out to new people
&lt;/h3&gt;

&lt;p&gt;🦀 Direct messaging a CEO feels terrifying or improper&lt;br&gt;
🛠️ A CEO would be happy that someone gives a damn about their company that you asked for a coffee chat before even applying&lt;/p&gt;

&lt;p&gt;🦀 Not sure how to direct message them for a coffee chat, the unknown is scary: &lt;/p&gt;

&lt;p&gt;Watch Leon Noel speedrun networking messages:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/epKshUbcaj0"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/plT838Ujxi0"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/BpXmmJlHJ4o"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/XsI2Y6vIeus"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/B7hmWWpuwRo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h4&gt;
  
  
  Coffee Chats
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxjyyoyuebsl5npyzmzi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmxjyyoyuebsl5npyzmzi.jpg" width="800" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Coffee chats are where you reach out to people in the tech industry. This can be someone from a company you want to work at, or a local developer in your community.&lt;/p&gt;

&lt;p&gt;So really whenever you can.&lt;/p&gt;

&lt;p&gt;"How do you get the coffee chat... what is the message you send" answered in the below video:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zSUItHvifVY?start=3018"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🛠️ Tips for getting coffee chats by Madeleine:&lt;br&gt;
&lt;a href="https://abrupt-acoustic-c3f.notion.site/How-to-Coffee-Chat-12d4b7b6398f8075baf4f7a4e550bc31" rel="noopener noreferrer"&gt;https://abrupt-acoustic-c3f.notion.site/How-to-Coffee-Chat-12d4b7b6398f8075baf4f7a4e550bc31&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ Coffee chat questions: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/document/d/1oG7Jc54M_XR1DTjL2eVZBQITbkMu7pWk-K5YcH9Zf48/edit" rel="noopener noreferrer"&gt;https://docs.google.com/document/d/1oG7Jc54M_XR1DTjL2eVZBQITbkMu7pWk-K5YcH9Zf48/edit&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 not sure where to find people to get coffee chats:&lt;/p&gt;

&lt;p&gt;🛠️ &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Virtual Coffee is a tech community where friendships are formed and support is given to people at all stages of their journey. Join our laid-back twice-weekly conversations and our online events to connect with people who share your passion for technology.&lt;br&gt;
&lt;a href="https://virtualcoffee.io/" rel="noopener noreferrer"&gt;https://virtualcoffee.io/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🛠️ "If you are a beginner in tech trying to get a job and struggle to get into conversations, try reaching out to other beginners to have a coffee chat." &lt;a href="https://bsky.app/profile/dthompsondev.bsky.social/post/3lfpfcp32mc2r" rel="noopener noreferrer"&gt;https://bsky.app/profile/dthompsondev.bsky.social/post/3lfpfcp32mc2r&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ List of potential coffee chatters&lt;br&gt;
&lt;a href="https://github.com/fharper/coffeechat" rel="noopener noreferrer"&gt;https://github.com/fharper/coffeechat&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 what if they say no to the coffee chat?&lt;/p&gt;

&lt;p&gt;🛠️ Then they say no and you go on with life! You have nothing to actually lose and everything to gain&lt;/p&gt;

&lt;p&gt;🦀 what if they don't reply?&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/zSUItHvifVY?start=3372"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"if you don't get a response at first it's not an indication. Its just people are busy. I often get a better responses on my second or third attempt than I did on my first. Because the first attempt they laugh and then just don't respond. The second attempt they're like, I kind of remember this person. And then the time is like, I've just turned from from a stranger into an acquaintance because I keep making them chuckle. And then they'll respond to me. Right? &lt;/p&gt;

&lt;p&gt;and so I think people will send one message on a random platform like LinkedIn.....some people only check LinkedIn when they are looking for a job...so if you're shooting your shot on LinkedIn and you're not getting responses back, the people you're sending messages to might not even notice you're sending messages"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🛠️ People are often distracted, try doing a follow up in a few days. For LinkedIn especially people often don't login for days, weeks or even months. Check their activity to see if they've been active.&lt;/p&gt;

&lt;p&gt;🦀 Feeling overwhelmed and like this will never pan out:&lt;/p&gt;

&lt;p&gt;🛠️ look at the celebrations channel on the 100devs discord (sooo many of them mention how networking was what got them their role)&lt;/p&gt;

&lt;p&gt;🛠️ Danny Thompson shares wins/ people getting jobs on his socials:&lt;br&gt;
&lt;a href="https://x.com/DThompsonDev" rel="noopener noreferrer"&gt;https://x.com/DThompsonDev&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/dthompsondev/recent-activity/all/" rel="noopener noreferrer"&gt;https://www.linkedin.com/in/dthompsondev/recent-activity/all/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://bsky.app/profile/did:plc:fsbiew5lypmnshzzh3iksao7" rel="noopener noreferrer"&gt;https://bsky.app/profile/did:plc:fsbiew5lypmnshzzh3iksao7&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ listen to freecodecamp podcasts, so many devs that are interviewed mention how networking was huge for them&lt;/p&gt;

&lt;p&gt;🦀 Studying alone feels isolating? &lt;/p&gt;

&lt;p&gt;🛠️ Get an accountability buddy and/or join discords! &lt;/p&gt;

&lt;p&gt;🦀 Setting up a time is hard and frustrating!&lt;/p&gt;

&lt;p&gt;🛠️ To lessen the back and forth, you can ask them if they have a Calendy for you to choose a time from. Also, you can set up a Calendy and offer to share it with them! Some people have used this technique to great success.&lt;/p&gt;
&lt;h4&gt;
  
  
  Calendy
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9naetjgexr1xdqg6s5te.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9naetjgexr1xdqg6s5te.jpg" alt="Calendy logo" width="800" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 Should I send my calendy in my first message?&lt;/p&gt;

&lt;p&gt;🛠️ Use care if you do, as you can come off as pompous and rude!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Imagine you’re a 22-year-old founder cold emailing Marc Andreessen to say, “I want to meet you. Pick a time from my Calendly.” - Wes Kao&lt;br&gt;
&lt;a href="https://newsletter.weskao.com/p/unspoken-power-dynamics-of-calendly" rel="noopener noreferrer"&gt;https://newsletter.weskao.com/p/unspoken-power-dynamics-of-calendly&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🛠️ Offer to pick from their Calendy&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Do you have a Calendly? Happy to pick from that, or I can send over a few times is that’s easier.”  - Wes Kao&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can find more examples of respectful asks in Wes Kao's article:&lt;br&gt;
&lt;a href="https://newsletter.weskao.com/i/139511912/anatomy-of-a-respectful-ask" rel="noopener noreferrer"&gt;https://newsletter.weskao.com/i/139511912/anatomy-of-a-respectful-ask&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 I'm scared I'll get slammed with appointments if I share my calendy!&lt;/p&gt;

&lt;p&gt;🛠️ set a limit for how many coffee chats can be scheduled per day, week or month&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;clicking on the event and then the settings button to the top right. It will then show a dropdown with an edit button&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy3aeqrtf7rhq0b6v56wq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy3aeqrtf7rhq0b6v56wq.png" width="392" height="146"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Click more options on the bottom of the sidebar&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9kvnz83zsj7xvbe1iyw4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9kvnz83zsj7xvbe1iyw4.png" width="453" height="101"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Find Limits and buffers, click on the drop down arrow next to it, a drop down menu will appear&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can then set the maximum amount of those type meetings per day, week or month!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqekwt9rg8jwid0ijjels.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqekwt9rg8jwid0ijjels.png" width="409" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 I'm stressed that if one coffee chat starts late, it'll run into the next coffee chat!&lt;/p&gt;

&lt;p&gt;🛠️ set a buffer&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;do the same as above to get to the click Limits and buffer screen&lt;/li&gt;
&lt;li&gt;you can set a 0 minute, 5 minute, all the way to a 3 hour buffer before and/or after the coffee chat&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjfj68pyh0wx4xbxk3cw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwjfj68pyh0wx4xbxk3cw.png" alt="Image description" width="406" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 I want to add a short description but I'm struggling to find where to add it&lt;/p&gt;

&lt;p&gt;🛠️ same steps as above but instead of clicking limits and buffers, click description&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5y547lxazfkmf1cr9v1p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5y547lxazfkmf1cr9v1p.png" width="411" height="179"&gt;&lt;/a&gt;&lt;br&gt;
Ta ~ da!~ You can now add a description&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F76i7gynri8boqnhf9jp3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F76i7gynri8boqnhf9jp3.png" alt="description with the text " width="395" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 I want to give the person multiple choices for our online location!&lt;/p&gt;

&lt;p&gt;🛠️ Click the settings icon on coffee chat event, its the top right corner of the event type box&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkz4rt6o9rpfdp0daigge.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkz4rt6o9rpfdp0daigge.png" width="214" height="116"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Click on the drop down arrow next to location, a drop down menu will appear&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;look at the bottom and click add location&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb354k7uyg06ju1s003uw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb354k7uyg06ju1s003uw.png" alt="Image description" width="396" height="753"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 I'd rather link it to my calendar, so if I have an appointment/ect during my normal availability I won't have to awkwardly ask them to reschedule!&lt;/p&gt;

&lt;p&gt;🛠️ Hook Calendy up to your Calender &amp;amp; tell it which events are okay to book over&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;click the arrow next to free busy rules and it'll show this dropdown&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpgx3y7x2yhg3me7s2xaq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpgx3y7x2yhg3me7s2xaq.png" alt="Click the arrow for free busy rules" width="406" height="512"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;click on connected calendars&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It'll load a new page, click connect calendar account. Then follow the steps from the dialog that pops up&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7lql26yfx2jycz50knvy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7lql26yfx2jycz50knvy.png" alt="Image description" width="565" height="532"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now that your calender is set up, go to your calendar application (I use One Calender, not sponsored I promise 😂).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Choose a term to add to events that are okay to book over. I added the term "bookover" but it can be whatever you want&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fai2r566n6f706jonb9fz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fai2r566n6f706jonb9fz.png" alt="showing an event with the name leetcode lunch bookover" width="281" height="154"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go back to Calendy and the free/busy rules&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;click add meeting exception&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next to meeting name click "includes" instead of "exact"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;it'll show you how many meetings this meeting exception will apply to&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvusgjk48uxm2xq5t3xhv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvusgjk48uxm2xq5t3xhv.png" alt="showing the add meeting exception button and the meeting name textbox" width="407" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;click save changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Want more guidance? This guide goes over how to handle overlapping meetings on Calendy:&lt;br&gt;
&lt;a href="https://community.calendly.com/featured-tips-tricks-32/overlapping-meetings-2957" rel="noopener noreferrer"&gt;https://community.calendly.com/featured-tips-tricks-32/overlapping-meetings-2957&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 How could I avoid them booking a coffee chat during the time I should be driving to an event?!&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Click on "connected Calendars" under the free/busy rules, you can click the checkbox for "include buffers in this calendar"&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F377t30x1jktpe0n0ejr1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F377t30x1jktpe0n0ejr1.png" width="373" height="93"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6mxqf91h2jvehmt95yg0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6mxqf91h2jvehmt95yg0.png" alt="checkbox under sync settings" width="529" height="87"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Unfortunately this will just use the buffers you set up for the coffee chat event, for example, mine is 10 minutes&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdv9nbibuggxiq6msjnqm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdv9nbibuggxiq6msjnqm.png" alt="showing the limits and buffers section" width="389" height="639"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;As a workaround what I did is, if an event fell in my availability window, I added the actual time in the title and I edited the "event time" to include driving time&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6irmr6oslnnjt9bjujx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi6irmr6oslnnjt9bjujx.png" alt="title is Work &amp;amp; Connect 5:30pm-7:30pm but for the time I put down 4:30pm-8:30pm" width="577" height="380"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
  
  
  LinkedIn
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapnh4xxeedogy7ri1n91.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fapnh4xxeedogy7ri1n91.png" alt="Linkedin Logo" width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Usually you just look for local businesses that are hiring (or whatever companies you want to work for). Then look up who works there by clicking on the companies people tab:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rbmfzwsczyksedb3v30.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7rbmfzwsczyksedb3v30.png" width="770" height="846"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Direct Messaging (DM)
&lt;/h5&gt;

&lt;p&gt;Often results in this getting an alert that you need linkedIn Premium &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo2u6mtgoecs1m3r7eh2o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo2u6mtgoecs1m3r7eh2o.png" width="466" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ can DM if they’re a premium member WITH open profile messaging enabled&lt;br&gt;
They will have a gold linkedin logo next to their name  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6i9t7p4gbixt1ve8mmn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6i9t7p4gbixt1ve8mmn.png" width="268" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ can DM if you work at the same company (both of us have 100devs listed as a CURRENT job. It will not work if one or both of you left that company)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fru1x3pb8i0m4z0jeqmg3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fru1x3pb8i0m4z0jeqmg3.png" width="207" height="109"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ can dm through a group you both share&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;no limits anymore&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This youtube video shows you how to dm group members:&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ipg0_Db7NsE?start=53"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“There was a cap on the daily number of messages you could send to group members for a brief period, but LinkedIn revoked it shortly after"  🎤 Saurav Gupta January 9, 2025 &lt;a href="https://www.salesrobot.co/blogs/linkedin-limit" rel="noopener noreferrer"&gt;https://www.salesrobot.co/blogs/linkedin-limit&lt;/a&gt; &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🛠️look on their profile for an alternative contact method (github, portfolio, email) &lt;/p&gt;

&lt;p&gt;🛠️ user hunter.io or other services to figure out the email addresses of an employee&lt;/p&gt;

&lt;p&gt;🦀 some are behind hunter.io’s paywall, but you mainly just need it to figure out the rough pattern of the emails&lt;/p&gt;

&lt;p&gt;🛠️ if you can figure out the pattern the company uses for their employees email, you can guess what their email will likely be&lt;/p&gt;

&lt;h5&gt;
  
  
  inMail
&lt;/h5&gt;

&lt;p&gt;• You would need to get premium to use inMail &lt;/p&gt;

&lt;p&gt;🦀 costs money&lt;/p&gt;

&lt;p&gt;🦀 only 5 InMails a month for premium career membership &lt;br&gt;
(special note: if someone replies you get 1 InMail credit back, so if they reply back you could technically get more than 5)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reality check:&lt;/strong&gt; unless they're obviously active on linkedIn they’ll likely check other methods of contact much more often than linkedIn (email, portfolio contact form, twitter/x, bluesky). Someone may not check on their LinkedIn for months&lt;/p&gt;

&lt;p&gt;🛠️ There are ways you can get a trial or a free membership:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"To find an employee that is giving away LinkedIn Premium free coupons, first go to your LinkedIn search bar. Then, type either #linkedinpremium or #PlusOnePledge and hit enter. Click on Posts, and either sort them by latest or those posted in the last week"&lt;br&gt;
🎤 &lt;a href="https://skylead.io/blog/how-to-get-linkedin-premium-free/" rel="noopener noreferrer"&gt;https://skylead.io/blog/how-to-get-linkedin-premium-free/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🛠️ get a referral from first level connections that are using premium&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Condition #1 is — They can refer you to the same plan they are using themselves. So, if they are using Sales Navigator, they can refer you the same.Condition #2 is — They can only refer to 12 first connections in a year."&lt;br&gt;
🎤 &lt;a href="https://www.salesrobot.co/blogs/free-linkedin-premium" rel="noopener noreferrer"&gt;https://www.salesrobot.co/blogs/free-linkedin-premium&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🛠️ trials for military veterans, visual studio subscribers and qualified journalists &lt;/p&gt;

&lt;p&gt;🛠️ sometimes they’ll offer student-specific discounts in the premium section &lt;a href="https://premium.linkedin.com/" rel="noopener noreferrer"&gt;https://premium.linkedin.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Amazon ended their partnership so prime students no longer get free premium&lt;/p&gt;
&lt;h4&gt;
  
  
  X/Twitter specific
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbyxjv49ks1yj026aenex.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbyxjv49ks1yj026aenex.jpg" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;there are often unique spaces, most notably the community for: "🦁THE HUNT🎤🔥Getting a Job in Tech⁉️GrabTheMic🎤🔥"&lt;br&gt;
&lt;a href="https://x.com/i/communities/1583617553712254978" rel="noopener noreferrer"&gt;https://x.com/i/communities/1583617553712254978&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbyzy44yu9l2szskb09it.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbyzy44yu9l2szskb09it.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h5&gt;
  
  
  Sending Emails
&lt;/h5&gt;

&lt;p&gt;🦀 not sure where to start or what to write / nervous&lt;/p&gt;

&lt;p&gt;🛠️ template for emails &lt;a href="https://resilientcoders.notion.site/100devs-Email-Templates-ea2a8c9bef5646549b3b1702281b0a45" rel="noopener noreferrer"&gt;https://resilientcoders.notion.site/100devs-Email-Templates-ea2a8c9bef5646549b3b1702281b0a45&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🛠️ can also ask for advice/ someone to look over a message by asking on discord&lt;/p&gt;
&lt;h5&gt;
  
  
  Recruiter Specific Emails
&lt;/h5&gt;

&lt;p&gt;🦀 not sure how to be most impactful when talking to a recruiter&lt;/p&gt;

&lt;p&gt;🛠️ &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Introduce Yourself: Start by sharing your name and a brief overview of what you do.&lt;/p&gt;

&lt;p&gt;Profile Engagement: Mention something specific from their profile that caught your attention or resonates with you.&lt;/p&gt;

&lt;p&gt;Request a 1:1 Meeting: Politely ask if they would be open to a one-on-one conversation to discuss if you might be a great fit.&lt;/p&gt;

&lt;p&gt;Discuss Work Culture and Role: Use this opportunity to understand more about the work culture and the role you're interested in.&lt;br&gt;
Share Your Motivation: Explain why you want to work there and what draws you to the company.&lt;/p&gt;

&lt;p&gt;Build a Connection: Treat it like a networking meetup; get to know the recruiter and build a genuine rapport."&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h4&gt;
  
  
  Discord or Slack Channels
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5wciibba7kbi5nk7inu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz5wciibba7kbi5nk7inu.jpg" width="800" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Many popular frameworks like Astro have discords:&lt;br&gt;
&lt;a href="https://discord.gg/astro-lounge-830184174198718474" rel="noopener noreferrer"&gt;https://discord.gg/astro-lounge-830184174198718474&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Code And Coffee: &lt;br&gt;
"A community for developers to make new friends and grow. In 37+ cities. See in-person events at CodeAndCoffee.org&lt;br&gt;
&lt;a href="https://discord.gg/E7yrWXAK" rel="noopener noreferrer"&gt;https://discord.gg/E7yrWXAK&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Commit Your Code:&lt;br&gt;
Created by Danny Thompson and is a community of over 12,000 developers of all levels&lt;br&gt;
&lt;a href="https://discord.com/invite/9bf7p5gz6B" rel="noopener noreferrer"&gt;https://discord.com/invite/9bf7p5gz6B&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Codedex Community: &lt;br&gt;
"The most beginner-friendly and collaborative coding community"&lt;br&gt;
&lt;a href="https://discord.gg/codedex" rel="noopener noreferrer"&gt;https://discord.gg/codedex&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;100 Devs: &lt;br&gt;
"We are engineers who believe in community before code &amp;amp; provide a 100% free path to becoming a software engineer!"&lt;br&gt;
&lt;a href="https://discord.com/invite/100devs" rel="noopener noreferrer"&gt;https://discord.com/invite/100devs&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🛠️ 100 devs: there are voice channels where you can work with others. You can tell others you are studying and want to share your screen for some accountability, and others will join you. &lt;/p&gt;

&lt;p&gt;🛠️ 100 devs also has silent study channels, social anxiety group, Banki Brunch (practice interview questions in a voicechat), pomodoro voice channels, has an ADHD group with body doubling&lt;/p&gt;

&lt;p&gt;🦀 If you're nervous you can lurk, you don't have to directly interact. With Banki Brunch you just add Lurk to the end of your username and they won't call on you&lt;/p&gt;

&lt;p&gt;🛠️ good for getting over nerves about coding in front of others&lt;/p&gt;

&lt;p&gt;🛠️ Use FocusMate: "Virtual coworking for getting anything done" &lt;br&gt;
&lt;a href="https://www.focusmate.com/" rel="noopener noreferrer"&gt;https://www.focusmate.com/&lt;/a&gt;&lt;br&gt;
Has a free tier but it is limited&lt;/p&gt;
&lt;h4&gt;
  
  
  Meetups
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonk3llwk2t7jyte42ogm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fonk3llwk2t7jyte42ogm.png" width="800" height="412"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 I don't know how to network at a meetup&lt;/p&gt;

&lt;p&gt;🛠️ "You're overthinking it"&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/niJ_oHR3kQo?start=1208"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🛠️ The video Danny talked about in the video &lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/W2SCeBKr52Q"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;🛠️ Read Lauren Shroll's "Tips to enjoy your first tech meetup (even as an introvert)" &lt;br&gt;
&lt;a href="https://codesubmit.io/blog/guide-to-tech-meetups/#tips-to-enjoy-your-first-tech-meetup-even-as-an-introvert" rel="noopener noreferrer"&gt;https://codesubmit.io/blog/guide-to-tech-meetups/#tips-to-enjoy-your-first-tech-meetup-even-as-an-introvert&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🦀 I don't know of any meetups in my area!&lt;/p&gt;

&lt;p&gt;🛠️ Look for virtual meetups (meetup.com)&lt;/p&gt;

&lt;p&gt;🛠️ google "tech meetups near {enter city here}"&lt;/p&gt;

&lt;p&gt;🛠️ Create a meetup&lt;br&gt;
🦀 creating a tech meetup sounds overwhelming!&lt;br&gt;
🛠️ tips to create a workshop, talks, panels or lighting talks style meetup &lt;/p&gt;

&lt;h6&gt;
  
  
  &lt;a href="https://codesubmit.io/blog/guide-to-tech-meetups/#4-choose-the-format" rel="noopener noreferrer"&gt;https://codesubmit.io/blog/guide-to-tech-meetups/#4-choose-the-format&lt;/a&gt;
&lt;/h6&gt;




&lt;p&gt;In this article I wanted to focus on the networking aspect. But you'll need to use at least some of the following as well:&lt;/p&gt;

&lt;p&gt;2 do projects or freelancing&lt;br&gt;
3 do hackathons or open source contributions &lt;br&gt;
4 fix your resume and tailor it to specific positions&lt;br&gt;
5 build a portfolio&lt;br&gt;
6 active GitHub&lt;br&gt;
7 do codewars or leetcode coding challenge&lt;/p&gt;




&lt;p&gt;Good luck! Let's make this an amazing year for you by keeping your "why" fire blazing bright 🔥 !&lt;/p&gt;

&lt;p&gt;You've got this, even though it will be rough at times. If you keep with it, you'll bag lots of small and big victories towards your goals 💪&lt;/p&gt;

</description>
      <category>career</category>
      <category>productivity</category>
      <category>softwareengineering</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Using Mongoose's Populate in Next.Js</title>
      <dc:creator>Janet Spellman</dc:creator>
      <pubDate>Fri, 17 Feb 2023 05:57:14 +0000</pubDate>
      <link>https://forem.com/ghiblimagic/using-mongooses-populate-in-nextjs-4jof</link>
      <guid>https://forem.com/ghiblimagic/using-mongooses-populate-in-nextjs-4jof</guid>
      <description>&lt;h2&gt;
  
  
  Overview of What We're Doing
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknk25b4ku6wuv1bdh1mx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fknk25b4ku6wuv1bdh1mx.png" alt=" " width="777" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the namecategories collection in MongoDB, we want to replace the object ids in tags, with the matching objects in the name tags Collection&lt;/p&gt;

&lt;p&gt;So the end result will be:&lt;br&gt;
name: "games"&lt;br&gt;
tags: [ &lt;br&gt;
0: {_id: ...., nameTag: "I love you colonel Sanders", __v:0}&lt;br&gt;
1: {_id: ...., nameTag: "Hatoful Boyfriend", __v:0}&lt;br&gt;
2: {_id: ...., nameTag: "Dream Daddy", __v:0}&lt;br&gt;
3: {_id: ...., nameTag: "Sephiroth", __v:0}&lt;br&gt;
]&lt;/p&gt;

&lt;h2&gt;
  
  
  The Setup
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The Page Calling the API
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm47kt6yu7togmmgc3vk7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm47kt6yu7togmmgc3vk7.png" alt=" " width="469" height="603"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The models:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzigqiyol44xw5d9xcsya.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzigqiyol44xw5d9xcsya.png" alt=" " width="726" height="481"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The API:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi2nkuj3tn3vy6utgzf5v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi2nkuj3tn3vy6utgzf5v.png" alt=" " width="491" height="488"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;Every time I tried to populate with my "NameTag" collection {} was returned. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsjxg7fd187xskr3kzus.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frsjxg7fd187xskr3kzus.png" alt=" " width="114" height="68"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However when I populated with my "User" collection it worked??🤨&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fls7hwi5c85a3apz7pnbc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fls7hwi5c85a3apz7pnbc.png" alt=" " width="435" height="128"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  TLDR answer if you're having the same problem:
&lt;/h2&gt;

&lt;p&gt;Import the model you're populating with. Even though it will be greyed out, the import is needed for the populate to work&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwni6v82byg7w2ae7oqhe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwni6v82byg7w2ae7oqhe.png" alt=" " width="486" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Debugging Process
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Testing to see if we can grab data from the "NameTags" database
&lt;/h3&gt;

&lt;p&gt;I kept thinking "huh it seems like mongoose isn't able to communicate with the collection for some reason". And turns out this hunch was key to solving the problem! &lt;/p&gt;

&lt;p&gt;So I tried to do NameTag.Find() to see if even that would work. And, wait for it...🥁🥁🥁 I originally got {} back. &lt;/p&gt;

&lt;p&gt;Doh, of course it's {} since I didn't import the NameTag model on the top! 🤦😂&lt;/p&gt;

&lt;p&gt;After it was imported it worked! Ta-dah!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvjo449poei9nrksi5fb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpvjo449poei9nrksi5fb.png" alt=" " width="410" height="410"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then when I switched back to trying populate, it worked!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpu8sv6qjlu8923lr7zqc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpu8sv6qjlu8923lr7zqc.png" alt=" " width="335" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When I removed "import NameTag from '../../../models/NameTag'" from the top and saved it initially worked. But when I restarted the terminal it no longer worked. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8xvwct3aol0lpkzagni.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv8xvwct3aol0lpkzagni.png" alt=" " width="466" height="57"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the import was re-added and the terminal restarted, it worked! So the import was key. &lt;/p&gt;

&lt;h3&gt;
  
  
  Why the User Model worked but NameTags didn't
&lt;/h3&gt;

&lt;p&gt;The user model was imported in other app\pages&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxulqwx5bcgnvg0o2csjz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxulqwx5bcgnvg0o2csjz.png" alt=" " width="321" height="306"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;However the NameTag model wasn't! To test this theory I moved the import out of the app\pages\api\name-categories file and into the app\pages\api\auth file. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85bejh5o775qxl6kye61.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F85bejh5o775qxl6kye61.png" alt=" " width="428" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And what do you know the populate still works! &lt;/p&gt;

&lt;h2&gt;
  
  
  Working code
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gvlg4msg7m1c8obi9h1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4gvlg4msg7m1c8obi9h1.png" alt=" " width="518" height="471"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj163d2kde7pim5gb1rt8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj163d2kde7pim5gb1rt8.png" alt=" " width="482" height="394"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8gctj2m7jzeekmrnccfc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8gctj2m7jzeekmrnccfc.png" alt=" " width="800" height="55"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Basic Build Information:
&lt;/h2&gt;

&lt;p&gt;"mongodb": "^4.13.0",&lt;br&gt;
"mongoose": "^6.8.0",&lt;br&gt;
"next": "12.3.1",&lt;br&gt;
"node": "18.2.0"&lt;/p&gt;

&lt;p&gt;Newest versions as of today:&lt;br&gt;
"mongodb": "6.0.0"&lt;br&gt;
"mongoose": "6.9.2"&lt;br&gt;
"next" : "13.1.6"&lt;br&gt;
"node" : "18.14.1 LTS/ 19.6.1 current"&lt;/p&gt;

&lt;p&gt;My mongodb dependency is out of date, so that might be what's causing this bug and requiring the workaround. &lt;/p&gt;

&lt;h2&gt;
  
  
  Bonus! Ways to write out Populate
&lt;/h2&gt;

&lt;p&gt;In the process of debugging I discovered there's many ways to write populate! So here's options for you to choose from:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;.populate(
{path:"propertywithobjectids", model:"modelname"}
) 
+
don't add ref to the model
&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy0lsq6erk6q0m3l87bn8.png" alt=" " width="494" height="518"&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;2.populate(&lt;br&gt;
{path:"propertywithobjectids"}&lt;br&gt;
) &lt;br&gt;
+&lt;br&gt;
add ref inside the property which has the list of object ids to populate&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F468u0iqkasrhnvudy1y3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F468u0iqkasrhnvudy1y3.png" alt=" " width="197" height="76"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr9gzghy6wz5jz5m016vc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr9gzghy6wz5jz5m016vc.png" alt=" " width="495" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Special note: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;the [{ }] syntax must be used, since you're creating an array of objects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Import schema:&lt;br&gt;
import {Schema} from "mongoose"&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;then type: &lt;br&gt;
type: Schema.Types.ObjectId,&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3 populate(&lt;br&gt;
"propertywithobjectids"&lt;br&gt;
) &lt;br&gt;
+&lt;br&gt;
add ref inside the property which has the list of object ids to populate&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10dkgzy3vvcdtfgecxgb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F10dkgzy3vvcdtfgecxgb.png" alt=" " width="276" height="82"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy9ezlr9gqf2s90v1d2q6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fy9ezlr9gqf2s90v1d2q6.png" alt=" " width="476" height="365"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you don't want to import {Schema} from "mongoose" you can write&lt;br&gt;
Type:mongoose.Schema.Types.ObjectId&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Eli5 (Explain Like I'm 5): MVC the Batman Edition</title>
      <dc:creator>Janet Spellman</dc:creator>
      <pubDate>Thu, 25 Aug 2022 20:25:00 +0000</pubDate>
      <link>https://forem.com/ghiblimagic/eli5-explain-like-im-5-mvc-the-batman-edition-12pf</link>
      <guid>https://forem.com/ghiblimagic/eli5-explain-like-im-5-mvc-the-batman-edition-12pf</guid>
      <description>&lt;p&gt;Let's set the stage, you are the person who the services of the bat-signal is for. The &lt;em&gt;client&lt;/em&gt; of the bat-signal if you will: &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BATMAN&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo21aphp2ls338pqn6p43.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo21aphp2ls338pqn6p43.gif" alt="Gif of batman looking up as the bat-signal turns on" width="500" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With that out of the way, let's start explaining what MVC is.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is MVC
&lt;/h2&gt;

&lt;p&gt;MVC stands for Model, View, and Controller. It is not a language; it is a way to organize your code. All of these three objects have different jobs but they work together to solve the same problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  MVC Explained (with Batman)
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Client: Batman
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4y8ro1aw58q4pv3d0u54.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4y8ro1aw58q4pv3d0u54.gif" alt="Gif of batman dancing" width="498" height="322"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  View: Bat-signal
&lt;/h3&gt;

&lt;p&gt;Is what the user visually interacts with, such as a website. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8t1sdsq4dfwksocvo2p6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8t1sdsq4dfwksocvo2p6.gif" alt="Gif of the bat-signal in the sky" width="498" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Controller: Gordon
&lt;/h3&gt;

&lt;p&gt;The controller receives requests and gathers data and sends the data to the view. The controller is the middleman between the model and the view.&lt;/p&gt;

&lt;p&gt;So Gordon (the controller) receives batman's request "Gordon. I want to be informed about the latest, juiciest crimes, especially if they involve Joker". Gordon then gathers data (such as police reports about active crimes) and passes the data to the view (the bat-signal).&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"(The) View and Controller are specifically designed to work together." -Steve Burbeck, Ph.D.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The bat-signal and Gordon are designed to work together to tell batman its time to fight crime!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkp3hswx7j4ezmqb5rtzx.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkp3hswx7j4ezmqb5rtzx.gif" alt="Gif of Gordon looking up" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In real life, the controller would listen for the user clicking on the mouse or typing on the keyboard and update the model and view (website) about these changes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model:  Concerned Citizens
&lt;/h3&gt;

&lt;p&gt;The model is responsible for managing the information/data and requests for this information/data. &lt;/p&gt;

&lt;p&gt;In our example, this is a concerned citizen who has witnessed a crime (data) in action and now wants to talk to the controller to explain what is happening. &lt;/p&gt;

&lt;p&gt;The model (concerned citizens) directly interacts with the database, which in this case is the crime's environment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F64.media.tumblr.com%2F90297fb5da454dce155247e5e498b6c8%2Ftumblr_pvf4wt7i1g1xvqk7uo5_r1_400.gifv" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F64.media.tumblr.com%2F90297fb5da454dce155247e5e498b6c8%2Ftumblr_pvf4wt7i1g1xvqk7uo5_r1_400.gifv" alt="Gif of Oswald Cobblepot/Penguin talking on a cellphone" width="268" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Database: Crime's Environment
&lt;/h3&gt;

&lt;p&gt;When the model (concerned citizen) needs more information, it looks to the database to get more information. &lt;/p&gt;

&lt;p&gt;So if the police/Gordon (controller) was asking the citizen (model) for more information about the crime, the citizen (model) would look around their environment (database). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlekp9ocwr2s39s9wboo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhlekp9ocwr2s39s9wboo.png" alt="image of amusement mile theme park image.png" width="766" height="435"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Example of MVC in the Batman Universe
&lt;/h2&gt;

&lt;p&gt;Now lets bring it all together with an example:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Batman (Client/user) : "Gordon. I want to be informed about the latest, juiciest crimes, especially if they involve Joker"&lt;/p&gt;

&lt;p&gt;Gordon (Controller)" On it batman!"&lt;/p&gt;

&lt;p&gt;(Phone rings)&lt;/p&gt;

&lt;p&gt;Gordon (Controller): "Hello this is the crime line, tell me what's happening"&lt;/p&gt;

&lt;p&gt;Citizen( model): (Citizen says they heard screams and explosions at the Amusement Mile)&lt;/p&gt;

&lt;p&gt;Gordon (Controller): "Is this crime related to the Joker?"&lt;/p&gt;

&lt;p&gt;Citizen (Model): "Well, let's see!"&lt;/p&gt;

&lt;p&gt;Citizen looks and listens (Model is looking in the database)&lt;/p&gt;

&lt;p&gt;Citizen (Model): "Why yes, that laughter I hear must mean its that loony sod again!"&lt;/p&gt;

&lt;p&gt;Gordon (Controller): "Okay, thank you anonymous citizen (Model) for your time"&lt;/p&gt;

&lt;p&gt;Gordon (controller): &lt;em&gt;Turns on bat-signal&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Bat-Signal (view): &lt;em&gt;Visually informs batman that a crime is happening&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxf60nibk46uu8si6ff0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftxf60nibk46uu8si6ff0.png" alt="flow chart of Batman as a MVC image.png" width="400" height="475"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  PsuedoCode Example
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj5behrmxv9k7ulnkdef.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgj5behrmxv9k7ulnkdef.png" alt="coding snippet image.png" width="774" height="96"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this section of code, Batman is asking for information about crimes, especially if they involve Joker. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5otvqodwirxhtyuz2ijk.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5otvqodwirxhtyuz2ijk.gif" alt="Gif of batman smiling but it comes off as deranged" width="498" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4k0g0sq1o4kblivdgufy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4k0g0sq1o4kblivdgufy.png" alt="coding snippet image.png" width="758" height="198"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gordon is keeping an eye out for crimes that involve Joker by talking to concerned citizens.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnbkl27iajsvfgjilmpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvnbkl27iajsvfgjilmpt.png" alt="gordon putting his head down on his desk as a man sits on the chair across from his desk image.png" width="765" height="424"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftaorfv2xqyvhuuv9w748.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftaorfv2xqyvhuuv9w748.png" alt="coding snippet image.png" width="757" height="192"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Concerned citizens are reporting crimes and in this case Gordon is trying to "select" a crime which involves Joker.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F64.media.tumblr.com%2F90297fb5da454dce155247e5e498b6c8%2Ftumblr_pvf4wt7i1g1xvqk7uo5_r1_400.gifv" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2F64.media.tumblr.com%2F90297fb5da454dce155247e5e498b6c8%2Ftumblr_pvf4wt7i1g1xvqk7uo5_r1_400.gifv" alt="Gif of Oswald Cobblepot/penguin talking on a cellphone" width="268" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfubqga3whs86qdi1xrd.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdfubqga3whs86qdi1xrd.gif" alt="Gif of joker appearing in the spotlight" width="600" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fft3u0kox6npjk4xowpmg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fft3u0kox6npjk4xowpmg.png" alt="coding snippet image.png" width="767" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gordon turning on the bat-signal, which batman sees and runs to.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo21aphp2ls338pqn6p43.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo21aphp2ls338pqn6p43.gif" alt="Gif of batman looking up as the bat-signal turns on" width="500" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Gordon transmitting the data (crime information) to batman. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl2g2p5tet82o38hqh0yt.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fl2g2p5tet82o38hqh0yt.gif" alt="Gif of gordon turning on the bat-signal and talking to batman" width="500" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why use MVC?
&lt;/h2&gt;

&lt;p&gt;Using MVC allows you to make easily reusable section of code, makes it easier to edit, and helps you keep your code organized. So it takes less time to make changes to your code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sources
&lt;/h2&gt;

&lt;p&gt;Steve Burbeck, Ph.D. &lt;a href="https://web.archive.org/web/20120729161926/http://st-www.cs.illinois.edu/users/smarch/st-docs/mvc.html" rel="noopener noreferrer"&gt;https://web.archive.org/web/20120729161926/http://st-www.cs.illinois.edu/users/smarch/st-docs/mvc.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/@ormrepo/what-is-the-model-view-controller-design-pattern-e951816217d9" rel="noopener noreferrer"&gt;https://medium.com/@ormrepo/what-is-the-model-view-controller-design-pattern-e951816217d9&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.codecademy.com/article/mvc" rel="noopener noreferrer"&gt;https://www.codecademy.com/article/mvc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The code example is adapted from the coding snippet given here:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=pCvZtjoRq1I&amp;amp;ab_channel=TraversyMedia" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=pCvZtjoRq1I&amp;amp;ab_channel=TraversyMedia&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Inspired by this fantastic MVC lecture:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=MrbNsnuxJ6g&amp;amp;ab_channel=Tch4lla" rel="noopener noreferrer"&gt;https://www.youtube.com/watch?v=MrbNsnuxJ6g&amp;amp;ab_channel=Tch4lla&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>tutorial</category>
      <category>100dev</category>
    </item>
    <item>
      <title>Learning Notes: Learning about SEO (Canonical URLs)</title>
      <dc:creator>Janet Spellman</dc:creator>
      <pubDate>Wed, 20 Jul 2022 10:57:41 +0000</pubDate>
      <link>https://forem.com/ghiblimagic/learning-notes-learning-about-seo-canonical-urls-2lhi</link>
      <guid>https://forem.com/ghiblimagic/learning-notes-learning-about-seo-canonical-urls-2lhi</guid>
      <description>&lt;h3&gt;
  
  
  About My Learning Notes Series:
&lt;/h3&gt;

&lt;p&gt;Learning in public and teaching others is a great way to solidify information, so I decided to write articles about discoveries I make while learning. I will add links so you can investigate my resources and to of course, give credit.  &lt;/p&gt;

&lt;p&gt;However I'm not an expert. Also, standards change fast in the coding world, so think of this as the starting ground for your own research. Best of luck with your learning! &lt;/p&gt;

&lt;p&gt;Please feel welcome to add corrections or comments. &lt;/p&gt;

&lt;h1&gt;
  
  
  Learning More About SEO
&lt;/h1&gt;

&lt;p&gt;Disclaimer: canonicalizing urls can lead to problems if you're not careful. Read more here at at &lt;a href="https://moz.com/blog/complete-guide-to-rel-canonical-how-to-and-why-not" rel="noopener noreferrer"&gt;https://moz.com/blog/complete-guide-to-rel-canonical-how-to-and-why-not&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  What is SEO?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;"Search engine optimization (SEO) is the process of improving a website or web page so it increases organic traffic quality and quantity from search engines. Successful SEO means a web page will be more likely to appear higher on a search engine results page (SERP)."&lt;br&gt;
&lt;a href="https://www.webopedia.com/definitions/seo/" rel="noopener noreferrer"&gt;https://www.webopedia.com/definitions/seo/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm81dib3ifad723ifs7eg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm81dib3ifad723ifs7eg.gif" alt="Gif from the office where he says i want your undivided attention please" width="244" height="324"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing the Problem
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsldg8m8ksrmkm5raw7h2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsldg8m8ksrmkm5raw7h2.gif" alt="Gif of doctor strange duplicating himself while Thanos tries to spot the real one" width="560" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To start off, lets say we have 8 links. Each of these links send us to pages that visually look exactly the same:&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;1. https://www.website.com/category/product-a/ 
2. https://www.website.com/product-a/ 
3. https://website.com/product-a/ 
4. http://www.website.com/product-a/ 
5. http://website.com/product-a/ 
6. https://m.website.com/product-a/ 
7. https://www.website.com/product-a 
8. https://www.website.com/product-A/ (https://www.semrush.com/blog/canonical-url-guide/)
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;To a search engine these are EIGHT different pages instead of one, so the search engine gets confused about which one is most important. So you get a lower SEO ranking.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to fix this with a canonical tag:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcq9kp9dzc7vtvvvxqbom.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcq9kp9dzc7vtvvvxqbom.gif" alt="Gif hercules gif where he's shouting use your head at hercules" width="244" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose one url which is the best representation of your page. Such as&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://www.example.com/mainpage.html
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Place this url in the rel=”canonical” tag in the head of your page&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbw1275vmxfr1tqsrs4np.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbw1275vmxfr1tqsrs4np.png" alt="image.png" width="641" height="289"&gt;&lt;/a&gt;&lt;a href="https://moz.com/blog/complete-guide-to-rel-canonical-how-to-and-why-not" rel="noopener noreferrer"&gt;https://moz.com/blog/complete-guide-to-rel-canonical-how-to-and-why-not&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;if you use CMS platforms like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;shopify&lt;/li&gt;
&lt;li&gt;Wix&lt;/li&gt;
&lt;li&gt;wordpress (with Yoast or RankMath plugins)&lt;/li&gt;
&lt;li&gt;Magneto 1 or 2 &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;this article gives you detailed steps about how to create a canonical tag: &lt;a href="https://www.semrush.com/blog/canonical-url-guide/#how-to-correctly-implement-the-rel=canonical-tag" rel="noopener noreferrer"&gt;https://www.semrush.com/blog/canonical-url-guide/#how-to-correctly-implement-the-rel=canonical-tag&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Four other ways to specify canonical URLs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdmviwx3zp3ejuh1uu9z.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftdmviwx3zp3ejuh1uu9z.gif" alt="Gif of toy story with them getting ready to ram his head into the grate so they can all escape, while he shouts he doesn't want to use his head" width="498" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Putting it in the head is the most common option to specify canonical URLs. But other options are described here: &lt;a href="https://ahrefs.com/blog/canonical-tags/" rel="noopener noreferrer"&gt;https://ahrefs.com/blog/canonical-tags/&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP header&lt;/li&gt;
&lt;li&gt;Sitemap&lt;/li&gt;
&lt;li&gt;301 redirect&lt;/li&gt;
&lt;li&gt;Internal links&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tips:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1 Use absolute links:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="canonical" href="https://www.website.com/page-a/" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not relative links:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;link rel="canonical" href="/page-a/" /&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ba9hq53a9t292uyn32p.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ba9hq53a9t292uyn32p.gif" alt="Gif a gif of a man saying its an absolute must" width="640" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2 Use only &lt;strong&gt;one&lt;/strong&gt; rel=”canonical” tag &lt;strong&gt;per page&lt;/strong&gt;.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ymegwym5bvncofoe2vm.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ymegwym5bvncofoe2vm.gif" alt="highlander gif of a man shouting there can be only one as he raises a sword above his head" width="300" height="222"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If there's multiple canonical tags then google will likely ignore it and make it useless. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Special note: " This happens frequently in conjunction with SEO plugins that often insert a default rel=canonical link, possibly unbeknownst to the webmaster who installed the plugin" - Allan Scott @ &lt;a href="https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical" rel="noopener noreferrer"&gt;https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  3 Only put it in the head of a page.
&lt;/h3&gt;

&lt;p&gt;If you put it in the body, it will be ignored.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv2u4htjnqyp168jepgwp.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fv2u4htjnqyp168jepgwp.gif" alt="gif Mr potato head from toy story has his body parts put on wrong, his hands are out because he's expecting the pig to laugh. But the pig walks away and says I don't get it" width="498" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4  Use a good link
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86m4zdct0g50bz8b7o6x.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F86m4zdct0g50bz8b7o6x.gif" alt="Gif" width="498" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Watch out for spelling mistakes (ex: http when you mean https)&lt;/li&gt;
&lt;li&gt;Don't Canonicalize a 301 redirect. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5 Don't try to be sneaky
&lt;/h3&gt;

&lt;p&gt;By canonicalizing a specific article to try to increase its google ranking. It will backfire on you. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8miyz09uhwdjfs34gukc.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8miyz09uhwdjfs34gukc.gif" alt="gif man saying that wouldn't be wise" width="498" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  6 If your page has multiple pages (pagination)
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48zl78cjyqdybo8evfn6.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F48zl78cjyqdybo8evfn6.gif" alt="gif of batman and robin on a paperairplane" width="220" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You have two choices&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;1  canonicalize the "view all" page&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Not the root page&lt;/strong&gt;.  So the view counts for page 1, page 2, page 3, ect is counting as the "view all" pages views.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxs1m2lodm0m2nf2qx9v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxs1m2lodm0m2nf2qx9v.png" alt="image.png" width="754" height="328"&gt;&lt;/a&gt;   Source: &lt;a href="https://www.searchenginejournal.com/technical-seo/pagination/" rel="noopener noreferrer"&gt;https://www.searchenginejournal.com/technical-seo/pagination/&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;2 Give each page in its own canonical URL. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So a four page series would look like this: &lt;/p&gt;

&lt;p&gt;Page 1&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;link rel="next" href="https://www.example.com/category?page=2″
  **  link rel="canonical" href="https://www.example.com/category"'**
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Page 2&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    link rel="prev" href="https://www.example.com/category"
    link rel="next" href="https://www.example.com/category?page=3″
    **link rel="canonical" href="https://www.example.com/category?page=2"**
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Page 3&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    link rel="prev" href="https://www.example.com/category?page=2″
    link rel="next" href="https://www.example.com/category?page=4″
  **  link rel="canonical" href="https://www.example.com/category?page=3"**
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Page 4&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    &amp;lt;link rel="prev" href="https://www.example.com/category?page=3"&amp;gt;
  **  &amp;lt;link rel="canonical" href="https://www.example.com/category?page=4"&amp;gt;**
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;code source : &lt;a href="https://www.searchenginejournal.com/technical-seo/pagination/" rel="noopener noreferrer"&gt;https://www.searchenginejournal.com/technical-seo/pagination/&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Extra: Why do we not canonicalize the root page for paginated pages?
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nctgb00l38eepo5hok2.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nctgb00l38eepo5hok2.gif" alt="gif will smith from fresh prince of bel air shrugging on the couch with the text why not appearing" width="498" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It makes search engines think you only have one page and it won't index the content on the 2nd, 3rd, 4th ect page. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"You don’t want your detailed content pages dropping out of the index because of poor pagination handling." - &lt;a href="https://www.searchenginejournal.com/technical-seo/pagination/" rel="noopener noreferrer"&gt;https://www.searchenginejournal.com/technical-seo/pagination/&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  7 If you have duplicated content such as
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;HTTP and HTTPS&lt;/li&gt;
&lt;li&gt;Non-WWW and WWW&lt;/li&gt;
&lt;li&gt;Trailing-Slash and Non-Trailing Slash URLs
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;http://example.com/foo/ (with trailing slash, conventionally a directory)
http://example.com/foo (without trailing slash, conventionally a file)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;code source: &lt;a href="https://developers.google.com/search/blog/2010/04/to-slash-or-not-to-slash" rel="noopener noreferrer"&gt;https://developers.google.com/search/blog/2010/04/to-slash-or-not-to-slash&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Have the duplicate(s) redirect to the canonical url with a 301 redirect&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Warning: "Let's be clear, however, that if you use 301 redirects, only the canonical URL will actually exist. The other duplicate versions will redirect to this." &lt;a href="https://www.semrush.com/blog/canonical-url-guide/#using-301-redirects-to-specify-canonical-urls" rel="noopener noreferrer"&gt;https://www.semrush.com/blog/canonical-url-guide/#using-301-redirects-to-specify-canonical-urls&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuh7ujdn1ntv5psz0eqvr.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuh7ujdn1ntv5psz0eqvr.gif" alt="gif of a man sitting in a chair and throwing a paper airplane, which appears to come back to him" width="600" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  8 Check your robots.txt file (if you have one)
&lt;/h3&gt;

&lt;p&gt;robots.txt can be helpful, but if you accidentally told it to block your canonicalized URL, it will block the web crawlers from seeing your page. Which is exactly the situation you want to avoid. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwukg830bcw6mjarug20b.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwukg830bcw6mjarug20b.gif" alt="gif Futurama gif of a robot gif crying and saying hopes deleted" width="498" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why is the search engine ignoring my canonical tag?
&lt;/h3&gt;

&lt;p&gt;Although canonical tags can help try to convince a search engine to pay attention to that specific site link, it can be ignored. In other words, it is essentially just a suggestion.&lt;/p&gt;

&lt;p&gt;Why Does this happen? Some possibilities are: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;conflicting url in a sitemap
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://www.semrush.com/blog/canonical-url-guide/#canonical-urls-in-sitemaps" rel="noopener noreferrer"&gt;https://www.semrush.com/blog/canonical-url-guide/#canonical-urls-in-sitemaps&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Pages aren’t a close enough match&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So the search engine ignores the suggestion&lt;/p&gt;

&lt;p&gt;(&lt;a href="https://searchengineland.com/canonical-tags-easy-right-whats-worst-happen-274635" rel="noopener noreferrer"&gt;https://searchengineland.com/canonical-tags-easy-right-whats-worst-happen-274635&lt;/a&gt;)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://moz.com/blog/catastrophic-canonicalization" rel="noopener noreferrer"&gt;https://moz.com/blog/catastrophic-canonicalization&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Links to learn more:
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://ahrefs.com/blog/canonical-tags/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://searchengineland.com/canonical-tags-easy-right-whats-worst-happen-274635
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://www.searchenginejournal.com/technical-seo/pagination/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://searchengineland.com/canonical-tags-easy-right-whats-worst-happen-274635
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://www.semrush.com/blog/canonical-url-guide/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://developers.google.com/search/blog/2013/04/5-common-mistakes-with-relcanonical
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://developers.google.com/search/docs/advanced/ecommerce/pagination-and-incremental-page-loading
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://moz.com/learn/seo/canonicalization
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://moz.com/blog/complete-guide-to-rel-canonical-how-to-and-why-not
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>beginners</category>
      <category>learning</category>
      <category>seo</category>
      <category>codenewbie</category>
    </item>
  </channel>
</rss>
