<?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>DEV Community: Nerando Johnson</title>
    <description>The latest articles on DEV Community by Nerando Johnson (@nerajno).</description>
    <link>https://dev.to/nerajno</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%2F58100%2F2b478935-947b-4a68-a3ea-4d7f3421ba7e.jpg</url>
      <title>DEV Community: Nerando Johnson</title>
      <link>https://dev.to/nerajno</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nerajno"/>
    <language>en</language>
    <item>
      <title>GEO : Generative Engine Optimization - Applied</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Sun, 30 Nov 2025 22:25:27 +0000</pubDate>
      <link>https://dev.to/nerajno/geo-generative-engine-optimization-applied-27a3</link>
      <guid>https://dev.to/nerajno/geo-generative-engine-optimization-applied-27a3</guid>
      <description>&lt;p&gt;&lt;em&gt;This article provides a practical guide to implementing Generative Engine Optimization (GEO) in your projects. It's part two of a series exploring modern search optimization techniques for developers. Read &lt;a href="https://developingdvlpr.com/blog/geo-explained" rel="noopener noreferrer"&gt;part one here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&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%2F9q8lzu9h2ripkv9r4lls.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%2F9q8lzu9h2ripkv9r4lls.gif" alt="GIF showing search and optimization concept" width="450" height="243"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Implementing Generative Engine Optimization (GEO) means structuring your content so AI engines like ChatGPT, Claude, and Google Gemini can easily parse, understand, and cite your work. While the first article in this series explained what GEO is and why it matters, this guide shows you how to apply GEO principles in real projects using Astro components. &lt;/p&gt;

&lt;p&gt;GEO implementation focuses on three core pillars: &lt;strong&gt;semantic HTML structure&lt;/strong&gt;, &lt;strong&gt;explicit content formatting&lt;/strong&gt;, and &lt;strong&gt;structured data markup&lt;/strong&gt;. When combined, these techniques make your content both human-readable and machine-parseable, maximizing visibility across traditional search engines and AI-powered platforms.&lt;/p&gt;

&lt;h2&gt;
  
  
  GEO Principles in Astro Components
&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%2F2joy8n6izdgl1ay8nlub.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%2F2joy8n6izdgl1ay8nlub.gif" alt="Development workflow GIF" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Generative Engine Optimization for Astro involves ensuring your site's content is both human-readable (good UX) and machine-readable (good parsing for AI and search engines). The essential GEO strategies you can implement in Astro include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Semantic HTML Structure:&lt;/strong&gt; Use proper HTML5 semantic elements including &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;header&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;footer&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;main&amp;gt;&lt;/code&gt; tags. These elements provide clear content hierarchy that AI models can interpret.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Explicit Q&amp;amp;A Formatting:&lt;/strong&gt; Include dedicated question-and-answer blocks or summary sections that AI can directly reference in conversational responses.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Structured Data Integration:&lt;/strong&gt; Add JSON-LD schema markup in your component layouts to provide machine-readable metadata about your content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Descriptive Heading Hierarchy:&lt;/strong&gt; Use clear, unique headings (&lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h2&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;h3&amp;gt;&lt;/code&gt;) that represent key facts and topics, making it easier for AI to identify and extract specific information.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Self-Contained Statements:&lt;/strong&gt; Write concise, complete statements that generative models can easily extract and cite without requiring additional context.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Example Astro Article Structure
&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%2Fe22o3t2t1tf8i5kkue1d.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%2Fe22o3t2t1tf8i5kkue1d.gif" alt="Coding demonstration GIF" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's a practical implementation showing how to structure an Astro component with GEO principles:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;---
// geo-astro-component.astro
const pageTitle = "Applying GEO in Astro Components";
const author = "Nerando Johnson";
const datePublished = "2025-10-27";
const description = "Learn how to implement Generative Engine Optimization in Astro components using semantic HTML and structured data.";
---

&amp;lt;article&amp;gt;
  &amp;lt;header&amp;gt;
    &amp;lt;h1&amp;gt;{pageTitle}&amp;lt;/h1&amp;gt;
    &amp;lt;p&amp;gt;By {author} | Published {datePublished}&amp;lt;/p&amp;gt;
  &amp;lt;/header&amp;gt;

  &amp;lt;section&amp;gt;
    &amp;lt;h2&amp;gt;What Is GEO?&amp;lt;/h2&amp;gt;
    &amp;lt;p&amp;gt;
      Generative Engine Optimization (GEO) makes your web content discoverable
      and citable by AI-powered platforms. It ensures your content appears in
      chatbot responses and conversational engines, not just traditional search results.
    &amp;lt;/p&amp;gt;
  &amp;lt;/section&amp;gt;

  &amp;lt;section&amp;gt;
    &amp;lt;h2&amp;gt;How to Structure Content for GEO&amp;lt;/h2&amp;gt;
    &amp;lt;h3&amp;gt;Use Semantic HTML&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;
      Semantic elements like &amp;lt;code&amp;gt;&amp;amp;lt;article&amp;amp;gt;&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;&amp;amp;lt;section&amp;amp;gt;&amp;lt;/code&amp;gt;,
      and &amp;lt;code&amp;gt;&amp;amp;lt;header&amp;amp;gt;&amp;lt;/code&amp;gt; improve content parseability for AI systems.
    &amp;lt;/p&amp;gt;

    &amp;lt;h3&amp;gt;Create Answer-Focused Content&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;
      Include explicit Q&amp;amp;A sections or summary blocks that provide direct answers
      to common questions in your topic area.
    &amp;lt;/p&amp;gt;

    &amp;lt;h3&amp;gt;Implement Structured Data&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;
      Insert &amp;lt;code&amp;gt;&amp;amp;lt;script type="application/ld+json"&amp;amp;gt;&amp;lt;/code&amp;gt; blocks
      containing schema markup to help AI engines understand your content context.
    &amp;lt;/p&amp;gt;

    &amp;lt;h3&amp;gt;Write Clear Headings&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;
      Use unique, descriptive headings for each major point or fact to facilitate
      AI extraction and citation.
    &amp;lt;/p&amp;gt;
  &amp;lt;/section&amp;gt;

  &amp;lt;section&amp;gt;
    &amp;lt;h2&amp;gt;Implementing JSON-LD Schema Markup&amp;lt;/h2&amp;gt;
    &amp;lt;p&amp;gt;
      Schema markup helps AI engines recognize your article's structure and cite
      it accurately. Here's a basic BlogPosting implementation:
    &amp;lt;/p&amp;gt;

    &amp;lt;script type="application/ld+json"&amp;gt;
      {
        "@context": "https://schema.org",
        "@type": "BlogPosting",
        "headline": "{pageTitle}",
        "author": {
          "@type": "Person",
          "name": "{author}"
        },
        "datePublished": "{datePublished}",
        "description": "{description}",
        "mainEntityOfPage": {
          "@type": "WebPage",
          "@id": "https://developingdvlpr.com/blog/geo-applied"
        }
      }
    &amp;lt;/script&amp;gt;

    &amp;lt;p&amp;gt;
      This structured data provides AI platforms with explicit metadata about
      your content's authorship, publication date, and subject matter.
    &amp;lt;/p&amp;gt;
  &amp;lt;/section&amp;gt;

  &amp;lt;section&amp;gt;
    &amp;lt;h2&amp;gt;Why GEO Matters for Astro Developers&amp;lt;/h2&amp;gt;
    &amp;lt;p&amp;gt;
      GEO bridges the gap between traditional SEO and emerging AI visibility.
      By optimizing for both search engines and AI platforms, developers ensure
      their content remains discoverable as user behavior shifts toward
      conversational search and AI-powered assistance.
    &amp;lt;/p&amp;gt;
    &amp;lt;p&amp;gt;
      Astro's component-based architecture makes it particularly well-suited
      for GEO implementation, allowing developers to create reusable,
      semantically structured components with embedded schema markup.
    &amp;lt;/p&amp;gt;
  &amp;lt;/section&amp;gt;

  &amp;lt;section&amp;gt;
    &amp;lt;h2&amp;gt;Frequently Asked Questions&amp;lt;/h2&amp;gt;

    &amp;lt;h3&amp;gt;How is GEO different from traditional SEO in Astro?&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;
      Traditional SEO focuses on keyword optimization and page ranking, while
      GEO emphasizes semantic structure and explicit answers that AI can cite directly.
    &amp;lt;/p&amp;gt;

    &amp;lt;h3&amp;gt;Do I need to choose between SEO and GEO?&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;
      No. GEO techniques like semantic HTML and structured data actually improve
      traditional SEO performance while adding AI discoverability.
    &amp;lt;/p&amp;gt;

    &amp;lt;h3&amp;gt;What schema types work best for GEO?&amp;lt;/h3&amp;gt;
    &amp;lt;p&amp;gt;
      BlogPosting, Article, FAQPage, HowTo, and Person schemas are highly effective
      for GEO because they provide clear content structure and context.
    &amp;lt;/p&amp;gt;
  &amp;lt;/section&amp;gt;

  &amp;lt;footer&amp;gt;
    &amp;lt;p&amp;gt;
      Learn more:
      &amp;lt;a href="https://developingdvlpr.com/blog/geo-explained"&amp;gt;GEO Explained&amp;lt;/a&amp;gt;
    &amp;lt;/p&amp;gt;
  &amp;lt;/footer&amp;gt;
&amp;lt;/article&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Key Implementation Steps and Best Practices
&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%2F326jmftw5123k7jcymgq.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%2F326jmftw5123k7jcymgq.gif" alt="Best practices illustration GIF" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Structure Components with Semantic Tags
&lt;/h3&gt;

&lt;p&gt;Every Astro component should use appropriate HTML5 semantic elements. Replace generic &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; containers with meaningful tags like &lt;code&gt;&amp;lt;article&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;section&amp;gt;&lt;/code&gt;, &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt;, and &lt;code&gt;&amp;lt;aside&amp;gt;&lt;/code&gt; to provide clear content hierarchy.&lt;/p&gt;

&lt;h3&gt;
  
  
  Add JSON-LD Schema to Every Significant Page
&lt;/h3&gt;

&lt;p&gt;Blog posts, articles, product pages, and documentation should include structured data. Use schema.org types that match your content: BlogPosting for articles, Product for commerce pages, FAQPage for Q&amp;amp;A content.&lt;/p&gt;

&lt;h3&gt;
  
  
  Write Self-Contained, Explicit Statements
&lt;/h3&gt;

&lt;p&gt;Each paragraph should be able to stand alone as a complete thought. Avoid vague references that require reading previous sections for context. This helps AI extract and cite specific facts accurately.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create Descriptive, Unique Headings
&lt;/h3&gt;

&lt;p&gt;Every heading should clearly indicate the content that follows. Avoid generic headings like "Introduction" or "Details"—instead use specific titles like "How to Implement JSON-LD in Astro" or "Benefits of Semantic HTML for AI Parsing."&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimize for Question-Answer Format
&lt;/h3&gt;

&lt;p&gt;Include dedicated FAQ sections or structure content to directly answer common questions. This format aligns perfectly with how users query AI systems and how those systems present information.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced GEO Techniques
&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%2Fcia4k5gg9q6stmvr69y9.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%2Fcia4k5gg9q6stmvr69y9.gif" alt="Advanced concepts GIF" width="540" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Entity Optimization
&lt;/h3&gt;

&lt;p&gt;Reference specific entities (people, places, organizations, concepts) consistently throughout your content. Link to authoritative sources and use schema markup to define relationships between entities.&lt;/p&gt;

&lt;h3&gt;
  
  
  Content Hierarchy and Information Architecture
&lt;/h3&gt;

&lt;p&gt;Organize content in logical hierarchies that mirror how AI models categorize information. Use breadcrumbs, clear navigation, and consistent URL structures.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cross-Referencing and Internal Linking
&lt;/h3&gt;

&lt;p&gt;Create rich internal link structures that help AI understand topic relationships and content depth. Link related articles and concepts explicitly.&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessibility as GEO Foundation
&lt;/h3&gt;

&lt;p&gt;Accessible content is inherently more parseable by AI. Follow WCAG guidelines for semantic markup, ARIA labels, and clear content structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Measuring GEO Success
&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%2Fie68dhariid5wkmrgopk.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%2Fie68dhariid5wkmrgopk.gif" alt="Analytics and metrics GIF" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlike traditional SEO metrics (rankings, traffic, conversions), GEO success is measured through:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AI Citation Frequency:&lt;/strong&gt; Monitor how often your content appears in AI-generated responses. Test by querying AI platforms with relevant questions in your domain.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Source Attribution:&lt;/strong&gt; Check whether AI systems correctly attribute information to your site when citing your content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Conversational Reach:&lt;/strong&gt; Track engagement from users who found your content through AI recommendations or citations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Structured Data Validation:&lt;/strong&gt; Use Google's Rich Results Test and Schema Markup Validator to ensure your structured data is correctly implemented.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&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%2Fkuh81lccu3vb8zu2luns.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%2Fkuh81lccu3vb8zu2luns.gif" alt="Conclusion and next steps GIF" width="480" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Implementing GEO in Astro components requires a shift in how developers think about content structure. By combining semantic HTML, explicit content formatting, and comprehensive structured data, you create websites that serve both human visitors and AI platforms effectively. &lt;/p&gt;

&lt;p&gt;Start with the basics: ensure every page uses semantic tags, add appropriate JSON-LD schema, and structure content to answer questions directly. As you refine your approach, incorporate advanced techniques like entity optimization and sophisticated information architecture. &lt;/p&gt;

&lt;p&gt;The web is evolving toward conversational, AI-mediated discovery. Developers who master GEO implementation now position their content—and their skills—at the forefront of this transformation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources for Further Learning
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://a16z.com/geo-over-seo/" rel="noopener noreferrer"&gt;How Generative Engine Optimization (GEO) Rewrites the Rules of Search&lt;/a&gt; - Strategic overview of GEO's impact on digital discovery&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://johndalesandro.com/blog/astro-add-json-ld-structured-data-to-your-website-for-rich-search-results/" rel="noopener noreferrer"&gt;JSON-LD Implementation in Astro Components&lt;/a&gt; - Practical code examples for structured data&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://moz.com/learn/seo/schema-structured-data" rel="noopener noreferrer"&gt;Moz Schema Structured Data Guide&lt;/a&gt; - Comprehensive technical reference for schema markup&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://ahrefs.com/blog/schema-markup/" rel="noopener noreferrer"&gt;Ahrefs Schema Markup Guide&lt;/a&gt; - Advanced schema implementation strategies&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://strapi.io/blog/generative-engine-optimization-geo-guide" rel="noopener noreferrer"&gt;A Brief Guide to Generative Engine Optimization for Developers&lt;/a&gt; - In-depth exploration of GEO principles&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://schema.org/" rel="noopener noreferrer"&gt;Schema.org&lt;/a&gt; - Official schema vocabulary and documentation&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Ready to get started?&lt;/strong&gt; Begin implementing GEO in your Astro projects today. Start with one component, add semantic structure and JSON-LD schema, then expand these practices across your entire site. The web's future is conversational—ensure your content is ready to be discovered, cited, and trusted by the next generation of AI-powered platforms.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Originally published on &lt;a href="https://developingdvlpr.com/blog/geo-applied" rel="noopener noreferrer"&gt;developingdvlpr.com&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>seo</category>
      <category>webdev</category>
      <category>astro</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>GEO : Generative Engine Optimization - Explained</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Mon, 27 Oct 2025 00:10:18 +0000</pubDate>
      <link>https://dev.to/nerajno/geo-generative-engine-optimization-explained-35n5</link>
      <guid>https://dev.to/nerajno/geo-generative-engine-optimization-explained-35n5</guid>
      <description>&lt;p&gt;GEO (Generative Engine Optimization) is a cutting-edge method for making website content discoverable and referenced by AI-powered engines and chatbots. As digital discovery expands from traditional search engines to conversational AI integrations, GEO ensures content is visible not just in search rankings but also in direct answers delivered by generative models like ChatGPT, Qwen,  Claude Opus, Google Gemini among others.&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%2Fcpk2jrvx1eiml64aypa7.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%2Fcpk2jrvx1eiml64aypa7.gif" alt="funny developer gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is GEO?
&lt;/h2&gt;

&lt;p&gt;Generative Engine Optimization focuses on structuring website content in such a way that it is easy to parse and synthesis by AI language models, enabling them to cite, summarize, or reference your material in generated responses. GEO prioritizes semantic clarity, explicit answers, proper headings, and the use of structured data to enhance visibility in AI-driven results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why GEO Is Important
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Broader Reach:&lt;/strong&gt; GEO ensures content isn't just indexed—it’s surfaced and cited in instant, conversational AI responses where many users never see search engine listings and informations searching is changing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Future-Proofing:&lt;/strong&gt; As generative search platforms grow, GEO helps keep people and by extension brands be and stay relevant  thus increasing discoverability in both traditional and new digital spaces.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authority &amp;amp; Trust:&lt;/strong&gt; GEO is crucial because it ensures that structured, reliable, expert-backed content is recognized and referenced by AI platforms, which enhances  the content creators's credibility and authority while driving new forms of traffic and engagement. When websites or web apps are optimized for both traditional and AI-generated responses, developers position their material to be trusted and cited across conversational AI search, securing greater visibility and a competitive edge in the rapidly changing digital landscape.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why Developers Should Learn GEO
&lt;/h2&gt;

&lt;p&gt;For junior and mid-level developers, understanding and then mastering GEO means staying ahead in a rapidly changing field. These skills make developers integral as digital platforms evolve beyond SEO, making their work available in AI-powered summaries and enriching the user experience. Learning GEO opens doors to advanced roles, project leadership, and ensures a developer’s expertise is at the forefront of the next wave in web technology.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Boost Career Value:&lt;/strong&gt; GEO skills are &lt;em&gt;&lt;strong&gt;currently&lt;/strong&gt;&lt;/em&gt; highly sought after, enabling web developers to bridge coding, content, and AI— thus standing out in resumes, portfolio and project pitches.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Early Adopter Advantage:&lt;/strong&gt; With GEO still being an emerging skillset, developers who gain proficiency quickly become pioneers, shaping digital strategies and team standards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Strategic Versatility:&lt;/strong&gt; GEO encourages deeper thinking about structure, context, and audience—skills that power innovation and collaboration within teams. It also reinforces good developer practices of planning and creating semantic and by extension, accessible code. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  GEO vs. SEO: Key Differences
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Feature&lt;/th&gt;
&lt;th&gt;GEO&lt;/th&gt;
&lt;th&gt;SEO&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Discovery Method&lt;/td&gt;
&lt;td&gt;AI summarizes &amp;amp; cites&lt;/td&gt;
&lt;td&gt;Search engines index &amp;amp; rank&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content Focus&lt;/td&gt;
&lt;td&gt;Structured, explicit answers&lt;/td&gt;
&lt;td&gt;Keyword-rich, long-form content&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Goal&lt;/td&gt;
&lt;td&gt;Reference in AI responses&lt;/td&gt;
&lt;td&gt;SERP ranking, site traffic&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Metrics&lt;/td&gt;
&lt;td&gt;AI citations, conversational reach&lt;/td&gt;
&lt;td&gt;Clicks, rankings, conversions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Technical Needs&lt;/td&gt;
&lt;td&gt;Structured data, semantic HTML&lt;/td&gt;
&lt;td&gt;Metadata, page speed, backlinks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  In Short
&lt;/h2&gt;

&lt;p&gt;Learning what is and by extension what is GEO (Generative Engine Optimization), one adopts a forward-looking strategy on how to  structures website content for discovery and citation by AI-powered engines like ChatGPT, Claude Opus, Qwen, and Google Gemini. Unlike traditional SEO, which focuses on keyword ranking in search results, GEO ensures material is parsed, summarized, and directly referenced in conversational AI responses—positioning content for visibility in both search indexes and emerging AI-driven platforms. For developers, mastering GEO bridges content strategy with technical precision, offering a career edge as digital interaction shifts toward generative systems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Learning Resources&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Google’s Structured Data and Schema.org Guides: Learn the fundamentals of creating machine-readable content using schema markup and semantic HTML.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;OpenAI and Anthropic Developer Docs: Explore how generative models interpret structured and unstructured information sources.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Moz and Ahrefs SEO Blogs: Their advanced content structuring and entity optimization techniques closely align with GEO principles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;freeCodeCamp Data and SEO Modules: Practical coding lessons on semantic markup, accessibility, and structured data that complement GEO strategies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Medium and Dev.to Articles on Generative Search: Follow emerging discussions on how AI models ingest data and reference online sources.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Call to Action&lt;br&gt;
Stay ahead of the curve—start integrating GEO principles into your projects today. Structure your content for AI discovery, adopt semantic clarity, and use structured data to ensure your work is cited and trusted by next‑generation generative platforms.&lt;/p&gt;

&lt;p&gt;Would you like the tagline to sound career-focused (appealing to developers’ growth) or innovation-focused (highlighting the future of AI and discovery)?&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>softwaredevelopment</category>
      <category>contentwriting</category>
    </item>
    <item>
      <title>Carolina Codes 2025: My First-Time Speaker Experience</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Wed, 03 Sep 2025 10:26:54 +0000</pubDate>
      <link>https://dev.to/nerajno/carolina-codes-2025-my-first-time-speaker-experience-89a</link>
      <guid>https://dev.to/nerajno/carolina-codes-2025-my-first-time-speaker-experience-89a</guid>
      <description>&lt;h2&gt;
  
  
  Prelude
&lt;/h2&gt;

&lt;h2&gt;
  
  
  What is Carolina Code Conference?
&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%2Fphotos.smugmug.com%2F2025%2FC3%2FDay-1%2FStills%2Fi-vMw7znK%2F0%2FL7FTKKxTkgr76w4F9V5SF7tPLfMpQmndgnQvTWNZm%2FM%2FIMG_0959-M.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%2Fphotos.smugmug.com%2F2025%2FC3%2FDay-1%2FStills%2Fi-vMw7znK%2F0%2FL7FTKKxTkgr76w4F9V5SF7tPLfMpQmndgnQvTWNZm%2FM%2FIMG_0959-M.jpg" alt="Image" width="600" height="449"&gt;&lt;/a&gt;&lt;br&gt;
Carolina Code Conference is a tech conference that brings together developers, engineers, and technology enthusiasts from across the south east and beyond. Think of it as a gathering where people who build software and work with technology come together to share what they've learned, built and discover new approaches to solving problems.  The conference covers everything from fundamental programming concepts to cutting-edge AI, with a focus on practical knowledge you can actually use in your work. I personally loved the emphasis on cyber security and the polyglotic  approach to the content delivered. This year's conference was held at the magnificent &lt;a href="https://www.flywheelgreenvillesc.com/" rel="noopener noreferrer"&gt;Flywheel Coworking building&lt;/a&gt; in Greenville, SC. &lt;/p&gt;

&lt;h2&gt;
  
  
  My First-Time Speaker Journey
&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%2F907oltybxijavpqizvoo.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%2F907oltybxijavpqizvoo.jpg" alt="Image" width="600" height="400"&gt;&lt;/a&gt;&lt;br&gt;
Stepping onto the Carolina Codes stage as a first-time speaker was both exhilarating and nerve-wracking as I was outside of comfort zone of Atlanta The welcoming atmosphere and supportive community made the experience far more comfortable than I had anticipated, also, lock picking . The organizers and sponsors did an exceptional job of creating an environment where both seasoned speakers and newcomers could share their expertise and passion for technology.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Edit:&lt;/em&gt; I missed this, my talk was on &lt;a href="https://developingdvlpr.com/blog/and-it-was-written/" rel="noopener noreferrer"&gt;&lt;em&gt;the Importance of READMEs&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Location, Facilities, and Experience
&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%2F2klg5auir3z8kldtfcuz.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%2F2klg5auir3z8kldtfcuz.jpg" alt="Image" width="600" height="450"&gt;&lt;/a&gt;&lt;br&gt;
The venue provided excellent facilities that enhanced the overall conference experience. The lunch was well-organized and delicious on both days, offering plenty of opportunities for attendees to network and discuss the sessions among other things. The networking events throughout the day were particularly valuable, creating natural opportunities for meaningful conversations between talks. The later networking sessions extended these connections, allowing deeper discussions about the technical topics presented during the day.&lt;/p&gt;

&lt;h2&gt;
  
  
  Outstanding Talks and Insights
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Matt "Kelly" Williams - CEO of Sustainable IT Manifesto Foundation
&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%2Fk6rp6bnbysimfh3i6ubr.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%2Fk6rp6bnbysimfh3i6ubr.jpg" width="600" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Keynote: "Putting the FUN back in Fundamentals: Data Structures, Algorithms, and More!"&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Kelly's keynote was both entertaining and insightful, covering several important points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Self-hosted AI for sustainability&lt;/strong&gt;: He explained why running your own AI models (instead of relying on cloud services like ChatGPT) is better for the environment even though it may be a little  slower. Think of it like learning to and growing your own vegetables instead of buying them shipped from far away - it uses less energy overall and creates the user a new skillset&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The basics still matter&lt;/strong&gt;: Despite all the exciting new AI tools, technology is still built on fundamental concepts like algorithms (step-by-step problem-solving methods) and data structures (organized ways to store information). These basics have become way more important, not less, as technology advances.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Learning can be fun&lt;/strong&gt;: His programming jokes about hash tables and breakfast foods showed that technical topics don't have to be boring or intimidating 👀😂😂😂😂. &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Ethan Foulkes - CEO of Magic Button Lab
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;"10 Words for Building Software Successfully"&lt;/strong&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%2Fux40qkg9mooarj64rg5s.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%2Fux40qkg9mooarj64rg5s.jpg" alt="Image" width="600" height="400"&gt;&lt;/a&gt;&lt;br&gt;
Ethan delivered powerful insights about software development in a concise format from a person who has had variety of positions in the software space :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The complexity paradox&lt;/strong&gt;: "Simple is complicated and complicated is simple" - Creating something that looks simple to users often requires complex work behind the scenes. Meanwhile, over-engineered solutions might seem sophisticated but often miss what users actually need ( don't get high on your supply).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Two types of alignment&lt;/strong&gt;: Getting your team on the same page (everyone understanding their role) is different from aligning with what users actually want (product-market fit). You need both working together to build something truly successful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Knowing what to avoid&lt;/strong&gt;: Great software leaders spend as much time deciding what NOT to build as what to build. Sometimes the best decision is saying no to features that would complicate the product without adding real value.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Kudos to Ethan for including live transcriptions during his presentation - an excellent accessibility feature that enhanced the experience for all attendees.&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Diana Pham - Developer Advocate at Vonage
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;"Beyond Badges: The Biology &amp;amp; Psychology Behind Effective Gamification in Mobile Apps"&lt;/strong&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%2Fcjers9zwys6k1x8gehiv.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%2Fcjers9zwys6k1x8gehiv.jpg" alt="Image" width="300" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Diana connected psychology research with practical app development in fascinating ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Gaming psychology improves apps&lt;/strong&gt;: The techniques that make video games engaging (like achievement systems, progress bars, and reward cycles) can make regular apps more enjoyable and easier to use when applied thoughtfully.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understanding what motivates people&lt;/strong&gt;: Different people are motivated by different things - some want to compete, others want to learn, some want gain knowledge to help others. Apps work better when they tap into these natural motivations rather than just trying to get people addicted.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gaming evolved, didn't disappear&lt;/strong&gt;: Older adults didn't stop playing games - they just started playing different types of games (like Wordle, crosswords, or mobile puzzles). This opens up opportunities for developers who understand these preferences.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Duncan Michel - Senior Detection Engineer
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;"Regex for Fun and Profit"&lt;/strong&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%2Fk1tom5dlhe4ex4f4r6lo.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%2Fk1tom5dlhe4ex4f4r6lo.jpg" alt="Image" width="600" height="400"&gt;&lt;/a&gt;&lt;br&gt;
Duncan made regular expressions (regex) much less intimidating:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Regex becomes manageable with practice&lt;/strong&gt;: Regular expressions might look like cryptic symbols at first (like &lt;code&gt;\d{3}-\d{2}-\d{4}&lt;/code&gt; for Social Security numbers), but they're just a powerful way to find and match text patterns. With practice, they become a reliable tool rather than mysterious code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Perfect for specific text problems&lt;/strong&gt;: Regex excels at solving particular types of problems - like validating email addresses, extracting phone numbers from documents, or cleaning up messy data. It's especially useful when combined with Python scripts for automation.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-world security applications&lt;/strong&gt;: Duncan showed how regex patterns can identify malicious software by recognizing suspicious code patterns - turning this text-matching tool into one of  cybersecurity must have.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sarah Matta - Software Engineer
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;"Number Sense for Programmers: The Hidden Math You Already Use"&lt;/strong&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%2F1iqy39646s8fey0z37iw.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%2F1iqy39646s8fey0z37iw.jpg" alt="Image" width="600" height="400"&gt;&lt;/a&gt;&lt;br&gt;
Sarah revealed how much math is hidden in everyday programming:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Math is everywhere in programming&lt;/strong&gt;: Even simple tasks like calculating sales tax, determining screen layouts, or managing user permissions involve mathematical thinking. You're doing math even when you don't realize it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Math skills can be learned through practice&lt;/strong&gt;: You don't need to be a math genius to be a good programmer. Mathematical thinking develops naturally as you solve programming problems - it's like building muscle through exercise.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Small math mistakes can cause big problems&lt;/strong&gt;: She shared examples of how misunderstanding floating-point numbers (how computers handle decimals) has led to multimillion-dollar financial errors. Understanding these concepts isn't academic - it's essential for building reliable software.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Doug Cone - Senior Full Stack Developer &amp;amp; Professional Problem Solver
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;"Beyond Play: Modding Games for Real-World Tech Skills"&lt;/strong&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%2F77kheirrl1fslbs1v31l.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%2F77kheirrl1fslbs1v31l.jpg" alt="Image" width="600" height="400"&gt;&lt;/a&gt;&lt;br&gt;
Doug's journey from casual gamer to professional developer was truly inspiring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Game modding can become a real career&lt;/strong&gt;: Modding games (creating custom content or modifications) isn't just a hobby - He walked it leading to substantial income and professional opportunities. Think of it like learning to build custom cars in your garage, then becoming a professional car restorer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The modder mindset transfers to professional work&lt;/strong&gt;: The curiosity and problem-solving approach needed for modding - figuring out how systems work, breaking them down, and rebuilding them - is exactly what software professionals do.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills that work across industries&lt;/strong&gt;: The technical abilities you develop through modding (coding, debugging, systems thinking, creativity) apply to many software fields beyond gaming, including software development, cybersecurity, data analysis and AI.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Trey Grainger - Founder, AI-Powered Search
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;"AI-Powered Search: Exploring the Algorithms Measuring (and Shaping) How We Think"&lt;/strong&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%2F63mg8lmqk3aalq6yk7fz.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%2F63mg8lmqk3aalq6yk7fz.jpg" alt="Image" width="600" height="400"&gt;&lt;/a&gt;&lt;br&gt;
Trey's presentation revealed how AI search algorithms influence our daily digital lives:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AI is quietly shaping what you see and think&lt;/strong&gt;: Every day, algorithms decide what search results you see, what social media posts appear in your feed, and what products are recommended to you. These systems are subtly influencing your decisions and perspectives in ways you might not notice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The technology behind AI search is remarkably complex&lt;/strong&gt;: Modern AI search involves multiple sophisticated systems working together - click tracking (monitoring what you click), collaborative filtering (showing you things similar users liked), and large language models (AI that understands and generates text). It's like a sophisticated orchestra where each instrument plays a different role.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;You can use these same technologies in your own work&lt;/strong&gt;: Understanding how these AI search systems work opens up opportunities to use similar techniques for organizing information, automating research, or building smarter applications in your own projects.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  People Met and Key Takeaways
&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%2Fh1lnszymzk39m4ektkk5.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%2Fh1lnszymzk39m4ektkk5.jpg" alt="Image" width="600" height="450"&gt;&lt;/a&gt;&lt;br&gt;
The networking opportunities at Carolina Codes were incredibly valuable, leading to several memorable conversations:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Barry Jones&lt;/strong&gt; (Organizer) - Barry shared insights from his work at &lt;a href="https://www.brightball.com/articles/story-points-are-pointless-measure-queues" rel="noopener noreferrer"&gt;Brightball&lt;/a&gt; about why traditional project estimation methods (story points) often fail, and why tracking workflow bottlenecks is more effective. This perspective challenged how I think about project planning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redvers Davies&lt;/strong&gt; - Our conversation proved an important point: even advanced AI can confidently give wrong answers when explaining niche programming languages (in this case, Pony lang). He also recommended "Ginger's Revenge," which sounds intriguing. A good reminder that AI has limitations and that personal recommendations from experienced developers are still invaluable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;James Lowden&lt;/strong&gt; - We started a fascinating discussion about the history of Bell Labs and its influence on modern computing, but unfortunately ran out of time. I'm planning to follow up because the historical context of innovation is so important for understanding where technology is heading.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Eugene Willis&lt;/strong&gt; - Our conversation highlighted the significant differences between how technology is used in academic settings versus business environments. The same technical skills apply differently depending on whether you're trying to advance knowledge or solve immediate business problems.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;David Mackey&lt;/strong&gt; - He shared his perspective on how programming languages and tools evolve over time while core problem-solving principles remain constant. This historical view helps put current technology trends in context.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gratitude to Organizers and Volunteers
&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%2F3avc2duu7bm5rg618y7h.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%2F3avc2duu7bm5rg618y7h.jpg" alt="Image" width="600" height="400"&gt;&lt;/a&gt;&lt;br&gt;
The success of Carolina Codes 2025 was clearly the result of tremendous effort by the organizers and volunteers. Their attention to detail, from venue logistics to speaker support, created an environment where both learning and networking could flourish. The seamless execution of the event allowed attendees to focus entirely on the content and connections rather than worrying about logistics.&lt;/p&gt;

&lt;h2&gt;
  
  
  Networking Events
&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%2Fdgad4hm5p1opzilkjin9.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%2Fdgad4hm5p1opzilkjin9.jpg" alt="Image" width="600" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Conference Welcome Social @ Gather - felt really welcomed into the community  and, had good conversations and that space was sooo awesome. 
&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%2Fpqbh4anegnfvlsvqwbe1.jpg" alt="Image" width="600" height="400"&gt; &lt;/li&gt;
&lt;li&gt;New Realm Brewing - really cool after event hosted by Vonage, loved the after day 1 conference conversations and the stroll down downtown Greenville was enlightening.
&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%2Fyd1ohhrn3gtzqyp80v31.jpg" width="600" height="400"&gt;
&lt;/li&gt;
&lt;li&gt;Fireforge - final day and conference was done, we had a wedding party nearby, I got to meet most of the speakers and learn how much AI has the &lt;em&gt;kaukaasi&lt;/em&gt;, thanks Red&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary and Key Takeaways
&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%2Fjr4a4laim12wp9o2v41z.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%2Fjr4a4laim12wp9o2v41z.jpg" alt="Image" width="300" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Carolina Codes 2025 reinforced several important themes that will influence my approach to technology going forward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Master the fundamentals&lt;/strong&gt;: Whether we're talking about data structures, mathematical concepts, or text pattern matching, the conference showed that solid foundational knowledge becomes more valuable as technology advances, not less. It's like learning to read music - once you understand the basics, you can play any instrument.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Look for connections across different fields&lt;/strong&gt;: The most interesting talks connected seemingly unrelated areas - gaming psychology with app design, environmental sustainability with AI architecture, and mathematical thinking with everyday programming. Innovation often happens at these intersections.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Community learning never stops&lt;/strong&gt;: The networking conversations were as educational as the formal presentations. Conferences like this serve as catalysts for ongoing professional relationships and continuous learning that extends far beyond the event itself. It points to fact also that you need to either an organizer, participant, speaker and attendee at these events.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Focus on practical application&lt;/strong&gt;: Every speaker emphasized hands-on experience and real-world problem-solving over theoretical knowledge. The most valuable learning happens when you're actually building, debugging, swearing and solving real problems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Technology decisions affect people&lt;/strong&gt;: From system design to AI algorithms, code/tech has been shaping our thinking to gamification influencing behavior, this conference highlighted and emphasized  that every technical choice we make has human consequences. As technologists, we have a responsibility to consider these impacts thoughtfully.&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%2Fu3ohmth3eio0o4catk8h.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%2Fu3ohmth3eio0o4catk8h.jpg" width="600" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Carolina Codes 2025 successfully combined technical depth with community building in a way that left me both more knowledgeable and more connected to the broader technology community. As a first-time speaker, I came away energized about continuing to share knowledge while learning from the remarkable group of people working to make technology more useful, applicable, accessible, and human-centered.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;For more information about Carolina Codes, visit their &lt;a href="https://blog.carolina.codes/about" rel="noopener noreferrer"&gt;blog&lt;/a&gt; and follow their updates for future events.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>community</category>
      <category>ai</category>
      <category>techtalks</category>
      <category>career</category>
    </item>
    <item>
      <title>And It was Written : An Introspective in the Importance of ReadMes</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Fri, 15 Aug 2025 18:13:12 +0000</pubDate>
      <link>https://dev.to/nerajno/and-it-was-written-an-introspective-in-the-importance-of-readmes-ipp</link>
      <guid>https://dev.to/nerajno/and-it-was-written-an-introspective-in-the-importance-of-readmes-ipp</guid>
      <description>&lt;h3&gt;
  
  
  Prelude
&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%2Fagdkvw3b658rpdvxd5pn.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%2Fagdkvw3b658rpdvxd5pn.gif" width="268" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We don't mind publishing here, but we stagger our content here as we published this blog earlier (by a few days) at &lt;a href="https://developingdvlpr.com/blog/and-it-was-written/" rel="noopener noreferrer"&gt;my personal blog&lt;/a&gt;. Drop by and view what you need to. &lt;/p&gt;

&lt;h3&gt;
  
  
  Intro
&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%2F1epf7f9tfuj0whp2cklw.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%2F1epf7f9tfuj0whp2cklw.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Whether you’re a seasoned developer or someone just starting your coding journey, side projects are a great way to learn, experiment, and showcase your skills. But a highly overlooked factor that can make the difference between a project that thrives and one that is forgotten: documentation. Good documentation—starting with a solid README—acts as the voice of your project. It explains what you’ve built, why you built it, and how others can use it. Without it, even the most clever code can languish unseen, unused and who wants to be lost and clueless&lt;/p&gt;

&lt;h3&gt;
  
  
  Define README?
&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%2Fs0t1mciwzx1tlpsfns0a.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%2Fs0t1mciwzx1tlpsfns0a.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A README is usually the very first file someone encounters when visiting your project repository—often displayed immediately on platforms like GitHub or GitLab. Think of it as the foyer to your work, offering visitors an accessible overview before they dive into the project itself. A typical simple README include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Project name and description&lt;/em&gt;&lt;/strong&gt; – Explain what the project does and why it’s useful.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Setup instructions&lt;/strong&gt;&lt;/em&gt; – Provide clear steps to install and run the project.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Usage examples&lt;/strong&gt;&lt;/em&gt; – Show the project in action.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Contribution &amp;amp; license details&lt;/strong&gt;&lt;/em&gt; – Outline how others can participate and under what terms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The README acts as the “face” of your project, inviting others in, shows some professionalism or considerations and guiding users on their first steps.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Documentation Matters
&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%2Fq6lltr5f5xpjsu0d7eg7.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%2Fq6lltr5f5xpjsu0d7eg7.gif" width="480" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Without proper documentation, your project is like a building without telling people where the front door is. Here’s why documentation (and especially READMEs) are critical:&lt;br&gt;
&lt;strong&gt;&lt;em&gt;- Collaboration and onboarding&lt;/em&gt;&lt;/strong&gt; – if you share your code, good docs help others—and future you—quickly understand how things work.&lt;br&gt;
Project adoption &amp;amp; longevity – people are far more likely to use or contribute to projects that are easy to understand and set up. Its also great if it is documented, &lt;em&gt;&lt;strong&gt;get it&lt;/strong&gt;&lt;/em&gt;, if there is a track record on how code is released, thus contributing to its long term health/ viability. &lt;br&gt;
&lt;strong&gt;&lt;em&gt;- Professionalism&lt;/em&gt;&lt;/strong&gt; – a well-documented project reflects care, quality, and reliability.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;- Avoiding confusion&lt;/em&gt;&lt;/strong&gt; – without documentation, users may misinterpret your project’s purpose or implementation.&lt;/p&gt;

&lt;h3&gt;
  
  
  Principles of Good Documentation
&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%2Fnvryb38gv0k7ryhph33a.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%2Fnvryb38gv0k7ryhph33a.gif" width="285" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Creating effective documentation doesn’t mean writing a novel—it’s about being clear, concise, and structured. Keep these principles in mind:&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Clarity over cleverness&lt;/strong&gt;&lt;/em&gt; – write simply. Avoid unexplained jargon.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Logical order&lt;/strong&gt;&lt;/em&gt; – guide the reader naturally from introduction, to setup, to usage.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;- User-first approach&lt;/em&gt;&lt;/strong&gt; – think like someone encountering your work for the first time. What’s the first thing they’d need to know? See also the KISS rule.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;- Keep it up to date&lt;/em&gt;&lt;/strong&gt; – Outdated documentation can frustrate users more than having none at all.&lt;/p&gt;

&lt;h3&gt;
  
  
  Essential Elements of a Great README
&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%2Fodo1ysxo8zlt77b7yk1a.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%2Fodo1ysxo8zlt77b7yk1a.gif" width="370" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you include nothing else, make sure your README covers these essentials:&lt;br&gt;
&lt;strong&gt;&lt;em&gt;- Project Title &amp;amp; Description&lt;/em&gt;&lt;/strong&gt; –  a one- or two-sentence summary of what your project does.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Installation Instructions&lt;/strong&gt;&lt;/em&gt; – clear steps for setup. Commands should be copy-paste ready.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Usage Examples&lt;/strong&gt;&lt;/em&gt; – show the most common use cases. Screenshots, screen recordings and GIFs are a plus.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Features&lt;/strong&gt;&lt;/em&gt; – highlight the key capabilities and what it should do.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Configuration&lt;/strong&gt;&lt;/em&gt; – explain how users can tweak settings.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;- Contributing Guidelines&lt;/em&gt;&lt;/strong&gt; – let others know how they can help improve your project.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;- License&lt;/em&gt;&lt;/strong&gt; – state the terms clearly (e.g., MIT, Apache 2.0).&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Contact/Support&lt;/strong&gt;&lt;/em&gt; – Who to contact for questions or reporting issues.&lt;/p&gt;

&lt;h3&gt;
  
  
  Expanding Beyond the README
&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%2Futchx39174gcjby7fe6d.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%2Futchx39174gcjby7fe6d.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For small side projects, a robust README may be enough. But as your project grows, consider:&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Wikis&lt;/strong&gt;&lt;/em&gt; – For deep dives into concepts or architecture.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- API documentation&lt;/strong&gt;&lt;/em&gt; – Auto-generated docs using tools like Sphinx (Python), JSDoc (JavaScript), or mkdocs.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Inline comments&lt;/strong&gt;&lt;/em&gt; – &lt;code&gt;Self-explanatory code is best&lt;/code&gt;, but well-placed comments are invaluable.&lt;br&gt;
&lt;em&gt;&lt;strong&gt;- Organizing documentation&lt;/strong&gt;&lt;/em&gt; into dedicated sections or a /docs folder can prevent confusion as your project scales.&lt;/p&gt;

&lt;h3&gt;
  
  
  Best Practices for Side Project Documentation
&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%2Fh4c0kz11xsyc3mj0o6og.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%2Fh4c0kz11xsyc3mj0o6og.gif" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Start with the README—even before coding. It forces you to clarify your project’s purpose. Document as you go. Don’t wait until the end—it’s harder to recall steps later. Use visuals like screenshots, diagrams, or badges to make documentation engaging. Leverage templates – Many README generators exist, ensuring you don’t miss important sections.&lt;/p&gt;

&lt;h3&gt;
  
  
  Real-World Examples
&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%2Fyrz8ghmxxt78pjff74ay.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%2Fyrz8ghmxxt78pjff74ay.gif" width="384" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/vuejs/core" rel="noopener noreferrer"&gt;Vue3’s&lt;/a&gt; README clearly explains the purpose, includes code examples, and links to extended docs. &lt;a href="https://github.com/freeCodeCamp/freeCodeCamp" rel="noopener noreferrer"&gt;freeCodeCamp&lt;/a&gt; uses badges, visuals, and contribution guidelines that invite participation. Even small improvements—like adding installation commands or a usage demo—can dramatically improve your README’s impact.&lt;/p&gt;

&lt;h3&gt;
  
  
  Common Documentation Mistakes
&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%2F9tjko4yua2fphtx844pd.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%2F9tjko4yua2fphtx844pd.gif" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;- Outdated instructions&lt;/em&gt;&lt;/strong&gt; – always update docs when you change code. &lt;br&gt;
&lt;strong&gt;&lt;em&gt;- Missing setup steps&lt;/em&gt;&lt;/strong&gt; – test your README from scratch to ensure nothing is missing. &lt;br&gt;
&lt;strong&gt;&lt;em&gt;- Technical overload too soon&lt;/em&gt;&lt;/strong&gt; – begin with basic usage, then move advanced details further down. &lt;br&gt;
&lt;strong&gt;&lt;em&gt;- Ignoring your audience&lt;/em&gt;&lt;/strong&gt; – write for the skill level you expect your audience to have.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&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%2Ftpghzgwmdi7avphr1qht.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%2Ftpghzgwmdi7avphr1qht.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A side project is more than just code—it’s a communication tool for your skills, creativity, and problem-solving approach. By investing in a well-structured README and thoughtful documentation, it&lt;br&gt;
&lt;em&gt;- makes your project welcoming.&lt;/em&gt;&lt;br&gt;
&lt;em&gt;- increases its chance of adoption, use and contributions.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Build a habit that will benefit you in professional settings.&lt;br&gt;
Action step: Take one of your existing side projects and spend 30 minutes improving its README. Add missing setup instructions, a usage example, and a contact section. The additional resources section should has an example of a simple ReadMe or an extensive readMe template, if you feeling like playing on the dark side. Your future self—and your users—will thank you.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/DomPizzie/7a5ff55ffa9081f2de27c315f5018afc" rel="noopener noreferrer"&gt;Simple Readme Template/Example&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://gist.github.com/Nerajno/f4de08feb131fcd679f3581246e7bc48" rel="noopener noreferrer"&gt;Comprenhensive ReadMe Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/anuraghazra/github-readme-stats" rel="noopener noreferrer"&gt;Making it pretty: Github Readme Stats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/othneildrew/Best-README-Template" rel="noopener noreferrer"&gt;Best-README-Template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/gregmartinez44/readme-driven-development-373k"&gt;README driven development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/documatic/awesome-readme-examples-for-writing-better-readmes-3eh3"&gt;Awesome Readme Examples for Writing better Readmes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;This article is a personal reflection on the importance of documentation, particularly READMEs, in the context of projects ( in our usecase, side projects). It is not intended to be a comprehensive guide to documentation, but rather a personal account of my experiences, insights, and recommendations. It may also be under constant revision and improvements as seen and needed.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>documentation</category>
      <category>tooling</category>
      <category>career</category>
    </item>
    <item>
      <title>"How !To Be Mentored V2 : Building Resilient Tech Careers Through Strategic Mentorship"</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Thu, 06 Mar 2025 15:17:44 +0000</pubDate>
      <link>https://dev.to/nerajno/how-not-to-be-mentored-building-resilient-tech-careers-through-strategic-mentorship-19b8</link>
      <guid>https://dev.to/nerajno/how-not-to-be-mentored-building-resilient-tech-careers-through-strategic-mentorship-19b8</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&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%2F1djfmlsc0q2zqhvk7brv.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%2F1djfmlsc0q2zqhvk7brv.gif" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The technology industry thrives on continuous learning and knowledge transfer. As technologies evolve rapidly and skills require constant refinement, mentorship has become an essential component of professional development in tech. However, many mentoring relationships fall short of their full potential, leading to burnout, frustration, and missed opportunities for growth.&lt;/p&gt;

&lt;p&gt;This article aims to explore how to establish and maintain effective mentor-mentee relationships in the tech industry, based on some insights I have had as a &lt;em&gt;paid&lt;/em&gt; software developer over the last 5+ years. Whether you're seeking guidance or offering it, understanding the dynamics of successful mentorship can transform careers and build stronger tech communities.&lt;/p&gt;

&lt;p&gt;As &lt;strong&gt;&lt;em&gt;Bob Proctor&lt;/em&gt;&lt;/strong&gt; eloquently stated, "A mentor is someone who sees more talent and ability within you, than you see in yourself, and helps bring it out of you." This definition captures the essence of mentorship: recognizing potential and facilitating growth. Mentorship can be formally defined ("the act of giving guidance by a more experienced person in a specific area or subject matter") or informal"the ability to both provide hope, guidance, and direction from someone who has been there to someone who is going there").&lt;/p&gt;

&lt;h2&gt;
  
  
  For Mentees: Maximizing Your Growth Potential
&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%2Fr80nlui6sc6te95zlkkn.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%2Fr80nlui6sc6te95zlkkn.gif" width="400" height="310"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Do's for Mentees
&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%2Fj7idk950lelrfvh29uzj.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%2Fj7idk950lelrfvh29uzj.gif" width="480" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Recognize and Articulate Your Value Proposition
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Non-Technical Skills&lt;/strong&gt;: Communication abilities, grit, critical thinking skills, and interpersonal strengths.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Technical Contributions&lt;/strong&gt;: Beginner to intermediate knowledge, growth potential, and adjacent knowledge from other disciplines.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Establish Clear Structure
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Document expectations for the mentoring relationship.&lt;/li&gt;
&lt;li&gt;Set specific timeframes (6 weeks, 6 months).&lt;/li&gt;
&lt;li&gt;Determine meeting frequency and methods (virtual, in-person).&lt;/li&gt;
&lt;li&gt;Define relationship goals and mutual responsibilities.&lt;/li&gt;
&lt;li&gt;Identify what competence looks like in your role.&lt;/li&gt;
&lt;li&gt;Establish protocols for requesting assistance.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. Manage Time and Tasks Effectively
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Time Management Tools&lt;/strong&gt;: Kitchen timers, Forest App, planners, Pomodoro Method, Trello.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Task Management Approaches&lt;/strong&gt;: 

&lt;ul&gt;
&lt;li&gt;Implement regular planning with goal frequency checks.&lt;/li&gt;
&lt;li&gt;Choose paper, digital planning systems or both.&lt;/li&gt;
&lt;li&gt;Develop S.M.A.R.T. goals (Specific, Measurable, Achievable, Relevant, Time-bound).&lt;/li&gt;
&lt;li&gt;Be specific about what you want to accomplish.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. Take Initiative
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Actively seek opportunities to learn and grow.&lt;/li&gt;
&lt;li&gt;Don't wait for your mentor to assign tasks or projects.&lt;/li&gt;
&lt;li&gt;Research topics before meetings to ask informed questions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5. Follow Through and Document Progress
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Complete assigned tasks and personal commitments.&lt;/li&gt;
&lt;li&gt;Document your work and progress systematically.&lt;/li&gt;
&lt;li&gt;Demonstrate commitment through consistent action.&lt;/li&gt;
&lt;li&gt;Ship your work, making sure it's accessible and well-executed.&lt;/li&gt;
&lt;li&gt;Maintain a "brag document" or portfolio of accomplishments.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Don'ts for Mentees
&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%2F3k4zjl5kyo0ou0lv4ayd.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%2F3k4zjl5kyo0ou0lv4ayd.gif" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Don't Enter Mentorship Without Direction
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Avoid vague goals or objectives.&lt;/li&gt;
&lt;li&gt;Don't expect mentors to define your career path for you.&lt;/li&gt;
&lt;li&gt;Don't waste valuable mentorship time figuring out basics that could be self-learned.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Don't Make Common Mistakes
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Failing to prepare for mentorship meetings.&lt;/li&gt;
&lt;li&gt;Being passive rather than proactive.&lt;/li&gt;
&lt;li&gt;Not communicating needs or challenges clearly.&lt;/li&gt;
&lt;li&gt;Missing opportunities to apply feedback.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. Don't Harbor Misconceptions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Mentorship is not a shortcut to success.&lt;/li&gt;
&lt;li&gt;Your mentor is not responsible for your career advancement.&lt;/li&gt;
&lt;li&gt;Growth requires effort beyond the mentorship relationship.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. Don't Underestimate Tool Importance
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Neglecting project management and documentation tools.&lt;/li&gt;
&lt;li&gt;Failing to track progress systematically.&lt;/li&gt;
&lt;li&gt;Not leveraging technology to enhance learning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5. Don't Hesitate to Ask Questions
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;When unsure, ask for clarification.&lt;/li&gt;
&lt;li&gt;Learn how to ask effective questions that demonstrate your thinking.&lt;/li&gt;
&lt;li&gt;Don't be afraid to admit knowledge gaps.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  For Mentors: Guiding the Next Generation
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Do's for Mentors
&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%2F1ch0jtqqt74457jlmi0j.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%2F1ch0jtqqt74457jlmi0j.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Recognize the Importance of Mentorship
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Understanding others helps you become better understood.&lt;/li&gt;
&lt;li&gt;Mentorship develops your leadership and communication skills.&lt;/li&gt;
&lt;li&gt;Teaching solidifies your own knowledge.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Provide Proper Tooling
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Share resources, frameworks, and technologies.&lt;/li&gt;
&lt;li&gt;Introduce productivity and learning tools.&lt;/li&gt;
&lt;li&gt;Ensure mentees have what they need to succeed.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. Offer Structured Guidance and Support
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Establish regular one-on-one meetings.&lt;/li&gt;
&lt;li&gt;Create safe spaces for questions and exploration.&lt;/li&gt;
&lt;li&gt;Provide constructive feedback and encouragement.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. Share Knowledge and Experience
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Offer insights from your career journey.&lt;/li&gt;
&lt;li&gt;Discuss both successes and failures.&lt;/li&gt;
&lt;li&gt;Connect theoretical concepts to practical applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5. Foster Growth and Independence
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Gradually reduce direct assistance as skills develop.&lt;/li&gt;
&lt;li&gt;Encourage problem-solving before providing solutions.&lt;/li&gt;
&lt;li&gt;Celebrate progress and milestones.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  6. Establish Accountability
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Review documented goals regularly.&lt;/li&gt;
&lt;li&gt;Track progress using shared documentation.&lt;/li&gt;
&lt;li&gt;Require "proof" of work and learning.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Don'ts for Mentors
&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%2Fpliajay9g6rdex1ce4ka.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%2Fpliajay9g6rdex1ce4ka.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Don't Risk Burnout
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Avoid taking on too many mentees.&lt;/li&gt;
&lt;li&gt;Set boundaries around availability and support.&lt;/li&gt;
&lt;li&gt;Balance mentorship with other responsibilities.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. Don't Neglect Accountability
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Failing to track mentee progress.&lt;/li&gt;
&lt;li&gt;Not holding mentees to their commitments.&lt;/li&gt;
&lt;li&gt;Allowing the relationship to become too casual.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. Don't Mentor Without Preparation
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Entering mentorship without clear guidelines.&lt;/li&gt;
&lt;li&gt;Not considering your own strengths and limitations.&lt;/li&gt;
&lt;li&gt;Failing to establish expectations upfront.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. Don't Doubt Your Value
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Questioning if you should mentor at all.&lt;/li&gt;
&lt;li&gt;Wondering if you know enough to guide others.&lt;/li&gt;
&lt;li&gt;Underestimating the value of your experience.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5. Don't Take Responsibility for Mentee Success
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Remember that mentees must drive their own growth.&lt;/li&gt;
&lt;li&gt;Avoid feeling like you've failed if a mentee struggles.&lt;/li&gt;
&lt;li&gt;Focus on providing guidance rather than solutions.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Tools and Resources for Effective Mentorship
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Documentation Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Notion&lt;/strong&gt;: For collaborative tracking and documentation&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Brag Documents&lt;/strong&gt;: Structured records of accomplishments and learnings&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Shared Workspaces&lt;/strong&gt;: For visibility into projects and progress&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Meeting and Communication Tools
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;One-on-One Meeting Templates&lt;/strong&gt;: Structured formats for productive discussions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Goal-Setting Frameworks&lt;/strong&gt;: SMART goals and OKRs (Objectives and Key Results)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Progress Tracking Systems&lt;/strong&gt;: Visual representations of advancement&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Time Management Solutions
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pomodoro Technique&lt;/strong&gt;: Focused work intervals with breaks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forest App&lt;/strong&gt;: Gamified focus tool that grows virtual trees.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Digital and Physical Planners&lt;/strong&gt;: Structured time allocation systems.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Further Reading and Resources
&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%2Fo6gs27k0plo9jp0go315.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%2Fo6gs27k0plo9jp0go315.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/5-mentorship-learnings/" rel="noopener noreferrer"&gt;"5 Things I Learned Mentoring 2,500 Aspiring Developers" ~&amp;gt; &lt;em&gt;&lt;strong&gt;FreeCodeCamp&lt;/strong&gt;&lt;/em&gt;"&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/the-mentoring-framework/" rel="noopener noreferrer"&gt;"How to Use the Mentoring Framework to Learn a New Skill" ~&amp;gt; &lt;em&gt;&lt;strong&gt;FreeCodeCamp&lt;/strong&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://alpha.codingsans.com/blog/mentoring-developers" rel="noopener noreferrer"&gt;"Mentoring Developers: Best Practices From Uber - Interview With Gergely Orosz" (Code Sans)
&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;"&lt;a href="https://en.wikipedia.org/wiki/Atomic_Habits" rel="noopener noreferrer"&gt;Atomic Habits" by James Clear&lt;/a&gt; (for building consistent learning habits)&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://pragprog.com/titles/actb2/technical-blogging-second-edition/" rel="noopener noreferrer"&gt;"Technical Blogging" by Antonio Cangiano (for documenting your journey &lt;strong&gt;&lt;em&gt;deeply or in a deep dive&lt;/em&gt;&lt;/strong&gt;)&lt;/a&gt;
&lt;a href="https://andrewwalpole.com/blog/lead-great-engineering-manager-one-on-ones/" rel="noopener noreferrer"&gt;* Lead Great Engineering Manager One-on-ones ~ Andrew
Walpole ( for good 1-on-1s )&lt;/a&gt;
&lt;a href="https://dev.to/abbeyperini/coding-and-adhd-adhd-brains-im1"&gt;* Coding and ADHD - ADHD Brains ~ Abbey Perini&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&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%2Fupho15u6vv66an5zc7on.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%2Fupho15u6vv66an5zc7on.gif" width="600" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Effective mentorship in technology requires intentionality and structure from both mentors and mentees. By establishing clear expectations, leveraging appropriate tools, and maintaining accountability, these relationships can accelerate professional growth and prevent common pitfalls like burnout and misaligned expectations.&lt;/p&gt;

&lt;p&gt;For mentees, the key is to prepare thoroughly, take initiative, follow through consistently, and document progress. For mentors, success comes from providing appropriate guidance, tools, and support while fostering independence and holding mentees accountable.&lt;/p&gt;

&lt;p&gt;When executed thoughtfully, mentorship provides more than technical knowledge—it offers hope and structure for navigating the challenging landscape of technology careers. As the technology industry continues to evolve rapidly, structured mentorship relationships will remain essential for developing talent and building resilient tech communities.&lt;/p&gt;

</description>
      <category>mentorship</category>
      <category>mentalhealth</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>Building with TypeScript: A Lego-Based Guide</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Mon, 20 Jan 2025 13:11:43 +0000</pubDate>
      <link>https://dev.to/nerajno/building-with-typescript-a-lego-based-guide-194k</link>
      <guid>https://dev.to/nerajno/building-with-typescript-a-lego-based-guide-194k</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&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%2Flqu1jl27rgnxbcy6r878.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%2Flqu1jl27rgnxbcy6r878.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;"Start where you are, use what you have"&lt;/em&gt;&lt;/strong&gt; is one of the sayings that I live by or try to. This expression covers a component of the growth mindset. Most of us in front-end or JavaScript land have either started to or completely migrated to TypeScript. Some of us may still have issues understanding the concepts or converting our thinking from JavaScript to TypeScript's approach. To fix this, we're going to use one of my favorite tools: Legos. So let's start here: &lt;em&gt;"Think of JavaScript as a basic Lego set where you can build freely, and TypeScript as the same set with detailed instruction manuals and quality control checks."&lt;/em&gt; A deeper dive into TypeScript can be found &lt;a href="https://www.typescriptlang.org/docs/handbook/intro.html" rel="noopener noreferrer"&gt;here&lt;/a&gt;, &lt;a href="https://www.freecodecamp.org/news/typescript-for-beginners-guide/" rel="noopener noreferrer"&gt;here&lt;/a&gt; and in this &lt;a href="https://youtu.be/U6s2pdxebSo?si=02OtQNxFBnjvXiXz" rel="noopener noreferrer"&gt;video&lt;/a&gt;. This approach aims to show you how each JavaScript concept translates to TypeScript, using Lego analogies to make the concepts easier to understand.&lt;/p&gt;

&lt;h2&gt;
  
  
  Variable Scope and Hoisting: The Building Rooms
&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%2Fbd0ibrskqbsjjyoicgxr.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%2Fbd0ibrskqbsjjyoicgxr.gif" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Definitions of Concepts&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;A variable scope&lt;/em&gt; refers to the context in which variables are accessible and can be used within a program. There are two main types of scope: &lt;strong&gt;local scope&lt;/strong&gt; and &lt;strong&gt;global scope&lt;/strong&gt;. A variable declared outside of any function is in the global scope, meaning it can be accessed and modified anywhere in the code. On the other hand, variables declared inside a function are in local scope and are only accessible within that function. JavaScript uses the &lt;code&gt;var&lt;/code&gt;, &lt;code&gt;let&lt;/code&gt;, and &lt;code&gt;const&lt;/code&gt; keywords to declare variables, each affecting scope differently. Variables declared with &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt; are block-scoped, this means that they are only accessible within the nearest enclosing block &lt;code&gt;{}&lt;/code&gt;. In contrast, &lt;code&gt;var&lt;/code&gt; is function-scoped, making it available throughout the entire function where it is declared. A clear understanding of variable scope helps prevent issues like variable name conflicts and unintended side effects in JavaScript programs.&lt;/p&gt;

&lt;p&gt;Hoisting is a behavior where variable and function declarations are moved to the top of their containing scope before the code is executed &lt;em&gt;(the compilation phase)&lt;/em&gt;. This means that variables and functions can be used before they are declared. Function declarations are fully hoisted, allowing them to be called even before their definition in the code. However, variable declarations using &lt;code&gt;var&lt;/code&gt; are hoisted without their initial values, so accessing them before the assignment will result in &lt;code&gt;undefined&lt;/code&gt;. Variables declared with &lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt; are also hoisted but are not initialized, leading to a &lt;code&gt;ReferenceError&lt;/code&gt; if accessed before declaration. Understanding hoisting helps developers avoid common pitfalls by properly structuring variable and function declarations.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;The Lego Analogy&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Think of scope like different Lego building rooms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global scope: The shared living room where all builders can access pieces.&lt;/li&gt;
&lt;li&gt;Function scope: Personal building tables.&lt;/li&gt;
&lt;li&gt;Block scope: Specific sections of your building table.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;JavaScript Implementation&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Global building room&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;globalBricks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Everyone can use these&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;buildSection&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Personal table&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;tableBricks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Only for this builder&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Specific section&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;sectionBricks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Just for this part&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;em&gt;TypeScript Evolution&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Adding type safety to our building rooms&lt;/span&gt;
&lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;BrickType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;regular&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;special&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rare&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;globalBricks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BrickType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;regular&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;buildSection&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// TypeScript ensures we only use valid brick types&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="na"&gt;tableBricks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BrickType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;special&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// TypeScript prevents using sectionBricks outside this block&lt;/span&gt;
        &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="na"&gt;sectionBricks&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BrickType&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;rare&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Real-world example: Configuration management&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;AppConfig&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;readonly&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;prod&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;features&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Set&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;config&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;AppConfig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;secret&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dev&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;features&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;feature1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;feature2&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Functions and Closures: The Building Instructions
&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%2Frzs0rsj9j9zrjc2tcyug.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%2Frzs0rsj9j9zrjc2tcyug.gif" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Definitions of Concepts&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Functions are reusable blocks of code designed to perform a specific task. This enhances modularity and code efficiency. They can be defined using the &lt;code&gt;function&lt;/code&gt; keyword followed by a name, parentheses &lt;code&gt;()&lt;/code&gt;, and a block of code enclosed in curly braces &lt;code&gt;{}&lt;/code&gt;. Parameters can be passed into functions within the parentheses or curly braces, and these parameters act as placeholders for values provided when the function is called. JavaScript also supports anonymous functions, which have no name, and arrow functions, which offer a more concise syntax. Functions may return a value using the &lt;code&gt;return&lt;/code&gt; statement or perform an action without returning anything. Additionally, functions in JavaScript are first-class objects, meaning they can be assigned to variables, passed as arguments, and returned from other functions, enabling functional programming patterns.&lt;/p&gt;

&lt;p&gt;Closures are a powerful feature that allows a function to remember and access its lexical scope, even when the function is executed outside that scope. This can be created when a function is defined inside another function and references variables from the outer function. The inner function maintains access to these variables even after the outer function has finished executing. This capability is useful for data encapsulation and maintaining state in environments like event handlers or callbacks. Closures enable patterns like private variables, where a function can expose specific behaviors while hiding implementation details.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;The Lego Analogy&lt;/em&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Functions are like building instructions.&lt;/li&gt;
&lt;li&gt;Parameters are like required pieces.&lt;/li&gt;
&lt;li&gt;Return values are like completed structures.&lt;/li&gt;
&lt;li&gt;Closures are like sealed building kits with some pieces permanently included.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;JavaScript Implementation&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;buildHouse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;floors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foundation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;concrete&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;addRoof&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;roofStyle&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; house with &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;floors&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; floors and &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;roofStyle&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; roof on &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;foundation&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;em&gt;TypeScript Evolution&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Basic function with types&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;House&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;floors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;roofStyle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;foundation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Adding type safety to our builder&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;buildHouse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;floors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;roofStyle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;House&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foundation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;concrete&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;roofStyle&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nx"&gt;House&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="nx"&gt;floors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;roofStyle&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="nx"&gt;foundation&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Real-world example: Component factory&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;ComponentProps&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;style&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CSSProperties&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;children&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;ReactNode&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;createComponent&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;ComponentProps&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="nx"&gt;baseProps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;T&lt;/span&gt;
&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;additionalProps&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;Partial&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FC&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;T&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;additionalProps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Component implementation&lt;/span&gt;
        &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="p"&gt;{...&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="sr"&gt;/&amp;gt;&lt;/span&gt;&lt;span class="err"&gt;;
&lt;/span&gt;    &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Objects and Prototypes: The Building Techniques
&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%2F0avebtf09s5vedje3ime.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%2F0avebtf09s5vedje3ime.gif" width="245" height="245"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Definitions of Concepts&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Objects in JavaScript are fundamental data structures that serve as containers for related data and functionality. They consist of key-value pairs, where each key (property) maps to a value that can be any valid JavaScript type including functions (methods). Objects can be created in several ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Object literals: &lt;code&gt;const obj = {}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Constructor functions: &lt;code&gt;new Object()&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;Object.create()&lt;/code&gt; method&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The prototype system is JavaScript's built-in inheritance mechanism. Each object has an internal link to another object called its prototype. When trying to access a property that doesn't exist on an object, JavaScript automatically looks for it in the prototype chain. This chain of objects continues until it reaches an object with a null prototype, typically &lt;code&gt;Object.prototype&lt;/code&gt;. Understanding prototypes is crucial for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementing inheritance&lt;/li&gt;
&lt;li&gt;Sharing methods across instances&lt;/li&gt;
&lt;li&gt;Managing memory efficiency&lt;/li&gt;
&lt;li&gt;Building object hierarchies&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;The Lego Analogy&lt;/em&gt;
&lt;/h3&gt;

&lt;p&gt;Think of objects and prototypes like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Objects are like specialized Lego kits with their own unique pieces and instructions.&lt;/li&gt;
&lt;li&gt;Prototypes are like master templates that multiple kits can reference.&lt;/li&gt;
&lt;li&gt;Inheritance is like having a basic kit that more advanced kits can build upon.&lt;/li&gt;
&lt;li&gt;Properties are like the specific pieces in each kit.&lt;/li&gt;
&lt;li&gt;Methods are like the special building techniques included with each kit.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;JavaScript Implementation&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Creating a basic Lego kit template&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;basicKit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Basic structure complete&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="nf"&gt;inventory&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Kit contains &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; pieces`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Creating a specialized kit that inherits from basicKit&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;advancedKit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;basicKit&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;advancedKit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;specialFeatures&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;moving parts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;lights&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="nx"&gt;advancedKit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pieces&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Adding custom functionality&lt;/span&gt;
&lt;span class="nx"&gt;advancedKit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;useSpecialFeatures&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Using &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;specialFeatures&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; and &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Demonstrating prototype chain&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;advancedKit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// Inherited method&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;advancedKit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;inventory&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// Inherited method with local property&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;advancedKit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;useSpecialFeatures&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;  &lt;span class="c1"&gt;// Own method&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;em&gt;TypeScript Evolution&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Define the structure of our kits&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;BaseKit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nf"&gt;inventory&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;SpecializedKit&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;BaseKit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;specialFeatures&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="nf"&gt;useSpecialFeatures&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Implementation with type checking&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BasicKit&lt;/span&gt; &lt;span class="k"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;BaseKit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nx"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

    &lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Basic structure complete&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;inventory&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Kit contains &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; pieces`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Extending with type safety&lt;/span&gt;
&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AdvancedKit&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;BasicKit&lt;/span&gt; &lt;span class="k"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;SpecializedKit&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="nx"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="k"&gt;public&lt;/span&gt; &lt;span class="nx"&gt;specialFeatures&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;[],&lt;/span&gt;
        &lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;theme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;useSpecialFeatures&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Using &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;specialFeatures&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; and &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Override base method with enhanced functionality&lt;/span&gt;
    &lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;build&lt;/span&gt;&lt;span class="p"&gt;()}&lt;/span&gt;&lt;span class="s2"&gt; with special features`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Real-world example: UI Component inheritance&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;UIComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nf"&gt;attach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;HTMLElement&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;InteractiveComponent&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nx"&gt;UIComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;MouseEvent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;onHover&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;MouseEvent&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Button&lt;/span&gt; &lt;span class="k"&gt;implements&lt;/span&gt; &lt;span class="nx"&gt;InteractiveComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;private&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;

    &lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`&amp;lt;button&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/button&amp;gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;attach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;HTMLElement&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;element&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;render&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="nf"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;MouseEvent&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Button clicked!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Asynchronous Programming: The Building Team
&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%2Fxfhcwv5a6v1xq8ozvt60.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%2Fxfhcwv5a6v1xq8ozvt60.gif" width="480" height="262"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Definitions of Concepts&lt;/em&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Asynchronous Functions and Programming&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;Async functions are a special type of function in JavaScript that provide an elegant way to handle asynchronous operations. When declared with the async keyword, these functions automatically return a promise and enable the use of the await keyword within their body. The await operator pauses the execution of the function until a promise is either resolved or rejected, allowing asynchronous code to be written in a more synchronous, readable style. This syntax effectively reduces callback complexity and eliminates the need for nested promise chains. For example, in async function fetchData() { const response = await fetch(url); }, the function waits for the fetch operation to complete before continuing execution, making the code behave more predictably while ensuring the main thread remains unblocked. This pattern is particularly useful when dealing with multiple asynchronous operations that depend on each other, as it allows developers to write code that clearly expresses the sequence of operations without sacrificing performance.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Promises&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;A promise represents a value that may be available now, in the future, or never. It is an object with three possible states: pending, fulfilled, or rejected. It is used for handling asynchronous operations. Promises have methods like &lt;code&gt;.then()&lt;/code&gt;, &lt;code&gt;.catch()&lt;/code&gt;, and &lt;code&gt;.finally()&lt;/code&gt; for chaining actions based on the outcome. This makes them a powerful alternative to nested callbacks, improving code readability and error handling.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;The Lego Analogy&lt;/em&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Async functions are like team members working on different parts.&lt;/li&gt;
&lt;li&gt;Promises are like agreements to deliver completed sections.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;JavaScript Implementation&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;buildProject&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foundation&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;layFoundation&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;walls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;roof&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="nf"&gt;buildWalls&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
        &lt;span class="nf"&gt;prepareRoof&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;]);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;em&gt;TypeScript Evolution&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Define our structures&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;BuildingSection&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;completed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Type-safe async building&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;buildProject&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;BuildingSection&lt;/span&gt;&lt;span class="p"&gt;[]&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="na"&gt;foundation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BuildingSection&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;layFoundation&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

        &lt;span class="c1"&gt;// Parallel work with type safety&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;walls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;roof&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;BuildingSection&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;BuildingSection&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; 
            &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
                &lt;span class="nf"&gt;buildWalls&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
                &lt;span class="nf"&gt;prepareRoof&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
            &lt;span class="p"&gt;]);&lt;/span&gt;

        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;foundation&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;walls&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;roof&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt; &lt;span class="k"&gt;instanceof&lt;/span&gt; &lt;span class="nx"&gt;BuildError&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Construction failed: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Real-world example: Data fetching&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;UserData&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Profile&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;preferences&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;Preferences&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;fetchUserData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;UserData&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;preferences&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getProfile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getPreferences&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;]);&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;preferences&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Modern Features: The Advanced Building Techniques
&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%2Fobrv077n392p3dc6xqgr.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%2Fobrv077n392p3dc6xqgr.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;Definitions of Concepts&lt;/em&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Destructuring&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;This is a concise way to extract values from arrays or properties from objects into distinct variables. Array destructuring uses square brackets &lt;code&gt;[]&lt;/code&gt;, while object destructuring uses curly braces &lt;code&gt;{}&lt;/code&gt;. This syntax makes it easier to work with complex data structures by unpacking values directly into variables, reducing the need for repetitive code. For example, &lt;code&gt;const [a, b] = [1, 2]&lt;/code&gt; assigns 1 to a and 2 to b, while &lt;code&gt;const { name } = person&lt;/code&gt; extracts the name property from a person object.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Spread Operator&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;The spread operator is represented by three dots &lt;code&gt;(...)&lt;/code&gt;. It allows an iterable like an array or object to be expanded in places where multiple elements or key-value pairs are expected. It can be used to copy, combine, or pass array elements as function arguments. For example, &lt;code&gt;const arr = [1, 2, ...anotherArray]&lt;/code&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;em&gt;Optional Chaining&lt;/em&gt;
&lt;/h4&gt;

&lt;p&gt;Optional chaining is represented by &lt;code&gt;?.&lt;/code&gt;. It provides a safe way to access deeply nested object properties without causing errors if a property is &lt;code&gt;undefined&lt;/code&gt; or &lt;code&gt;null&lt;/code&gt;. It short-circuits and returns &lt;code&gt;undefined&lt;/code&gt; immediately if a reference is nullish. For example, &lt;code&gt;user?.address?.street&lt;/code&gt; checks if &lt;code&gt;user&lt;/code&gt; and &lt;code&gt;address&lt;/code&gt; exist before accessing &lt;code&gt;street&lt;/code&gt;. This syntax prevents runtime errors and makes working with nested data structures more concise and error-resistant, particularly in APIs or user input-dependent data.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;The Lego Analogy&lt;/em&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Destructuring is like sorting pieces into containers.&lt;/li&gt;
&lt;li&gt;Spread operator is like copying pieces between sets.&lt;/li&gt;
&lt;li&gt;Optional chaining is like checking if pieces exist before using them.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;em&gt;JavaScript Implementation&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;legoSet&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;allPieces&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nx"&gt;basicPieces&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;specialPieces&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;feature&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;legoSet&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;features&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;lights&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;em&gt;TypeScript Evolution&lt;/em&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Define structured types&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;LegoSet&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;features&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;lights&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="nl"&gt;motors&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Type-safe destructuring and spreading&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;analyzeLegoPieces&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;LegoSet&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;pieces&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;features&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="c1"&gt;// TypeScript ensures type safety when spreading&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;enhancedSet&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;LegoSet&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="kd"&gt;set&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;features&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;features&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;lights&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;};&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;enhancedSet&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Real-world example: Component props&lt;/span&gt;
&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;string&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;void&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;style&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CSSProperties&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;disabled&lt;/span&gt;&lt;span class="p"&gt;?:&lt;/span&gt; &lt;span class="nx"&gt;boolean&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Button&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt; &lt;span class="p"&gt;}:&lt;/span&gt; &lt;span class="nx"&gt;ButtonProps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;button&lt;/span&gt; &lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="p"&gt;{...&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
            &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Summary
&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%2F7qgeffx89r6rpkfxkew2.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%2F7qgeffx89r6rpkfxkew2.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The transition from JavaScript to TypeScript is like upgrading your Lego building process:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;JavaScript (Basic Building):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Free-form building&lt;/li&gt;
&lt;li&gt;Flexible piece usage&lt;/li&gt;
&lt;li&gt;Runtime error discovery&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;TypeScript (Professional Building):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Detailed and specific instructions&lt;/li&gt;
&lt;li&gt;Piece compatibility checking&lt;/li&gt;
&lt;li&gt;Error prevention before building&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Key Transition Tips:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Start with basic type annotations.&lt;/li&gt;
&lt;li&gt;Gradually add interfaces and type definitions.&lt;/li&gt;
&lt;li&gt;Use the compiler to catch errors early.&lt;/li&gt;
&lt;li&gt;Leverage type inference where possible.&lt;/li&gt;
&lt;li&gt;Add strict null checks and other compiler options gradually.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Remember: TypeScript builds upon your JavaScript knowledge, adding safety and clarity rather than changing the fundamental building process. That being said my recommendation remains... learn JavaScript first then learn TypeScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;W3Schools. (n.d.). &lt;em&gt;JavaScript scope&lt;/em&gt;. W3Schools. Retrieved January 12, 2025, from &lt;a href="https://www.w3schools.com/js/js_scope.asp" rel="noopener noreferrer"&gt;https://www.w3schools.com/js/js_scope.asp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Mozilla. (n.d.). &lt;em&gt;Variables — JavaScript&lt;/em&gt;. MDN Web Docs. Retrieved January 14, 2025, from &lt;a href="https://developer.mozilla.org/en-US/docs/Learn-web-development/Core/Scripting/Variables" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Learn-web-development/Core/Scripting/Variables&lt;/a&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%2Fwb684qh9m8al95xn67vj.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%2Fwb684qh9m8al95xn67vj.gif" width="450" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>javascript</category>
      <category>learning</category>
      <category>programming</category>
    </item>
    <item>
      <title>11 JavaScript Fundamentals for Vue Developers</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Fri, 03 Jan 2025 00:59:22 +0000</pubDate>
      <link>https://dev.to/nerajno/11-javascript-fundamentals-for-vue-developers-42a1</link>
      <guid>https://dev.to/nerajno/11-javascript-fundamentals-for-vue-developers-42a1</guid>
      <description>&lt;h2&gt;
  
  
  Start at the Basics
&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%2Fpxaqdksqrc54nc0ghu5w.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%2Fpxaqdksqrc54nc0ghu5w.gif" width="500" height="316"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With the advent of AI and some tech-ed influencers, there seem to be alot of skipping of the essentials before using a framework in Javascript land. Understanding core JavaScript concepts is crucial, its like learning to walk before running. When I got this new job and had to get decent at understanding Vue, I took time to review these JavaScript to have an effective approach to Vue 3 development, I understand and can use &lt;a href="https://youtu.be/1RlyA0AXM1w?si=Ei2lhWCuKOZLuk2Q" rel="noopener noreferrer"&gt;React&lt;/a&gt; ... but it NOT my favorite framework, this is another discussion. Here's why these fundamentals matter :&lt;/p&gt;

&lt;h2&gt;
  
  
  Variables and Data Types
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;: Vue 3's reactivity system relies heavily on proper variable declarations.&lt;/li&gt;
&lt;li&gt;The composition API requires an understanding of &lt;code&gt;const&lt;/code&gt; for refs and reactive objects.&lt;/li&gt;
&lt;li&gt;Type awareness helps with Vue3's template rendering and prop validation.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;reactive&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Template Literals
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;: This is essential for Vue3 template expressions and string interpolation.&lt;/li&gt;
&lt;li&gt;It is extensively used in computed properties and methods.&lt;/li&gt;
&lt;li&gt;Template literals can be helpful for dynamic component templates and prop values.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;greeting&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;`Hello, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Arrow Functions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;: Critical for Vue 3's Composition API.&lt;/li&gt;
&lt;li&gt;Used in &lt;code&gt;setup()&lt;/code&gt; functions, computed properties, and watchers.&lt;/li&gt;
&lt;li&gt;Essential for maintaining correct &lt;code&gt;this&lt;/code&gt; binding in methods.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;doubleCount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nf"&gt;watch&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newValue&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;oldValue&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Name changed from &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;oldValue&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; to &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;newValue&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Objects and Object Destructuring
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;: Fundamental for working with Vue's reactive objects.&lt;/li&gt;
&lt;li&gt;Required for component props and emits declarations.&lt;/li&gt;
&lt;li&gt;Essential for destructuring from &lt;code&gt;setup()&lt;/code&gt; returns.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;emit&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;props&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;description&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Arrays and Array Methods
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;: Critical for rendering lists with &lt;code&gt;v-for&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Essential for reactive data manipulation.&lt;/li&gt;
&lt;li&gt;Used in computed properties for data transformation.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;ul&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;li&lt;/span&gt; &lt;span class="na"&gt;v-for=&lt;/span&gt;&lt;span class="s"&gt;"item in filteredItems"&lt;/span&gt; &lt;span class="na"&gt;:key=&lt;/span&gt;&lt;span class="s"&gt;"item.id"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/li&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/ul&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;items&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="cm"&gt;/* ... */&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;filteredItems&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; 
  &lt;span class="nx"&gt;items&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isActive&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Promises and Async/Await
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;: Crucial for data fetching in &lt;code&gt;setup()&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Required for async component operations.&lt;/li&gt;
&lt;li&gt;Essential for lifecycle hooks and watchers.
&lt;/li&gt;
&lt;/ul&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;onMounted&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="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

    &lt;span class="nf"&gt;onMounted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetchData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Modules and Exports
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;: Fundamental for component organization.&lt;/li&gt;
&lt;li&gt;Required for composables and plugins.&lt;/li&gt;
&lt;li&gt;Essential for maintaining clean architecture.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// useCounter.js&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;ref&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="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;useCounter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;increment&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;increment&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Component.vue&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;useCounter&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="s1"&gt;./useCounter&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;increment&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useCounter&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;increment&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Classes and Object-Oriented Concepts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;: Helpful for understanding component inheritance.&lt;/li&gt;
&lt;li&gt;Used in custom directive implementations.&lt;/li&gt;
&lt;li&gt;Valuable for complex state management.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;BaseComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="nf"&gt;sayHello&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Hello from &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;SpecialComponent&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;BaseComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;constructor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;special&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;special&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;special&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Optional Chaining
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;: Essential for safe property access in templates.&lt;/li&gt;
&lt;li&gt;Useful in computed properties.&lt;/li&gt;
&lt;li&gt;Helpful for handling async data states.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;userName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;profile&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Guest&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Event Handling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;:Critical for component communication.&lt;/li&gt;
&lt;li&gt;Required for DOM event management.&lt;/li&gt;
&lt;li&gt;Essential for custom event implementations.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"handleClick"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Click me&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&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;defineEmits&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="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;emit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;defineEmits&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;custom-event&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;handleClick&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;emit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;custom-event&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Some data&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Error Handling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Why it matters&lt;/strong&gt;:Important for component error boundaries.&lt;/li&gt;
&lt;li&gt;Critical for API calls and async operations.&lt;/li&gt;
&lt;li&gt;Essential for maintaining app stability.
&lt;/li&gt;
&lt;/ul&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;onErrorCaptured&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="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;setup&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nf"&gt;onErrorCaptured&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Captured error:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;instance&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;info&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
      &lt;span class="c1"&gt;// Handle or report error&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="c1"&gt;// Prevent error from propagating further&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;

    &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;fetchData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getData&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
        &lt;span class="c1"&gt;// Process data&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error fetching data:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
        &lt;span class="c1"&gt;// Handle error (e.g., show user-friendly message)&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;fetchData&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These code snippets demonstrate practical applications of each concept within the context of Vue 3 development, providing concrete examples for developers to understand and apply these fundamental JavaScript skills.&lt;/p&gt;

&lt;h1&gt;
  
  
  Practical Applications of Core JavaScript Concepts
&lt;/h1&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%2Fbu9kvt49nxex7qz8x3ea.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%2Fbu9kvt49nxex7qz8x3ea.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To illustrate how these essential JavaScript concepts are used in widely used beginner scenarios, let's explore three mini-projects: a weather app, a background color changer, and a todo app. These examples will demonstrate the practical application of the concepts we've discussed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Weather App
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;apiKey&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;YOUR_API_KEY&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cityInput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cityInput&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getWeatherBtn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;getWeatherBtn&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;weatherInfo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;weatherInfo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Async function declaration&lt;/span&gt;
&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getWeather&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Async/await for API call&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`https://api.openweathermap.org/data/2.5/weather?q=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;appid=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;apiKey&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;amp;units=metric`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Async/await for parsing JSON&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

    &lt;span class="c1"&gt;// Template literal for string interpolation&lt;/span&gt;
    &lt;span class="c1"&gt;// DOM manipulation&lt;/span&gt;
    &lt;span class="nx"&gt;weatherInfo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
      &amp;lt;h2&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/h2&amp;gt;
      &amp;lt;p&amp;gt;Temperature: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;main&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;temp&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;°C&amp;lt;/p&amp;gt;
      &amp;lt;p&amp;gt;Description: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;weather&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;description&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;/p&amp;gt;
    `&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Error handling&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Error fetching weather data:&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;weatherInfo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;p&amp;gt;Failed to fetch weather data. Please try again.&amp;lt;/p&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Event listener&lt;/span&gt;
&lt;span class="nx"&gt;getWeatherBtn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nf"&gt;getWeather&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cityInput&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Core Concepts Implemented:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Async/Await&lt;/strong&gt;: For handling asynchronous API calls.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fetch API&lt;/strong&gt;: To retrieve weather data from an external service.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DOM Manipulation&lt;/strong&gt;: To update the HTML content dynamically.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Template Literals&lt;/strong&gt;: For easy string interpolation and multi-line strings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error Handling&lt;/strong&gt;: Using try/catch to manage potential errors during the fetch operation.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Background Color Changer
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;colorBtn&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;colorBtn&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;colorDisplay&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;colorDisplay&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Arrow function&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;generateRandomColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Math object usage&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;r&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;g&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// Template literal&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`rgb(&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;r&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;)`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Event listener with arrow function&lt;/span&gt;
&lt;span class="nx"&gt;colorBtn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;generateRandomColor&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="c1"&gt;// DOM manipulation&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;backgroundColor&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newColor&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;colorDisplay&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newColor&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Core Concepts Implemented:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Arrow Functions&lt;/strong&gt;: For concise function expressions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Math Object&lt;/strong&gt;: To generate random RGB values for colors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Template Literals&lt;/strong&gt;: For constructing the RGB string.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event Listeners&lt;/strong&gt;: To handle user interactions (button clicks).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DOM Manipulation&lt;/strong&gt;: To change the background color and display the current color.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Todo App
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;todoForm&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;todoForm&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;todoInput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;todoInput&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;todoList&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;todoList&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="c1"&gt;// Local storage usage&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;todos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;todos&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;

&lt;span class="c1"&gt;// Arrow function&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;renderTodos&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Array method (map)&lt;/span&gt;
  &lt;span class="c1"&gt;// Template literal&lt;/span&gt;
  &lt;span class="nx"&gt;todoList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="s2"&gt;`
    &amp;lt;li&amp;gt;
      &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;todo&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;
      &amp;lt;button onclick="removeTodo(&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;)"&amp;gt;Delete&amp;lt;/button&amp;gt;
    &amp;lt;/li&amp;gt;
  `&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="c1"&gt;// Event handling function&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;addTodo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;e&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;preventDefault&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newTodo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;todoInput&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTodo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Array method (push)&lt;/span&gt;
    &lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTodo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="c1"&gt;// Local storage&lt;/span&gt;
    &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;todos&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
    &lt;span class="nx"&gt;todoInput&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nf"&gt;renderTodos&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Array manipulation&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;removeTodo&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Array method (splice)&lt;/span&gt;
  &lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;splice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="c1"&gt;// Local storage&lt;/span&gt;
  &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;todos&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;todos&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nf"&gt;renderTodos&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Event listener&lt;/span&gt;
&lt;span class="nx"&gt;todoForm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;submit&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;addTodo&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;renderTodos&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Core Concepts Implemented:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Local Storage&lt;/strong&gt;: For persisting todos across sessions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Array Methods&lt;/strong&gt;: Using &lt;code&gt;map&lt;/code&gt; for rendering and &lt;code&gt;push&lt;/code&gt;/&lt;code&gt;splice&lt;/code&gt; for modifying the todo list.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arrow Functions&lt;/strong&gt;: For concise syntax in functions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Event Handling&lt;/strong&gt;: To manage form submissions and button clicks.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Template Literals&lt;/strong&gt;: For generating HTML markup dynamically.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;These mini-projects illustrate how core JavaScript concepts come together in practical applications. They showcase asynchronous programming, DOM manipulation, event handling, array methods, and more, providing a tangible context for understanding the above essential fundamental JavaScript skills before getting into Vue3.js development.&lt;/p&gt;



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

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

&lt;/div&gt;

</description>
      <category>vue</category>
      <category>javascript</category>
      <category>frontend</category>
      <category>career</category>
    </item>
    <item>
      <title>11 in 11: Concepts Learnt or Relearnt from Zero Day</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Fri, 20 Sep 2024 14:36:56 +0000</pubDate>
      <link>https://dev.to/nerajno/11-things-learnt-from-being-on-board-from-11-months-7d2</link>
      <guid>https://dev.to/nerajno/11-things-learnt-from-being-on-board-from-11-months-7d2</guid>
      <description>&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%2Fhhcitqui0sr45io11cs9.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%2Fhhcitqui0sr45io11cs9.jpg" alt="Cover Image of a garden" width="800" height="519"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As of the first of this month, it's been 11 months since I have been in my current position. It took exactly 1 year between "We are sorry " and "Welcome to the team". Eventually, someone will speak to the emotional toll of the job hunt in this current market but not me. This job hunt consisted of upskilling, networking, re-learning and unlearning stuff. Overall, I tracked somewhere in the neighbourhood of 700-ish applications, what I will say is that job-hunt 2023 was different from all the previous timelines. A new career opportunity, as always, brings a new set of challenges but also provides a lot of insights, here are 11 insights learnt thus far : &lt;/p&gt;

&lt;h2&gt;
  
  
  1: Comfortable Discomfort
&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%2Fm8n0upntp92m3kq2t6qv.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%2Fm8n0upntp92m3kq2t6qv.gif" width="245" height="132"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Staying current in software development requires one to embrace a state of "comfortable discomfort" - which lends itself to always learning and adapting. This means on average based on your skill level, will spend anything from 3 to 6 months annually, learning something completely new or digging deeper into what you already know. To strengthen and enhance my skill set, I have done the following :   &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Stay updated with key industry figures and organizations through select and curated professional social networks (I limit my focus to LinkedIn and &lt;a href="https://x.com/anthonydmays/status/1840790605699637502" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; ...... TikTok is creeping).&lt;/li&gt;
&lt;li&gt;Compile a mix of digital content - from tech blogs to newsletters and podcasts to keep current on ongoing industry insights and changes.&lt;/li&gt;
&lt;li&gt;Engage with industry events (conferences and meetups), both online and offline, to foster connections and stay current. Don't just go, ask questions, help others and both follow-up and follow through on what was learnt. &lt;/li&gt;
&lt;li&gt;Prioritize deep mastery of the foundationals over surface-level knowledge and or the shiny syndrome.&lt;/li&gt;
&lt;li&gt;Keep an eye on industry shifts without succumbing to 'trend fatigue' or information overload.&lt;/li&gt;
&lt;li&gt;Take time to deepen your expertise in your chosen niche while cultivating a working knowledge of adjacent fields; contribute to diverse open-source projects to broaden your technical perspective.&lt;/li&gt;
&lt;li&gt;Chart your professional development by pinpointing crucial competencies aligned with your career trajectory. Establish concrete learning milestones and carve out dedicated time for skill acquisition and hands-on exploration.&lt;/li&gt;
&lt;li&gt;Keep an eye on emerging trends without feeling pressured to learn everything. Choose a specialization, but maintain a broad understanding of related areas. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2:Enums
&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%2Fd6bvvply37t2znyx0c0b.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%2Fd6bvvply37t2znyx0c0b.gif" width="480" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Enums (short for enumerations) are a way to define a set of named constants. They're instrumental in TypeScript for creating more expressive and type-safe code. In my head, they have the same features as objects.  Here is another way of explaining them, &lt;em&gt;" &lt;br&gt;
imagine you have a box of coloured pencils. You know that in this box, you can only have certain colours - let's say red, blue, green, and yellow. You can't suddenly have a purple pencil appear in the box.&lt;br&gt;
An enum (short for enumeration) in programming is like that box of coloured pencils.&lt;/em&gt; It's a special way to create a group of named values that don't change. Just like you know exactly what colours are in your pencil box, an enum lets programmers define a set of named values that they know will always be the same. My takeaways include :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;TypeScript enums provide compile-time type checking, helping catch errors early.&lt;/li&gt;
&lt;li&gt;Enums are great for representing a fixed set of options, like days of the week, card suits, assets or defined properties of customers. &lt;/li&gt;
&lt;li&gt;They make code more readable and self-documenting.&lt;/li&gt;
&lt;li&gt;When it comes to &lt;em&gt;enums vs object literals&lt;/em&gt;: enums are more type-safe and can be used in switch statements.&lt;/li&gt;
&lt;li&gt;It is also the same thing for enums vs union types: enums can have associated values, while union types are just a set of possible types.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I also found this &lt;a href="https://www.typescriptlang.org/docs/handbook/enums.html" rel="noopener noreferrer"&gt;resource&lt;/a&gt; and this &lt;a href="https://youtu.be/VhzId8v3gYA?si=oAfsw-3oY2LaSCRP" rel="noopener noreferrer"&gt;video&lt;/a&gt; to be extremely helpful. &lt;/p&gt;
&lt;h2&gt;
  
  
  3:Container Queries
&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%2Fcjjc91rtew4ujjqvgrns.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%2Fcjjc91rtew4ujjqvgrns.gif" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Container queries allow you to apply styles based on the size of a containing element, rather than the viewport size. Here are some key points : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Responsive design at the component level&lt;/em&gt;&lt;/strong&gt;
Container queries enable truly modular, responsive components that adapt to their container's size.
This is particularly useful for reusable components that may be placed in different layouts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Practical examples&lt;/em&gt;&lt;/strong&gt;
A card component that changes layout based on its container width. The navigation menu switches between the horizontal and vertical layouts depending on available space.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;Browser support and fallback strategies&lt;/em&gt;&lt;/strong&gt;
As of 2023, container queries are supported in most modern browsers. Fallback strategies include using media queries as a base and then enhancing with container queries where supported.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My references were this &lt;a href="https://css-tricks.com/css-container-queries/" rel="noopener noreferrer"&gt;CSS tricks article&lt;/a&gt; and this &lt;a href="https://youtu.be/8x8lxX5IGHY?si=2qFKm8YYNJ1PkEY3" rel="noopener noreferrer"&gt;video&lt;/a&gt;. &lt;/p&gt;
&lt;h2&gt;
  
  
  4:Slots
&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%2Fj5ep1923zujy1k33npqx.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%2Fj5ep1923zujy1k33npqx.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I became aware of slots as we utilize this feature in our codebase and &lt;a href="https://youtu.be/DNqwHdxaeJE?si=UuQGssudOpi5cbib" rel="noopener noreferrer"&gt;@abbeyperini's talk&lt;/a&gt; on said topic. Slots can be best described as a powerful feature in web components and some frameworks that allow for flexible content composition.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Using slots in web components&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Slots allow you to define placeholders in your component that can be filled with custom content.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Example:
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt; &lt;span class="nt"&gt;&amp;lt;my-component&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;slot=&lt;/span&gt;&lt;span class="s"&gt;"header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Custom Header&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;slot=&lt;/span&gt;&lt;span class="s"&gt;"content"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Custom Content&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;/my-component&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Implementing named slots in Vue.js&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Vue.js supports named slots for more granular content distribution. This allows for multiple insertion points in a single component.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Comparing slots to render props in React&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Slots and render props both allow for flexible composition, but with different syntax and mental models. Slots are more declarative, while render props offer more programmatic control.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  5:Take Care of You
&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%2Fneuv4adz2gv8zt7ktyjw.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%2Fneuv4adz2gv8zt7ktyjw.gif" width="416" height="176"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Prioritizing Self-Care in the Tech Community
&lt;/h2&gt;

&lt;p&gt;It's often overlooked, but taking care of yourself is essential, especially in the fast-paced tech world. The culture of hustle and grind can be alluring, and many of us have indulged in that mindset. However, the reality is that pushing yourself too hard can lead to burnout, and your body will inevitably demand a break. Here’s some crucial advice for anyone navigating this landscape:&lt;/p&gt;
&lt;h3&gt;
  
  
  Essential Self-Care Tips
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Sleep&lt;/strong&gt;: Prioritize quality sleep to recharge your mind and body. Aim for 7-9 hours per night to enhance focus and productivity.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hobbies&lt;/strong&gt;: Engage in activities outside of work that bring you joy and relaxation. Hobbies can provide a much-needed mental escape.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Exercise&lt;/strong&gt;: Incorporate regular physical activity into your routine. Whether it’s a brisk walk, yoga, or weight training, movement is vital for both physical and mental health.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Nutrition&lt;/strong&gt;: Fuel your body with balanced meals rich in nutrients. Proper nutrition supports energy levels and cognitive function.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ergonomics&lt;/strong&gt;: Set up your workspace to promote good posture and reduce strain. Invest in ergonomic furniture and accessories to protect your health.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Bonus Tip
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Get a Check-Up&lt;/strong&gt;: Regular health check-ups can help catch potential issues early. Don’t neglect your physical health; it’s just as important as your work performance.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By embracing these self-care practices, you can maintain a healthy balance in your life while thriving in the tech community. Remember, taking care of yourself is not just an option; it's a necessity for long-term success!&lt;/p&gt;
&lt;h2&gt;
  
  
  6:Demonstrated Learning
&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%2F5oozcvbhqkzdcajqa6g9.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%2F5oozcvbhqkzdcajqa6g9.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;br&gt;
Demonstrating your learning through projects and sharing knowledge is crucial for career growth.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Creating a portfolio of projects:&lt;/strong&gt;&lt;br&gt;
Build projects that showcase different skills and technologies. Include detailed README files explaining your process and decisions. Host your projects on platforms like GitHub and include live demos where possible. The rules are: make it live, make it testable and make well documented.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Preparing and delivering tech talks:&lt;/strong&gt;&lt;br&gt;
Start with lightning talks at local meetups to build confidence. Choose topics you're passionate about and have practical experience with. Use tools like reveal.js or Google Slides to create engaging slide decks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Writing blog posts or creating video tutorials:&lt;/strong&gt;&lt;br&gt;
Start a technical blog to document your learning journey. Create step-by-step tutorials on solving specific problems. Consider starting a YouTube channel for video content if that suits your style.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  7:Personal Note Taking (explain it to you =&amp;gt; Use examples)
&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%2Faqgrkab1cad4hwtob9mj.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%2Faqgrkab1cad4hwtob9mj.gif" width="450" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Effective note-taking is crucial for retaining and organizing knowledge in the fast-paced world of web development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Effective note-taking techniques:&lt;/strong&gt;&lt;br&gt;
Zettelkasten method: Create atomic notes with links between related concepts. Cornell method: Divide notes into main points, details, and summary sections. Mind mapping: Use visual diagrams to connect related ideas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Using code snippets and diagrams:&lt;/strong&gt;&lt;br&gt;
Include relevant code snippets in your notes for quick reference. Use tools like Mermaid or PlantUML to create diagrams directly in your markdown notes. Annotate code and diagrams with explanations of key concepts.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Tools and apps for organizing notes:&lt;/strong&gt;&lt;br&gt;
Paper notebooks, highlighters and a pen will work wonders if that is your style, do it in such a way that it can be used to explain a concept to anyone.&lt;br&gt;
I would look into a tablet with a pen or stylus for note-taking, I Have too many notebooks, as this would help you to have access to all your notes digitally. Other considerations include Notion (an all-in-one workspace with rich formatting and database features),  Obsidian( a markdown-based, with powerful linking and graphing capabilities) and VS Code with appropriate extensions (Keep notes close to your development environment).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  8:Learning How to Asking For Help (Timeline and Method)
&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%2Foki0tyi17xkermurp75o.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%2Foki0tyi17xkermurp75o.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Knowing how and when to ask for help is a crucial skill in development.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Best practices for asking questions online:&lt;/strong&gt;&lt;br&gt;
Search thoroughly before asking to avoid duplicate questions. Provide a minimal, reproducible example of your problem. Clearly state what you've already tried and what results you got.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;When and how to reach out to seniors or mentors:&lt;/strong&gt;&lt;br&gt;
Try to solve the problem yourself first, but don't waste excessive time if stuck. Prepare your question in advance, including context and your attempted solutions. Be respectful of their time and express gratitude for their help.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Structuring your question:&lt;/strong&gt;&lt;br&gt;
Start with a clear, concise description of the problem. Provide necessary context: environment, relevant code, error messages. Clearly state your expected outcome and what you've tried so far.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  9:Reading Docs and Books to Understand Stuff (Basic and Complex)
&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%2Ff07jofgdfgh8czy1tp5w.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%2Ff07jofgdfgh8czy1tp5w.gif" width="480" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Efficient reading and comprehension of technical material is a key skill for developers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Techniques for reading technical documentation:&lt;/strong&gt;&lt;br&gt;
Skim first to get an overview, then do a deeper read. Use the documentation's search function to find specific information. Practice active reading: take notes, and try out code examples.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Selecting appropriate resources:&lt;/strong&gt;&lt;br&gt;
For beginners: Look for "Getting Started" guides and tutorials. For intermediate/advanced: Refer to API references and advanced guides. Supplement official docs with community resources like MDN for web technologies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Creating a personal reference library:&lt;/strong&gt;&lt;br&gt;
Bookmark useful documentation pages for quick access. Maintain a list of go-to books or online resources for different topics. Use tools like Pocket or Raindrop.io to organize and tag useful articles and resources.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  10:Styling Choices: Tailwind CSS vs Regular CSS
&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%2F99yd1uhlv3k5d40qsp39.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%2F99yd1uhlv3k5d40qsp39.gif" width="424" height="338"&gt;&lt;/a&gt;&lt;br&gt;
The choice between utility-first CSS frameworks like Tailwind and traditional CSS depends on various factors. Let it be known that I have a certain amount of dislike for Tailwind due to its accessibility issues.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Pros and cons of Tailwind CSS:&lt;/strong&gt;&lt;br&gt;
Pros:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rapid prototyping and development.&lt;/li&gt;
&lt;li&gt;Consistent design system.&lt;/li&gt;
&lt;li&gt;Reduced CSS file size in production.
Cons:&lt;/li&gt;
&lt;li&gt;Steep learning curve.&lt;/li&gt;
&lt;li&gt;HTML can become cluttered with classes.&lt;/li&gt;
&lt;li&gt;Potential loss of semantic meaning in markup.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;When to use Tailwind vs vanilla CSS:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use Tailwind for:

&lt;ul&gt;
&lt;li&gt;Rapid prototyping.&lt;/li&gt;
&lt;li&gt;Projects with consistent, utility-based designs.&lt;/li&gt;
&lt;li&gt;Teams already familiar with the framework.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Use vanilla CSS for:

&lt;ul&gt;
&lt;li&gt;Smaller projects or components.&lt;/li&gt;
&lt;li&gt;Highly custom designs.&lt;/li&gt;
&lt;li&gt;When performance is critical and you need fine-grained control.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Customizing and extending Tailwind:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use the &lt;code&gt;tailwind.config.js&lt;/code&gt; file to customize colours, spacing, breakpoints, etc.&lt;/li&gt;
&lt;li&gt;Create custom utilities using &lt;code&gt;@apply&lt;/code&gt; directive in your CSS.&lt;/li&gt;
&lt;li&gt;Use plugins to extend Tailwind's functionality.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  11:How to use AI assistants to solve problems
&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%2F2cwlbvbwefaolmch9x91.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%2F2cwlbvbwefaolmch9x91.gif" width="298" height="302"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI assistants can be powerful tools for developers when used effectively. In a lot of ways my questions got better with time, thus I tend to do or observe the following when using "Geeps" or the other cousins :&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Formulating queries for useful responses:&lt;/strong&gt;&lt;br&gt;
Be specific and provide context. Break complex problems into smaller, focused questions. Learn how to use technical terminology or analogies accurately.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Leveraging AI for code reviews and refactoring:&lt;/strong&gt;&lt;br&gt;
Use the tool to review code snippets for potential improvements.  Ask for explanations of complex code sections that you have either been handed or created, yes it happens.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Using AI to explain concepts or debug issues:&lt;/strong&gt;&lt;br&gt;
Request step-by-step explanations of difficult concepts, analogies or annotations. Use the tool to describe bugs in detail and ask for potential causes and solutions. Use the tool to brainstorm different approaches to solving a problem.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Bonus: All Hail Zod
&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%2Fz7gpjh3veazj5qyd9qxj.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%2Fz7gpjh3veazj5qyd9qxj.gif" width="293" height="175"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A year or two ago, a friend of mine mentioned Zod in a conversation and explained it to me, sorta kinda made sense to me then. But now the best way is explain Zod is that it is a TypeScript-first schema declaration and validation library. Think of it as a powerful tool that helps you ensure your data is exactly what you expect it to be.&lt;br&gt;
Here's a more detailed breakdown:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Schema Declaration:&lt;/em&gt;&lt;br&gt;
   Just like we described checking if names are text and ages are numbers, Zod lets you define these rules clearly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&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;z&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;zod&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;friendSchema&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;object&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
     &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
     &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;number&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
     &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;string&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;email&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This schema says: "A friend should have a name that's a string, an age that's a number, and an email that's a valid email string."&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Type Inference:&lt;/em&gt;&lt;br&gt;
   One of Zod's superpowers is that TypeScript can automatically figure out the type from your schema:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;   &lt;span class="kd"&gt;type&lt;/span&gt; &lt;span class="nx"&gt;Friend&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;z&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;infer&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;friendSchema&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
   &lt;span class="c1"&gt;// TypeScript now knows Friend is: { name: string; age: number; email: string }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Validation:&lt;/em&gt;&lt;br&gt;
   Remember our "friendly robot assistant" that checks if data looks right? Here's how that works in Zod:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;   &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;friendSchema&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;safeParse&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
     &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Alice&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;12&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
     &lt;span class="na"&gt;email&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;alice@example.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;

   &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;success&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Data is valid!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Oops, something's wrong:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Advanced Features:&lt;/em&gt;&lt;br&gt;
   As you get more comfortable, Zod offers more advanced tools:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Custom error messages: &lt;code&gt;z.string().min(3, { message: "Name too short!" })&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Transformations: &lt;code&gt;z.string().transform(s =&amp;gt; s.toLowerCase())&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Combining schemas: &lt;code&gt;z.union([z.string(), z.number()])&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Why Use Zod?&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It's TypeScript-first, so it plays really well with TypeScript projects.&lt;/li&gt;
&lt;li&gt;It has zero dependencies, making it lightweight.&lt;/li&gt;
&lt;li&gt;It's very flexible and can handle complex data structures.&lt;/li&gt;
&lt;li&gt;It provides helpful error messages when validation fails.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice, Zod is super useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validating user input in web forms&lt;/li&gt;
&lt;li&gt;Checking data from API responses&lt;/li&gt;
&lt;li&gt;Ensuring configuration files are correct&lt;/li&gt;
&lt;li&gt;Defining clear contracts between different parts of your application&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of a LEGO analogy; Zod is like having a master builder's guidebook that not only shows you how pieces should fit together but actively helps you assemble them correctly. It gives you confidence that your data structures are solid, just like a well-built LEGO castle.As you grow as a developer, you'll find Zod or tools like it become an invaluable tool in your toolkit for building robust, type-safe applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  Still With Me
&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%2Ft5rodx3ljvjwjlpuqjni.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%2Ft5rodx3ljvjwjlpuqjni.gif" width="245" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Remember, your journey in tech is uniquely yours. Embrace the challenges, celebrate the victories (no matter how small), and never underestimate the power of perseverance. Remember that even the most daunting job hunts can lead to opportunities for tremendous growth and learning. As you continue on your path, keep pushing your boundaries, stay curious, and most importantly, take care of yourself. The future of tech is bright, and with the insights and attitudes  I outlined here, here is to hoping that you will be better equipped to be a part of it. I can be found on the socials (&lt;a href="https://www.linkedin.com/in/nerando-johnson/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; and &lt;a href="https://x.com/nerajno" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;) and my dms should be open if you want to drop a line. &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%2Fnnadz5n5yeibnmrxz5ui.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%2Fnnadz5n5yeibnmrxz5ui.gif" width="500" height="210"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>career</category>
      <category>typescript</category>
      <category>learning</category>
    </item>
    <item>
      <title>Vue-elingual: "Teaching Your App to Speak Multiple Languages"</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Tue, 20 Aug 2024 18:16:46 +0000</pubDate>
      <link>https://dev.to/nerajno/vue-discovery-characteristics-of-the-t-function-1832</link>
      <guid>https://dev.to/nerajno/vue-discovery-characteristics-of-the-t-function-1832</guid>
      <description>&lt;h1&gt;
  
  
  Vue-elingual: Teaching Your App to Speak Multiple Languages
&lt;/h1&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%2Ftyltw5uw2qpo569zwt9x.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%2Ftyltw5uw2qpo569zwt9x.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is said that: &lt;em&gt;If you talk to a man in a language he understands, that goes to his head. If you talk to him in his language, that goes to his heart. ~ Nelson Mandela&lt;/em&gt;, software is and should always be accessible, thus the interfaces created so that it can be used in any language. There are various approaches to this, the primary and most recognized approaches are &lt;a href="https://dev.tointernationalization"&gt;i18n&lt;/a&gt; and l10n(localization), they aren't the same but are used interchangeably. For this deep dive, we are going to focus on &lt;a href="https://dev.tointernationalization"&gt;i18n&lt;/a&gt;. The easiest way to explain or define this term is this, &lt;em&gt;internationalization enables a piece of software to handle multiple language environments, localization enables a piece of software to support a specific regional language environment.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;This guide will show you how to implement internationalization in your Vue 3 application using &lt;code&gt;vue-i18n&lt;/code&gt;. You'll learn how to structure translations, handle dynamic content, and manage language switching - all within the Vue 3 composition API context and all explained in true developer style.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Basic Setup and Simple Translations
&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%2Fkro8eh2gotm9vcp7g6mx.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%2Fkro8eh2gotm9vcp7g6mx.gif" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- App.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;welcome&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;v-if=&lt;/span&gt;&lt;span class="s"&gt;"isLoading"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;loading&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&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;useI18n&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="s1"&gt;vue-i18n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useI18n&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// i18n.js&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;createI18n&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="s1"&gt;vue-i18n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;i18n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createI18n&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// default language&lt;/span&gt;
  &lt;span class="na"&gt;fallbackLocale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;en&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;// fallback for when things go wrong&lt;/span&gt;
  &lt;span class="na"&gt;messages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;en&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;welcome&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Welcome to the Matrix&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Page is hiding in another castle&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Server is having a moment&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Convincing electrons to do work...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;es&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;welcome&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bienvenido a la Matrix&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;La página está escondida en otro castillo&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;El servidor está teniendo un momento&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
      &lt;span class="na"&gt;loading&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Convenciendo a los electrones de trabajar...&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="c1"&gt;// main.js&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;createApp&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="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.vue&lt;/span&gt;&lt;span class="dl"&gt;'&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;i18n&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="s1"&gt;./i18n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;App&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i18n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;mount&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#app&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  2. Language Switching in Vue 3: The Polyglot Button
&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%2Fcxi7g7m4ihetiqwt78qw.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%2Fcxi7g7m4ihetiqwt78qw.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- LocaleSwitcher.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"lang-switcher"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;select&lt;/span&gt; &lt;span class="na"&gt;v-model=&lt;/span&gt;&lt;span class="s"&gt;"locale"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;option&lt;/span&gt; 
        &lt;span class="na"&gt;v-for=&lt;/span&gt;&lt;span class="s"&gt;"(name, lang) in languages"&lt;/span&gt; 
        &lt;span class="na"&gt;:key=&lt;/span&gt;&lt;span class="s"&gt;"lang"&lt;/span&gt; 
        &lt;span class="na"&gt;:value=&lt;/span&gt;&lt;span class="s"&gt;"lang"&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;
      &lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&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;useI18n&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="s1"&gt;vue-i18n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useI18n&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;languages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;en&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;🇬🇧 English (Compile-time)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;es&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;🇪🇸 Español (Tiempo de compilación)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;switchLanguage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lang&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;lang&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;debug.langSwitch&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;lang&lt;/span&gt; &lt;span class="p"&gt;}))&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  3. Dynamic Values and Interpolation: When Your App Gets Personal
&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%2Fzl0s0tvpj0afcsdy4d27.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%2Fzl0s0tvpj0afcsdy4d27.gif" width="500" height="500"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- DynamicContent.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;greetings.morning&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;developerName&lt;/span&gt; &lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;p&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;{{&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bugs.count&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;bugCount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/p&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/template&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;script&lt;/span&gt; &lt;span class="nx"&gt;setup&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&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;useI18n&lt;/span&gt; &lt;span class="err"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue-i18n&lt;/span&gt;&lt;span class="dl"&gt;'&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;ref&lt;/span&gt; &lt;span class="err"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="err"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useI18n&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;developerName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Code Wizard&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bugCount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/script&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// translations/messages.js&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;en&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;greetings&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;morning&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Good morning {name}, have you tried turning it off and on again?&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;night&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Still coding at {time}? Same here!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;weekend&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;It's {day}! Time to debug in pajamas!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;bugs&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;You have {count} bugs to fix | You have {count} bugs to fix | Coffee needed: {count} bugs detected&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  4. Handling Pluralization: Because Zero is Special
&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%2Ff6hiyca75xai3v41cnz9.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%2Ff6hiyca75xai3v41cnz9.gif" width="500" height="302"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- PluralExample.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;debug.bugs&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;bugCount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;coffee.cups&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;coffeeCount&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&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;useI18n&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="s1"&gt;vue-i18n&lt;/span&gt;&lt;span class="dl"&gt;'&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;ref&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="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useI18n&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;bugCount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;coffeeCount&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;ref&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// translations/plural.js&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;en&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;debug&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;bugs_zero&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;No bugs found (suspicious...)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;bugs_one&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Found one bug (there's definitely more)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;bugs_other&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Found {count} bugs (and counting...)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;coffee&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;cups_zero&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Emergency: No coffee remaining!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;cups_one&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Last coffee warning!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;cups_other&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;{count} cups of coffee remaining&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  5. Organizing Translations with Namespaces: The Developer's Survival Kit
&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%2Fgw6sd1xsmum6hpwxs6d4.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%2Fgw6sd1xsmum6hpwxs6d4.gif" width="480" height="362"&gt;&lt;/a&gt;&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="c1"&gt;// translations/developer-life.js&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;developerLife&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;en&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;statusMessages&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;compiling&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Converting caffeine to code...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;debugging&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Playing hide and seek with bugs...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;deploying&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Crossing fingers and deploying...&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;success&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;It works! Don't touch anything!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;error&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Error: Success condition not found&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;excuses&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;deadline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;The deadline was more of a suggestion&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;bug&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;It's not a bug, it's an undocumented feature&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;testing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;But it works on my machine!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// translations/error-messages.js&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;errorMessages&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;en&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;errors&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;network&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Internet decided to take a coffee break&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;database&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Database is practicing social distancing&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;validation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Your code is valid but my heart says no&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  6. Composition API Integration: Creating a Developer-Friendly Translation Composable
&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%2F6i3q9fblnqxt71v6zxo1.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%2F6i3q9fblnqxt71v6zxo1.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- TranslationExample.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="err"&gt;@&lt;/span&gt;&lt;span class="na"&gt;click=&lt;/span&gt;&lt;span class="s"&gt;"alert(getRandomExcuse())"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
      Generate Developer Excuse
    &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nx"&gt;debugStatus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&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;useDevTranslations&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="s1"&gt;@/composables/useDevTranslations&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;getRandomExcuse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;debugStatus&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useDevTranslations&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// composables/useDevTranslations.js&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;useI18n&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="s1"&gt;vue-i18n&lt;/span&gt;&lt;span class="dl"&gt;'&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;computed&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="s1"&gt;vue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;useDevTranslations&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;locale&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useI18n&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getRandomExcuse&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;excuses&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;deadline&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bug&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;testing&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`excuses.&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;excuses&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;excuses&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)]}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getCoffeeStatus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cups&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;coffee.cups&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;cups&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;debugStatus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;computed&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;statusMessages.debugging&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="na"&gt;excuse&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;getRandomExcuse&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="p"&gt;}))&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;getRandomExcuse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;getCoffeeStatus&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;debugStatus&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;currentLocale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;locale&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Quick Start 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%2Fx1mclog62gqtbpy8dhp1.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%2Fx1mclog62gqtbpy8dhp1.gif" width="480" height="360"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight vue"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!-- App.vue --&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;LocaleSwitcher&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;h1&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;title&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/h1&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="si"&gt;{{&lt;/span&gt; &lt;span class="nf"&gt;t&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;welcome&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="si"&gt;}}&lt;/span&gt;&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
  &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;template&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt; &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;LocaleSwitcher&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./components/LocaleSwitcher.vue&lt;/span&gt;&lt;span class="dl"&gt;'&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;useI18n&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="s1"&gt;vue-i18n&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;t&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useI18n&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="k"&gt;script&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Best Practices for Vue 3 i18n
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Modular Organization&lt;/strong&gt;: Keep translations in separate files by feature/module or &lt;em&gt;sort translations like you sort your coffee cups - by importance&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Type Safety&lt;/strong&gt;: Use TypeScript with vue-i18n for better type checking or &lt;em&gt;because future you will thank present you&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lazy Loading&lt;/strong&gt;: Load language files on demand to improve initial load time or &lt;em&gt;like one should brew coffee - on demand.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Composition API&lt;/strong&gt;: Use composables to encapsulate translation logic&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Management&lt;/strong&gt;: Consider using Pinia to manage language preferences or &lt;em&gt;because global state is like coffee - best when managed properly&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing&lt;/strong&gt;: Write tests for your translations using Vue Test Utils or &lt;em&gt;they'll test your patience&lt;/em&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Additional Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.i18next.com/translation-function/essentials" rel="noopener noreferrer"&gt;i18next Translation Essentials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/i18next" rel="noopener noreferrer"&gt;i18next npm Package&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/watch?v=SA_9i4TtxLQ&amp;amp;t=1s&amp;amp;ab_channel=locize" rel="noopener noreferrer"&gt;i18next Tutorial Video&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>vue</category>
      <category>i18n</category>
    </item>
    <item>
      <title>Tech-nically Speaking: 30 Days In</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Fri, 29 Dec 2023 18:40:22 +0000</pubDate>
      <link>https://dev.to/nerajno/tech-nically-speaking-30-days-in-4i70</link>
      <guid>https://dev.to/nerajno/tech-nically-speaking-30-days-in-4i70</guid>
      <description>&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%2Fd9ak2xlb9a6j1itkbpd7.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%2Fd9ak2xlb9a6j1itkbpd7.gif" width="480" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So the offer letter has been signed and the job search is finally over (mine took 365 days ~ update coming). So the question to be answered is what or what does one do next? The answer ... a lot of unlearning and re-learning. So let's cover a few tips that were instrumental in helping me to become the best version of myself for this new chapter of my tech career. To make it easier, we will break these tips down into the following: onboarding (people and tech), resting( its importance), relearning how to work and deliberate learning. &lt;/p&gt;

&lt;h2&gt;
  
  
  Onboarding ~ People and Procedures
&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%2Fhcub2rh9hsn02xi0d8bu.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%2Fhcub2rh9hsn02xi0d8bu.gif" width="499" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depending on the company's size, orientation or in tech speak, onboarding looks different. I took time to research my team and company and I came up with questions and queries, I got them answered as it helped me to be of better help on the team. Get the company handbook, team/department procedures and learn who are your go-to persons/subject matter experts(SMEs), get all the paperwork that comes with the position.  Take time to read everything given to you, in detail asking for revisions if needed and permitted ( please note that this should also be the case during salary negotiation). I should point out to those of us who contribute to open-source, have a side-hustle or a side project, that you need to get it in writing so that you can continue being you. Take time to get the expectations, goals and other necessities documented (in writing ) and jointly agreed upon. So again the takeaways are to ask questions, make notes and get it all in writing. &lt;/p&gt;

&lt;h2&gt;
  
  
  Onboarding ~ Tech and TechStack
&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%2Fmafcexjl25r2iehkh6y1.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%2Fmafcexjl25r2iehkh6y1.gif" width="494" height="276"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From the company, you should have a list of all the equipment that you should receive from your employer. If you need more stuff ( cables, connectors, chargers or stationery ), ask for it citing why you need it. Remember a closed mouth is never fed and we self-advocate here. We would all hope that we work from home but we don't, so get the setup completed and test everything in both locations. The same thing can be said for software installations, get/create the list and double-check with your immediate supervisor if needed and get yourself up to speed. Double-check all the configuration settings and ensure that it works efficiently. If all of the above is done properly,  one should have a production-level environment in a day to a week( this is for large corporations).&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%2F6mysn0k3se58yjva0u41.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%2F6mysn0k3se58yjva0u41.gif" width="480" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The fun should now begin with you being introduced to the &lt;br&gt;
 codebase. This can be done by getting a technical walkthrough, reading the documentation, and speaking with someone about how the software solves the problems of the customers. Always remember that the software you create solves a problem for a customer, this should help you understand the mindset of the user to better create really good solutions to their problems. Again, make all the notes and ask all the questions to help you better understand how to be an effective contributor to the team you are now a part of. I could also gone deeper into vscode setup and app considerations but to each his own and there are tonnes of other articles on this.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resting or Rather Its Importance
&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%2Fm4sg03rvk5ti06rl2uhd.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%2Fm4sg03rvk5ti06rl2uhd.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One can't focus if one is hungry (unless you are on a fast ... that takes some discipline), likewise one can't be the best problem-solving version of themself without sufficient rest. I could go deeper into why this is necessary but &lt;br&gt;
 &lt;a href="https://dev.to/damcosset/want-to-be-a-better-developer-take-care-of-your-sleep-1def"&gt;reading this&lt;/a&gt;  and &lt;a href="https://youtu.be/5MuIMqhT8DM?si=tlXhQe-nUf9yFGiN" rel="noopener noreferrer"&gt;watch this&lt;/a&gt; will do a better job than I can. Being back to a standard set of hours to get tasks done takes practice and some amount of strategy. My strategy was to completely plug out and sleep till I was thoroughly rested, I also took time to deliberately reset my circadian. All of that ensured that I was able to operate effectively during business hours. I also took time to learn to how meditate as it helped me to learn how to slow my brain down thus enabling me to deepen my focus.&lt;br&gt;
So the takeaways are to learn how to rest, reset your circadian rhythm and learn how to meditate if necessary. Here are &lt;a href="https://www.ted.com/search?q=sleep" rel="noopener noreferrer"&gt;some more food for thought.&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Relearn How To Work Full-Time and Accountability
&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%2Fbun21w4z1qrji4sqhqqt.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%2Fbun21w4z1qrji4sqhqqt.gif" width="500" height="281"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If it took you over 30 days to get a new job, there may be some amount of "re-learning how to work" that needs to be done. The job hunt tends to change one's schedule as it has various components ( resume customisation/creation, job applications, networking, interviewing, algorithmic practice, upskilling and project-based learning) and differs from working on a team or being an individual contributor. So it now is time for some re-adjustment, it is said that we are a product of our systems rather than our plans, so let's create new systems. I would suggest the following if you have some issues in the new role you have gotten : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; a good 30/60/90 plan ( keeps you and your manager on the same page with reasonable achievements in the first 90 days of being a new team member). &lt;/li&gt;
&lt;li&gt;Planning your day ( &lt;a href="https://dev.to/code_jedi/20-easy-ways-to-be-more-productive-as-a-developer-5f99"&gt;this article&lt;/a&gt; has broken it into simple actionable steps and somewhat turned the art of productivity into a science.)&lt;/li&gt;
&lt;li&gt;Pomodoro Method (timeboxing&lt;a href="https://dev.to/thegeoffstevens/the-pomodoro-technique-and-other-methods-to-get-more-done-with-tools-to-help-p96"&gt; your work &lt;/a&gt; in such a way that it helps you to get more done and get you into the flow state )&lt;/li&gt;
&lt;li&gt;The implementation of a &lt;a href="https://dev.to/keracudmore/brag-documents-why-you-should-have-one-3ldn"&gt;brag document&lt;/a&gt; (this may be oddly named by it can be used to help you see how one has added value as a team member, please remember that it doesn't have to only be code... think of procedures and policy implementations. Be reminded that this comes in handy when it comes time for a review or promotion).&lt;/li&gt;
&lt;li&gt;Informal check-ins ( during your 1-on-1s or at an appropriate time, do an informal temperature check with your supervisor to help you figure out where you are in upskilling or meeting the needs of your shiny new position, adjust accordingly as needed ). &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Upskilling or Continued Learning
&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%2Fus7niy4u06nj0xkyo65b.jpeg" 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%2Fus7niy4u06nj0xkyo65b.jpeg" alt=" " width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;"Relearning, unlearning and upskilling"... in this profession, these are words we live. So in this new role that we have, take time to figure out what to learn to move from competency to mastery in this new position on its respective tech stack. Since we should all be migrating to &lt;a href="https://youtu.be/U6s2pdxebSo?si=paDyMlsmBX9Dhror" rel="noopener noreferrer"&gt;TypeScript&lt;/a&gt; and I now work in &lt;a href="https://youtu.be/OrxmtDw4pVI?si=5vuEX8xFMrx71l6G" rel="noopener noreferrer"&gt;Vue&lt;/a&gt;, plus I like to know why a tool was created, I took time to watch the origin stories of both. Next, it's either the tutorial &amp;amp;or building small projects phase, simply put ... build sh!t that applies the knowledge you are learning. Learning to leave your ego at the door or the mindset of "I should know this" and ask for help or get to the point of "getting comfortable feeling uncomfortable", thus one should know &lt;a href="https://youtu.be/YssP_qMAq0A?si=T5rMGoHk6_8bZ2kD" rel="noopener noreferrer"&gt;how to ask for help on a team.&lt;/a&gt;. Another thing is to not abandon your side projects, space them out if you need to but do not abandon them. There is something to be said about having a basic version running version of your side project. Another thing is that as you learn, document and make time to teach. &lt;/p&gt;

&lt;h2&gt;
  
  
  Wrapping It Up
&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%2Fmnqpw2lkpxamiabxrm6p.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%2Fmnqpw2lkpxamiabxrm6p.gif" width="500" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, there you have it, your job-hunting to tech career re: initiation guide with a sprinkle of wisdom and a dash of humour! Remember, onboarding is not just about finding where the coffee machine lives; it's about befriending both your team and your tech stack. And hey, rest isn't just for cats; it's your secret weapon against the zombie apocalypse of burnout. Relearning how to adult with a 9-to-5 gig might seem daunting, but fear not, because planning your day is like playing Tetris with tasks. Lastly, in the grand game of tech, continuous learning is your cheat code, and if all else fails, just remember: when in doubt, stack overflow and ChapGPT are friends, documentation also! Cheers to your &lt;br&gt;
 new adventures! &lt;/p&gt;

&lt;p&gt;I would appreciate any feedback or your tips. Find me "&lt;a class="mentioned-user" href="https://dev.to/nerajno"&gt;@nerajno&lt;/a&gt;" if you would like to chat, my DMs are open. &lt;/p&gt;

</description>
      <category>career</category>
      <category>vue</category>
      <category>javascript</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How !To Be Mentored</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Wed, 17 May 2023 21:24:48 +0000</pubDate>
      <link>https://dev.to/nerajno/how-to-be-mentored-2nmh</link>
      <guid>https://dev.to/nerajno/how-to-be-mentored-2nmh</guid>
      <description>&lt;h2&gt;
  
  
  Intro
&lt;/h2&gt;

&lt;p&gt;Mentorship can be &lt;strong&gt;extremely&lt;/strong&gt; challenging to both parties if not done well. It can be defined as a relationship between a more experienced and knowledgeable person, the mentor, and a less experienced person, the mentor mentee, in which the mentor provides guidance, support, and advice to help the mentee develop personally and professionally.A mentor is an experienced individual who willingly shares their knowledge, skills, and expertise with a less experienced person (the mentee) to help them grow and achieve their goals. A mentor should acts as a advisor, role model, and source of inspiration for the mentee.A mentee, on the other hand, is an individual who seeks guidance, support, and knowledge to enhance their skills, knowledge, and personal growth. The mentee actively participates in the mentoring relationship and is responsible for their own development.&lt;/p&gt;

&lt;h2&gt;
  
  
  Five Things A Mentee Should Considering Doing: 🧐
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Set Clear Goals
&lt;/h3&gt;

&lt;p&gt;Define specific goals and objectives you want to achieve through the mentorship. This will help both you and your mentor focus on areas that require improvement and create a roadmap for your development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Be Open and Receptive
&lt;/h3&gt;

&lt;p&gt;Approach the mentorship relationship with an open mind and a willingness to learn. Be receptive to feedback, advice, and constructive criticism provided by your mentor. Embrace new perspectives and be open to exploring different ways of thinking.&lt;/p&gt;

&lt;h3&gt;
  
  
  Take Initiative
&lt;/h3&gt;

&lt;p&gt;Actively seek opportunities to learn and grow. Don't wait for your mentor to provide you with all the guidance. Take ownership of your own development and take the initiative to ask questions, request feedback, and pursue relevant experiences.&lt;/p&gt;

&lt;h3&gt;
  
  
  Communicate Effectively
&lt;/h3&gt;

&lt;p&gt;Establish open and honest communication with your mentor. Clearly articulate your needs, concerns, and expectations. Regularly update your mentor on your progress, challenges, and achievements. Actively seek feedback and be receptive to suggestions for improvement.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow Through
&lt;/h3&gt;

&lt;p&gt;Take the advice and guidance provided by your mentor seriously and implement it in your life or work. Show commitment and dedication to your goals and strive to make progress. Regularly review your progress with your mentor and adjust your actions if necessary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three Things A Mentor Should Considering Doing: 🧐
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Provide Guidance and Support
&lt;/h3&gt;

&lt;p&gt;Offer guidance, wisdom, and expertise to the mentee based on their own experiences. Help the mentee navigate challenges, make informed decisions, and overcome obstacles. Be available to provide support and encouragement when needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Share Knowledge and Experience
&lt;/h3&gt;

&lt;p&gt;Share your knowledge, skills, and experiences with the mentee. Offer insights, lessons learned, and practical advice related to their goals and areas of interest. Provide resources, tools, and connections that can help the mentee in their development.&lt;/p&gt;

&lt;h3&gt;
  
  
  Foster Growth and Independence
&lt;/h3&gt;

&lt;p&gt;Encourage the mentee's personal and professional growth by challenging them to step out of their comfort zone and explore new opportunities. Help them identify their strengths and areas for improvement. Empower the mentee to take ownership of their development and make decisions for themselves.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summary
&lt;/h3&gt;

&lt;p&gt;Mentorship is a relationship where a more experienced person (mentor) guides and supports a less experienced person (mentee) to help them grow personally and professionally. The mentee should set clear goals, be open to learning, take initiative, communicate effectively, and follow through on advice. The mentor should provide guidance, share knowledge and experience, and foster the mentee's growth and independence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/5-mentorship-learnings/" rel="noopener noreferrer"&gt;5 things I Learned Mentoring 2,500 Aspiring Developers ( FreeCodeCamp)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.freecodecamp.org/news/the-mentoring-framework/" rel="noopener noreferrer"&gt;How to Use the Mentoring Framework to Learn a New Skill (FreeCodeCamp)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://codingsans.com/blog/mentoring-developers" rel="noopener noreferrer"&gt;Mentoring Developers: Best Practices From Uber - Interview With Gergely Orosz (Code Sans)&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Who Am I ( Currently )
&lt;/h3&gt;

&lt;p&gt;Nerando is a software developer with full-stack training, team building, and a dynamic approach to creating realistic web, mobile, and executive hot takes. He has been a part of teams that have conquered broken code, patched legacy codebases, and stopped releasing on Fridays for the overall mental health of his team. When he is not saving the world from bad algorithms, implementations, and a lack of good documentation, you can find him coding and drinking his third cup of coffee. &lt;br&gt;
     Nerando is currently &lt;strong&gt;&lt;em&gt;seeking new opportunities&lt;/em&gt;&lt;/strong&gt; that align and grow with his skillset and experiences, especially with programming languages in React, Ruby, Ruby on Rails, DevOps skills, MERN and so much more. He can be found via his &lt;a href="https://developindvlpr.com/" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt;, &lt;br&gt;
&lt;a href="https://twitter.com/nerajno" rel="noopener noreferrer"&gt;@nerajno&lt;/a&gt; &lt;strong&gt;&lt;em&gt;(for now)&lt;/em&gt;&lt;/strong&gt; and on &lt;a href="https://www.linkedin.com/in/nerando-johnson/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>mentorship</category>
      <category>careerdevelopment</category>
      <category>softwareengineering</category>
      <category>developer</category>
    </item>
    <item>
      <title>So....This is your 1st Tech Conference : #AttendeeEdition</title>
      <dc:creator>Nerando Johnson</dc:creator>
      <pubDate>Mon, 15 May 2023 11:30:00 +0000</pubDate>
      <link>https://dev.to/nerajno/sothis-is-your-1st-tech-conference-attendee-edition-3c4g</link>
      <guid>https://dev.to/nerajno/sothis-is-your-1st-tech-conference-attendee-edition-3c4g</guid>
      <description>&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%2Frfzfsl5sllgtdl17p2sk.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%2Frfzfsl5sllgtdl17p2sk.gif" width="500" height="375"&gt;&lt;/a&gt;&lt;br&gt;&lt;br&gt;
To continue from the &lt;a href="https://dev.to/nerajno/so-this-is-your-1st-tech-conference-volunteeredition-450c"&gt;previous article&lt;/a&gt; in this series, we will continue by looking into what one should consider when attending a tech conference as a first-time attendee. And yes, I am doing this with consideration to &lt;a href="https://www.renderatl.com/" rel="noopener noreferrer"&gt;RenderAtl 2023&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%2Fq18mw3pawttf68rkebvy.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%2Fq18mw3pawttf68rkebvy.gif" width="499" height="499"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Start Here
&lt;/h3&gt;

&lt;p&gt;So as a professional, a student, or a hobbyist, a few questions I would ask myself to get the most out of this event would include: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Where are you in your career/study?&lt;/li&gt;
&lt;li&gt;What do you need to learn?&lt;/li&gt;
&lt;li&gt;Who do you need to meet or network with? &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All these questions would help me do the following: &lt;em&gt;set clear goals to get the most out of this event&lt;/em&gt;. As a technologist, professional, or hobbyist, with constant learning being a core tenant of the craft there is a lot to be considered. Before attending the conference, determine your goals for attending,  are you looking to learn new skills, network with other professionals, or discover new technologies and trends in your industry? Knowing what you want to achieve will help you focus your time and energy during the conference.&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%2F5w091r74r2td2wuvtcc3.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%2F5w091r74r2td2wuvtcc3.gif" width="480" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Make A Plan
&lt;/h3&gt;

&lt;p&gt;Grab the schedule and review the conference schedule, remember that you came here for a reason. So make the plans accordingly, prioritize the sessions that align with your goals and interests, and also plan secondary sessions if the main ones are full ( I have seen it happen). Ensure to leave some time for networking and exploring the exhibit hall, the booths and to rest.&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%2Fgf8pu46sie3uqisi14rg.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%2Fgf8pu46sie3uqisi14rg.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Bring The Right Gear
&lt;/h3&gt;

&lt;p&gt;To climb Everest, bring the right gear, the same applies when attending a tech conference.  Be sure to bring your laptop or tablet, chargers, a pencil or two, portable batteries, and a notebook for taking notes (sometimes as a backup). Some conferences may also require you to download a mobile app to access the schedule and address health concerns and other important information. At least, we forget.... please stay hydrated and energized, so please drink water and eat something. Just throw them all in a backpack or a messenger bag ... just ensure you have what you need for the event.&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%2F8xsdgzvj0oomo5qnyi1b.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%2F8xsdgzvj0oomo5qnyi1b.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Comfort ...
&lt;/h3&gt;

&lt;p&gt;Dress comfortably and appropriately, the dress code varies by conference, but it's always better to err on the side of dressing comfortably and semi-casual at best. Tech tends to loan itself to a jeans and t-shirt dress code. Thus wear comfortable clothes and shoes as you may be walking around and standing for long periods.&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%2Fn98wdtw5d4c2cpof6e5w.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%2Fn98wdtw5d4c2cpof6e5w.gif" width="250" height="119"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Stay Organized
&lt;/h3&gt;

&lt;p&gt;Yes, remember that notebook we spoke about earlier, well use it or another tool of your liking to figure out all the things you need to do. Keep track of the information you gathered during the conference, such as notes, opportunities to follow up on, and resources. This will help you retain the information and follow up effectively.&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%2F6yanid1n7rmejuwqbdm1.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%2F6yanid1n7rmejuwqbdm1.gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Take Good Notes
&lt;/h3&gt;

&lt;p&gt;Prioritize capturing essential insights and key takeaways rather than attempting to transcribe every single word in the sessions you attend. Focus on summarizing the main ideas, key statistics, actionable points, contacts, other reference materials and  ensuring your notes reflect the most valuable information from the talks. Use a note-taking app or software on your device or make really good written notes (see the &lt;a href="https://youtu.be/ErSjc1PEGKE" rel="noopener noreferrer"&gt;Cornell method&lt;/a&gt; ) to quickly jot down key points during sessions. This approach will save time and make your notes more concise and actionable so that you can review them easier.&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%2Fz8by3blusbjkelsxg8qi.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%2Fz8by3blusbjkelsxg8qi.gif" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Network, Network, Network
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;"How do we know each other ?"&lt;/em&gt; or &lt;em&gt;"Where do I know you from ?"&lt;/em&gt; These should be a part of your "tech" repertoire or vocabulary as you quest to grow as a tech professional. Take advantage of the opportunity to network with other professionals in your industry. Introduce yourself to speakers, exhibitors, and fellow attendees during breaks and networking events. Look into using &lt;a href="https://www.linkedin.com/help/linkedin/answer/a525286/using-a-linkedin-qr-code-to-connect-with-members?lang=en" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; or &lt;a href="https://help.twitter.com/en/using-twitter/qr-codes#:~:text=From%20your%20profile%20page%3A%20Tap,open%20a%20website%20or%20app." rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; tricks to digitally networking rather quickly as the technology community tends to reside on these two platforms. Remember that networking also be learning about podcasts to listen to, local meetups to go to, and online communities to join. Also look into collecting stickers, pins, and swag ... they can be great conversation starters.&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%2Fmwp20nl45bccrkc3j8sm.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%2Fmwp20nl45bccrkc3j8sm.gif" width="480" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow Up ... Yup, Seriously
&lt;/h3&gt;

&lt;p&gt;After the conference, follow up with the people you met and the information you learned. Reach out to them on LinkedIn or on any other platform, engage with them and their content,  send a personalized email or message, and continue to engage with the conference community online. Write the blog on your experience, and make notes on the stuff you learned and the new tech that you should follow up on. Practice or build something with the tech you were introduced to better familiarise yourself with the new tools you secured for your toolkit. &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%2Fttj2v4w0vk98ol90c2v7.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%2Fttj2v4w0vk98ol90c2v7.gif" width="480" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  General Takeaways
&lt;/h3&gt;

&lt;p&gt;To wrap up : create clear goals, making a plan, bringing the right gear, make good notes, staying organized, dressing comfortably, networking, and following up with people and information learned after the conference (create stuff). I have one more to cover in this series : the first time speaker as a tech conference. &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%2Fyv2yq0gbxm43uqz2mvqa.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%2Fyv2yq0gbxm43uqz2mvqa.gif" width="270" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Who Am I ( Currently)
&lt;/h3&gt;

&lt;p&gt;Nerando is a software developer with full-stack training, team building, and a dynamic approach to creating realistic web, mobile, and executive hot takes. He has been a part of teams that have conquered broken code, patched legacy codebases, and stopped releasing on Fridays for the overall mental health of his team. When he is not saving the world from bad algorithms, implementations, and a lack of good documentation, you can find him coding and drinking his third cup of coffee. &lt;br&gt;
     Nerando is currently &lt;strong&gt;&lt;em&gt;seeking new opportunities&lt;/em&gt;&lt;/strong&gt; that align and grow with his skillset and experiences, especially with programming languages in React, Ruby, Ruby on Rails, DevOps skills, MERN and so much more. He can be found via his &lt;a href="https://developindvlpr.com/" rel="noopener noreferrer"&gt;portfolio&lt;/a&gt;, &lt;br&gt;
&lt;a href="https://twitter.com/nerajno" rel="noopener noreferrer"&gt;@nerajno&lt;/a&gt; &lt;strong&gt;&lt;em&gt;(for now)&lt;/em&gt;&lt;/strong&gt; and on &lt;a href="https://www.linkedin.com/in/nerando-johnson/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;. &lt;/p&gt;

</description>
      <category>productivity</category>
      <category>conference</category>
      <category>learning</category>
      <category>community</category>
    </item>
  </channel>
</rss>
