<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Aphinya Dechalert</title>
    <description>The latest articles on DEV Community by Aphinya Dechalert (@dottedsquirrel).</description>
    <link>https://dev.to/dottedsquirrel</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%2F207216%2F3688f543-4d71-4ade-833f-0e8b8a069ff2.jpg</url>
      <title>DEV Community: Aphinya Dechalert</title>
      <link>https://dev.to/dottedsquirrel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dottedsquirrel"/>
    <language>en</language>
    <item>
      <title>#004: The Week In Stories —AI-driven fruit growing to SaaS bridge</title>
      <dc:creator>Aphinya Dechalert</dc:creator>
      <pubDate>Mon, 21 Feb 2022 00:00:12 +0000</pubDate>
      <link>https://dev.to/dottedsquirrel/004-the-week-in-stories-ai-driven-fruit-growing-to-saas-bridge-33a3</link>
      <guid>https://dev.to/dottedsquirrel/004-the-week-in-stories-ai-driven-fruit-growing-to-saas-bridge-33a3</guid>
      <description>&lt;p&gt;Hi all!&lt;/p&gt;

&lt;p&gt;This week of &lt;strong&gt;{Tech &amp;amp; Dev}&lt;/strong&gt; includes a varied list of articles and tech finds across the web. From AI-driven fruit growing (mmmmmmm….yummier fruit, that is) to things you didn’t know you could do in Chrome — I hope you enjoy my selection for this week’s stories.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. Add CSV import to your Node.js app using UseCSV
&lt;/h1&gt;

&lt;p&gt;CSV is convenient. The likes of Excel, Google Docs, spreadsheet export functions, and reporting applications all support CSV in some capacity. CSV works well with large data sets and the major perk is that it can easily be converted to other formats such as XML or JSON.&lt;/p&gt;

&lt;p&gt;This is where the hard part starts — how do you easily convert CSV data for your app, MVP, or SaaS? For JavaScript-based applications, there’s a plethora of &lt;a href="https://layercode.com/community/top-javascript-csv-parsers"&gt;free CSV parsers&lt;/a&gt; available. While these libraries are great, open-source is known to pose a security risk such as relaxed integration oversight and potentially poor and integrated practices.&lt;/p&gt;

&lt;p&gt;So what are your options? What alternatives to free CSV parsers do you have? One solution is to use UseCSV.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://layercode.com/community/usecsv-node-react?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Add CSV import to your Node.js app using UseCSV&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  2. Human-Readable JavaScript: A Tale of Two Experts
&lt;/h1&gt;

&lt;p&gt;Everyone wants to be an expert. But what does that even mean? Over the years I’ve seen two types of people who are referred to as “experts.” Expert 1 is someone who knows every tool in the language and makes sure to use every bit of it, whether it helps or not. Expert 2 also knows every piece of syntax, but they’re pickier about what they employ to solve problems, considering a number of factors, both code-related and not.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://alistapart.com/article/human-readable-javascript/?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Human-Readable JavaScript: A Tale of Two Experts&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3. Thoughts On Markdown
&lt;/h1&gt;

&lt;p&gt;Markdown in all its flavors, interpretations, and forks won’t go away. However, it’s important to look at emerging content formats that try to encompass modern needs. In this article, Knut shares his advice against Markdown by looking back on why it was introduced in the first place, and by going through some of the major developments of content on the web.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://www.smashingmagazine.com/2022/02/thoughts-on-markdown/?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Thoughts On Markdown&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  4. Semantic Versioning for Express APIs
&lt;/h1&gt;

&lt;p&gt;Software versioning is the process of assigning a unique identifier for a specific state of a software application, API or library. As developers, it is essential to follow a formal convention for versioning since it helps to communicate the changes and their impact.&lt;/p&gt;

&lt;p&gt;Semantic versioning is one of the most used and straightforward versioning conventions available, and it provides a three-part version number for your application. Here is a quick guide on using semantic versioning for Express APIs.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://layercode.com/community/semantic-versioning?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Semantic Versioning for Express APIs&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Your fruit is gonna get tastier — and you’ve got AI to thank for it
&lt;/h1&gt;

&lt;p&gt;Which flavors and chemical compounds make a particular variety of fruit more appealing to consumers can be identified and predicted using &lt;a href="https://thenextweb.com/topic/artificial-intelligence"&gt;artificial intelligence&lt;/a&gt;, according to &lt;a href="https://doi.org/10.1073/pnas.2115865119"&gt;our recently published study&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Flavor, defined by scientists as the interaction between &lt;a href="https://doi.org/10.1152/jn.00050.2004"&gt;aroma and taste&lt;/a&gt;, is chemically complex. The sugars, acids, and bitter compounds in food interact with the taste receptors on our tongues to invoke taste, while volatile compounds that interact with olfactory receptors in our noses are responsible for aroma.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://thenextweb.com/news/your-fruit-is-gonna-get-tastier-and-youve-got-ai-to-thank-for-it?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Your fruit is gonna get tastier — and you’ve got AI to thank for it&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  6. Subsetting Font Awesome to Improve Performance
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://fontawesome.com/"&gt;Font Awesome&lt;/a&gt; is an incredibly popular icon library. Unfortunately, it’s somewhat easy to use in a way that results in less-than-ideal performance. By subsetting Font Awesome, we can remove any unused glyphs from the font files it provides. This will reduce the number of bytes transmitted over the wire, and improve performance.&lt;/p&gt;

&lt;p&gt;Let’s subset fonts together in a Font Awesome project to see the difference it makes. As we go, I’ll assume you’re importing the CSS file Font Awesome provides, and using its web fonts to display icons.&lt;/p&gt;

&lt;p&gt;Read it here 👉&lt;a href="https://css-tricks.com/subsetting-font-awesome-to-improve-performance/?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Subsetting Font Awesome to Improve Performance&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  7. Firebase vs. Digital Ocean App Platform vs. AWS Amplify
&lt;/h1&gt;

&lt;p&gt;Which bootstrap cloud stack should you choose?&lt;/p&gt;

&lt;p&gt;Google Firebase, Digital Ocean App Platform, and AWS Amplify all seem to do the same thing — they exist to help you launch your app into the cloud as quickly as possible. But how comparable are they as a full-stack cloud service?&lt;/p&gt;

&lt;p&gt;Here is a quick rundown of everything you need to know about the services, things to consider, and how each cloud platform impacts your short and long-term infrastructure and strategy.&lt;/p&gt;

&lt;p&gt;But before we begin, there is a question that needs to be answered — are full-stack app platforms worth the time and investment?&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://layercode.com/community/firebase-vs-digitalocean-aws?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Firebase vs. Digital Ocean App Platform vs. AWS Amplify&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  8. Implement Authentication &amp;amp; Security Using SuperTokens in Your React and HarperDB App
&lt;/h1&gt;

&lt;p&gt;Adding authorization &amp;amp; authentication to an app is a common task for developers. When you’re launching a new product, a startup, or a side project, it can feel like a mission.&lt;/p&gt;

&lt;p&gt;This tutorial will teach us how to make a music player app that uses SuperTokens for authentication and HarperDB for the backend.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://hackernoon.com/how-to-add-authentication-and-secure-harperdb-apis-using-supertokens-in-your-react-app?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Implement Authentication &amp;amp; Security Using SuperTokens in Your React and HarperDB App&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  9. Browsers can do that?
&lt;/h1&gt;

&lt;p&gt;For the past few years since I began my &lt;a href="https://github.com/DustinBrett/daedalOS"&gt;endeavor&lt;/a&gt; to make a &lt;a href="https://dustinbrett.com/"&gt;web desktop environment&lt;/a&gt; I’ve become fascinated to know what is possible with a modern web browser and where the limits are. Throughout that time I’ve been repeatedly surprised with how far we’ve come and what features have made it into some of todays browsers.&lt;/p&gt;

&lt;p&gt;Here is my list of the amazing things browsers can do!&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://dev.to/dustinbrett/browsers-can-do-that-271o?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Browsers can do that?&lt;/a&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  10. How to Use Google Chrome’s Enhanced Safety Mode
&lt;/h1&gt;

&lt;p&gt;AS SOON AS you dip a virtual toe in the online waters, you’re exposing yourself to danger, whether from &lt;a href="https://www.wired.com/2017/03/phishing-scams-fool-even-tech-nerds-heres-avoid/"&gt;suspicious links&lt;/a&gt;, dodgy downloads, data harvesters, or something else. The good news is that our web browsers have evolved to become more secure and savvy.&lt;/p&gt;

&lt;p&gt;If Google Chrome is your browser of choice, you have access to &lt;a href="https://security.googleblog.com/2020/05/enhanced-safe-browsing-protection-now.html"&gt;an Enhanced Safe Browsing mode&lt;/a&gt;, which you might not be aware of: It’s essentially what it sounds like, an extra layer of protection that you’re able to switch on if you want to be as cautious as possible.&lt;/p&gt;

&lt;p&gt;Why wouldn’t it be on by default?&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://www.wired.com/story/how-to-use-google-chrome-enhanced-safety-mode/?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;How to Use Google Chrome’s Enhanced Safety Mode&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Add CSV import to your Node.js app using UseCSV</title>
      <dc:creator>Aphinya Dechalert</dc:creator>
      <pubDate>Wed, 16 Feb 2022 23:27:12 +0000</pubDate>
      <link>https://dev.to/dottedsquirrel/add-csv-import-to-your-nodejs-app-using-usecsv-hn3</link>
      <guid>https://dev.to/dottedsquirrel/add-csv-import-to-your-nodejs-app-using-usecsv-hn3</guid>
      <description>&lt;p&gt;CSV is convenient. The likes of Excel, Google Docs, spreadsheet export functions, and reporting applications all support CSV in some capacity. CSV works well with large data sets and the major perk is that it can easily be converted to other formats such as XML or JSON. &lt;/p&gt;

&lt;p&gt;This is where the hard part starts - how do you easily convert CSV data for your app, MVP, or SaaS? For JavaScript-based applications, there's a plethora of &lt;a href="https://layercode.com/community/top-javascript-csv-parsers" rel="noopener noreferrer"&gt;free CSV parsers&lt;/a&gt; available. While these libraries are great, open-source is known to pose a security risk such as relaxed integration oversight and potentially poor and integrated practices.&lt;/p&gt;

&lt;p&gt;So what are your options? What alternatives to free CSV parsers do you have? One solution is to use UseCSV.&lt;/p&gt;

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

&lt;p&gt;UseCSV is a SaaS (software as a service) that provides you with a simple-to-use interface and tools to easily and securely transform your CSV datasets into JSON format. &lt;/p&gt;

&lt;p&gt;Here is a shortlist of UseCSV perks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;supports CSV and all Excel formats (&lt;code&gt;xlsx&lt;/code&gt;, &lt;code&gt;xls&lt;/code&gt;, &lt;code&gt;xlt&lt;/code&gt;), including legacy Excel versions. &lt;/li&gt;
&lt;li&gt;easy to integrate into your frontend&lt;/li&gt;
&lt;li&gt;can handle large import files and doesn't use arbitrary upload limits, so you're not required to split up your files&lt;/li&gt;
&lt;li&gt;secure and compliant to best practice security standards&lt;/li&gt;
&lt;li&gt;comes with an easy to use the console to configure your validation rules&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without further ado, let's get on with setting up UseCSV into your React + Node.js app. &lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up your React frontend
&lt;/h2&gt;

&lt;p&gt;Setting up your React frontend for UseCSV is super simple. All you have to do is install the UseCSV importer plugin, add some code to your app and make sure you add your &lt;code&gt;importerKey&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Here is a series of snippets to get you started.&lt;/p&gt;

&lt;p&gt;Step 1: Download UseCSV package from npm.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install @usecsv/react
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, if you prefer to use Yarn:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;yarn add @usecsv/react
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2: Add the UseCSV component to your app. Here is an example of what it looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;UseCSV&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;@usecsv/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;function&lt;/span&gt; &lt;span class="nf"&gt;App&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;div&lt;/span&gt; &lt;span class="nx"&gt;className&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;App&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;h1&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;Start&lt;/span&gt; &lt;span class="nx"&gt;importing&lt;/span&gt; &lt;span class="nx"&gt;your&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/h1&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;UseCSV&lt;/span&gt; &lt;span class="nx"&gt;importerKey&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;&amp;lt;your importer key here&amp;gt;&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nx"&gt;Import&lt;/span&gt; &lt;span class="nx"&gt;Data&lt;/span&gt;
      &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/UseCSV&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;    &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/div&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;  &lt;span class="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;App&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There are two props available for UseCSV:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;importerKey&lt;/code&gt; - this is a &lt;code&gt;string&lt;/code&gt; and connects your frontend to importer. You can store this value as an &lt;code&gt;.env&lt;/code&gt; for security reasons. This key is available in the admin panel of your importer.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;user&lt;/code&gt; - this is a JSON object that can be used to pass additional data to the webhook and is relayed to the backend. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Setting up a barebones backend with Node.js
&lt;/h2&gt;

&lt;p&gt;In this portion of the tutorial, we are going to set up a barebones Node.js API backend. There will be two endpoints - &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;GET&lt;/code&gt; &lt;code&gt;/users&lt;/code&gt; to test that the data received from &lt;code&gt;POST&lt;/code&gt; is processed correctly to our app&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;POST&lt;/code&gt; &lt;code&gt;/users&lt;/code&gt; to act as our example endpoint for receiving CSV to JSON data&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To set up your Node.js application, add &lt;code&gt;express&lt;/code&gt; and &lt;code&gt;bodyParser&lt;/code&gt; to your app's folder.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm i express body-parser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What is &lt;a href="https://www.npmjs.com/package/express" rel="noopener noreferrer"&gt;Express&lt;/a&gt;? Express is a web framework for Node. It lets you do routing and comes with HTTP helpers that we are going to be using for this tutorial walkthrough.&lt;/p&gt;

&lt;p&gt;What is &lt;a href="https://www.npmjs.com/package/body-parser" rel="noopener noreferrer"&gt;bodyParser&lt;/a&gt;? body-parser is a middleware for parsing incoming requests and making them available under the &lt;code&gt;re.body&lt;/code&gt; property. &lt;/p&gt;

&lt;p&gt;Once you have both packages installed, make sure to import them into your application. For this tutorial, it is the &lt;code&gt;server.js&lt;/code&gt; file. Here is the fully-functional code for a bare-bones backend with comments.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;express&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;express&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;bodyParser&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;body-parser&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;app&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;express&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="c1"&gt;// Make sure you place body-parser before your CRUD handlers or else it will not work.&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;use&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;bodyParser&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;

&lt;span class="c1"&gt;// default route&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello Layercode&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="cm"&gt;/* Setting the data */&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Shane&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;last_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Oaks&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SOaks&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="na"&gt;first_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Elwood&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;last_name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Horsfield&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;username&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Elwooders&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="cm"&gt;/* Create POST */&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;addUsers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;row&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;post&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;addUsers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="cm"&gt;/* Read GET */&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;getUsers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;send&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;users&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/users&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;getUsers&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="cm"&gt;/* the port and server 
   to run, use the command - node server.js
*/&lt;/span&gt;
&lt;span class="nx"&gt;app&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;listening on 3000&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;To start your app, run the command &lt;code&gt;node server.js&lt;/code&gt; This will make &lt;code&gt;localhost:3000&lt;/code&gt; available for your APIs.&lt;/p&gt;

&lt;h2&gt;
  
  
  Creating your project and attaching a webhook
&lt;/h2&gt;

&lt;p&gt;Step 1: Sign up for the &lt;a href="https://app.usecsv.com/signup" rel="noopener noreferrer"&gt;free UseCSV developer account&lt;/a&gt;.&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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1644892370%2F01_3ff14e3e6e.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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1644892370%2F01_3ff14e3e6e.png" alt="01.PNG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 2: Click on &lt;strong&gt;Add importer&lt;/strong&gt; button to create a new importer. Give your importer a name. &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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839765%2Fcsv_02_40decf05e5.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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839765%2Fcsv_02_40decf05e5.png" alt="csv-02.PNG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Step 3: Once you've clicked &lt;strong&gt;Save&lt;/strong&gt;, you will be given a screen where you can do the following things:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;find your importer &lt;strong&gt;Key&lt;/strong&gt;. This value is to be added to your React component prop. &lt;/li&gt;
&lt;li&gt;the Webhook URL field. This is where you can add your backend endpoint URL. For &lt;code&gt;localhost&lt;/code&gt; testing, you can use a tunnel service. &lt;a href="https://layercode.com/community/cloudflare-tunnels" rel="noopener noreferrer"&gt;Cloudflare&lt;/a&gt; has a free tunneling service. You can check out the tutorial on &lt;a href="https://layercode.com/community/cloudflare-tunnels" rel="noopener noreferrer"&gt;how to set it up here&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Configure your fields by clicking on &lt;strong&gt;Add Column&lt;/strong&gt;. Fill in the fields and repeat for all your other required columns. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Add your importer &lt;strong&gt;Key&lt;/strong&gt; to your React app and set up your columns. Boot up your &lt;code&gt;localhost&lt;/code&gt; tunnel and add it as your &lt;a href="https://layercode.com/community/webhooks" rel="noopener noreferrer"&gt;webhook endpoint&lt;/a&gt;. &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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839806%2Fcsv_05_ad5efbf156.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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839806%2Fcsv_05_ad5efbf156.png" alt="csv-05.PNG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Upload your CSV data via your React frontend
&lt;/h2&gt;

&lt;p&gt;Once you've added your importer &lt;strong&gt;Key&lt;/strong&gt; as the prop, you can start uploading CSV data to your backend right away. Your column settings will show up here and all you have to do is follow the easy-to-use wizard.&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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839877%2Fcsv_07_a16cdd2d0e.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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839877%2Fcsv_07_a16cdd2d0e.png" alt="csv-07.PNG"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839877%2Fcsv08_40b1369e1f.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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839877%2Fcsv08_40b1369e1f.png" alt="csv08.PNG"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839877%2Fcsv_11_aa487413b5.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%2Fres.cloudinary.com%2Flayercode%2Fimage%2Fupload%2Fv1643839877%2Fcsv_11_aa487413b5.png" alt="csv-11.PNG"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once completed, the interface will give a green success tick. &lt;/p&gt;

&lt;p&gt;That's it. You can check if your data was sent correctly via a REST client on the &lt;code&gt;GET&lt;/code&gt; endpoint we created earlier. Stay tuned for more free tutorials. Comment below if you want anything specific.&lt;/p&gt;

&lt;p&gt;And that's it for this tutorial! Stay tuned for more free tutorials. Comment below if you want anything specific. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>node</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>#003: The Week In Stories — React, Supabase, Next.js, and tech things</title>
      <dc:creator>Aphinya Dechalert</dc:creator>
      <pubDate>Mon, 14 Feb 2022 21:38:26 +0000</pubDate>
      <link>https://dev.to/dottedsquirrel/003-the-week-in-stories-react-supabase-nextjs-and-tech-things-478c</link>
      <guid>https://dev.to/dottedsquirrel/003-the-week-in-stories-react-supabase-nextjs-and-tech-things-478c</guid>
      <description>&lt;p&gt;Hi all!&lt;/p&gt;

&lt;p&gt;Welcome to another edition of &lt;strong&gt;{Tech &amp;amp; Dev}&lt;/strong&gt; Newsletter. This week is an eclectic collection of internet finds, React, cloud platforms, and articles that you may have missed.&lt;/p&gt;

&lt;p&gt;Without further ado, let’s dive into this week’s stories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top 10 JavaScript CSV Parsers
&lt;/h2&gt;

&lt;p&gt;CSV — love them or hate them, they are part of many businesses and how they operate. These comma-separated values come in the form of a text file with a specific format that allows for data to be translated into a tabulated structure when imported into spreadsheet software and apps such as Excel and Google Sheets. These table-based reports are often used by analysts, accountants, commercial, and marketing to view, add, and manipulate.&lt;/p&gt;

&lt;p&gt;As developers, a majority of us work primarily with JSON, making CSV an incompatible dataset. We cannot easily filter it in its raw form or hook into the data the way we can with JSON. This is where JavaScript CSV parsers come in. For JavaScript-based apps, CSV parsers are bridging libraries that translate tabular data into JSON compatible formats.&lt;/p&gt;

&lt;p&gt;Here are the top 10 free JavaScript CSV parsers that you can use for your next (or current) project that contains comma-separated values.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://layercode.com/community/top-javascript-csv-parsers?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Top 10 JavaScript CSV Parsers&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Next.js is the next best thing — but what’s the catch?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://nextjs.org/"&gt;Next.js&lt;/a&gt; is a popular open-source JavaScript framework for developing server-side rendered React applications. It’s simple, lightweight, and efficient, making it an ideal choice for small- to medium-sized projects.&lt;/p&gt;

&lt;p&gt;In a nutshell, the framework enables you to get up and running with React quickly and easily. It provides a number of powerful features and components that make developing React applications simpler and more efficient. These include automatic code-splitting, hot module reloading, and routing.&lt;/p&gt;

&lt;p&gt;But what are the good and the bad parts of Next.js?&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://medium.com/madhash/next-js-is-the-next-best-thing-but-whats-the-catch-b6720ecc8251?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Next.js is the next best thing — but what’s the catch?&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Moving from JavaScript to TypeScript
&lt;/h2&gt;

&lt;p&gt;JavaScript is already pretty time-consuming to learn and nobody truly masters it because the API keeps getting updated along with the documentation as the language evolves. There are also a lot of frameworks and libraries to learn.&lt;/p&gt;

&lt;p&gt;It was outdated thinking and fortunately, I saw the light when I was between jobs looking for work. Companies were looking for polyglot developers which essentially means a person who knows and is able to use several programming languages.&lt;/p&gt;

&lt;p&gt;Here’s an article outlining the experiences of moving from JavaScript to TypeScript.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://dev.to/andrewbaisden/moving-from-javascript-to-typescript-40ac?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Moving from JavaScript to TypeScript&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to set up Firebase Authentication in React
&lt;/h2&gt;

&lt;p&gt;Firebase authentication is part of the services suite offered by Google’s full-stack app platform. It covers a majority of authentication options including email, and federated identity providers such as Google, Facebook, Twitter, and GitHub. Firebase authentication is a free service, with the exception of phone verification — which is free for the first 10k API calls.&lt;/p&gt;

&lt;p&gt;There are multiple ways to implement Firebase authentication, including a ‘drop-in’ solution where an external user flow is provided to sign in users. Another way is to use the Firebase SDK authentication, which is a package that can be leveraged for backend and native applications.&lt;/p&gt;

&lt;p&gt;For this tutorial, we are going to focus on implementing Firebase authentication in a React app.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://layercode.com/community/firebase-auth-with-react?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;How to set up Firebase Authentication in React&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Level-Up Your React Game with Testing
&lt;/h2&gt;

&lt;p&gt;Are you currently learning React JS or using it in your work?&lt;/p&gt;

&lt;p&gt;Let’s step up your React game by learning how to test a React App. In this series, we will learn how to test using packages that come bundled with &lt;code&gt;create-react-app&lt;/code&gt;, Jest and React Testing Library. In this first part of the series, let's understand these two packages and a simple test.&lt;/p&gt;

&lt;p&gt;Read it here 👉&lt;a href="https://dev.to/fadhilradh/level-up-your-react-game-with-testing-part-1-lhd?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt; Level-Up Your React Game with Testing&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Killing me softly…the slow death of Bootstrap
&lt;/h2&gt;

&lt;p&gt;CSS is hard.&lt;/p&gt;

&lt;p&gt;There, I said it. It’s hard to create a cohesive, consistent design across different browsers, devices, and screen sizes. It’s hard to keep up with the latest advancements and trends in web design. It’s hard to make your website look good, period.&lt;/p&gt;

&lt;p&gt;But it doesn’t have to be.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://medium.com/madhash/killing-me-softly-the-slow-death-of-bootstrap-c73161a6d6ed?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Killing me softly…the slow death of Bootstrap&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Is Supabase your new Firebase alternative?
&lt;/h2&gt;

&lt;p&gt;The implementation of PostgresSQL on Supabase also makes it highly accessible and low-code projects. What is low-code? Low code is a growing trend and software approach that’s supported by an infrastructure that enables minimal coding to build fully functional applications.&lt;/p&gt;

&lt;p&gt;The interface for PostgresSQL on Supabase is akin to working on a spreadsheet, with the ability to easily add, edit, and update data in a no-code manner. Meanwhile, there is also an SQL editor interface that lets you create tables, functions, joins, and whatever else is required for your data needs.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://layercode.com/community/supabase-vs-firebase?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;Is Supabase your new Firebase alternative?&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How do React Fragments work under the hood?
&lt;/h2&gt;

&lt;p&gt;React aims to stay neat and clean that’s why fragments are out there. They allow getting rid of excess wrappers while rendering multiple elements!&lt;/p&gt;

&lt;p&gt;That’s pretty cool, but how do they work under the hood?&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://dev.to/fromaline/how-do-react-fragments-work-under-the-hood-36n5?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;How do React Fragments work under the hood?&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  7 Toxic Habits of bad programmers and why teams fall apart
&lt;/h2&gt;

&lt;p&gt;As developers, we’ve all encountered &lt;em&gt;that&lt;/em&gt; toxic programmer in some form. However, it’s also easy to be blindsided by our own behaviors.&lt;/p&gt;

&lt;p&gt;Bad programmers can be one of the biggest sources of toxic habits in an organization. Here is a rundown of common toxic behaviors and what they can do to teams.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://medium.com/madhash/7-toxic-habits-of-bad-programmers-and-why-teams-fall-apart-ff5ad073097e?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;7 Toxic Habits of bad programmers and why teams fall apart&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How does React allow creating custom components?
&lt;/h2&gt;

&lt;p&gt;React strives to give its users the ability to build encapsulated, reusable components, but how does it implement this logic in JSX?&lt;/p&gt;

&lt;p&gt;Here is a solid article about custom components with walkthrough code.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://dev.to/fromaline/how-does-react-allow-creating-custom-components-3mbe?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;How does React allow creating custom components?&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  This is How I Switch from Angular to React
&lt;/h2&gt;

&lt;p&gt;The story began when I was working as a frontend engineer at my first workplace using Angular at that time. At first, I enjoyed Angular but it changed when I want to switch jobs in the mid of 2021. Most of the job vacancies required React as the main skillset. After that, I change my mind and take a maneuver from Angular to React as my main frontend tech stack.&lt;/p&gt;

&lt;p&gt;Not only that, when I did some troubleshooting or debugging I need more time to google some stuff if I code using Angular. It’s very different when I use React, I just enter some keywords and the search result will display more accurately based on my needs. This lasted for about almost one year until I finally realized it was time for me to change.&lt;/p&gt;

&lt;p&gt;Here is a developer’s tale on what he experienced during the switch from Angular to React.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://yehezgun.com/articles/angular-to-react?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;This is How I Switch from Angular to React&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to create a countdown timer using React Hooks
&lt;/h2&gt;

&lt;p&gt;React(aka ReactJS) is a library that builds declarative and component-based user interfaces. With the inclusion of functional components and hooks, it is even more potent in reusability, better code organization, and data flow.&lt;/p&gt;

&lt;p&gt;Web developers widely use React’s standard hooks like useState, useEffect to manage state within the components. However, the practice of writing &lt;code&gt;custom hooks&lt;/code&gt; seems to be a bit lesser. This article aims to explain the usages of the custom hook in a beginner-friendly manner. What could be better than learning it by developing a small but practical application?&lt;/p&gt;

&lt;p&gt;We will create a &lt;code&gt;countdown timer&lt;/code&gt; that will allow us to set an initial date and time to start the countdown. Once the date and time expire, it will show an expiry notice.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://dev.to/atapas/how-to-create-a-countdown-timer-using-react-hooks-11m3?utm_source=devto&amp;amp;utm_campaign=dottedsquirrel_newsletter"&gt;How to create a countdown timer using React Hooks&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And that's it for this week. Be sure to subscribe and stay tuned for next week's edition.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>#002: The Week In Stories — Metaverse, Deno, and WebHooks</title>
      <dc:creator>Aphinya Dechalert</dc:creator>
      <pubDate>Sun, 06 Feb 2022 23:25:37 +0000</pubDate>
      <link>https://dev.to/dottedsquirrel/002-the-week-in-stories-metaverse-deno-and-webhooks-4m27</link>
      <guid>https://dev.to/dottedsquirrel/002-the-week-in-stories-metaverse-deno-and-webhooks-4m27</guid>
      <description>&lt;p&gt;Hi all!&lt;/p&gt;

&lt;p&gt;Welcome to another edition of &lt;strong&gt;{Tech &amp;amp; Dev}&lt;/strong&gt; Newsletter. This week is all about the metaverse, remote work, and tech things with movies to watch list (if you haven’t seen them) at the end.&lt;/p&gt;

&lt;p&gt;Without further ado, let’s dive into this week’s stories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Metaverse jobs are on the rise, but what exactly are they?
&lt;/h2&gt;

&lt;p&gt;The metaverse is coming — or rather, it is already here. The idea of virtual worlds has been around as far back as the 90s, if not earlier through the imaginations of writers and creative thinkers.&lt;/p&gt;

&lt;p&gt;While we’re not as dramatically plugged in via a physical cord, all things digital and internet accessible tethers us to our extended worlds. From remote work to school to keeping up with our friends, our interconnectivity is the edge of the metaverse as we are about to know it.&lt;/p&gt;

&lt;p&gt;So what exactly is the metaverse? What does it mean for our future? and what can we do to keep ourselves from being obsolete?&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://medium.com/madhash/metaverse-jobs-are-on-the-rise-but-what-exactly-are-they-afbb0010a9f2"&gt;&lt;strong&gt;Metaverse jobs are on the rise, but what exactly are they?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up Scalable WebSockets — WebSockets for real-time communication with Node.js
&lt;/h2&gt;

&lt;p&gt;A WebSocket is web protocol that facilitates bi-directional communication between clients and servers. In addition, WebSocket can send messages in either direction in near real-time, unlike HTTP.&lt;/p&gt;

&lt;p&gt;But why WebSockets?&lt;/p&gt;

&lt;p&gt;You can use WebSockets whenever a low-latency, near real-time connection between the client and the server, is required. Here are a few examples:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiplayer gaming&lt;/li&gt;
&lt;li&gt;Instant messaging applications&lt;/li&gt;
&lt;li&gt;Voice/video media exchange&lt;/li&gt;
&lt;li&gt;Live sports scores&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Depending on the usage, it can influence your architecture.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://layercode.com/community/scalable-websockets"&gt;&lt;strong&gt;Setting up Scalable WebSockets — WebSockets for real-time communication with Node.js&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Work From Home or Work From Office — Why Not Both?
&lt;/h2&gt;

&lt;p&gt;Working from home is hard. Sure, there are perks like no commute, increased flexibility and the ability to establish better work-life balance. Yet, working from home isn’t for everyone. The practice can erode the clear distinction between work and home life, raise stress levels at home and increase the likelihood of burnout from overworking.&lt;/p&gt;

&lt;p&gt;As the world gets into the rhythm of remote work, what have we learned since 2020? Is working from home really the best option? Or is there an alternative solution?&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://builtin.com/remote-work/work-from-home-hybrid-work"&gt;&lt;strong&gt;Work From Home or Work From Office — Why Not Both?&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a webhook and how to use one
&lt;/h2&gt;

&lt;p&gt;At some point, you’ve probably seen the term webhooks written in the documentation or as a field for third-party application integration. It’s not an API but acts sort of like one — well, half of one.&lt;/p&gt;

&lt;p&gt;In its simplest form, a webhook is a one-way interface to another application. For a webhook to work, it needs a trigger event that allows it to share data to a set destination.&lt;/p&gt;

&lt;p&gt;A webhook can be seen as a type of API that’s event-driven rather than based on requests. Instead of an application making a direct request to the API endpoint, something happens to trigger the webhook. The webhook then triggers the destination API.&lt;/p&gt;

&lt;p&gt;Webhooks are often used to bridge third-party applications to another source. It acts as an intermediary between the trigger and the destination source.&lt;/p&gt;

&lt;p&gt;Let’s look at &lt;a href="https://layercode.com/usecsv"&gt;UseCSV&lt;/a&gt; as an example.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://layercode.com/community/webhooks"&gt;&lt;strong&gt;What is a webhook and how to use one&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Return of Server Side Routing
&lt;/h2&gt;

&lt;p&gt;Return? It never went away. Or at least that is what some smug “told you so” is going to say. But for those who haven’t been living under a rock for the past decade, for better or for worse much of the web has been moving to client-side navigation on their sites.&lt;/p&gt;

&lt;p&gt;This movement has been fueled by the adoption of tools that support this sort of architecture. The “modern” JavaScript framework is designed to build applications. Single Page Applications. A name originated from the fact that it does not go back to a backend server to navigate between pages. All routing happens in the browser.&lt;/p&gt;

&lt;p&gt;The common thread is to send less JavaScript to the browser seen most recently championed by &lt;a href="https://dev.to/this-is-learning/is-0kb-of-javascript-in-your-future-48og"&gt;0kb of JS frameworks&lt;/a&gt;. But I want to expand on this as the repercussions are about more than progressive enhancement or lazy hydration. Everything is converging on architectural change that we have not seen the likes of since when SPAs came on the scenes over a decade ago.&lt;/p&gt;

&lt;p&gt;We’re putting routing back on the server.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://dev.to/this-is-learning/the-return-of-server-side-routing-b05"&gt;&lt;strong&gt;The Return of Server Side Routing&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How To Write Commit Messages That Won’t Tilt Your Teammates
&lt;/h2&gt;

&lt;p&gt;We’ve all used &lt;code&gt;git&lt;/code&gt; in some form or another. The code versioning system is an industry staple. With over 40 million users worldwide and 190 million repositories on GitHub, &lt;code&gt;git&lt;/code&gt; is here to stay.&lt;/p&gt;

&lt;p&gt;While the concept of &lt;code&gt;git&lt;/code&gt; is easy - pull your code, do whatever, save, add, commit, and push - there is one thing that no one really talks about and that is the commit message.&lt;/p&gt;

&lt;p&gt;The commit message is such a simple concept yet also one that can cause a lot of issues further down the road. Why? Because you can write whatever you want — including highly useless commit messages like &lt;code&gt;done&lt;/code&gt; and &lt;code&gt;updated&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;So, how exactly should we be writing &lt;code&gt;git&lt;/code&gt; commit messages? Here is a quick and opinionated guide on how to write a highly informative &lt;code&gt;git&lt;/code&gt; commit message that won't tilt your teammates.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://www.dottedsquirrel.com/git-commit-messages/"&gt;&lt;strong&gt;How To Write Commit Messages That Won’t Tilt Your Teammates&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4 steps to becoming an employable self-taught developer
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.cyberstates.org/"&gt;Developers are in demand&lt;/a&gt;. In the U.S, it’s a $1,989 billion industry and makes up 10% of the national economy. Approximately 3.9 million tech jobs were posted in 2020 with software, programmers, web, and QA being the highest in demand.&lt;/p&gt;

&lt;p&gt;I’ve been in the industry for nearly over a decade now and I often get asked the same questions over and over again by devs who are trying to break into the industry. They tend to look something like this:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Do I need a degree? How do I get a job? How do I get experience when everyone wants 2–3 years in a junior role? I’ve applied to over a hundred companies but no one wants me, what am I doing wrong?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;If these questions look familiar, I hope this guide will help you answer them.&lt;/p&gt;

&lt;p&gt;Read it here 👉&lt;a href="https://medium.com/madhash/4-steps-to-becoming-an-employable-self-taught-developer-7a9ed071dddb"&gt; &lt;strong&gt;4 steps to becoming an employable self-taught developer&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Deno is the new Node.js — well, sort of…
&lt;/h2&gt;

&lt;p&gt;It’s been three years since Ryan Dahl — the same guy behind Node.js — hatched Deno into the world wide web. This opensource and V8 runtime powered serverside has over &lt;a href="https://github.com/denoland"&gt;80k stars on GitHub&lt;/a&gt;, &lt;a href="https://twitter.com/deno_land"&gt;42k followers on Twitter&lt;/a&gt;, and &lt;a href="https://deno.com/blog/the-deno-company"&gt;$4.9 million&lt;/a&gt; in seed capital from various investors and Mozilla Corporation for its commercialization.&lt;/p&gt;

&lt;p&gt;But what exactly is Deno? How is Deno different from Node.js? and will it take over as the new Node.js?&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://medium.com/madhash/deno-is-the-new-node-js-well-sort-of-c02069ccdced"&gt;&lt;strong&gt;Deno is the new Node.js — well, sort of…&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use Source Maps in TypeScript Lambda Functions (with Benchmarks)
&lt;/h2&gt;

&lt;p&gt;TypeScript is a popular language for developers of all kinds and it’s made its mark on the serverless space. Most of the major Lambda frameworks now have solid TypeScript support. The days of struggling with webpack configurations are mostly behind us.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://dev.to/aws-builders/how-to-use-source-maps-in-typescript-lambda-functions-with-benchmarks-4bo4"&gt;&lt;strong&gt;How to Use Source Maps in TypeScript Lambda Functions (with Benchmarks)&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Caching In Node.js Applications
&lt;/h2&gt;

&lt;p&gt;In the context of server-side applications, caching aims to improve the application’s response times by reusing previously retrieved or computed data. For example, instead of repeating network requests for data that do not change often or at all (such as a list of banks in your country), you could store the data in the cache after the initial request and retrieve it from there in subsequent requests. This makes the subsequent requests for that data an order of magnitude faster leading to improved application performance, decreased costs, and faster transactions.&lt;/p&gt;

&lt;p&gt;Caching is a common technique for making your applications faster. It lets you avoid slow operations by reusing previous results. In this article, Ayo Isaiah walks us through the different options for caching in NodeJS applications.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://www.honeybadger.io/blog/nodejs-caching/"&gt;&lt;strong&gt;Caching In Node.js Applications&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  10 Best Developer Movies And Series
&lt;/h2&gt;

&lt;p&gt;The criteria to meet this list was pretty straightforward, the movie (or series) had to feature a programmer as the protagonist (or antagonist), not a supporting character like those used to hack the mainframe (looking at you &lt;em&gt;Mission Impossible)&lt;/em&gt;. Without taking any more of your time, here are my top 10 picks for the best developer movies and series that I’ve seen.&lt;/p&gt;

&lt;p&gt;Read it here 👉 &lt;a href="https://cult.honeypot.io/reads/best-developer-movies-and-series"&gt;&lt;strong&gt;10 Best Developer Movies And Series&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's it for this week. Stay tuned for more awesome tech stories and finds next week. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>#001: The Week In Stories - Tech Salaries, Freebies, and Dev Things</title>
      <dc:creator>Aphinya Dechalert</dc:creator>
      <pubDate>Tue, 01 Feb 2022 03:43:37 +0000</pubDate>
      <link>https://dev.to/dottedsquirrel/001-the-week-in-stories-tech-salaries-freebies-and-dev-things-2bmi</link>
      <guid>https://dev.to/dottedsquirrel/001-the-week-in-stories-tech-salaries-freebies-and-dev-things-2bmi</guid>
      <description>&lt;p&gt;Hi all!&lt;/p&gt;

&lt;p&gt;Welcome to the first edition of &lt;strong&gt;{Tech &amp;amp; Dev}&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At the beginning of this year, I made a goal for myself to be more consistent with creating things — whether it be through my writing or making mini-apps on the side to learn new things and keep up with the tech.&lt;/p&gt;

&lt;p&gt;The point is that I make and keep making — come rain, shine, lockdowns, homeschooling, and whatever life will throw at me in 2022. This newsletter is part of the consistency and creation pledge.&lt;/p&gt;

&lt;p&gt;Without further ado, let’s dive into this week’s stories.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;1. What tech companies are really paying their developers&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Asking for money is a touchy business. We don’t want to lose out on a job because we’re asking too much. We also don’t want to be underpaid either. Sometimes, it’s hard to know exactly where we’re standing when it comes to paychecks and how much software developers should be paid.&lt;/p&gt;

&lt;p&gt;Sure, there’s the old method of asking what you think you’re worth — but then we run the risk of undervaluing our skills because we don’t know what the market rates are.&lt;/p&gt;

&lt;p&gt;So I went digging and here’s what I found.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉&lt;a href="https://medium.com/madhash/what-tech-companies-are-really-paying-their-developers-1e1762791888"&gt;What Tech Companies Are Really Paying Their Developers&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;2. How to use Cloudflare tunnels for free&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;You’ve built an app but it still lives on your localhost:3000. You want to share a preview of this app with your friends, boss, or client without the need to deploy it. Or you might just want to test a service worker. Whatever the case, something or someone needs access to your localhost.&lt;/p&gt;

&lt;p&gt;This is where tunnels come in. Cloudflare has a free tunnel service that you can use. I’ve tested it. It’s seamless to start using and less annoying than ngrok.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉 &lt;a href="https://layercode.com/community/cloudflare-tunnels"&gt;How to use Cloudflare tunnels for free&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;3. Why custom react hooks could destroy your app performance&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;For performance-sensitive apps custom React hooks can very easily turn into the biggest performance killer, if not written and used very carefully. This story isn’t about how to build and use hooks — rather, it’s about their performance implication for complicated apps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉&lt;a href="https://www.developerway.com/posts/why-custom-react-hooks-could-destroy-your-app-performance"&gt;Why custom react hooks could destroy your app performance&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;4. A quick field guide to using Remix with Apollo GraphQL&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://remix.run/"&gt;Remix&lt;/a&gt; is the newest and hottest full-stack React-based framework on the block. Newly minted and open-sourced in November, the framework closed off 2021 with&lt;a href="https://github.com/remix-run"&gt; +10k stars on GitHub&lt;/a&gt;. What makes Remix a different kind of React framework is that it’s primarily a server-side rendered framework. On the first page load the page is pre-rendered on the server, which ensures a super-fast load time.&lt;/p&gt;

&lt;p&gt;But how does it work? Here is a quick tutorial on how to use Remix with Apollo GraphQL.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉&lt;a href="https://layercode.com/community/remix-apollo-graphql"&gt;A quick field guide to using Remix with Apollo GraphQL&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;5. Using Sequelize ORM with Node.js &amp;amp; MySQL&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;ORMs help developers to write complicated queries quickly and make it easier to update and reuse the code. However, getting started with ORMs can be challenging due to the learning curve. So, here is a quick tutorial on how to set up Sequelize ORM with Node.js and MySQL.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉&lt;a href="https://layercode.com/community/sequelize-with-nodejs"&gt;Using Sequelize ORM with Node.js &amp;amp; MySQL&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;6. Wanna Upgrade your Data Science Game? Think Like an Engineer&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As a society, we’re drawn to stories of overnight success and of mythical genius that achieves the impossible by building something from nothing. In reality, though, success is more often the result of slow, consistent experimentation and tinkering.&lt;/p&gt;

&lt;p&gt;Here is a piece about creating an environment that supports the iterative development of ideas and validates them in phases.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉&lt;a href="https://builtin.com/data-science/data-science-pipeline-engineering"&gt;Wanna Upgrade Your Data Science Game? Think Like an Engineer.&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;7. Serverless — an overview starter guide&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Serverless is not new. Up until the mid-2000s, servers were giant rooms that lived on-premise to provide businesses with the infrastructure they needed to run their centralized software systems. Then along came cloud computing, along with ideas like elastic load balancing, on-demand self-service, resource pooling, and infrastructure as a service.&lt;/p&gt;

&lt;p&gt;Here is a short history with a list of serverless frameworks you can use for your next project.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉&lt;a href="https://layercode.com/community/serverless-starter"&gt;Serverless — an overview starter guide&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;8. Is Angular Dead in 2022?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;In case you’re unaware, Google has had an interesting track record in the Framework category. So, what’s going on with Angular? Here is a piece that outlines Angular’s potential future fate.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉&lt;a href="https://dev.to/jdgamble555/is-angular-dead-in-2022-bh9"&gt;Is Angular Dead in 2022?&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;9. How to use Firebase Analytics with Angular&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Firebase Analytics is one of the most exciting features of Firebase since it provides an application-focused analytics dashboard with countless features. Here is a quick tutorial on setting up Firebase Analytics with Angular.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉&lt;a href="https://layercode.com/community/firebase-analytics-angular"&gt;How to Use Firebase Analytics with Angular&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;10. Flutter vs. React Native&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Making the same mobile phone app twice is not the best use of a developer’s time. That’s two different platforms to maintain and manage. By requirement, Apple uses Swift. On the other side of the ring sits Android and its Java-based compilers.&lt;/p&gt;

&lt;p&gt;This is where ‘bridging’ frameworks and libraries come in. Flutter and React Native are two popular bridging solutions that make it possible to code once and use multiple platforms. Flutter assumed that you build an app once, and it will work on any screen. React Native is a flavor of React that leverages the current implementation of its JavaScript UI library and makes it possible to run on any mobile device. On the surface, these features sound great — but with every perk, there is a quirk.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Read it here 👉&lt;a href="https://www.tabnine.com/blog/flutter-vs-react-native/"&gt;Flutter vs. React Native&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that's it for this week! Stay tuned for next week's tech and dev finds.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Every Python Dictionary Method Explained Simply</title>
      <dc:creator>Aphinya Dechalert</dc:creator>
      <pubDate>Wed, 30 Jun 2021 12:03:12 +0000</pubDate>
      <link>https://dev.to/dottedsquirrel/every-python-dictionary-method-explained-simply-4ah4</link>
      <guid>https://dev.to/dottedsquirrel/every-python-dictionary-method-explained-simply-4ah4</guid>
      <description>&lt;p&gt;Here is a quick recap of how dictionaries work.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;written with &lt;code&gt;{}&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;changeable, &lt;strong&gt;unordered&lt;/strong&gt;, indexed&lt;/li&gt;
&lt;li&gt;comes with key-pair values &amp;amp; &lt;strong&gt;no duplicates&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;looks something like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pythondictionary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'python'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'data science'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;'third'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s"&gt;'JavaScript'&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here is every Python Dictionary method available.&lt;/p&gt;

&lt;h2&gt;
  
  
  Combining dictionaries
&lt;/h2&gt;

&lt;p&gt;To combine two dictionaries, use a leading &lt;code&gt;**&lt;/code&gt; and then add them to a dictionary. Here is an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'a'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;b&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="s"&gt;'b'&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt;&lt;span class="n"&gt;b&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# {'a': 1, 'b': 2}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.clear()
&lt;/h2&gt;

&lt;p&gt;To remove all items inside a Python dictionary, use &lt;code&gt;clear()&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pythondictionary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pythondictionary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;clear&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# None
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.copy()
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;copy()&lt;/code&gt; will create a shallow copy of the original dictionary.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;pythondictionary&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;pythondictionary&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return: 
# { "a":1, "b":2, "c":3 }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.fromkeys()
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;fromkeys()&lt;/code&gt; lets you create a dictionary from a set of keys stored in a list or tuple. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;keys&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;  &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;dict&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;fromkeys&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# {'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.get()
&lt;/h2&gt;

&lt;p&gt;You can access dictionary attributes with &lt;code&gt;[]&lt;/code&gt; like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# 1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, the safest way to access attributes in a Python dictionary is through using the &lt;code&gt;get()&lt;/code&gt; function. This makes the action explicit. If the attribute doesn’t exist, it will return &lt;code&gt;None&lt;/code&gt;. If you used &lt;code&gt;[]&lt;/code&gt; instead of &lt;code&gt;get()&lt;/code&gt; and the value doesn’t exist, you will get a &lt;code&gt;KeyError&lt;/code&gt; instead.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# 1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want to get an attribute but not sure if it exists or not, you can also assign your own error value to something like &lt;code&gt;undefined&lt;/code&gt; with &lt;code&gt;get()&lt;/code&gt;. Here is an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;d&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="s"&gt;"a"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"b"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"c"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;d&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"f"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"undefined))

# this will return:
# undefined
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.items()
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;item()&lt;/code&gt; will return a dictionary’s key and value pairs as a list of tuples. Here is an example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
  &lt;span class="s"&gt;"make"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Mitsubishi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
  &lt;span class="s"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Lancer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
  &lt;span class="s"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
  &lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"silver"&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# dict_items([('make', 'Mitsubishi'), ('model', 'Lancer'), ('year', 2007), ('color', 'silver')])
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now you can iterate over the results with a loop like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;item&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  
  &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# ('make', 'Mitsubishi')
# ('model', 'Lancer')
# ('year', 2007)
# ('color', 'silver')
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.keys()
&lt;/h2&gt;

&lt;p&gt;Use &lt;code&gt;keys()&lt;/code&gt; if you only need the keys inside a dictionary. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
   &lt;span class="s"&gt;"make"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Mitsubishi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Lancer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"silver"&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;key&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;keys&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;   
   &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# make
# model
# year
# color
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.values()
&lt;/h2&gt;

&lt;p&gt;To only access the values inside a dictionary, use &lt;code&gt;values()&lt;/code&gt;. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
   &lt;span class="s"&gt;"make"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Mitsubishi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Lancer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"silver"&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;values&lt;/span&gt;&lt;span class="p"&gt;():&lt;/span&gt;   
   &lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# Mitsubishi
# Lancer
# 2007
# silver
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.pop()
&lt;/h2&gt;

&lt;p&gt;If you want to remove a specific item from a dictionary based on key name, you can use &lt;code&gt;pop()&lt;/code&gt;. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
   &lt;span class="s"&gt;"make"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Mitsubishi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Lancer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"silver"&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;pop&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# {'make': 'Mitsubishi', 'model': 'Lancer', 'color': 'silver'}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.popitem()
&lt;/h2&gt;

&lt;p&gt;To remove the last item in the dictionary, use &lt;code&gt;popitem()&lt;/code&gt;. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
   &lt;span class="s"&gt;"make"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Mitsubishi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Lancer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"silver"&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;popitem&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# ('color', 'silver')
&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# {'make': 'Mitsubishi', 'model': 'Lancer', 'year': 2007}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.setdefault()
&lt;/h2&gt;

&lt;p&gt;If a key doesn’t exist, it returns &lt;code&gt;None&lt;/code&gt; by default. However, you can set the return value through &lt;code&gt;setdefault()&lt;/code&gt;. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
   &lt;span class="s"&gt;"make"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Mitsubishi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Lancer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"silver"&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setdefault&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"origin"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"undefined"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;setdefault&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;"undefined"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# undefined
# followed by (because the key exists):
# Lancer
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  dict.update()
&lt;/h2&gt;

&lt;p&gt;To insert an item into a dictionary, use &lt;code&gt;update()&lt;/code&gt;. For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;car&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  
   &lt;span class="s"&gt;"make"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Mitsubishi"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Lancer"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"year"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="mi"&gt;2007&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;   
   &lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"silver"&lt;/span&gt;
   &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;update&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;&lt;span class="s"&gt;"origin"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s"&gt;"Japan"&lt;/span&gt;&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;car&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c1"&gt;# this will return:
# {'make': 'Mitsubishi', 'model': 'Lancer', 'year': 2007, 'origin': 'Japan'}
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And that's basically it. &lt;/p&gt;

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