<?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: Mwendwa Bundi Emma</title>
    <description>The latest articles on Forem by Mwendwa Bundi Emma (@mwendwabundi).</description>
    <link>https://forem.com/mwendwabundi</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%2F813268%2F11a3ec39-2d31-4f62-9770-106a98f51ac4.jpg</url>
      <title>Forem: Mwendwa Bundi Emma</title>
      <link>https://forem.com/mwendwabundi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mwendwabundi"/>
    <language>en</language>
    <item>
      <title>10 INTERESTING STATISTICS ON API(s) FOR 2024</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Wed, 07 Feb 2024 07:46:29 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/10-interesting-statistics-on-apis-for-2024-1c5f</link>
      <guid>https://forem.com/mwendwabundi/10-interesting-statistics-on-apis-for-2024-1c5f</guid>
      <description>&lt;p&gt;Application Programming Interfaces (APIs) have grown to be widely adopted by businesses and organizations with projections showing an upward growth curve for the future.&lt;/p&gt;

&lt;p&gt;APIs are becoming a go-to for their ease of adoption and integration by varied architectures.&lt;/p&gt;

&lt;p&gt;In recent years, research, surveys, and reports have been conducted and have revealed interesting data that can help foretell its future and the current growth so far. This article dives into the latest reports from leading research leaders in the industry to enlighten you on what the API data looks like statistically.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;According to independent research conducted by &lt;a href="https://www.vansonbourne.com/work/14072001tc"&gt;Vanson Bourne in 2021&lt;/a&gt;, termed The State of APIs, Integration, and Microservices, APIs were gaining relevance and traction among organizations. The research found that “93% agree that APIs are relevant and essential to the functioning of organizations, while 86% agree that without the use of APIs, organizations would be working in silos, further highlighting their importance.” They noted that APIs could improve the visibility of their key data assets.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The same research found that 97% of the respondents agreed that APIs and microservices complemented each other and would thus make sense to bring them into one bundle for integration purposes to achieve optimum performance. This would thus achieve a myriad of positive outcomes such as; higher customer satisfaction, boosting productivity, and saving time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://content.salt.security/state-api-report.html"&gt;State of API Security Q1 2023 Report by Salts Labs&lt;/a&gt; reports an explosive growth trajectory for APIs. The report says, “59% of respondents now manage more than 100 APIs, and 25% manage more than 500. This number is only growing, with 27% saying they have more than doubled their API count over the past year. Another quarter said their API numbers increased by 51–100%.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;A white paper research by &lt;a href="https://nonamesecurity.com/resources/api-security-trends-report/"&gt;Black &amp;amp; White under Noname security&lt;/a&gt; released in 2022 highlighted the fact that API security continues to be a case of concern for most organizations. Data breaches were reported at 55% and accidental exposure of data at 46%. Inaccurate API inventories also served as a case of data exposure from Zombie APIs cited by 36% of respondents and Shadow APIs at 34%.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Still on API security, the Black &amp;amp; White 2022 research noted that the second most cited issue was API authentication at 37%.&lt;br&gt;
The report states, “The vast majority of respondents (90%) noted that they had policies in place that govern which APIs require authentication. That said, 31% were only somewhat confident that adequate authentication measures were actually in place.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On instituting stable measures to counter API attacks the &lt;a href="https://content.salt.security/state-api-report.html"&gt;State of API Security Q1 2023 Report by Salts Labs&lt;/a&gt; only 12% of respondents’ organizations have advanced security strategies while 30% admit that they are non-existent or just in the planning stage. However, it’s good to note that these numbers are an upgrade from the 2022 Q3 report showing positive growth in security teams. Obstacles that were mentioned in adopting security measures were: budget (26%), expertise (23%), and people resources (17%).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Projections into the future, according to research by &lt;a href="https://www.traceable.ai/resources/lp/report-state-of-api-security-global"&gt;Ponemon Institute in partnership with Traceable&lt;/a&gt; AI indicate, 61% of organizations anticipate that API risk will increase or significantly increase over the next 24 months. Just as API growth and usage are expected to grow and evolve so are API security threats.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The above research interviewed 1,629 respondents from 32 countries and reports that 40% of these organizations in this research have adopted a Zero Trust framework and of these respondents, 55 percent of respondents say their Zero Trust strategy includes API security.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;According to the &lt;a href="https://stateofapis.com/"&gt;2022 State of APIs&lt;/a&gt; report by Rapid API, 62.6% of developers were reported to rely more on APIs than the previous year, and the 2023 projections for the same were expected to rise to 69.2%. This shows the positive adoption of this revolutionary interface into the future.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;a href="https://www.postman.com/state-of-api/"&gt;2023 State of API by Postman&lt;/a&gt; indicates there was a 3% increase from the last 2 years on the API first approach thus recording 11% from 8%. Financial services had the highest API-first approach. Among the major benefits of this approach were; faster onboarding, increased productivity as well faster integration.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  CONCLUSION
&lt;/h3&gt;

&lt;p&gt;Application Programming Interfaces are the future of growth-focused organizations. Such statistics give a glimpse of what needs to be addressed urgently to ensure better productivity, tighter security, and reduced technical debt. This article sourced the best of research and reports to ensure that you get up-to-date and accurate reports on APIs. If your organization is yet to adopt an API-first approach then this is the best time to take the helm and be in control.&lt;/p&gt;

&lt;p&gt;The defining factor for organizational success in using APIs will lie in governance and policy outcomes driven toward seamless adoption and tighter API security measures.&lt;/p&gt;

</description>
      <category>api</category>
      <category>apigateway</category>
      <category>programming</category>
      <category>devops</category>
    </item>
    <item>
      <title>Build a Blog Website with Reactjs and Hygraph CMS</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Thu, 08 Jun 2023 02:38:36 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/build-a-blog-website-with-reactjs-and-hygraph-cms-5ggn</link>
      <guid>https://forem.com/mwendwabundi/build-a-blog-website-with-reactjs-and-hygraph-cms-5ggn</guid>
      <description>&lt;p&gt;Managing your blog content can be made easier for you and your clients by utilizing a Content Management System (CMS). A CMS is software that allows you to create and manage your digital content easily with or without technical knowledge.&lt;/p&gt;

&lt;p&gt;In this article, you'll learn how to build a fully functional blog application with React and Hygraph CMS.&lt;/p&gt;

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

&lt;p&gt;Hygraph is a federated content platform that utilises GraphQL for content APIs making it easier to distribute you content. Later on in the article you'll get to see how Hygraph makes it easy to create content schemas and access all this through a GraphQL API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites to follow along:
&lt;/h3&gt;

&lt;p&gt;Intermediate knowledge of React;&lt;/p&gt;

&lt;p&gt;An IDE, preferably VS code;&lt;/p&gt;

&lt;p&gt;A browser such as Chrome;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started with Hygraph
&lt;/h2&gt;

&lt;p&gt;Begin with creating an account with Hygraph. Proceed to create a project, choose the name, description and data storage region. &lt;/p&gt;

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

&lt;p&gt;This will usher you into this page.&lt;/p&gt;

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

&lt;p&gt;On the left side menu, click schema so as to fill in your content model. Next to the models option. Click on the add option and proceed to fill out details of your blog post.&lt;/p&gt;

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

&lt;p&gt;Now that you are done with this. Hygraph ushers you into the fields option that allows you to add all the details of your blog itself.&lt;/p&gt;

&lt;p&gt;Once you have filled out your content head over to the project settings section on the left side of the screen. Here you can access the APIs that you'll use to fetch data to your React app.&lt;/p&gt;

&lt;p&gt;To view the generated GraphQL queries, click the API Playground section.&lt;/p&gt;

&lt;p&gt;Now it's time to create the React app. Implement this by running &lt;code&gt;npx create react app&lt;/code&gt;  in your VS code terminal.&lt;/p&gt;

&lt;p&gt;Once that is done, It's time to fetch this data. Create a components folder in your React app and create a Blogcard.js file. Use this code:&lt;br&gt;
&lt;em&gt;Please note that the names of my projects happen to differ as the below code is for the project I had built earlier with Hygraph&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import "./Blogcardstyles.css";
import React, { useState, useEffect } from "react";
import { Link } from "react-router-dom";
import image1 from "../assets/claudio-testa--SO3JtE3gZo-unsplash.jpg";
import image2 from "../assets/tomoko-uji-eriuKJwcdjI-unsplash.jpg";
import image3 from "../assets/henry-be-IicyiaPYGGI-unsplash.jpg";
import { request } from 'graphql-request';

const Blogcard = () =&amp;gt; {
   const [blogs, setBlogs] = useState([]);

   useEffect(() =&amp;gt; {
    const fetchBlogs = async () =&amp;gt; {
        const { blogappsmwendwa } = await request(
            `your api key goes here`
           {
                blogappsmwendwa {
                    hereWeGoWithTheBlogapp
                    loremIpsumLoremIpsum
                }
            }`
        );
        setBlogs(blogappsmwendwa);
    };
    fetchBlogs();
   }, []);



    return (
        &amp;lt;div className="work-container"&amp;gt;
            &amp;lt;h1 className="project-heading"&amp;gt;All Blogs&amp;lt;/h1&amp;gt;
            &amp;lt;div className="project-container"&amp;gt;
                &amp;lt;div className="project-card"&amp;gt;

                    &amp;lt;img src={image1} alt="nature" /&amp;gt;



                    &amp;lt;h2 className="project-title"&amp;gt;Content fetched from Hygraph CMS&amp;lt;/h2&amp;gt;
                    &amp;lt;div className="pro-details"&amp;gt;
                        {blogs.map((blogapp) =&amp;gt; (


                        &amp;lt;p&amp;gt;{blogapp.hereWeGoWithTheBlogapp}&amp;lt;/p&amp;gt;
                    ))}


                    &amp;lt;div&amp;gt;
                    &amp;lt;Link to="/Page" className="btn"&amp;gt;Read More&amp;lt;/Link&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/div&amp;gt;
                &amp;lt;/div&amp;gt;




                &amp;lt;div className="project-card"&amp;gt;
                    &amp;lt;img src={image2} alt="nature" /&amp;gt;
                    &amp;lt;h2 className="project-title"&amp;gt;Content fetched from Hygraph CMS&amp;lt;/h2&amp;gt;
                    &amp;lt;div className="pro-details"&amp;gt;
                        {blogs.map((blogapp) =&amp;gt; (
                        &amp;lt;p&amp;gt;{blogapp.hereWeGoWithTheBlogapp}&amp;lt;/p&amp;gt;
                    ))}

                        &amp;lt;div&amp;gt;
                            &amp;lt;Link to="/Page" className="btn"&amp;gt;Read More&amp;lt;/Link&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/div&amp;gt;
                &amp;lt;/div&amp;gt;





                &amp;lt;div className="project-card"&amp;gt;
                    &amp;lt;img src={image3} alt="nature" /&amp;gt;
                    &amp;lt;h2 className="project-title"&amp;gt;Content fetched from Hygraph CMS&amp;lt;/h2&amp;gt;
                    &amp;lt;div className="pro-details"&amp;gt;
                        {blogs.map((blogapp) =&amp;gt; (
                        &amp;lt;p&amp;gt;{blogapp.hereWeGoWithTheBlogapp}&amp;lt;/p&amp;gt;
                    ))}

                    &amp;lt;div&amp;gt;
                    &amp;lt;Link to="/Page" className="btn"&amp;gt;Read More&amp;lt;/Link&amp;gt;
                        &amp;lt;/div&amp;gt;
                    &amp;lt;/div&amp;gt;
                &amp;lt;/div&amp;gt;
            &amp;lt;/div&amp;gt;
&amp;lt;/div&amp;gt;





    )
    };




export default Blogcard;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In &lt;code&gt;BlogCard.js&lt;/code&gt;, you were able to make a GraphQL request that fetches your blog content from the Hygraph Schema.&lt;br&gt;
You were then able to use &lt;code&gt;map()&lt;/code&gt;method to determine where each part of the data goes.&lt;br&gt;
You can now refresh your page to view all the data stored in your Hygraph schema right into your React application.&lt;br&gt;
The &lt;em&gt;read more&lt;/em&gt; buttons redirect to a new page that displays further data from the schema you created earlier. To view the full blog application, check my &lt;a href="https://github.com/MwendwaDev/Blogger" rel="noopener noreferrer"&gt;Github Repo&lt;/a&gt; for the code.&lt;/p&gt;

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

&lt;p&gt;Through this article you have learnt what is a CMS, its benefits and how to create a blog application with content fetched from Hygraph which is a federated content platform.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>cms</category>
      <category>javascript</category>
    </item>
    <item>
      <title>How Medusa is Revolutionizing the Ecommerce Space</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Sun, 23 Apr 2023 19:46:29 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/how-medusa-is-revolutionizing-the-ecommerce-space-17jf</link>
      <guid>https://forem.com/mwendwabundi/how-medusa-is-revolutionizing-the-ecommerce-space-17jf</guid>
      <description>&lt;p&gt;The ecommerce space continues to experience ground-breaking trends that are set to catapult the industry to new levels in the future. The ecommerce market is &lt;a href="https://www.asendia.com/2022-e-commerce-market-handbook"&gt;expected to hit growth rates&lt;/a&gt; of up to 7.4 trillion dollars come 2025.&lt;/p&gt;

&lt;p&gt;New and emerging consumer trends continue to shape advances being made in ecommerce. &lt;a href="https://medusajs.com/"&gt;Medusa&lt;/a&gt; is an open-source composable ecommerce engine that provides digital building blocks for commerce applications.&lt;/p&gt;

&lt;p&gt;In this article, we are going to learn about why Medusa should be your go to for building commerce applications. We will also look at what is contained in a Medusa toolkit.&lt;/p&gt;

&lt;p&gt;In the subsequent article, we'll then build an ecommerce website with Medusa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Medusa as a Game Changer
&lt;/h2&gt;

&lt;p&gt;Medusa was launched in 2021 by co-founders: Nicklas Gellner, Oliver Juhl and Sebastian Rindom. Since then it has attracted thousands of developers and thousands of different projects have been initiated. &lt;/p&gt;

&lt;p&gt;Medusa seeks to ease the ecommerce platform development process by providing an avenue to build without constraints. Merchants can scale their business faster and quickly without having to worry about multi-vendor marketplace restrictions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5rne5wor--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18dp9c3kgypfbkszdot7.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5rne5wor--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/18dp9c3kgypfbkszdot7.png" alt="Image description" width="800" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Medusa
&lt;/h2&gt;

&lt;p&gt;Medusa provides a &lt;a href="https://medusajs.com/blog/composable-commerce/"&gt;composable architecture&lt;/a&gt; ideal for building commerce applications. The ability to handle different components separately in an ecommerce application provides the flexibility needed to build customizable sites and aptly implement an &lt;a href="https://medusajs.com/blog/why-headless-commerce-is-the-perfect-solution-for-omnichannel-support/"&gt;omnichannel strategy&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Commerce applications built with Medusa can also quickly adapt to on and off-market demands such as during peak and off-peak through implementing development catered towards changing, unique, and growing customer demands.&lt;/p&gt;

&lt;p&gt;The composable approach means that the development of components is faster which is a best practice in the software development lifecycle.&lt;/p&gt;

&lt;p&gt;Medusa allows developers to integrate third-party APIs of their own choice thus giving them much-needed freedom to custom-make their platform to their liking. This is quite revolutionary in the ecommerce space as it means that;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Merchants can scale at their own pace without any restrictions. Whichever trajectory merchants want to take, the decision is in their hands and no need to worry about proprietary software restrictions.&lt;/li&gt;
&lt;li&gt;The development lifecycle also becomes so simplified and faster as they do not have to wait for authorizations or any go-ahead to implement any changes or change course.&lt;/li&gt;
&lt;li&gt;Being open source, developers are also at an advantage to contribute their ideas and join in being an integral part of the growth and development of Medusa.&lt;/li&gt;
&lt;li&gt;The composable nature is also quite adaptable. The covid pandemic revealed just how consumer patterns and trends change in a dash. As a merchant, you thus need a solution that gives you proof of future adaptability in a shorter time to stay in per with changing demands.&lt;/li&gt;
&lt;li&gt;Being an open-source solution, you are also at liberty to use the latest SEO techniques to rank high in search outcomes. You are thus not reliant on pre-built software.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, you might be wondering, what custom uses are applicable in ecommerce?&lt;/p&gt;

&lt;p&gt;Different commerce applications have different needs. Use cases can range from:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Order fulfillment needs.&lt;/li&gt;
&lt;li&gt;Order management depending on factors such as delivery location and returns.&lt;/li&gt;
&lt;li&gt;Payment providers introduced depending on customer preferences.&lt;/li&gt;
&lt;li&gt;Multiwarehouse support.&lt;/li&gt;
&lt;li&gt;Subscription models among many other preferred customizations depending on customers and merchants.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The advantage achieved here is that as a merchant, you are providing customers with what they need and prefer as opposed to restricting them to what proprietary solutions restrict you to.&lt;/p&gt;

&lt;p&gt;This is a great game-changer as customers feel seen, understood and catered for. It's thus a no-brainer that it leads to more customer returns and higher sales in turn.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is in a Medusa Toolkit
&lt;/h2&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://docs.medusajs.com/cli/reference"&gt;Medusa CLI&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;"The Medusa CLI serves as a tool that allows you to perform important commands while developing with Medusa." -Medusa.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://docs.medusajs.com/development/backend/install"&gt;Medusa Backend&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;As Medusa puts it, "This is any Node.js project with @medusajs/medusa installed. The core Medusa package orchestrates Medusa's commerce modules to expose a powerful and customizable REST API."&lt;/p&gt;

&lt;p&gt;An alternative to directly interacting with the REST APIs is by using &lt;a href="https://docs.medusajs.com/js-client/overview"&gt;Medusa JS Client&lt;/a&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://docs.medusajs.com/admin/quickstart"&gt;Admin Dashboard&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;"An intuitive admin dashboard along with the Medusa backend and commerce modules. Merchants can use it to perform data management, and processes such as manage orders, products, customers, and much more." -Medusa.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://docs.medusajs.com/plugins/overview"&gt;Medusa Plugins&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Medusa has plugins for storage, payment, search, file service and much more. You can also use this &lt;a href="https://docs.medusajs.com/development/plugins/create"&gt;documentation&lt;/a&gt; to create a plugin.&lt;/p&gt;

&lt;h3&gt;
  
  
  Medusa Storefronts
&lt;/h3&gt;

&lt;p&gt;To create and customize your storefronts you can use Medusa's storefronts to get started quickly. You can easily opt to get started with &lt;a href="https://docs.medusajs.com/medusa-react/overview"&gt;Medusa React&lt;/a&gt; or &lt;a href="https://docs.medusajs.com/starters/nextjs-medusa-starter"&gt;Nextjs storefront&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Medusa APIs
&lt;/h3&gt;

&lt;p&gt;Medusa has different API endpoints that developers can use to tailor-make their custom solutions by integrating third-party tools.&lt;/p&gt;

&lt;p&gt;Here's the &lt;a href="https://docs.medusajs.com/api/admin"&gt;Admin API Reference&lt;/a&gt; and &lt;a href="https://docs.medusajs.com/api/store"&gt;Store API Reference&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Medusa also has &lt;a href="https://docs.medusajs.com/modules/overview"&gt;ecommerce features&lt;/a&gt; offered as Commerce Modules. Modules are reusable pieces of code that ensure faster development by their reusable nature. They make it easier to not only develop but also reduce technical debt instances.&lt;/p&gt;

&lt;p&gt;They include, orders, cart and checkout, multi-warehouse and even advanced product configurations and management.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Started with Medusa
&lt;/h2&gt;

&lt;p&gt;Start building your commerce application today and power your way toward the ecommerce future.&lt;/p&gt;

&lt;p&gt;Medusa allows you to access top-tier benefits that set you as a leader in the ecommerce world. Ecommerce is a field with endless possibilities and ever-changing trends. To effectively adapt, you need to build custom composable applications that guarantee you the flexibility needed to stay afloat.&lt;/p&gt;

&lt;p&gt;Ecommerce solutions are not a one-size-fits-all, therefore, choosing a solution that extends you the flexibility of choice is a wise move.&lt;/p&gt;

&lt;p&gt;You can also check some great blogs on building ecommerce websites using Medusa. For example, &lt;a href="https://medusajs.com/blog/next-js-storefront-food-ecommerce-restaurant-medusa-paystack/"&gt;Next.js Storefront: Building a Food Ecommerce Restaurant with Medusa and Paystack&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Medusa's &lt;a href="https://docs.medusajs.com/"&gt;documentation&lt;/a&gt; provides you with hands-on knowledge to get you started and building in a matter of minutes.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Get started with Medusa today. In case of any concerns, you can reach out to the Medusa &lt;a href="https://discord.gg/medusajs"&gt;Discord&lt;/a&gt; community for further inquiries.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ecommerce</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>13 Best Live Chat Widgets for your Ecommerce Store</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Thu, 29 Dec 2022 11:49:57 +0000</pubDate>
      <link>https://forem.com/medusajs/13-best-live-chat-widgets-for-your-ecommerce-store-2a3f</link>
      <guid>https://forem.com/medusajs/13-best-live-chat-widgets-for-your-ecommerce-store-2a3f</guid>
      <description>&lt;p&gt;A live chat widget is a chat box found on websites that works as a communication channel for customers as an alternative to the e-mail way of customer support. This feature has revolutionized how business is done by providing real-time responses between buyers and sellers.&lt;/p&gt;

&lt;p&gt;Specifically for ecommerce websites, adding a live-chat widget builds a trustworthy image of your brand to your customers. It comforts them to know that they can reach you for any questions they might have.&lt;/p&gt;

&lt;p&gt;This article highlights thirteen (13) live chat widgets for your ecommerce store to drive more sales and customer satisfaction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Using Live Chat Widgets in Ecommerce
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It allows merchants and businesses to help their customers in real-time. This improves the customer experience.&lt;/li&gt;
&lt;li&gt;Since customers can get their questions answered in real-time, their concerns or queries can be resolved while they’re shopping. This encourages the customer to make their purchase, which reduces the number of abandoned carts.&lt;/li&gt;
&lt;li&gt;Providing quick real-time answers builds the customer’s trust in your brand. Coupled with a successful purchasing experience, it can lead to customer loyalty as well.&lt;/li&gt;
&lt;/ul&gt;

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


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/medusajs" rel="noopener noreferrer"&gt;
        medusajs
      &lt;/a&gt; / &lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;
        medusa
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      The world's most flexible commerce platform.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a href="https://www.medusajs.com" rel="nofollow noopener noreferrer"&gt;
  
    
    
    &lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F59018053%2F229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg" class="article-body-image-wrapper"&gt;&lt;img alt="Medusa logo" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F59018053%2F229103726-e5b529a3-9b3f-4970-8a1f-c6af37f087bf.svg"&gt;&lt;/a&gt;
    
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;
  Medusa
&lt;/h1&gt;
&lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h4 class="heading-element"&gt;
  &lt;a href="https://docs.medusajs.com" rel="nofollow noopener noreferrer"&gt;Documentation&lt;/a&gt; |
  &lt;a href="https://www.medusajs.com" rel="nofollow noopener noreferrer"&gt;Website&lt;/a&gt;
&lt;/h4&gt;
&lt;/div&gt;

&lt;p&gt;
  Building blocks for digital commerce
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://github.com/medusajs/medusa/blob/develop/LICENSE" rel="noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/6581c31c16c1b13ddc2efb92e2ad69a93ddc4a92fd871ff15d401c4c6c9155a4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d626c75652e737667" alt="Medusa is released under the MIT license."&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/medusajs/medusa/blob/develop/CONTRIBUTING.md" rel="noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/11c502cb0edd6eac274e462c7a70981ee26fde99043dba967b732d371efa2b87/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e7376673f7374796c653d666c6174" alt="PRs welcome!"&gt;
  &lt;/a&gt;
 &lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://twitter.com/intent/follow?screen_name=medusajs" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/6c164f14e4a24c801d3396eff84dbc5a7d8a3a6458b1c09ebbaaa0006d244a8c/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6d65647573616a732e7376673f6c6162656c3d466f6c6c6f77253230406d65647573616a73" alt="Follow @medusajs"&gt;
  &lt;/a&gt;&lt;a href="https://discord.gg/medusajs" rel="nofollow noopener noreferrer"&gt;
    &lt;img src="https://camo.githubusercontent.com/4921ed6603bc6780b3892f60abb1cd1143568cf1595701546c32f7a2619d9daf/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636861742d6f6e253230646973636f72642d3732383944412e737667" alt="Discord Chat"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Getting Started&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;Visit the &lt;a href="https://docs.medusajs.com/learn" rel="nofollow noopener noreferrer"&gt;Documentation&lt;/a&gt; to set up a Medusa application.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is Medusa&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Medusa is an ecommerce platform with a built-in framework for customization that allows you to build custom commerce applications without reinventing core commerce logic. The framework and modules can be used to build advanced B2B or DTC ecommerce stores, marketplaces, PoS systems, service businesses, or any product that needs foundational commerce primitives. All commerce modules are open-source and freely available on npm.&lt;/p&gt;

&lt;p&gt;Learn more about &lt;a href="https://docs.medusajs.com/learn/advanced-development/architecture/overview" rel="nofollow noopener noreferrer"&gt;Medusa’s architecture&lt;/a&gt; and &lt;a href="https://docs.medusajs.com/resources/commerce-modules" rel="nofollow noopener noreferrer"&gt;commerce modules&lt;/a&gt; in the Docs.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Upgrades &amp;amp; Integrations&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;Follow the &lt;a href="https://github.com/medusajs/medusa/releases" rel="noopener noreferrer"&gt;Release Notes&lt;/a&gt; to keep your Medusa project up-to-date.&lt;/p&gt;

&lt;p&gt;Check out all &lt;a href="https://docs.medusajs.com/resources/integrations" rel="nofollow noopener noreferrer"&gt;available Medusa integrations&lt;/a&gt;.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Community &amp;amp; Contributions&lt;/h2&gt;

&lt;/div&gt;

&lt;p&gt;The community and core team are available in &lt;a href="https://github.com/medusajs/medusa/discussions" rel="noopener noreferrer"&gt;GitHub Discussions&lt;/a&gt;, where you can ask for support, discuss roadmap, and share ideas.&lt;/p&gt;

&lt;p&gt;Our &lt;a href="https://github.com/medusajs/medusa/blob/develop/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contribution Guide&lt;/a&gt; describes how to contribute to the…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;&lt;a href="https://medusajs.com/" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; offers bespoke ecommerce infrastructure that can be used to build custom ecommerce setups. The platform is built with a developer-first focus ensuring devs have the best foundation to build scaleable ecommerce setups.&lt;/p&gt;

&lt;p&gt;The platform is headless and its composable nature makes it easy to integrate with your favorite commerce tools from payments to search, CMS and more.&lt;/p&gt;

&lt;p&gt;You can get started with Medusa by following &lt;a href="https://docs.medusajs.com/quickstart/quick-start" rel="noopener noreferrer"&gt;this quickstart guide&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;In this regard, Medusa also allows for you to pick and choose any live chat widget to use for your Medusa setup. Below is a list of some of the best chat widgets to check out in 2023.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Chatwoot
&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%2Fe1nu87de6k2sdv9sgupf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fe1nu87de6k2sdv9sgupf.png" alt="Image description" width="800" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.chatwoot.com/pricing" rel="noopener noreferrer"&gt;Chatwoot&lt;/a&gt; is an open source customer engagement suite that allows you to provide a great customer service experience. You can also take charge of your data by choosing to self-host Chatwoot on your server.&lt;/p&gt;

&lt;p&gt;Chatwoot provides many powerful features such as automated messages, multi-language support, customizing the widget to fit your brand, and much more.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Suggested Read: &lt;a href="https://medusajs.com/blog/chatwoot-ecommerce" rel="noopener noreferrer"&gt;Integrate Chatwoot with Medusa&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Chatwoot also allows you to connect with popular communication channels including Facebook, Gmail, and Twitter.&lt;/p&gt;

&lt;p&gt;All of Chatwoots' features are spread over a range of different pricing plans from $0 to $99 billed annually.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Zendesk
&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%2Fzabr5qj07vedxiabp5lm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzabr5qj07vedxiabp5lm.png" alt="Image description" width="800" height="298"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.zendesk.com/pricing/#everyone" rel="noopener noreferrer"&gt;Zendesk&lt;/a&gt; is a customer support live-chat solution that allows customers to choose their most favorable communication channel, including a direct call option.&lt;/p&gt;

&lt;p&gt;Zendesk provides Customer Relationship Management (CRM) through Zendesk Sell. It allows you to further track your customer interactions and keep the sales reps more organized.&lt;/p&gt;

&lt;p&gt;Such CRM data allows you to provide more personalized services to your customers, thus building stronger and lasting ties.&lt;/p&gt;

&lt;p&gt;On top of the basic live-chat features, Zendesk also provides an AI Chatbot that allows merchants to always provide help to their customers even if non of their agents are currently available.&lt;/p&gt;

&lt;p&gt;Through the &lt;a href="https://www.zendesk.com/marketplace/" rel="noopener noreferrer"&gt;Zendesk Marketplace&lt;/a&gt;, as a developer, you are able to access thousands of prebuilt apps and integrations. The Developer API also allows you to build custom apps.&lt;/p&gt;

&lt;p&gt;Zendesk offers its solutions based on tiers ranging from small and medium businesses to startups and enterprises among others.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Rocket.Chat
&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%2F898xflnitciduyu86tzp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F898xflnitciduyu86tzp.png" alt="Image description" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.rocket.chat/pricing" rel="noopener noreferrer"&gt;Rocket.Chat&lt;/a&gt; is an open source fully-customizable communications platform. Customers may reach out to you via different communication points, and with Rocket.Chat, you are able to manage all of their conversations from a single point.&lt;/p&gt;

&lt;p&gt;It also allows merchants to keep track of the chat performance for both the client and service agents through its analytics and monitoring tools.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Suggested Read: &lt;a href="https://medusajs.com/blog/ecommerce-customer-support-medusa-rocketchat/" rel="noopener noreferrer"&gt;Integrate Rocket.Chat with Medusa&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Rocket.Chat offers a free tier community plan. They also offer enterprise and chat engine paid tiers.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Hubspot
&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%2Fsjeqadxd72i0l1e0ktcv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsjeqadxd72i0l1e0ktcv.png" alt="Image description" width="800" height="328"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.hubspot.com/pricing/marketing" rel="noopener noreferrer"&gt;Hubspot&lt;/a&gt; powers all your customer relationship management through Hubspot's Service Hub which is built for customer service. It gives you a unified view of each customer interaction ranging from custom surveys to reports and customer feedback on delivered service.&lt;/p&gt;

&lt;p&gt;It helps you support, grow, and retain your customers as a merchant.&lt;/p&gt;

&lt;p&gt;In addition, you can keep track of your email marketing by getting to know when leads are generated from the sent emails. It also allows customers to schedule meetings with the sales team via a scheduling link.&lt;/p&gt;

&lt;p&gt;Hubspot offers merchants a free plan for all their live chat widget needs and fairly-priced paid plans with more features to optimize their customer experience.&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Tidio
&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%2F30wz3bsxt1bvap6dy6mw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F30wz3bsxt1bvap6dy6mw.png" alt="Image description" width="800" height="366"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.tidio.com/pricing/" rel="noopener noreferrer"&gt;Tidio&lt;/a&gt; provides more than 35 pre-designed chatbots to help drive greater customer service and increased sales. Being able to automate almost half of your conversations through their Virtual AI Supporter means generating leads at any given time.&lt;/p&gt;

&lt;p&gt;It also allows you to export all your visitors’ data, with their permission, to a &lt;code&gt;.csv&lt;/code&gt; file. This helps keep a record of your buyers and prospective buyers for better follow-up.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Suggested Read: &lt;a href="https://medusajs.com/blog/how-to-integrate-live-chat-with-gatsby-tidio-medusa" rel="noopener noreferrer"&gt;Integrate Tidio with Medusa&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Tidio also allows you to keep track of a customer's preferences by allowing you to track what they are browsing for. It has real-time data and a focused knowledge base that helps merchants send personalized follow-up messages to their visitors based on their preferences.&lt;/p&gt;

&lt;p&gt;Tidio is also made customizable for all your mobile devices thus ensuring a top-notch user experience regardless of the user's device. Tidio has a free plan and offers a wide range of integration tools and platforms for your ecommerce site.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. LiveChat
&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%2Ffva1tnw36mw1pn6moe0m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffva1tnw36mw1pn6moe0m.png" alt="Image description" width="800" height="382"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.livechat.com/pricing/" rel="noopener noreferrer"&gt;LiveChat&lt;/a&gt; makes it easier to convert website visitors into successful sales and build strong seller-customer relations.&lt;/p&gt;

&lt;p&gt;It allows your support team to send the products in question right to your customers through the product card system. This is followed by a checkout system that facilitates a purchase there and then.&lt;/p&gt;

&lt;p&gt;This live chat widget has other features including a Helpdesk which provides a ticketing system. The ticketing software allows merchants the flexibility of management by bringing in support agents, tags, and priority.&lt;/p&gt;

&lt;p&gt;Live Chat has a knowledge base feature that is tailored for both the customers and support teams. This means that customers are able to easily find answers to regular questions on their own.&lt;/p&gt;

&lt;p&gt;Support agents can always filter through the knowledge on their end to find answers to questions they might not be conversant with at the time. &lt;/p&gt;

&lt;h2&gt;
  
  
  7. Help Scout
&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%2F5hl9gpaiw1krr926epaj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5hl9gpaiw1krr926epaj.png" alt="Image description" width="800" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.helpscout.com/pricing/" rel="noopener noreferrer"&gt;Help Scout&lt;/a&gt; sets itself apart by its sole focus on customer support to help grow your business. The ticketing system makes work easier for the support team to efficiently reply.&lt;/p&gt;

&lt;p&gt;Customers’ frequent visits are utilized to provide previous conversations history and user data alongside every support request.&lt;/p&gt;

&lt;p&gt;As an ecommerce live chat widget, Help Scout provides reporting for business leads, trending topics, and busiest hours. This ensures that merchants are able to plan properly for their ecommerce business.&lt;/p&gt;

&lt;p&gt;With the mobile app, the sales teams can always keep up with incoming conversations from the ecommerce site. The sales team lead can also delegate tasks to the agents through the mobile version.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Chaport
&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%2Fgkv1ll1xomucixzxeu4q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgkv1ll1xomucixzxeu4q.png" alt="Image description" width="800" height="384"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.chaport.com/pricing" rel="noopener noreferrer"&gt;Chaport&lt;/a&gt; utilizes the power of a live chat widget to power your ecommerce business. These features include a knowledge base, chatbot integrations, customization, and reporting on conversion rates for your business.&lt;/p&gt;

&lt;p&gt;Chaport acknowledges the need for multilingual support, thus providing a multilingual chat widget, which means customers see the widget in their native languages.&lt;/p&gt;

&lt;p&gt;For more satisfactory conversations, files including images, videos, and audio can be shared through the live chat widget.&lt;/p&gt;

&lt;p&gt;Chaport provides customers with a myriad of social media platforms to reach out from. However, your sales agents can reply to and manage all conversations from one central place.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Intercom
&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%2Fp8517ysbijts3mitbqm0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp8517ysbijts3mitbqm0.png" alt="Image description" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.intercom.com/pricing" rel="noopener noreferrer"&gt;Intercom&lt;/a&gt; is a customer-first ecommerce live chat widget. It powers a diversified live chat messaging that drives engagement all through to the checkout stage.&lt;/p&gt;

&lt;p&gt;After purchase, Intercom allows for promotional messaging aimed at bringing customers back for more purchases. It also utilizes chatbots for automated and fast replies that take care of FAQs thus taking the load off your sales teams on pre-meditated questions.&lt;/p&gt;

&lt;p&gt;Intercom also utilizes other built-in features for your ecommerce site that offer proactive support. They include mobile carousels that build on navigation assistance to help customers by showing them around.&lt;/p&gt;

&lt;p&gt;In addition, Intercom provides customer data analytics based on behavioral and conversational data. This is key as they provide merchants with hands-on personalized information. This allows them to tailor unique shopping experiences for each customer.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Live Agent
&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%2Fqcol39b2hmsmf8m93ccl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcol39b2hmsmf8m93ccl.png" alt="Image description" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.liveagent.com/pricing/" rel="noopener noreferrer"&gt;Live Agent&lt;/a&gt; is an open source helpdesk that offers all the functionalities needed in customer service and technical support. It assists shoppers through its integrated customer support model.&lt;/p&gt;

&lt;p&gt;Among its outstanding features is cloud phone support with on-site phone calls and video calls. This built-in call center ensures well-served customers for better customer support through increased flexibility.&lt;/p&gt;

&lt;p&gt;Live Agent is also built for speed through its messaging sneak peek feature. It allows the sales agent a peek at what the customer is typing thus anticipating a response in record time.&lt;/p&gt;

&lt;p&gt;Live Agent also has an advanced ticketing system that helps better manage the two sides of ecommerce websites.&lt;/p&gt;

&lt;p&gt;The convenient single dashboard ensures that all communications streaming in from different social media accounts are managed from one place thus making sorting and managing easier for the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. SendinBlue
&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%2F7oda5wsr499oma16o029.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7oda5wsr499oma16o029.png" alt="Image description" width="800" height="391"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.sendinblue.com/pricing/" rel="noopener noreferrer"&gt;SendinBlue&lt;/a&gt; is an ecommerce live chat widget built for customer support, sales, and marketing. It incorporates targeted means such as sign-up forms and dedicated landing forms for each campaign to drive customer retention.&lt;/p&gt;

&lt;p&gt;Sendinblue employs machine learning models to perfect different CRM tasks such as send time optimization.&lt;/p&gt;

&lt;p&gt;The segmentation feature employed by SendinBlue allows merchants to send marketing emails to a more targeted audience based on their likes and preferences.&lt;/p&gt;

&lt;p&gt;Through the live chat widget, ecommerce websites can go a step further to attract and retain customers by integrating signup forms that collect information from your customers better.&lt;/p&gt;

&lt;h2&gt;
  
  
  12. ChatBot
&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%2F8yx49l1okl8352llbcyq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8yx49l1okl8352llbcyq.png" alt="Image description" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.chatbot.com/pricing/" rel="noopener noreferrer"&gt;ChatBot&lt;/a&gt; is powered by artificial intelligence chatbots that stimulate human-like conversations with your customers. This widget also allows you to integrate marketing and analytics tools to drive further growth and sales for your site.&lt;/p&gt;

&lt;p&gt;Being a chatbot, you can easily integrate it with other live chat widgets that double up with the human touch service. You can easily get ChatBot up and running by using the AI-powered visual builder to build your chatbot.&lt;/p&gt;

&lt;p&gt;ChatBot offers a 14-day free trial with no credit cards requirements to its customers.&lt;/p&gt;

&lt;h2&gt;
  
  
  13. Freshdesk
&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%2Fjjuzpco7biktvf7wd1d2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjuzpco7biktvf7wd1d2.png" alt="Image description" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.freshworks.com/freshdesk/pricing/" rel="noopener noreferrer"&gt;Freshdesk&lt;/a&gt; provides omnichannel customer support management. It is built with both the customers and support agents in mind for an all-around experience.&lt;/p&gt;

&lt;p&gt;It provides many features including a Freshdesk contact center that offers voice call services. Voice call services provide a closer relationship for ecommerce shoppers, something that is rare in online shopping.&lt;/p&gt;

&lt;p&gt;This live chat tool is further powered by voice bots that lighten the workload for the staff.&lt;/p&gt;

&lt;p&gt;The Freshdesk support feature allows for agent routing and collaboration between agents for fasters replies thus guaranteeing customer satisfaction.&lt;/p&gt;

&lt;p&gt;Freshdesk offers a free trial valid for 21 days where users can later upscale to the paid version.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrate Live Chat Widgets with Medusa
&lt;/h2&gt;

&lt;p&gt;As &lt;a href="https://github.com/medusajs/medusa" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; is an open source composable commerce platform, it’s much more flexible to integrate third-party services and tools into your ecommerce store.&lt;/p&gt;

&lt;p&gt;Medusa’s architecture is decoupled, meaning that the frontend and backend are built and hosted separately. When you choose to integrate a live chat widget, you can choose the best tool for you and integrate it into your storefront.&lt;/p&gt;

&lt;p&gt;This would not affect the backend and would allow you to provide the best user experience for your customers on the storefront.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You can get started with Medusa by following &lt;a href="https://docs.medusajs.com/quickstart/quick-start" rel="noopener noreferrer"&gt;the quickstart guide&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;Live chat widgets have revolutionized ecommerce businesses. Integrating these valuable widgets into your ecommerce storefront goes a long way in driving increased sales and positive customer experience for your store.&lt;/p&gt;

&lt;p&gt;This guarantees that, as a merchant, you can convert visitors to customers and returning customers as well.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Should you have any questions in relation to Medusa, please feel free to reach out to the Medusa team via &lt;a href="https://discord.gg/F87eGuwkTp" rel="noopener noreferrer"&gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>Why Cloud Adoption is the 21st Century Strategy</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Fri, 16 Dec 2022 11:02:41 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/why-cloud-adoption-is-the-21st-century-strategy-52ma</link>
      <guid>https://forem.com/mwendwabundi/why-cloud-adoption-is-the-21st-century-strategy-52ma</guid>
      <description>&lt;p&gt;The innovations and disruptions that have been witnessed in the world of cloud computing in the 21st century are tremendous to how enterprises maximize the power of cloud-based solutions.&lt;/p&gt;

&lt;p&gt;Cloud adoption presents a myriad of advantages that solve the question of accessing technology as a service whilst allowing organizations and enterprises to focus on their core mandate.&lt;/p&gt;

&lt;p&gt;In this article, we will look at the advantages that every cloud service consumer reaps by opting for cloud computing services.&lt;/p&gt;

&lt;h3&gt;
  
  
  High Accessibility
&lt;/h3&gt;

&lt;p&gt;Cloud computing services provide enterprises with the efficiency of accessing their data at any given location provided there is an internet connection and valid login credentials. Unlike on-premise systems that require human presence, with a cloud strategy, business is bound to not be restricted by a lack of on-site presence. In today's globalized world such a solution guarantees business continuity despite unforeseen circumstances.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cost Affordability
&lt;/h3&gt;

&lt;p&gt;Servers and other types of equipment come at largely exorbitant prices. Cloud service providers allow clients to access services based on their unique needs thus making the service affordable to them. This is contrary to the cost clients would be bound to occur from equipment, personnel and time. This model provides access to anyone in need of cloud-based solutions&lt;/p&gt;

&lt;h3&gt;
  
  
  Innovative Advantage in a Fast-Evolving World
&lt;/h3&gt;

&lt;p&gt;Embracing a Cloud Service Provider (CSP) means that enterprises can tap into the incoming innovations as technology evolves. This ranges from monitoring trends, speed, analytics, IoT and other app developments. Entreprises can thus focus on their key priorities without the worry of not being at par with technology advancements.&lt;/p&gt;

&lt;h3&gt;
  
  
  Cloud Customization Option
&lt;/h3&gt;

&lt;p&gt;Today's CSPs allow clients to customize their cloud solutions based on their own needs. This means they can pick from pre-built features based on what works for them and what their particular need is as well as their budget. Such a need-based selection ensures that no one is left behind or hindered by high upfront costs in accessing cloud solutions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Responding to market needs
&lt;/h3&gt;

&lt;p&gt;Adopting cloud solutions also means that organizations can better understand their customers' needs and thus boost customer engagement and experience based on real-time analytics on customer preferences and behavior. This then translates to revenue growth, improved Customer Experience (CX) and higher rankings.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;The onset of the pandemic re-emphasized the need for cloud-first models for enterprises and organizations. Cloud computing in today's fast-paced world is a solution for both small-scale and large-scale enterprises in reaching their clients in innovative ways.&lt;/p&gt;

&lt;p&gt;A good outline by the DevSecOps team on what your niche and needs are in a cloud strategy ensures that you can fully tap into the benefits of cloud migration.&lt;/p&gt;

</description>
      <category>cloud</category>
      <category>programming</category>
      <category>cloudskills</category>
    </item>
    <item>
      <title>APIs: The Revolutionary Interfaces</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Fri, 09 Dec 2022 06:03:45 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/apis-the-revolutionary-interfaces-5853</link>
      <guid>https://forem.com/mwendwabundi/apis-the-revolutionary-interfaces-5853</guid>
      <description>&lt;p&gt;Application Programming Interfaces (APIs) are a medium that allow developers to fetch and send data between software components. APIs are not limited to a certain programming language and they thus come in handy for programmers.&lt;br&gt;
Web developers are always able to utilize the power of APIS to build web apps faster. This is what makes APIs revolutionary.&lt;/p&gt;

&lt;p&gt;In this article we will look at the overall concept of APIs, the security dilemma and quickly fetch weather data from an API and display it in our application using JavaScript.&lt;/p&gt;
&lt;h2&gt;
  
  
  How do APIs  Work?
&lt;/h2&gt;

&lt;p&gt;APIs deliver their mandate by acting as a communication interface between an app and a server. They fetch and send data as prompted by your code. They are your go to for send requests and receiving responses.&lt;br&gt;
This allows the categorization of APIs as browser APIs, third party APIs, web workers among other.&lt;br&gt;
You probably might not know it but the Document Object Model (DOM) is a browser API. The DOM allows developers to manipulate pre-existing HTML and CSS. When a device notifies a user of an existing update, that is a device API at work, another case of the browser APIs.&lt;/p&gt;

&lt;p&gt;Third party APIs are always used to build, tweak and manipulate features into your application such include the Facebook, Twitter and Youtube API. With the Twitter API you can easily build an app or add a feature that displays your recent tweets as they come. It works by fetching data from the server into your web app. &lt;br&gt;
A web user, will simply input a search function into your UI which then returns the preferred output and it might not really occur to them that its aided by an API. Remember the weather data we will fetch at the end of this article? We will use the Openweathermap.org, a third party API that can access a user's location and return a weather update.&lt;/p&gt;
&lt;h2&gt;
  
  
  The APIs Dilemma
&lt;/h2&gt;

&lt;p&gt;APIs lighten and quicken the development process for developers by allowing access to data through a few lines of code. The security dilemma when working with APIs arises due to hacking and infiltration via endpoints. However, there are a variety of developer tools for penetration testing aimed at securing endpoints. Good thing is there are many tools whether commercial, open source or free and you can always choose what works best for you or your client.&lt;/p&gt;
&lt;h2&gt;
  
  
  Fetching weather Data from Using an API
&lt;/h2&gt;

&lt;p&gt;In this short overview aimed at getting you started, we will fetch weather data from the Openweathermap.org and display it in our console.&lt;/p&gt;

&lt;p&gt;Head over to &lt;a href="//openweathermap.org"&gt;Openweathermap.org&lt;/a&gt;, create and account and once you have verified your email, you will receive your API key.&lt;/p&gt;

&lt;p&gt;There are many use cases to choose from but for this tutorial we'll use the city name geocoding: &lt;a href="https://api.openweathermap.org/data/2.5/weather?q=%7Bcityname%7D&amp;amp;appid=%7BAPI"&gt;https://api.openweathermap.org/data/2.5/weather?q={cityname}&amp;amp;appid={API&lt;/a&gt; key}&lt;br&gt;
Once you initialize the fetch() method to access the city, your console.log returns the city's data as shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let weather = {
    "apikey": "your api key",
    fetchWeather: function (city) {
fetch(
    "https://api.openweathermap.org/data/2.5/weather?q="
     + city
    + "&amp;amp;appid=${apikey}")
        .then((response) =&amp;gt; response.json())
    .then((data) =&amp;gt; console.log(data));

    },

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If we input Nairobi- a city in Kenya in the console as shown below&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;weather.fetchWeather("Nairobi")
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our output will be as follows&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{coord: {…}, weather: Array(1), base: 'stations', main: {…}, visibility: 10000, …}
base
: 
"stations"
clouds
: 
{all: 40}
cod
: 
200
coord
: 
{lon: 36.8167, lat: -1.2833}
dt
: 
1670563174
id
: 
184745
main
: 
{temp: 289.77, feels_like: 289.79, temp_min: 289.77, temp_max: 289.77, pressure: 1022, …}
name
: 
"Nairobi"
sys
: 
{type: 1, id: 2543, country: 'KE', sunrise: 1670555961, sunset: 1670599852}
timezone
: 
10800
visibility
: 
10000
weather
: 
[{…}]
wind
: 
{speed: 3.09, deg: 30}
[[Prototype]]
: 
Object
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A simple API call swiftly returns an array of info from the visibility, wind speed, temperature, latitudes and longitudes among others. There are many APIs to choose from and work with from recipe APIs, joke generators, e-commerce, travel, fintech, and many others. &lt;/p&gt;

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

&lt;p&gt;APIs are a common interface to work with as a developer that equips you with power to simplify your work while at the same time enhancing the user experience by being able to harness the power of data into your application. &lt;/p&gt;

&lt;p&gt;Happy Reading&lt;/p&gt;

</description>
      <category>programming</category>
      <category>api</category>
      <category>coding</category>
      <category>webdev</category>
    </item>
    <item>
      <title>JavaScript Loops: The Ins and Out</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Sat, 26 Nov 2022 09:49:12 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/javascript-loops-the-ins-and-out-dhh</link>
      <guid>https://forem.com/mwendwabundi/javascript-loops-the-ins-and-out-dhh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;JavaScript loops are a way of automating repeated tasks and concepts in your code. Loops will iterate, to mean repeat, a specific task until a condition is met. In other words, if a condition is true, the loop will keep running until it's false.&lt;/p&gt;

&lt;p&gt;Loops simplify your work as a developer. It would be tedious to re-write one hundred repeated tasks, which is where loops come in!&lt;br&gt;
There are 3 kinds of loops. The &lt;strong&gt;'for'&lt;/strong&gt; loop, &lt;strong&gt;'while'&lt;/strong&gt; loop and **'do...while' loop.&lt;/p&gt;
&lt;h2&gt;
  
  
  The 'for' Loop
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;'for'&lt;/strong&gt; loop typically functions by initializing an iterator variable, followed by a condition and an increment.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;The Code Syntax&lt;/strong&gt;
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (initial iterator variable; condition; increment value) {
// code execution
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Note that a 'for' loop is always separated by &lt;strong&gt;;&lt;/strong&gt; inside the parentheses.&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Code example&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Here we will initialize people at 8, however, we expect they will be less than 16, this means our &lt;em&gt;'for'&lt;/em&gt; loop will stop at 15. &lt;em&gt;people++&lt;/em&gt; will increment our loop by 1 for every iteration. Once the condition evaluates to 'false', which is after 15 people, then the loop will automatically stop.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (let people = 8; people&amp;lt;16; people++) {
console.log(people)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expected output will run from 8 to 15.&lt;/p&gt;

&lt;h2&gt;
  
  
  Reverse &lt;em&gt;'for'&lt;/em&gt; Loop
&lt;/h2&gt;

&lt;p&gt;The same way we executed a forward loop is the same way we get to execute a backward loop. We will use the &lt;em&gt;--&lt;/em&gt; operator&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;for (let people = 8; people&amp;gt;=0; people--) {
console.log(people)
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expected output will run from 8 to 0.&lt;/p&gt;

&lt;h2&gt;
  
  
  Iterating through an Array
&lt;/h2&gt;

&lt;p&gt;As you already know, arrays hold data items. We can also iterate through an array using loops. The &lt;em&gt;'for'&lt;/em&gt; loop will use an array's &lt;em&gt;.length&lt;/em&gt; property.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const people = ['Ann', 'Emma', 'Jack'];
for (let i = 0; i &amp;lt; people.length; i++) {
  console.log(people[i]);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The expected code output will be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Ann
Emma
Jack
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Our stopping condition checks that &lt;em&gt;i&lt;/em&gt; is less than &lt;em&gt;people.length&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The 'while' Loop
&lt;/h2&gt;

&lt;p&gt;As long as a certain condition evaluates to true, the 'while' loop will continue running. It is always a good practice to use a while loop in cases where you do not know before hand just how many times the loop should keep running.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Syntax
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;while (condition) {
//code
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Code Example
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let i = 0;
while (i&amp;lt;16) {
console.log(i);
i++
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The 'do...while' Loop
&lt;/h2&gt;

&lt;p&gt;A 'do...while' loop will execute a task once, ascertain that it is true,  and keep at it until a certain condition fails. Unlike a 'while' loop, 'do...while' will run at least once. As a developer you use this loop when you want the code to run at least once.&lt;/p&gt;

&lt;h3&gt;
  
  
  Code Syntax
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;do {
// code
}while (condition)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Code Example
&lt;/h3&gt;



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

do {
  console.log(i);
  i++;
} while (i &amp;lt; 10);

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

&lt;/div&gt;



&lt;p&gt;The code output will run from 1 to 9.&lt;/p&gt;

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

&lt;p&gt;Successfully utilizing loops means you need to consider whether your solution needs a prior tested loop or a post tested loop. Loops are a great way to automate repeated tasks. Loops are not used in isolation and you can always use other JavaScript methods to successfully implement tasks.&lt;/p&gt;

&lt;p&gt;Happy Reading!&lt;/p&gt;

</description>
      <category>programming</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Life Check... One Year after Campus</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Sun, 20 Nov 2022 13:47:16 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/life-check-one-year-after-campus-14pj</link>
      <guid>https://forem.com/mwendwabundi/life-check-one-year-after-campus-14pj</guid>
      <description>&lt;p&gt;I graduated from uni last year in Dec and I was so enthusiastic for the life without exams...you know what I mean! Honestly I was so pumped up despite the fact that I am terrible with transitions.&lt;/p&gt;

&lt;p&gt;I am writing this as a life check for myself and any other person who has not mastered the art of transitions.&lt;/p&gt;

&lt;p&gt;All was going well I'd say, with the major highlight being that I got into open source and I had more time to dedicate to programming. I even did a talk on tech.&lt;/p&gt;

&lt;p&gt;Hell broke loose when I forgot that life involves a fine balance of holding on and letting go. Sometimes things do not pan out the way we envision them to and when that happened I allowed myself go down a sink hole. I was making money and definitely looking to scale that up but when I got a couple of rejection emails and the income streams dried up I stopped trying. I allowed my light to go dim, I believed that my dreams were not going to be actualized and every waking day I sank deeper. For 6 months.&lt;/p&gt;

&lt;p&gt;I stopped trying! And that's where I went wrong!&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Out
&lt;/h3&gt;

&lt;p&gt;I cannot fully emphasize the need for people who will believe in you when you do not believe in yourself. A week ago, my mentor called me and we had this conversation that really got me back on track. All along I remember thinking, &lt;em&gt;'I am so blessed to have someone who believes in me this much.'&lt;/em&gt; I wasn't doing well-utterly. That call reminded me of who I am and I wouldn't be writing this were it not for that. Thank you so much Maame.&lt;/p&gt;

&lt;p&gt;The core of it was on keeping your head held high, believing in yourself and branding. Speaking for programmers and technical writers in matters branding, what is your Github like, where are your writing samples, what would you show a prospective recruiter to convince them that you are the right candidate. Are you conversant with popular frameworks? Branding is so key and my inactivity on the same was telling. Needless to say, I am the same person who had took down my landing page...Hahaa&lt;/p&gt;

&lt;p&gt;In his book, Atomic Habits, James Clear writes; &lt;em&gt;"...you learn to lock in on the cues that predict success and tune out everything else. When a similar situation arises in the future you know exactly what to look for....your brain skips the process of trial and error and creates a mental rule: if this, then that."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Probably your transition after uni will look like trial and error, as James Clear put it, before you are that place where you are a master of and at your craft. Keep going, don't be like me! Don't despair like I did!&lt;/p&gt;

&lt;p&gt;I have been in uncharted waters and I clearly let go of the fact that there's trying, there's getting, there are rejections and all that but you keep your head held high. That explains the months long inactivity in this blog.&lt;/p&gt;

&lt;h3&gt;
  
  
  My Two Cents
&lt;/h3&gt;

&lt;p&gt;You get out of campus and are ushered into a whole new world. This is your chapter one, keep building. Looking back, most of my rejection emails came from my poor branding. I cannot fully emphasize how key branding is. You need to sell yourself in the best way possible for that entry role you're looking for.&lt;/p&gt;

&lt;p&gt;That said, there still will be No's but I believe that's part of the essence of life. You keep moving, no matter what.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;Now that I'm out of that loop, watch out for my next article which will be on JavaScript loops. See what I did there?&lt;/p&gt;

&lt;p&gt;If you are freshly out of campus and never really know how to handle transitions, I hope penning down my thoughts helped you. The bonus of writing this article is that I believed in myself and now I'm a new technical writer at Hit Subscribe. You've got this! Send that email, write that letter. Go ahead and be great.&lt;/p&gt;

&lt;p&gt;Trust me, trust you.&lt;/p&gt;

&lt;p&gt;Happy Reading!&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Create a Fully Open Source Next.js Ecommerce Store with Live Chat using Chatwoot</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Tue, 10 May 2022 09:59:10 +0000</pubDate>
      <link>https://forem.com/medusajs/create-a-fully-open-source-nextjs-ecommerce-store-with-live-chat-using-chatwoot-1fld</link>
      <guid>https://forem.com/medusajs/create-a-fully-open-source-nextjs-ecommerce-store-with-live-chat-using-chatwoot-1fld</guid>
      <description>&lt;p&gt;Adding live chat to your ecommerce store lets you communicate with your clients in real-time thus building trust and satisfaction with fast responses.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://medusajs.com" rel="noopener noreferrer"&gt;Medusa&lt;/a&gt; is an open source headless commerce platform that provides developers with a great experience. It allows them to easily customize their ecommerce platform and integrate third-party services. &lt;/p&gt;

&lt;p&gt;&lt;a href="http://chatwoot.com" rel="noopener noreferrer"&gt;Chatwoot&lt;/a&gt; is an open source customer engagement platform that lets you add live-chat support to websites and apps. With Chatwoot’s live-chat on your store, customers are able to get fast and real-time responses for their inquiries thus providing a seamless shopping experience.&lt;/p&gt;

&lt;p&gt;In this tutorial, you’ll add live-chat functionality to your ecommerce store using Medusa, Chatwoot, and Next.js.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Why Use Medusa&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Medusa provides a great experience for both developers and merchants. As a developer, you have the freedom to customize and reshape the platform as necessary for a better implementation of custom features. &lt;/p&gt;

&lt;p&gt;As a merchant, you don't need to worry about whether it’s possible or not to add your custom features and visions. You are guaranteed much more flexibility in what features or third-party services you can add to your store.&lt;/p&gt;

&lt;p&gt;As an open source ecommerce platform, Medusa can be combined with any third-party services to provide your customers with a better user experience and enrich your store with necessary features.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Add Live-Chat to Your Ecommerce Store
&lt;/h2&gt;

&lt;p&gt;Customers often need assurance that they’re purchasing from an ecommerce store that will help them out if they run into any problem before, during, and after their purchase. &lt;a href="https://www.invespcro.com/blog/ecommerce-product-return-rate-statistics/" rel="noopener noreferrer"&gt;Research shows that 92% of consumers&lt;/a&gt; will purchase again from a store if their return process is easy to go through.&lt;/p&gt;

&lt;p&gt;Although Medusa is one of the few ecommerce platforms that provide fully automated RMA flows for a seamless purchase and return experience, adding live-chat for easy communication with your customers builds trust. Your customers will be more confident purchasing from your brand.&lt;/p&gt;

&lt;p&gt;Live-chat widgets aren’t only necessary for return processes. They can also help your customers find what they need faster, especially if they’re reluctant or unsure about what they’re looking for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Use Chatwoot
&lt;/h2&gt;

&lt;p&gt;Chatwoot gives you all the tools to manage conversations, build relationships and delight your customers from one place irrespective of the platform they’re using.&lt;/p&gt;

&lt;p&gt;Chatwoot allows you to add a live chat widget on your websites that you can customize based on your brand. You can automate your conversations with customers for even better response times with automated chatbots.&lt;/p&gt;

&lt;p&gt;You can use the free Chatwoot plan which offers generous features and resources, or you are free to self-host Chatwoot as it is an open source service. This provides further ownership of your tech stalk and freedom in your implementation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set Up The Medusa Server
&lt;/h2&gt;

&lt;p&gt;Start by installing the Medusa CLI:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @medusajs/medusa-cli
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, install the Medusa server with the following command&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;medusa new my-medusa-server &lt;span class="nt"&gt;--seed&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--seed&lt;/code&gt; option adds dummy data to your Medusa server.&lt;/p&gt;

&lt;p&gt;Next, change to the newly created directory and run the server with the following command.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;medusa develop
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your server will run at &lt;code&gt;localhost:9000&lt;/code&gt;. You can test it out by sending a &lt;code&gt;GET&lt;/code&gt; request to &lt;code&gt;localhost:9000/store/products&lt;/code&gt;. You should receive a JSON response of the products in your store:&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Set up the Next.js Storefront
&lt;/h2&gt;

&lt;p&gt;Next, you’ll set up the storefront of your ecommerce store. Medusa has 2 ready-made storefronts that you can use: The &lt;a href="https://docs.medusajs.com/starters/nextjs-medusa-starter" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; storefront and the &lt;a href="https://docs.medusajs.com/starters/gatsby-medusa-starter" rel="noopener noreferrer"&gt;Gatsby&lt;/a&gt; storefront. For this tutorial, you’ll be using the Next.js storefront.&lt;/p&gt;

&lt;p&gt;Run the following command in a different directory to install the Next.js storefront:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-next-app &lt;span class="nt"&gt;-e&lt;/span&gt; https://github.com/medusajs/nextjs-starter-medusa client
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once it’s done change to the newly created directory &lt;code&gt;client&lt;/code&gt; and run the server for the storefront:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm run dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will run on &lt;code&gt;localhost:8000&lt;/code&gt;. Make sure that the server is still running or you will see errors when you open your storefront.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Create Chatwoot Inbox
&lt;/h2&gt;

&lt;p&gt;Now that you have your server and Next.js storefront up and running it’s time to integrate Chatwoot’s live-chat feature.&lt;/p&gt;

&lt;p&gt;Start by &lt;a href="https://app.chatwoot.com/app/auth/signup" rel="noopener noreferrer"&gt;registering an account with Chatwoot&lt;/a&gt; if you don’t already have one. Once the account is created, you’ll need to verify the email sent to you by Chatwoot.&lt;/p&gt;

&lt;p&gt;Next, you need to create a new inbox that will hold all customer messages coming from your storefront. Click on “New inbox” on the left side of the page then click on Website.&lt;/p&gt;

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

&lt;p&gt;Then, enter your Website Name and set the Website Domain to the domain of your storefront which is &lt;code&gt;localhost:8000&lt;/code&gt; in this tutorial. You can optionally customize the widget such as changing the widget color and welcome taglines. Any customization changes you make here will be shown on your storefront. &lt;/p&gt;

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

&lt;p&gt;Once you’re done click on “Create Inbox”.&lt;/p&gt;

&lt;p&gt;After that, you’ll be prompted to add or choose an existing agent. Agents are responsible for responding to messages coming from the live chat widget on your storefront.&lt;/p&gt;

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

&lt;p&gt;After adding one or more agents click on Add Agents to get your inbox ready.&lt;/p&gt;

&lt;p&gt;Now that your inbox is ready, Chatwoot will provide you with a code snippet to add to your website:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  (function(d,t) &lt;span class="si"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://app.chatwoot.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&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;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementsByTagName&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="mi"&gt;0&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="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;BASE_URL&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/packs/js/sdk.js&lt;/span&gt;&lt;span class="dl"&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="nx"&gt;defer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&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="k"&gt;async&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parentNode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insertBefore&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="nx"&gt;s&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="nx"&gt;onload&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="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chatwootSDK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
        &lt;span class="na"&gt;websiteToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;&amp;lt;WEBSITE_TOKEN&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BASE_URL&lt;/span&gt;
      &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="si"&gt;}&lt;/span&gt;)(document,"script");
&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;script&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice that it includes a website token in the place of &lt;code&gt;&amp;lt;WEBSITE_TOKEN&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Integrate Chatwoot’s Live-Chat with Next.js
&lt;/h2&gt;

&lt;p&gt;In this section, you’ll add the code snippet you obtained in Chatwoot after creating the inbox to your Next.js storefront. Under the &lt;code&gt;components&lt;/code&gt; folder create a new file &lt;code&gt;ChatwootWidget.js&lt;/code&gt; with the following content:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&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;useEffect&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;react&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;ChatwootWidget&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="nf"&gt;useEffect&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="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;d&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="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;BASE_URL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://app.chatwoot.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;g&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&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;s&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getElementsByTagName&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="mi"&gt;0&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="nx"&gt;src&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;BASE_URL&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/packs/js/sdk.js&lt;/span&gt;&lt;span class="dl"&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="nx"&gt;defer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&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="k"&gt;async&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;parentNode&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;insertBefore&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="nx"&gt;s&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="nx"&gt;onload&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="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;chatwootSDK&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;run&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
          &lt;span class="na"&gt;websiteToken&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`&amp;lt;WEBSITE_TOKEN&amp;gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="c1"&gt;//please add your website token here&lt;/span&gt;
          &lt;span class="na"&gt;baseUrl&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;BASE_URL&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="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;script&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="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&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="nx"&gt;ChatwootWidget&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Please remember to replace &lt;code&gt;&amp;lt;WEBSITE_TOKEN&amp;gt;&lt;/code&gt; with your own token.&lt;/p&gt;

&lt;p&gt;Next, import the &lt;code&gt;ChatwootWidget&lt;/code&gt; component in the &lt;code&gt;pages/index.js&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;ChatwootWidget&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/ChatwootWidget&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;and add the &lt;code&gt;ChatwootWidget&lt;/code&gt; at the end of the div in the returned JSX:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
        ...
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ChatwootWidget&lt;/span&gt; &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that’s all you need to add Chatwoot’s live chat to your ecommerce store!&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Test Out the Live Chat As a Customer&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;If you open your storefront now, you can view the live-chat functionality. You’ll see a bubble at the bottom right of the storefront with either the default blue color or the color you chose when you customized your Chatwoot widget.&lt;/p&gt;

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

&lt;p&gt;Click on the blue bubble on your store and try sending a message. For Example &lt;em&gt;Hi, there is the purple shirt available in a small size?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You will then be automatically prompted to optionally share your email with the agent so that they can reach you later on if need.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Test Our Live Chat as an Agent
&lt;/h2&gt;

&lt;p&gt;If you open your Chatwoot account, you’ll see all messages that are coming from your Storefront&lt;/p&gt;

&lt;p&gt;Here you can immediately respond to clients and get the conversation going.&lt;/p&gt;

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

&lt;p&gt;You’ll see all the messages that are coming from your Storefront. Once you respond, the customer gets the replies immediately as well.&lt;/p&gt;

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

&lt;h1&gt;
  
  
  &lt;strong&gt;Conclusion&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;Live-chat makes it easier to respond to your customers queries in real-time thus saving time and ensuring a positive user experience.&lt;/p&gt;

&lt;p&gt;Using open source solutions like Medusa, Chatwoot, and Next.js makes the process of creating your ecommerce store and adding features like live-chat much easier and with no hacky workarounds.&lt;/p&gt;

&lt;p&gt;Check out &lt;a href="https://docs.medusajs.com/" rel="noopener noreferrer"&gt;Medusa’s documentation&lt;/a&gt; for more information on what you can do with your ecommerce store. You can also learn more about Chatwoot from &lt;a href="https://www.chatwoot.com/developers/api/" rel="noopener noreferrer"&gt;their documentation&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For further queries and concerns on Medusa feel free to join our &lt;a href="https://discord.com/invite/F87eGuwkTp" rel="noopener noreferrer"&gt;Discord.&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>javascript</category>
      <category>opensource</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Sourcing for Women in Open Source</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Tue, 22 Mar 2022 18:01:14 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/sourcing-for-women-in-open-source-181d</link>
      <guid>https://forem.com/mwendwabundi/sourcing-for-women-in-open-source-181d</guid>
      <description>&lt;p&gt;The lack of diversity in open source is a worrying factor even as the world accelerates to a new digital future powered by web3. This calls for intentional efforts in bridging this gap while building better experiences for women in the field. &lt;/p&gt;

&lt;p&gt;Studies show that the numerous factors that derail women in tech are almost the same as to what has hindered women form joining open source. However, bringing solutions to this age old question will lie in a number of  actions geared towards bridging this gap. This article seeks to highlight exactly that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Where is the solution?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Bringing men to the table. If we are to successfully change the narrative, sessions on this topic call on having men as participants so as to garner their support and consciously reinforce the diversity need. Both genders have always failed when having an all male or women panel. Whether the conversation lies on matters that affect either gender, diversity in the panel is needed solely because we were made to coexist. Right? This point has however not been short of absurdity in comments and trolls on social media. &lt;/p&gt;

&lt;p&gt;This is not a topic on having women at the table for the sake of it but solely to develop and build better software, non-gender biased software and delivering better outcomes just as research as shown &lt;a href="https://web.engr.oregonstate.edu/~sarmaa/wp-content/uploads/2020/08/08452746.pdf"&gt;gender diversity leads to increased productivity in OSS&lt;/a&gt;. Lots of benefits stem from OSS gender diversity which reckons the need.&lt;/p&gt;

&lt;p&gt;A study done by&lt;a href="https://digitalimpactalliance.org/wp-content/uploads/2018/11/GenderOSS_v10_PDF.pdf"&gt; Digital Impact Alliance&lt;/a&gt;showed that building healthy open source&lt;br&gt;
communities’ codes of conduct was also key. This was backed by the call to ensure accountability and sanctions to transgressors if necessary. If anything, what's the point of having  the said code of conduct if non-adherence is ignored?&lt;/p&gt;

&lt;p&gt;Seemingly, addressing the mundane challenges in open source community development will also see the number of contributors rise thus having a ripple effect in the number of women joining the force. How? Open source in itself is not an entirely perfect field. Open source maintainers have faced resource and digital marketing challenges which have made good projects see a low number of users due to structural challenges. Such challenges are however being addressed by big techs, startup funders and a whole lot  of best practices but accelerating such will also see a rise in the number of women through the domino effect.&lt;/p&gt;

&lt;p&gt;Rewarding women in open source could also work in getting more women to join the OSS. &lt;a href="https://www.redhat.com/en/about/women-in-open-source"&gt;RedHat&lt;/a&gt; has been a force in this sector.  "We believe open source is the future of technology. It's time to recognize the contributions women are making and inspire a new generation to join the open source movement." - Red Hat &lt;br&gt;
You can view the list of the 2020 women in open source award winners &lt;a href="https://www.redhat.com/en/about/women-in-open-source"&gt;here&lt;/a&gt; Being inspired by another person' achievements is how we grow in any area of our lives!&lt;/p&gt;

&lt;p&gt;We also need intentionality from the open source community as well. Recently &lt;a href="//aviyel.com"&gt;Aviyel&lt;/a&gt; launched a #womaninopesource event which "features women who broke all these barriers to become champions of the Open Source Community. We look forward to hosting distinguished individuals from different walks of life who are working to bring change to the OSS community through their collective efforts."  Look out for that too even as we seek to break the glass ceiling." - Aviyel &lt;br&gt;
I recently joined &lt;a href="https://dev.to/aviyel"&gt;Aviyel&lt;/a&gt; as a creator and seeing their efforts in bridging this gap is quite impressive.&lt;/p&gt;

&lt;p&gt;The open source field is a career accelerator as earlier mentioned. However not every woman in tech ideally feels that the open source is theirs to explore, which is completely fine. As an open source contributor,  I'd highly encourage joining this field based on the growth and learning opportunities that stem from OSS.&lt;/p&gt;

&lt;p&gt;We have the power to bring to life that which we seek. Open Source community is open to women, come let's grow together and change the narrative!&lt;/p&gt;

&lt;h1&gt;
  
  
  womeninopensource #womenwhotech
&lt;/h1&gt;

&lt;p&gt;Happy Reading!!&lt;/p&gt;

</description>
      <category>womenintech</category>
      <category>opensource</category>
      <category>programming</category>
    </item>
    <item>
      <title>I spoke at the Sri Lanka Institute of IT...#opensource</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Fri, 18 Mar 2022 15:07:30 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/ill-be-speaking-at-sri-lanka-institute-of-itopensource-3iln</link>
      <guid>https://forem.com/mwendwabundi/ill-be-speaking-at-sri-lanka-institute-of-itopensource-3iln</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpz7xh975pojylmqebpks.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpz7xh975pojylmqebpks.jpg" alt="Image description"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For March as women's month I got the amazing opportunity to share at Sri Lanka Institute of Information Technology on how we can bring more women into open source!&lt;/p&gt;

&lt;p&gt;Here's a short breakdown of what I talked about! Each point was broken down further in the video live call.&lt;/p&gt;

&lt;p&gt;A big thank you to SLIIT FOSS community and everyone who tuned in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Statistics show that over 50% of women face seclusion and toxic treatment while working in the open source field. This has led to hesitancy to join the field&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In 2018 when Physicist Dr. Donna Strickland won the Nobel Prize, there was a no wikipedia published for such a feat!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;More than 90% of Github open source contributors are male…This lack of diversity extends from the lack of representation in tech as well. This obviously reckons the intertwining of women in tech and women in open source&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Studies have backed the open fact that inclusivity brings better quality and creativity in delivering better tech products&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Challenges facing women in open source&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Hesitancy to join OSS&lt;br&gt;
Lack of representation hence leading to demoralization&lt;br&gt;
Bro culture is still dominant&lt;br&gt;
Lack of men in the women in open source convos&lt;br&gt;
78% of women in tech feel that they have to work twice as harder to get promotions and recognition in tech&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to remedy these challenges and do better&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Skills beyond programming, examples to be given&lt;br&gt;
Bringing men into the women in open source convos, hiring and overall inclusion&lt;br&gt;
Monetization as a remedy&lt;br&gt;
Better and stronger inclusion of women into the field&lt;br&gt;
Safe spaces for women in open source&lt;br&gt;
Debunking the myths surrounding joining open source&lt;br&gt;
Welcoming the greater role of non-code contributions into open source as well.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Interacting further with the SLIIT FOSS community and answering questions from the audience.&lt;/p&gt;

&lt;p&gt;This was a great experience for me as an international  speaking engagement. Thank you once again to everyone who made it possible and tuned in!&lt;/p&gt;

&lt;h1&gt;
  
  
  breakthebias #womeninopensource #womenwhotech #SLIIT #SLIITFOSS
&lt;/h1&gt;

</description>
      <category>opensource</category>
      <category>womeninopensource</category>
      <category>programming</category>
      <category>speaking</category>
    </item>
    <item>
      <title>CAP Theorem in Distributed Systems for Blockchain Development</title>
      <dc:creator>Mwendwa Bundi Emma</dc:creator>
      <pubDate>Tue, 08 Mar 2022 11:39:38 +0000</pubDate>
      <link>https://forem.com/mwendwabundi/cap-theorem-in-distributed-systems-for-blockchain-development-1cah</link>
      <guid>https://forem.com/mwendwabundi/cap-theorem-in-distributed-systems-for-blockchain-development-1cah</guid>
      <description>&lt;p&gt;Blockchains are a type of distributed systems. For any distributed system, the Cap Theorem is a fundamental. The CAP Theorem was developed by Eric Brewer where CAP comes in as an  abbreviation for Consistency, Availability and Partition Tolerance. How does it work and what's its application in blockchain development? &lt;br&gt;
Let's first dive into a blockchain consensus backdrop.&lt;/p&gt;

&lt;p&gt;Distributed systems thrive in two components. One is 'nodes' - say computer machines and 'message passing' whose aim is to show that info can be shared between machines. We need distributed systems since a single system is bound to fail due to malware attacks and other faults. We therefore need to protect our data via distributed systems. We also need to bear in mind that a distributed system should work in concurrency but that too cannot always be guaranteed especially with the Nakamoto based consensus.&lt;/p&gt;

&lt;p&gt;According to &lt;a href="https://en.wikipedia.org/wiki/Leslie_Lamport"&gt;Leslie B. Lamport&lt;/a&gt;, an American computer scientist best known for his works in distributed systems, a working distributed system is based on its safety and liveness respectively. Safety for things that will not take place and liveness for things that will take place. You quickly notice that getting closer to safety means moving further away from liveness and the vice versa is true. For a distributed system to come to an agreement, it needs to arrive at a consensus. Thus the term consensus algorithms which thrives on three requirements, validity, agreement and termination.&lt;/p&gt;

&lt;p&gt;CAP theory or Brewer's theory as it is known is based on Consistency, Availability and partition Tolerance as previously noted.&lt;br&gt;
Consistency means that every read operation will result in getting the latest record. All the information is guaranteed to be up to date. A lack of consistency means that no response is thus given.&lt;br&gt;
Consistency can be said to be based on safety as earlier put.&lt;/p&gt;

&lt;p&gt;Availability is a property that indicates a distributed system will always be available. One or more nodes of such a system might turn off for a reason or more, however, the system will still be accessible through other nodes. This is then based on liveness.&lt;/p&gt;

&lt;p&gt;Partition Tolerance represents the ability of the system to be partitioned. Thus it means that every node can work independently from the other ones. Partition Tolerance tends to lie more on the safety component, though arriving at the safety consensus in Partition Tolerance is a bit complicated.&lt;/p&gt;

&lt;p&gt;In a distributed system, the processes can only be based on two of the three  CAP theorem properties. These are to be, one of &lt;strong&gt;CA, CP&lt;/strong&gt; or &lt;strong&gt;AP&lt;/strong&gt; at a go.&lt;br&gt;
The CAP theorem is faulty too in the sense that it is ambiguous in real world instances. CAP does not cover the delays in response time thus terming it as available while at the same time, partly available nodes are still termed as available.&lt;/p&gt;

&lt;p&gt;Therefore, the PACELC theorem came up as a build up of the CAP theorem faults thus making it more applicable in todays distributed systems. PACELC is attributed to the efforts of Daniel Abadi. As he states in his thesis,  &lt;em&gt;"Ignoring the consistency/latency trade-off of replicated systems is a major oversight [in CAP], as it is present at all times during system operation, whereas CAP is only relevant in the arguably rare case of a network partition."&lt;/em&gt; PACELC works as &lt;em&gt;in the case of network partitioning (P) in a distributed computer system, one needs to choose between availability (A) and consistency (C) (as in CAP), but else (E), even when the system is running normally in the absence of partitions, one has to choose between latency (L) and consistency (C).&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Bitcoin is one of the great successes of distributed systems. Even in such a case, the CAP theorem is always violated where Consistency is always given up to favor Availability and Partition Tolerance.  To achieve eventual consistency, mining is applied through the famous proof of work (PoW) which means more and more blocks are needed in he chain.&lt;/p&gt;

&lt;p&gt;With the explained case scenarios, fails still happen and are described under the Byzantine General's problem. This then leaves us with the dilemma if not a trilemma of whether consensus is fully attainable in blockchain. Byzantine nodes choose to act maliciously, sending corrupted information, despite being fully functional. However, under a set of favorable conditions, consensus algorithms are always arrived at by the nodes.&lt;/p&gt;

&lt;p&gt;All this brings us into working with trust without trust, underlying the fundamentals of distributed systems and distributed consensus. Consensus algorithms arrived at via continual mining of  Bitcoin, used as an example are then able to bring transactions at a point of trust by the users. But trust without trust!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
