<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Yoshi Rubin</title>
    <description>The latest articles on Forem by Yoshi Rubin (@yoshrubin).</description>
    <link>https://forem.com/yoshrubin</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%2F263759%2F82faaa5f-e3ed-4b61-aa3d-78e8e491124c.png</url>
      <title>Forem: Yoshi Rubin</title>
      <link>https://forem.com/yoshrubin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/yoshrubin"/>
    <language>en</language>
    <item>
      <title>The Importance of Web Standards and Best Practices: Why Reinventing the Wheel in JavaScript Often Leads to Worse Solutions</title>
      <dc:creator>Yoshi Rubin</dc:creator>
      <pubDate>Sun, 18 Aug 2024 13:38:08 +0000</pubDate>
      <link>https://forem.com/yoshrubin/the-importance-of-web-standards-and-best-practices-why-reinventing-the-wheel-in-javascript-often-leads-to-worse-solutions-4ld</link>
      <guid>https://forem.com/yoshrubin/the-importance-of-web-standards-and-best-practices-why-reinventing-the-wheel-in-javascript-often-leads-to-worse-solutions-4ld</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;In the ever-evolving world of web development, it's easy to get caught up in the latest frameworks, libraries, and tools. Developers often find themselves tempted to create custom solutions, believing that their unique approach might offer something better or more innovative. However, this approach can be a double-edged sword. Ignoring established web standards and best practices can lead to issues with accessibility, performance, and maintainability.&lt;/p&gt;

&lt;p&gt;This article explores why adhering to web standards and following best practices is crucial, regardless of the framework or technology used. We will also discuss the risks of reinventing the wheel in JavaScript and why it often results in suboptimal solutions. To illustrate these points, we’ll refer to the WAI-ARIA Authoring Practices Guide (APG) and the importance of accessible, standardized patterns.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Role of Web Standards
&lt;/h2&gt;

&lt;p&gt;Web standards are the backbone of the internet. They ensure that web content is accessible, functional, and consistent across different browsers, devices, and platforms. Organizations like the World Wide Web Consortium (W3C) develop these standards, which include guidelines for HTML, CSS, JavaScript, and more. Adhering to these standards is crucial for creating websites that are user-friendly, accessible, and future-proof.&lt;/p&gt;

&lt;p&gt;One key area of web standards is accessibility, which ensures that all users, including those with disabilities, can navigate and interact with web content. The WAI-ARIA (Web Accessibility Initiative – Accessible Rich Internet Applications) guidelines are an essential component of this. They provide a set of attributes that make web content and applications more accessible to people with disabilities, particularly those who rely on assistive technologies like screen readers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices: A Foundation for Success
&lt;/h2&gt;

&lt;p&gt;Best practices in web development are a set of guidelines and techniques that have been widely accepted because they lead to more efficient, maintainable, and scalable code. These practices are not tied to any specific framework or technology; they apply universally, regardless of whether you’re using React, Angular, Vue.js, or any other tool.&lt;/p&gt;

&lt;p&gt;Some of the core best practices include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Semantic HTML: Using the correct HTML elements for their intended purpose, which improves accessibility and search engine optimization (SEO).&lt;/li&gt;
&lt;li&gt;Accessibility: Ensuring that web applications are usable by people with a range of disabilities, which includes following ARIA patterns and other accessibility guidelines.&lt;/li&gt;
&lt;li&gt;Performance Optimization: Writing efficient code, optimizing images, and reducing load times to ensure a smooth user experience.&lt;/li&gt;
&lt;li&gt;Code Maintainability: Writing clean, modular code that is easy to understand, test, and update.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These best practices not only improve the quality of your code but also contribute to a better user experience. They ensure that your application is accessible to all users, performs well under various conditions, and can be easily maintained and scaled as your project grows.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Dangers of Reinventing the Wheel
&lt;/h2&gt;

&lt;p&gt;In the world of JavaScript, developers often fall into the trap of creating custom solutions for problems that have already been solved by standardized patterns and libraries. While this might seem like a creative and innovative approach, it can lead to significant issues down the line.&lt;/p&gt;

&lt;p&gt;For example, consider the creation of custom form controls. While it might seem straightforward to build a custom dropdown or checkbox, doing so without following established patterns can result in accessibility issues. Users who rely on keyboard navigation or screen readers might find these custom controls difficult or impossible to use. Additionally, custom solutions often lack the cross-browser compatibility and performance optimizations that come with well-established patterns.&lt;/p&gt;

&lt;p&gt;Another common pitfall is the creation of custom navigation systems. While it might seem like a good idea to design a unique menu or routing system, doing so without adhering to best practices can lead to a confusing and inconsistent user experience. Standardized patterns for navigation are well-tested, accessible, and familiar to users, making them a safer and more reliable choice.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ARIA Patterns: A Case Study
&lt;/h2&gt;

&lt;p&gt;The WAI-ARIA Authoring Practices Guide (APG) is an excellent resource for developers looking to build accessible web components. It provides a collection of standardized patterns for common user interface components, such as buttons, dialogs, and navigation menus. These patterns are designed to be accessible to all users, including those with disabilities, and are built upon well-established web standards.&lt;/p&gt;

&lt;p&gt;For example, the ARIA pattern for a modal dialog provides guidelines for making the dialog accessible to screen readers and keyboard users. It ensures that the dialog is correctly announced by assistive technologies, that focus is trapped within the dialog while it is open, and that users can close the dialog using both a button and the Escape key. By following this pattern, developers can create a modal dialog that is accessible and user-friendly, without having to reinvent the wheel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Web standards and best practices are essential for creating accessible, maintainable, and high-quality web applications. While it might be tempting to create custom solutions, doing so without following established patterns can lead to significant issues, particularly in areas like accessibility and performance. By adhering to web standards like the WAI-ARIA guidelines and following best practices, developers can ensure that their applications are accessible to all users, perform well, and are easy to maintain and scale.&lt;/p&gt;

&lt;h2&gt;
  
  
  Call to Action
&lt;/h2&gt;

&lt;p&gt;To further your understanding of web standards and best practices, consider exploring resources like the WAI-ARIA Authoring Practices Guide and the W3C’s guidelines on accessibility and web design. Take the time to review your current projects and identify areas where you might be reinventing the wheel with custom solutions. By prioritizing standardized patterns and best practices, you can create better, more accessible web applications for everyone.&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/WAI/ARIA/apg/patterns/" rel="noopener noreferrer"&gt;ARIA Authoring Practices Guide (APG)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.a11yproject.com/resources/" rel="noopener noreferrer"&gt;The A11Y Project&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>a11y</category>
      <category>programming</category>
    </item>
    <item>
      <title>Breaking Down Major Migrations: Vuex to Pinia Before Moving to Nuxt 3</title>
      <dc:creator>Yoshi Rubin</dc:creator>
      <pubDate>Fri, 24 May 2024 06:42:38 +0000</pubDate>
      <link>https://forem.com/yoshrubin/breaking-down-major-migrations-vuex-to-pinia-before-moving-to-nuxt-3-2bmd</link>
      <guid>https://forem.com/yoshrubin/breaking-down-major-migrations-vuex-to-pinia-before-moving-to-nuxt-3-2bmd</guid>
      <description>&lt;p&gt;In our ongoing journey of migrating Torah Live to Nuxt 3, one critical step was transitioning from Vuex to Pinia while still on Nuxt 2. Here’s how we approached it:&lt;/p&gt;

&lt;h4&gt;
  
  
  Why Move from Vuex to Pinia? 🍍
&lt;/h4&gt;

&lt;p&gt;While Nuxt 3 is compatible with Vuex, Pinia is considered the future of state management in Vue.js. According to the Vuex documentation:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Pinia is now the new default. The official state management library for Vue has changed to Pinia. Pinia has almost the exact same or enhanced API as Vuex 5, described in Vuex 5 RFC. You could simply consider Pinia as Vuex 5 with a different name. Pinia also works with Vue 2.x as well. Vuex 3 and 4 will still be maintained. However, it's unlikely to add new functionalities to it. Vuex and Pinia can be installed in the same project. If you're migrating an existing Vuex app to Pinia, it might be a suitable option. However, if you're planning to start a new project, we highly recommend using Pinia instead."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Given that we were making a large migration to Nuxt 3, we saw this as an essential part of the move to keep our code maintainable and future-proof.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Plan: Breaking Down the Migration
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;1. Preliminary Research and Preparation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Research&lt;/strong&gt;: I read through numerous blog posts and watched videos to understand best practices for migrating from Vuex to Pinia. Some resources that were particularly helpful include:

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://pinia.vuejs.org/cookbook/migration-vuex.html"&gt;Pinia Migration from Vuex Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://vueschool.io/articles/vuejs-tutorials/how-to-migrate-from-vuex-to-pinia/"&gt;Vue School's Guide on Migrating from Vuex to Pinia&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.reddit.com/r/vuejs/comments/17gqv7u/is_vuex_dead_now_why_did_everyone_move_to_pinia/"&gt;Informative Reddit Thread on Moving to Pinia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Incremental Migration Process&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simultaneous Stores&lt;/strong&gt;: One of the nice things about migrating to Pinia is that I was able to run both Pinia and Vuex simultaneously. This allowed us to migrate one store at a time and fully test all functionality before moving to the next store.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Deployment Strategy&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Staging Deployments&lt;/strong&gt;: We regularly deployed to our staging environment to ensure everything functioned as expected. This allowed us to catch issues early and ensure that the migration was proceeding smoothly.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Production Deployment&lt;/strong&gt;: Once the migration was fully complete and thoroughly tested, we deployed the changes to production. This approach ensured that we did not run both Vuex and Pinia simultaneously in production, minimizing potential conflicts and issues.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Overcoming Challenges
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;1. Adapting to Pinia's Patterns&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Mutation Handling&lt;/strong&gt;: One challenge was getting used to Pinia's pattern of assigning values directly to the state without using mutations, a shift from the traditional flux pattern. This required a mental shift and adjustment in our coding practices.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;2. Minimizing Codebase Disruption&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Incremental Changes&lt;/strong&gt;: We aimed to avoid making too many changes to the codebase at once, ensuring it was clear what changes were made and why. This approach helped maintain code clarity and ease the transition.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;3. Avoiding Conflicts with Ongoing Work&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Concurrent Development&lt;/strong&gt;: Another factor we considered was avoiding conflicts with ongoing work by the team on the project. Copying to a new codebase could have introduced many regressions. By migrating within the existing codebase, we were able to maintain continuity and minimize disruption.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Looking Forward
&lt;/h4&gt;

&lt;p&gt;With the migration from Vuex to Pinia complete, we laid a solid foundation for the transition to Nuxt 3. This methodical approach allowed us to manage the complexity of the migration and mitigate risks associated with big changes. I’m very pleased with how the migration went, and now we're on the cutting edge.&lt;/p&gt;

&lt;p&gt;Stay tuned for our next post where we dive into the actual migration to Nuxt 3, including some unexpected errors and how to avoid them!&lt;/p&gt;

&lt;h4&gt;
  
  
  Takeaways
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Plan and Research&lt;/strong&gt;: Thorough research and planning are crucial for successful migrations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Incremental Changes&lt;/strong&gt;: Breaking down large migrations into smaller, manageable projects can lead to smoother transitions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Community Resources&lt;/strong&gt;: Leverage community resources and documentation to guide your migration process.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Feel free to reach out if you have any questions or need advice on similar migrations! 🚀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dev.to/yoshrubin/navigating-the-upgrade-plan-steps-before-vue-3-migration-5a23"&gt;Check out the previous post in this series!&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>pinia</category>
      <category>vue</category>
    </item>
    <item>
      <title>🛠 Navigating the Upgrade Plan: Steps Before Vue 3 Migration</title>
      <dc:creator>Yoshi Rubin</dc:creator>
      <pubDate>Wed, 08 May 2024 07:17:50 +0000</pubDate>
      <link>https://forem.com/yoshrubin/navigating-the-upgrade-plan-steps-before-vue-3-migration-5a23</link>
      <guid>https://forem.com/yoshrubin/navigating-the-upgrade-plan-steps-before-vue-3-migration-5a23</guid>
      <description>&lt;p&gt;Welcome back, fellow tech enthusiasts! If you're just joining us, this post is part of a series where we dive deep into Torah Live's journey of upgrading to Nuxt 3. &lt;a href="https://dev.to/yoshrubin/exploring-torah-live-upgrading-to-nuxt-3-1c2a"&gt;In our previous post&lt;/a&gt;, we explored why we made the decision to upgrade. Now, let's take a closer look at the meticulous plan we crafted before diving into Vue 3 migration.&lt;/p&gt;

&lt;p&gt;Before diving headfirst into Vue 3 migration, we embarked on a thorough planning phase to ensure a smooth transition. This phase involved extensive research, meticulous documentation, and strategic decision-making.&lt;/p&gt;

&lt;p&gt;First and foremost, I delved into the vast ocean of online resources to gather insights from fellow developers who had embarked on similar migration journeys. Blogs, articles, and video tutorials became my compass, guiding me through the intricacies of Nuxt 3 migration. Among the resources that proved invaluable were &lt;a href="https://harlanzw.com/blog/nuxt-3-migration-cheatsheet"&gt;HarlanZW's Nuxt 3 Migration Cheatsheet&lt;/a&gt;, &lt;a href="https://debbie.codes/blog/migrating-nuxt2-nuxt3/"&gt;Debbie's blog on migrating from Nuxt 2 to Nuxt 3&lt;/a&gt; (This one is a bit older but still has good info), and &lt;a href="https://www.youtube.com/watch?v=lPfp9XZINrg"&gt;Alex Van Liew's enlightening video tutorial from Vue Conf&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Armed with insights from the community and a clear understanding of the migration process, I devised a comprehensive plan to tackle the upgrade in a systematic manner:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Complete Any Pre-Migration Migrations:&lt;/strong&gt; Leveraging the flexibility of Vue 2, we prioritized any migrations that could be completed before transitioning to Vue 3. This allowed us to make incremental improvements to our codebase while still operating on Vue 2, ensuring a seamless transition.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evaluate Third-Party Packages:&lt;/strong&gt; I meticulously compiled a list of all third-party packages used in our application, categorizing them based on their compatibility with Vue 3. Packages with Vue 3 compatibility were marked for seamless integration, while those without required careful evaluation to determine suitable alternatives.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration to Nuxt-Bridge:&lt;/strong&gt; With a clear roadmap in place, we initiated the migration process by transitioning to Nuxt-Bridge. This intermediary step served as a crucial bridge between Vue 2 and Vue 3, laying the groundwork for the final migration.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Transition to Vue 3:&lt;/strong&gt; Once our application was successfully built on Nitro with Nuxt-Bridge, we were ready to take the leap to Vue 3. Armed with meticulous planning and a comprehensive understanding of the migration process, we embarked on the final phase of our journey.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;As we meticulously executed each step of our upgrade plan, we encountered unexpected challenges and roadblocks along the way. However, with perseverance and a strategic approach, we navigated through the stormy seas of migration, emerging stronger and more resilient than ever before.&lt;/p&gt;

&lt;p&gt;The planning phase proved to be the cornerstone of our successful migration journey. By investing time and effort into research, documentation, and strategic decision-making, we laid a solid foundation for the transition to Vue 3. In the next installment, we'll dive into the migration process itself, uncovering insights and lessons learned along the way. Stay tuned for more updates, and don't forget to check out my previous post for the full story! 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>vue</category>
      <category>nuxt</category>
    </item>
    <item>
      <title>🚀 Exploring Upgrading to Nuxt 3</title>
      <dc:creator>Yoshi Rubin</dc:creator>
      <pubDate>Thu, 02 May 2024 14:44:07 +0000</pubDate>
      <link>https://forem.com/yoshrubin/exploring-torah-live-upgrading-to-nuxt-3-1c2a</link>
      <guid>https://forem.com/yoshrubin/exploring-torah-live-upgrading-to-nuxt-3-1c2a</guid>
      <description>&lt;p&gt;Hey there, tech enthusiasts! Ever heard of Torah Live? We're on a mission to revolutionize Jewish education by making Torah subjects relatable and entertaining for kids and teens through videos, games, comics, and challenges. Intrigued? Let's delve into why we decided to upgrade from Nuxt 2 to Nuxt 3 and the amazing benefits it brought!&lt;/p&gt;

&lt;p&gt;At Torah Live, we're all about staying ahead of the curve. When Vue 2 was nearing its end-of-life and we encountered performance issues, we knew it was time for a change. Vue 2's inability to cache computed values on the server side caused significant performance bottlenecks, leading us to manually memoize hashtables to mitigate the issue. With Nuxt 3, this problem is a thing of the past, thanks to its improved architecture and performance optimizations.&lt;/p&gt;

&lt;p&gt;Picture this: hours spent grappling with performance hiccups in Vue 2, manually memoizing hashtables, and crossing our fingers for smoother sailing. Then, Vue 3 swoops in like a superhero, addressing our woes and streamlining our development process. 🦸‍♂️&lt;/p&gt;

&lt;p&gt;In a nutshell, upgrading to Nuxt 3 was a no-brainer for us at Torah Live. Stick around for more tales from our migration journey and the magic we uncovered along the way!&lt;/p&gt;

</description>
      <category>nuxt</category>
      <category>vue</category>
      <category>webdev</category>
      <category>learning</category>
    </item>
    <item>
      <title>What is SSR and when should you use it.</title>
      <dc:creator>Yoshi Rubin</dc:creator>
      <pubDate>Fri, 30 Sep 2022 12:42:36 +0000</pubDate>
      <link>https://forem.com/yoshrubin/what-is-ssr-and-when-should-you-use-it-42mb</link>
      <guid>https://forem.com/yoshrubin/what-is-ssr-and-when-should-you-use-it-42mb</guid>
      <description>&lt;h2&gt;
  
  
  What is Server Side Rendering (SSR)?
&lt;/h2&gt;

&lt;p&gt;When creating a dynamic webpage using Single Page Application (SPA), the server sends the entire web application in javascript files to the client, the browser will then make the api calls to the server to fetch the content from the server and render our page.  With Single Server Rendering (SSR) the page is rendered on the server and the browser will receive an HTML page ready to be displayed.&lt;br&gt;
&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xwqgu5s6vhrs52pam4d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xwqgu5s6vhrs52pam4d.png" alt="Server Side Rendering Steps" width="800" height="570"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Ok, so why is that better?
&lt;/h2&gt;

&lt;p&gt;The benefits of using SSR boil down to a better user experience (UX) and better SEO&lt;/p&gt;

&lt;p&gt;Improve UX. With SSR you get a faster time-to-content,  now that we don’t need to wait till we download all of the JS files and then execute them a user with slower internet speed will get to see the webpage content much quicker.  Another benefit is that the data on the initial load is loaded on the server as well which is likely a faster connection to the database than most client connections.&lt;br&gt;
These benefits tend to result in better &lt;a href="https://web.dev/vitals/"&gt;Web Vitals&lt;/a&gt; as well which brings me to the next bug benefit of SSR.&lt;/p&gt;

&lt;p&gt;Better SEO. Because we are loading a fully rendered page the search engine crawlers will see the fully rendered page.&lt;/p&gt;

&lt;h2&gt;
  
  
  There must be some tradeoffs to using SSR?
&lt;/h2&gt;

&lt;p&gt;Yes, there are tradeoffs and they should be taken into account.&lt;/p&gt;

&lt;p&gt;Development constraints. This is a big one and might need a post of its own to get into more detail but the general idea is, since we are rendering the page on the server any browser specific code needs to be called in the correct lifecycle hooks.&lt;/p&gt;

&lt;p&gt;Server-side load. There is more load on the server now and that does need to be taken into account when  it comes to scale.&lt;/p&gt;

&lt;p&gt;Build setup and deployment are more involved. We now require a Node.js environment to build and deploy our app.&lt;/p&gt;

&lt;h2&gt;
  
  
  So when should I use SSR?
&lt;/h2&gt;

&lt;p&gt;If time-to-content and better SEO are important to your web application and you have a large amount of dynamic content then SSR could help you improve your web application and may even help improve conversion rates.&lt;/p&gt;

&lt;h3&gt;
  
  
  Great how do I get started?
&lt;/h3&gt;

&lt;p&gt;Here are some great resources to get you started with setting up your webapp with SSR.&lt;br&gt;
For &lt;strong&gt;react&lt;/strong&gt; check out the &lt;a href="https://nextjs.org/"&gt;Next.JS&lt;/a&gt;.&lt;br&gt;
For &lt;strong&gt;vue&lt;/strong&gt; check out the &lt;a href="https://nuxtjs.org/"&gt;Nuxt.JS&lt;/a&gt;.&lt;br&gt;
For &lt;strong&gt;angular&lt;/strong&gt; check out &lt;a href="https://angular.io/guide/universal"&gt;Angular Universal&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>react</category>
    </item>
    <item>
      <title>Clean Code Handbook Chapter 1 Summary</title>
      <dc:creator>Yoshi Rubin</dc:creator>
      <pubDate>Mon, 06 Jan 2020 10:14:22 +0000</pubDate>
      <link>https://forem.com/yoshrubin/clean-code-handbook-chapter-1-summary-51b6</link>
      <guid>https://forem.com/yoshrubin/clean-code-handbook-chapter-1-summary-51b6</guid>
      <description>&lt;p&gt;Hey all! &lt;/p&gt;

&lt;p&gt;I recently started reading "Clean Code A Handbook of Agile Software Craftsmanship" by Robert C. Martin &lt;a href="https://www.amazon.com/Clean-Code-Handbook-Software-Craftsmanship/dp/0132350882/ref=sr_1_1?keywords=clean+code&amp;amp;qid=1578251590&amp;amp;sr=8-1"&gt;link to the book on Amazon&lt;/a&gt; and I thought I would share what I have been learning I believe there are other conclusions you can have from reading this book, the book was highly recommended to me and so far I have not been disappointed.&lt;/p&gt;

&lt;p&gt;In the first chapter, the author is trying to help us understand why we need clean code and what clean code is.&lt;/p&gt;

&lt;p&gt;The author sells us on the idea that &lt;em&gt;bad code&lt;/em&gt; can kill companies because one of the issues with bad code is that once we start with bad code we continue to pile on more bad code which makes fixing bugs harder which eventually makes the application unusable and not and not worth fixing, so then the companies dedicate resources to make a new application that does the same as the old one but then that one is done in a rush with “bad code” and we end up in a never-ending loop of bad code unless we break it and start writing clean code.&lt;/p&gt;

&lt;p&gt;Now we get into the what is clean code part of this chapter, here the author asks other famous programmers and teachers how they would describe “clean code” I will not get into all of those here (they are really great but can get too long for this format)so I will try to give a short description that will be inclusive of most of the main points.  &lt;/p&gt;

&lt;p&gt;A few of the adjectives used to describe clean code are &lt;em&gt;elegant&lt;/em&gt;, &lt;em&gt;readable&lt;/em&gt; and &lt;em&gt;straightforward&lt;/em&gt; when the author breaks those down a little more we get to an understanding that when writing code the focus should be to minimize complexity so when someone else reads the code it should be like reading a book, where everything makes sense and has a clear purpose in other words the code is &lt;em&gt;cared for&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;(This is my first post and my first time trying something like this feedback is welcome but please be gentle 😅)&lt;/p&gt;

</description>
      <category>codequality</category>
      <category>testing</category>
      <category>books</category>
    </item>
  </channel>
</rss>
