<?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: Universal Equations</title>
    <description>The latest articles on DEV Community by Universal Equations (@uequations).</description>
    <link>https://dev.to/uequations</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%2Forganization%2Fprofile_image%2F2237%2F333f36c2-fdb1-47b1-96a2-b045072f0cf0.png</url>
      <title>DEV Community: Universal Equations</title>
      <link>https://dev.to/uequations</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/uequations"/>
    <language>en</language>
    <item>
      <title>Becoming a JavaScript Jedi - Mastering the JavaScript Filter</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Sun, 21 Nov 2021 18:55:55 +0000</pubDate>
      <link>https://dev.to/uequations/becoming-a-javascript-jedi-mastering-the-javascript-filter-14eh</link>
      <guid>https://dev.to/uequations/becoming-a-javascript-jedi-mastering-the-javascript-filter-14eh</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--V9EQ18iG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/uequations/image/upload/c_fit%2Ce_sharpen:100%2Ch_625%2Cw_1200/v1637519359/Disruptive%2520SmackTalk%2520/becoming-javascript-jedi-mastering-javascript-filter/35476539.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--V9EQ18iG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/uequations/image/upload/c_fit%2Ce_sharpen:100%2Ch_625%2Cw_1200/v1637519359/Disruptive%2520SmackTalk%2520/becoming-javascript-jedi-mastering-javascript-filter/35476539.jpg" alt="javascript filter" width="833" height="625"&gt;&lt;/a&gt;&lt;br&gt;
Author: &lt;a href="https://twitter.com/MensahAlkebuLan" rel="noopener"&gt;Mensah Alkebu-Lan&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;p&gt;Prerequisites&lt;br&gt;
Discussion&lt;br&gt;
References&lt;/p&gt;
&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Some familiarity with the JavaScript programming language.&lt;br&gt;
Some familiarity with arrow functions.&lt;br&gt;
Some familiarity with prototypes in JavaScript.&lt;/p&gt;
&lt;h2&gt;
  
  
  Discussion
&lt;/h2&gt;

&lt;p&gt;Arrays in JavaScript are list-like objects whose prototype has methods to perform traversal and mutation operations. There are countless use cases in Web Development where arrays will be useful.&lt;/p&gt;

&lt;p&gt;The Array.prototype.filter() method creates a new filtered array containing all of the elements in the array that pass the test implemented by the provider function. This provider function can be an arrow function taking an element of the array as input and a boolean pass/fail as output.  To clarify, if the output is true the element will be included in the new filtered array. As with most methods in JavaScript, there is considerable flexibility in how they are implemented. For example, instead of an arrow function, the filter method can also take a callback function that returns true or false.&lt;/p&gt;

&lt;p&gt;Below is a typical example of how the filter function is used:&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;var&lt;/span&gt; &lt;span class="nx"&gt;arr1&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="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="nx"&gt;arr2&lt;/span&gt; &lt;span class="o"&gt;=&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;4&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="nx"&gt;res&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr1&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;arr2&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;item&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;When this program is executed, the result should be [1,3]. That is, for each of the elements is arr1, the provider function is going to check whether the array [2,4] includes that item. If the element is neither 2 nor 4, it will be added to the filtered array. &lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt; Array.prototype.filter() - JavaScript | MDN. &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter"&gt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter&lt;/a&gt;. Assessed 11-21-2021.&lt;/li&gt;
&lt;li&gt; Array - JavaScript | MDN. &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array"&gt;https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array&lt;/a&gt;. Assessed 11-21-2021.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;View original article at &lt;a href="https://voices.hassanriver.com/article/2021/11/becoming-javascript-jedi-mastering-javascript-filter/"&gt;https://voices.hassanriver.com/article/2021/11/becoming-javascript-jedi-mastering-javascript-filter/&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>functional</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Getting Started with React Bootstrap</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Sat, 20 Nov 2021 04:12:45 +0000</pubDate>
      <link>https://dev.to/uequations/getting-started-with-react-bootstrap-1pni</link>
      <guid>https://dev.to/uequations/getting-started-with-react-bootstrap-1pni</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_BxOjFhq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/uequations/image/upload/c_fit%2Ce_sharpen:100%2Ch_625%2Cw_1200/v1637359162/Disruptive%2520SmackTalk%2520/getting-started-react-bootstrap/getting-started-react-bootstrap.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_BxOjFhq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/uequations/image/upload/c_fit%2Ce_sharpen:100%2Ch_625%2Cw_1200/v1637359162/Disruptive%2520SmackTalk%2520/getting-started-react-bootstrap/getting-started-react-bootstrap.jpg" alt="react bootstrap" width="880" height="586"&gt;&lt;/a&gt;&lt;br&gt;
Author: &lt;a href="https://www.linkedin.com/in/diaraye-sylla-398298161/" rel="noopener"&gt;Mensah Alkebu-Lan&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Table of Contents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Install with Dependencies&lt;/li&gt;
&lt;li&gt;Let’s Develop&lt;/li&gt;
&lt;li&gt;Let’s Run It&lt;/li&gt;
&lt;li&gt;References&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Install with Dependencies
&lt;/h2&gt;

&lt;p&gt;If you’re using &lt;em&gt;npm init&lt;/em&gt; to bootstrap your initial project, I would recommend using &lt;em&gt;src/index.js&lt;/em&gt; when prompted for your &lt;em&gt;package.json&lt;/em&gt; main as opposed to the default value &lt;em&gt;index.js&lt;/em&gt;. If you’re prompted for a test command, use “react-scripts test.” We'll update the rest of the &lt;em&gt;package.json&lt;/em&gt; later.  &lt;/p&gt;

&lt;p&gt;Once the process is complete, you can use the following command to add the necessary dependencies to a newly created React Bootstrap-based project.&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;react react-dom react-bootstrap react-scripts bootstrap@5.1.3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice, we’re using the 5.1.3 version of Bootstrap. Now, as hinted above, let’s create some folders in the root directory. Naturally, if you’re using &lt;em&gt;create-react-app&lt;/em&gt;, some of these steps will already be done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s Develop
&lt;/h2&gt;

&lt;p&gt;First, create a public folder containing an &lt;em&gt;index.html&lt;/em&gt; file.  A standard &lt;em&gt;index.html&lt;/em&gt; file for a React application is the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt; &lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"utf-8"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1"&lt;/span&gt; &lt;span class="nt"&gt;/&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;React-Bootstrap Starter&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;noscript&amp;gt;&lt;/span&gt;You need to enable JavaScript to run this app.&lt;span class="nt"&gt;&amp;lt;/noscript&amp;gt;&lt;/span&gt;
   &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"root"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then, create a &lt;em&gt;src&lt;/em&gt; folder. To start, this can contain an empty &lt;em&gt;index.js&lt;/em&gt;, &lt;em&gt;App.js&lt;/em&gt;, and &lt;em&gt;App.css&lt;/em&gt; file. &lt;/p&gt;

&lt;p&gt;Let's fill two of these files in. A standard &lt;em&gt;index.js&lt;/em&gt; file for a React application is the following:&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;React&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;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;ReactDOM&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;react-dom&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;App&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;ReactDOM&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;render&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;App&lt;/span&gt; &lt;span class="o"&gt;/&amp;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="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;root&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To use bootstrap, add the following import:&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bootstrap/dist/css/bootstrap.min.css&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice the &lt;em&gt;index.js&lt;/em&gt; file has an import that refers to App. Let’s add App to our App.js file.&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;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Container&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;react-bootstrap/Container&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Button&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;react-bootstrap/Button&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./App.css&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="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="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Container&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;Button&lt;/span&gt; &lt;span class="nx"&gt;variant&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;primary&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;Click&lt;/span&gt; &lt;span class="nx"&gt;Me&lt;/span&gt;&lt;span class="o"&gt;!&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Button&lt;/span&gt;&lt;span class="err"&gt;&amp;gt;
&lt;/span&gt;   &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="sr"&gt;/Container&lt;/span&gt;&lt;span class="err"&gt;&amp;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;The &lt;em&gt;App.css&lt;/em&gt; can be left blank and updated as needed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let’s Run It
&lt;/h2&gt;

&lt;p&gt;We’re almost ready to run this. We’re going to need to enact some changes in the &lt;em&gt;package.json&lt;/em&gt; first. First let’s update “scripts” so we at least have the four basic commands:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="nl"&gt;"scripts"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"test"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-scripts test"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"start"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-scripts start"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"build"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-scripts build"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"eject"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"react-scripts eject"&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I know we don’t have unit tests. We’ll get to that next time.&lt;/p&gt;

&lt;p&gt;What we have is quite simple, but it will run. When you try to run the app (i.e. &lt;em&gt;npm run start&lt;/em&gt; or &lt;em&gt;yarn start&lt;/em&gt;), you may be prompted to update &lt;em&gt;browserslist&lt;/em&gt;. If not, just add it manually to your &lt;em&gt;package.json&lt;/em&gt; file as is shown below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"browserslist"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"production"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="s2"&gt;"&amp;gt;0.2%"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="s2"&gt;"not dead"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="s2"&gt;"not op_mini all"&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="nl"&gt;"development"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="s2"&gt;"last 1 chrome version"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="s2"&gt;"last 1 firefox version"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="s2"&gt;"last 1 safari version"&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Once start up is completed, you should be able to pull up your web app by pointing your browser to &lt;em&gt;&lt;a href="http://localhost:3000"&gt;http://localhost:3000&lt;/a&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;You can find the source code for this exercise on &lt;a href="https://github.com/uequations/React-Bootstrap-Starter"&gt;Github&lt;/a&gt;.&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt; React-Bootstrap Documentation. &lt;a href="https://react-bootstrap.github.io/getting-started/introduction/"&gt;https://react-bootstrap.github.io/getting-started/introduction/&lt;/a&gt;. Accessed 11/15/2021.&lt;/li&gt;
&lt;li&gt; Getting Started. &lt;a href="https://react-bootstrap.github.io/getting-started/introduction/"&gt;https://react-bootstrap.github.io/getting-started/introduction/&lt;/a&gt;. Accessed 11/15/2021.&lt;/li&gt;
&lt;li&gt; How to Use React Bootstrap with NPM. &lt;a href="https://www.pluralsight.com/guides/how-to-use-react-bootstrap-with-npm"&gt;https://www.pluralsight.com/guides/how-to-use-react-bootstrap-with-npm&lt;/a&gt;. Accessed 11/19/2021.&lt;/li&gt;
&lt;li&gt; react-bootstrap/react-bootstrap: Bootstrap components built with React. &lt;a href="https://github.com/react-bootstrap/react-bootstrap"&gt;https://github.com/react-bootstrap/react-bootstrap&lt;/a&gt;. Accessed 11/19/2021.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;View the original article at&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://voices.hassanriver.com/article/2021/11/getting-started-react-bootstrap/"&gt;https://voices.hassanriver.com/article/2021/11/getting-started-react-bootstrap/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>react</category>
    </item>
    <item>
      <title>Restful APIs Are Good, But GraphQL APIs Are Usually Better</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Mon, 26 Apr 2021 19:37:15 +0000</pubDate>
      <link>https://dev.to/uequations/restful-apis-are-good-but-graphql-apis-are-usually-better-31l0</link>
      <guid>https://dev.to/uequations/restful-apis-are-good-but-graphql-apis-are-usually-better-31l0</guid>
      <description>&lt;p&gt;According to the GraphQL Foundation, GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. Like many influential technologies, GraphQL was developed by Facebook in 2012. In their own words they “needed a data-fetching API powerful enough to describe all of Facebook, yet simple enough to be easy to learn” by their developers.&lt;/p&gt;

&lt;p&gt;For a few years, GraphQL was used internally for their mobile applications. The first GraphQL repos were open sourced in 2015. One of the Github repos contained the GraphQL specification and another contained a GraphQL JavaScript reference implementation. &lt;br&gt;
GraphQL APIs draw a natural comparison and contrast to Restful APIs. I should mention in the very beginning there are benefits to both approaches.&lt;/p&gt;

&lt;p&gt;Don’t force adopt GraphQL when REST makes more sense. Even if you do decide to go with GraphQL APIs, be sure to continue REST-based best practices. For example, optimize for reusability.&lt;/p&gt;

&lt;p&gt;A core distinction of GraphQL is it is optimized for performance and flexibility. A big part of this is instead of returning a complete dataset, GraphQL allows you to tailor the request to just give you the data you need. This is a notable change from RESTful APIs, since REST endpoints don’t allow you to tailor the data that is returned. Another advantage is operations that would require multiple RESTful API calls can be simplified to a single GraphQL API call.&lt;/p&gt;

&lt;p&gt;One of the downsides of GraphQL is there is generally a learning curve. A lot of this has to do with the GraphQL schema. The GraphQL schema defines a collection of types and the relationship between those types.&lt;/p&gt;

&lt;p&gt;The GraphQL ecosystem is large. One place you’ll see it used often is integrated with headless CMSs. Examples of such CMSs are Sanity IO, GraphCMS, and Sitecore.&lt;/p&gt;

&lt;p&gt;You also not only have GraphQL reference implementations for many programming languages, you also have frameworks that work well with or are a part of some of the popular service and app development frameworks. This list of frameworks includes NestJS, Quarkus, and GatsbyJS.&lt;/p&gt;

&lt;p&gt;Hopefully, we can follow up this conversation with one of at least one of the GraphQL servers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;View the original article and more at: &lt;a href="https://www.hassanriver.com/2021/04/article/restful-apis-are-good-but-graphql-apis-are-usually-better/"&gt;Hassan River&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt;GraphQL: Core Features, Architecture, Pros &amp;amp; Cons. &lt;a href="https://www.altexsoft.com/blog/engineering/graphql-core-features-architecture-pros-and-cons/"&gt;https://www.altexsoft.com/blog/engineering/graphql-core-features-architecture-pros-and-cons/&lt;/a&gt;. Accessed 20 Apr 2021.&lt;/li&gt;
&lt;li&gt;GraphQL: A data query language. &lt;a href="https://engineering.fb.com/2015/09/14/core-data/graphql-a-data-query-language/"&gt;https://engineering.fb.com/2015/09/14/core-data/graphql-a-data-query-language/&lt;/a&gt;. Accessed 20 Apr 2021.&lt;/li&gt;
&lt;li&gt;GraphQL vs REST: What you need to know. &lt;a href="https://www.rubrik.com/en/blog/technology/19/11/graphql-vs-rest-apis"&gt;https://www.rubrik.com/en/blog/technology/19/11/graphql-vs-rest-apis&lt;/a&gt;. Accessed 20 Apr 2021.&lt;/li&gt;
&lt;li&gt;Schema Basics - Apollo Server - Apollo GraphQL Docs. &lt;a href="https://www.apollographql.com/docs/apollo-server/schema/schema/"&gt;https://www.apollographql.com/docs/apollo-server/schema/schema/&lt;/a&gt;. Accessed 20 Apr 2021.&lt;/li&gt;
&lt;li&gt;What is GraphQL? &lt;a href="https://www.redhat.com/en/topics/api/what-is-graphql"&gt;https://www.redhat.com/en/topics/api/what-is-graphql&lt;/a&gt;. Accessed 20 Apr 2021.&lt;/li&gt;
&lt;li&gt;Interacting with APIs: Rest and GraphQL. &lt;a href="https://cloud.google.com/blog/products/api-management/interacting-with-apis-rest-and-graphql"&gt;https://cloud.google.com/blog/products/api-management/interacting-with-apis-rest-and-graphql&lt;/a&gt;. Accessed 20 Aor 2021.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>graphql</category>
    </item>
    <item>
      <title>Sass Lead Responds to ‘Please Remove’ the Black Lives Matter Sass Site Banner Comment</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Sun, 09 Aug 2020 01:48:57 +0000</pubDate>
      <link>https://dev.to/uequations/sass-lead-responds-to-please-remove-the-black-lives-matter-sass-site-banner-comment-3128</link>
      <guid>https://dev.to/uequations/sass-lead-responds-to-please-remove-the-black-lives-matter-sass-site-banner-comment-3128</guid>
      <description>&lt;p&gt;Recently, Lead Designer and Developer of the Sass project, Natalie Weizenbaum &lt;a href="https://github.com/sass/sass-site/issues/461#issuecomment-663722319"&gt;responded&lt;/a&gt; to a Github issue post asking that the Black Lives Matter banner be removed from the site.&lt;/p&gt;

&lt;p&gt;If you don't know much about Web development, Sass has built a strong reputation in the open-source community as being a mature, stable, and powerful professional-grade CSS extension language. Now, if you don't know what CSS is, don't worry about it. You still know enough to know some of the sites you go to these days have a banner at the top of the screen expressing support for the movement known as Black Lives Matter. On the &lt;a href="https://sass-lang.com/"&gt;Sass site&lt;/a&gt;, there is such a banner, and, in a Github issue, a developer asked that the banner be taken down. You don't have to know too much about Web development to understand Natalie's response:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6fLLnKGW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://mk0communityandqlc3m.kinstacdn.com/wp-content/uploads/2020/08/nex3-Overview.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6fLLnKGW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://mk0communityandqlc3m.kinstacdn.com/wp-content/uploads/2020/08/nex3-Overview.jpg" alt="Natalie Weizenbaum | Lead Designer and Developer of Sass"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Natalie Weizenbaum | Lead Designer and Developer of Sass&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Technical work is inseparable from politics whether that's by causing or preventing harm to people, embedding biases in our products or working to highlight those biases so we move past them, pointedly avoiding any statement avoiding any statement that could be too political or standing up for the rights of our fellow human beings. Even you are engaging in political action by demanding our silence on the subject of Black Lives.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Sass in particular has always been a political project. From its earliest days it sought to empower designers who tended to have a much stronger representation of marginalized groups than their engineering counterparts, and in so doing it gave these marginalized people a larger place and a louder voice in tech as a whole. The most prominent voices in the Sass community have always been people pf color, queer people, and women, and empowering these people is a political act in an industry dominated by straight white men.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Saying "Black Lives Matter" isn't an abstract political point. It's a matter of life and death, particularly for our many Black users and contributors. Police violence is a part of their lives as Sass is a part of their lives, and we take a stand against that violence because we care about them as not just users but as whole people.&lt;/em&gt;&lt;/p&gt;

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

&lt;ol&gt;
&lt;li&gt; Sass Black Lives Matter Banner #461. &lt;a href="https://github.com/sass/sass-site/issues/461#issuecomment-663722319"&gt;https://github.com/sass/sass-site/issues/461#issuecomment-663722319&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>css</category>
      <category>github</category>
    </item>
    <item>
      <title>Recognizing Those All over The World Who Were Working to Design and Deploy Open-Source Ventilators</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Thu, 23 Jul 2020 22:28:46 +0000</pubDate>
      <link>https://dev.to/uequations/recognizing-those-all-over-the-world-who-were-working-to-design-and-deploy-open-source-ventilators-1p3p</link>
      <guid>https://dev.to/uequations/recognizing-those-all-over-the-world-who-were-working-to-design-and-deploy-open-source-ventilators-1p3p</guid>
      <description>&lt;p&gt;One of the many encouraging things I've seen amidst this global COVID-19 pandemic is the amount of innovation going on all over the world to combat it. For example, engineers, designers, and tech founders in various parts of the world were fleshing out their designs to create open-source ventilators as a backup in case their respective countries ran into shortages. Each team used different hardware devices and programmatic languages to seek to achieve the same goal of coming up with a device that could potentially save lives. Many even made prototypes, and some of these prototypes were tested on artificial lungs. &lt;/p&gt;

&lt;p&gt;They were all great projects, but I have to say my personal favorite was the one worked on in Colombia. I'll let you dig and find your favorite :-).&lt;/p&gt;

&lt;p&gt;To get you started, below is just a small sample of source code repositories of open-source ventilators worked on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;OpenLung Emergency Medical Ventilator. &lt;a rel="noreferrer noopener" href="https://gitlab.com/open-source-ventilator/ventilator/OpenLung"&gt;https://gitlab.com/open-source-ventilator/ventilator/OpenLung&lt;/a&gt;. Last accessed: 7/6/2020.&lt;/li&gt;
&lt;li&gt;Open_Source_Ventilator. &lt;a rel="noreferrer noopener" href="https://github.com/CSSALTlab/Open_Source_Ventilator"&gt;https://github.com/CSSALTlab/Open_Source_Ventilator&lt;/a&gt;. Last accessed: 7/6/2020.&lt;/li&gt;
&lt;li&gt;pandemic-ventilator-2.0. &lt;a href="https://github.com/Mascobot/pandemic-ventilator-2.0"&gt;https://github.com/Mascobot/pandemic-ventilator-2.0&lt;/a&gt;. Last accessed: 7/6/2020.&lt;/li&gt;
&lt;li&gt;Low-Cost Open-Source Ventilator-ish Device or PAPR. &lt;a href="https://github.com/jcl5m1/ventilator"&gt;https://github.com/jcl5m1/ventilator&lt;/a&gt;. Last accessed: 7/6/2020.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;There’s A Shortage Of Ventilators For Coronavirus Patients, So This International Group Invented An Open Source Alternative That’s Being Tested Next Week. &lt;a href="https://www.forbes.com/sites/alexandrasternlicht/2020/03/18/theres-a-shortage-of-ventilators-for-coronavirus-patients-so-this-international-group-invented-an-open-source-alternative-thats-being-tested-next-week/#4efca37c3ba0" rel="noreferrer noopener"&gt;https://www.forbes.com/sites/alexandrasternlicht/2020/03/18/theres-a-shortage-of-ventilators-for-coronavirus-patients-so-this-international-group-invented-an-open-source-alternative-thats-being-tested-next-week/#4efca37c3ba0&lt;/a&gt;. Last accessed: 7/6/2020. &lt;/li&gt;
&lt;li&gt;Open-Source Ventilator Project. &lt;a href="https://simulation.health.ufl.edu/technology-development/open-source-ventilator-project/"&gt;https://simulation.health.ufl.edu/technology-development/open-source-ventilator-project/&lt;/a&gt;. Last accessed: 7/6/2020.&lt;/li&gt;
&lt;li&gt;Designing a low-cost, open source ventilator with Arduino. &lt;a href="https://blog.arduino.cc/2020/03/17/designing-a-low-cost-open-source-ventilator-with-arduino/" rel="noreferrer noopener"&gt;https://blog.arduino.cc/2020/03/17/designing-a-low-cost-open-source-ventilator-with-arduino/&lt;/a&gt;. Last accessed: 7/6/2020.&lt;/li&gt;
&lt;li&gt;An Open Source Ventilator Powered by Raspberry Pi and Arduino Goes Into Testing in Colombia. &lt;a href="https://www.hackster.io/news/an-open-source-ventilator-powered-by-raspberry-pi-and-arduino-goes-into-testing-in-colombia-6c3f04b1ca94"&gt;https://www.hackster.io/news/an-open-source-ventilator-powered-by-raspberry-pi-and-arduino-goes-into-testing-in-colombia-6c3f04b1ca94&lt;/a&gt;. Last accessed: 7/6/2020.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
    </item>
    <item>
      <title>Debezium: Open-Source Technology for Change Data Capture</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Thu, 23 Jul 2020 22:19:24 +0000</pubDate>
      <link>https://dev.to/uequations/debezium-open-source-technology-for-change-data-capture-cge</link>
      <guid>https://dev.to/uequations/debezium-open-source-technology-for-change-data-capture-cge</guid>
      <description>&lt;h2&gt;Introducing Debezium&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://debezium.io/" rel="noreferrer noopener"&gt;Debezium&lt;/a&gt; is an open-source tool for Change Data Capture (CDC). It does this as a distributed platform that turns data stores into event streams. This allows you to focus only on data that has changed instead of all data. For example, it enables you to keep disparate data systems in continuous sync and to respond quickly to new information. &lt;/p&gt;

&lt;p&gt;Built on top of &lt;a href="https://kafka.apache.org/" rel="noreferrer noopener"&gt;Apache Kafka&lt;/a&gt; &amp;amp; Kafka Connect, a traditional "Debezium-centric" architecture comprises source and sink data stores with a selection of Kafka Connect compatible connectors able to communicate changes taking place in the source data store to the sink data store.  &lt;/p&gt;

&lt;p&gt;If you're comfortable with &lt;a href="https://www.docker.com/" rel="noreferrer noopener"&gt;Docker&lt;/a&gt; and &lt;a href="https://kubernetes.io/" rel="noreferrer noopener"&gt;Kubernetes&lt;/a&gt;, a basic Debezium setup should only be moderately difficult. The main ingredients are Apache Kafka and Kafka Connect. Fortunately, in Debezium's &lt;a href="https://hub.docker.com/u/debezium" rel="noreferrer noopener"&gt;public Docker repo&lt;/a&gt;, there are Zookeeper, Kafka, and Kafka Connect images ready to go.  If you can get Apache Kafka with Kafka Connect up &amp;amp; running, you have several Debezium deployment options to choose from. Let's go over a few.&lt;/p&gt;

&lt;h2&gt;Some Kafka Connect Deployment Options&lt;/h2&gt;

&lt;p&gt;Since Kafka Connect is Debezium's foundation, for the time-being, we'll focus mainly on Kafka Connect deployment options.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://camel.apache.org/" rel="noreferrer noopener"&gt;Apache Camel&lt;/a&gt; and Debezium are a natural fit since Camel is known for its ability to integrate data consumer and producer systems. We also can't lose sight of the fact both technologies are strongly supported by &lt;a href="https://www.redhat.com/en" rel="noreferrer noopener"&gt;Red Hat&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;You can also use Debezium in &lt;a href="https://github.com/GoogleCloudPlatform/DataflowTemplates/tree/master/v2/cdc-parent" rel="noreferrer noopener"&gt;Google Cloud&lt;/a&gt; with technologies like &lt;a href="https://cloud.google.com/pubsub" rel="noreferrer noopener"&gt;PubSub&lt;/a&gt; and &lt;a href="https://cloud.google.com/dataflow" rel="noreferrer noopener"&gt;DataFlow&lt;/a&gt;. In this architecture, PubSub plays a similar role as Apache Kafka in a traditional setup, but you'll still need some knowledge of the Kafka Connect libraries. &lt;/p&gt;

&lt;p&gt;In a traditional 'Debezium-centric' architecture, a relational database is used for the sink data store, but there are use cases such as database caching where an in-memory computing platform like GridGain can be used.&lt;/p&gt;

&lt;p&gt;Before I forget, I have to thank Gunnar Morling at Red Hat and his team for all the work they are putting into Debezium.&lt;/p&gt;

&lt;h2&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Extending Kafka connectivity with Apache Camel Kafka connectors. &lt;a href="https://developers.redhat.com/blog/2020/05/19/extending-kafka-connectivity-with-apache-camel-kafka-connectors/" rel="noreferrer noopener"&gt; https://developers.redhat.com/blog/2020/05/19/extending-kafka-connectivity-with-apache-camel-kafka-connectors/&lt;/a&gt;. Last accessed: 7/16/2020.&lt;/li&gt;
&lt;li&gt;How do I move data from MySQL to BigQuery? &lt;a href="https://cloud.google.com/blog/products/data-analytics/how-to-move-data-from-mysql-to-bigquery" rel="noreferrer noopener"&gt;https://cloud.google.com/blog/products/data-analytics/how-to-move-data-from-mysql-to-bigquery&lt;/a&gt;. Last: 7/16/2020.&lt;/li&gt;
&lt;li&gt;Change Data Capture Between MySQL and GridGain With Debezium. &lt;a href="https://www.gridgain.com/resources/blog/change-data-capture-between-mysql-and-gridgain-debezium" rel="noreferrer noopener"&gt;https://www.gridgain.com/resources/blog/change-data-capture-between-mysql-and-gridgain-debezium&lt;/a&gt;. Last accessed: 7/21/2020.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://techcommunity.microsoft.com/t5/azure-database-for-postgresql/change-data-capture-in-postgres-how-to-use-logical-decoding-and/ba-p/1396421"&gt;Change data capture in Postgres: How to use logical decoding and wal2json&lt;/a&gt;. &lt;a href="https://developers.redhat.com/blog/2020/05/19/extending-kafka-connectivity-with-apache-camel-kafka-connectors/" rel="noreferrer noopener"&gt;https://developers.redhat.com/blog/2020/05/19/extending-kafka-connectivity-with-apache-camel-kafka-connectors/&lt;/a&gt;. Last accessed: 7/21/2020.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>docker</category>
      <category>kubernetes</category>
    </item>
    <item>
      <title>Confluent’s Latest Funding Round Is One of Many Indicators Apache Kafka Is Here to Stay</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Fri, 17 Jul 2020 17:40:28 +0000</pubDate>
      <link>https://dev.to/uequations/confluent-s-latest-funding-round-is-one-of-many-indicators-apache-kafka-is-here-to-stay-ngb</link>
      <guid>https://dev.to/uequations/confluent-s-latest-funding-round-is-one-of-many-indicators-apache-kafka-is-here-to-stay-ngb</guid>
      <description>&lt;h6&gt;
  
  
  tags: &lt;code&gt;BeSafe&lt;/code&gt; &lt;code&gt;kafka&lt;/code&gt; &lt;code&gt;ecosystem&lt;/code&gt; &lt;code&gt;round&lt;/code&gt; &lt;code&gt;series&lt;/code&gt; &lt;code&gt;valuation&lt;/code&gt;
&lt;/h6&gt;

&lt;p&gt;With &lt;a href="https://www.confluent.io/"&gt;Confluent&lt;/a&gt; recently raising a $250 million Series E round on a $4.5 billion valuation, it’s safe to say &lt;a href="https://kafka.apache.org/"&gt;Apache Kafka&lt;/a&gt; and its ecosystem is here to stay.&lt;/p&gt;

&lt;p&gt;We celebrate the fact so many developers from Confluent and other companies have contributed over the years to make Kafka better and easier to use. For example, Colin McCabe at Confluent is currently working on &lt;a href="https://issues.apache.org/jira/browse/KAFKA-9119"&gt;KIP-500&lt;/a&gt; which aims to eliminate Apache Zookeeper as a dependency to store Kafka’s metadata. This will make Kafka easier to use.&lt;/p&gt;

&lt;p&gt;In the latest Kafka 2.5 release, some progress on KIP-500 was made with the completion of &lt;a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-555%3A+Deprecate+Direct+Zookeeper+access+in+Kafka+Administrative+Tools"&gt;KIP-555&lt;/a&gt; and &lt;a href="https://cwiki.apache.org/confluence/display/KAFKA/KIP-543%3A+Expand+ConfigCommand%27s+non-ZK+functionality"&gt;KIP-543&lt;/a&gt;. KIP-555 is about the deprecation process leading up to KIP-500. Now, whenever the –-zookeeper flag is used with either kafka-configs.sh or kafka-message-partititions.sh, you should get a warning encouraging you to use -–bootstrap-server instead of the --zookeeper flag. The goal of KIP-543 is to handle more operations without direct Zookeeper access. This was accomplished with some modifications to Kafka’s ConfigCommand object. Arguably Kafka’s closest “competition”, &lt;a href="https://pulsar.apache.org/"&gt;Apache Pulsar&lt;/a&gt;, also uses &lt;a href="https://zookeeper.apache.org/"&gt;Apache Zookeeper&lt;/a&gt;, so, once KIP-500 is complete, this would provide an additional point of differentiation between the two technologies.&lt;/p&gt;

&lt;p&gt;At this point, there aren’t many questions lingering for this technology. One of the few questions that needs to be answered is one that needed to be answered for many of the technologies as prominent as this one. That is defining the boundaries of when Kafka should be used and shouldn’t. It’s easy to lose sight of this when you have incredible add-on technologies like &lt;a href="https://ksqldb.io/"&gt;ksqlDB&lt;/a&gt; that allows you to use language-neutral SQL to author stream processing programs.&lt;/p&gt;

&lt;p&gt;For example, we often associate the concept of &lt;a href="https://kafka.apache.org/21/documentation/streams/core-concepts"&gt;stream-table&lt;/a&gt; duality with Kafka. Some have gone so far as to say this is &lt;a href="https://news.ycombinator.com/item?id=23206566"&gt;misleading&lt;/a&gt;. The argument is this may persuade development teams into thinking Kafka can be used as a relational database. The counter-argument is this is not listed as one of Kafka’s typical &lt;a href="https://kafka.apache.org/uses"&gt;use cases&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; What every software engineer should know about Apache Kafka. &lt;a href="https://news.ycombinator.com/item?id=23206566"&gt;https://news.ycombinator.com/item?id=23206566&lt;/a&gt;. Last accessed: 7/7/2020.&lt;/li&gt;
&lt;li&gt; Confluent Raises $250M and Kicks Off Project Metamorphosis. &lt;a href="https://www.confluent.io/blog/series-e-round-metamorphosis/"&gt;https://www.confluent.io/blog/series-e-round-metamorphosis/&lt;/a&gt;. Last accessed: 7/7/2020.&lt;/li&gt;
&lt;li&gt; Apache Kafka Needs No Keeper: Removing the Apache ZooKeeper Dependency. &lt;a href="https://www.confluent.io/blog/removing-zookeeper-dependency-in-kafka/"&gt;https://www.confluent.io/blog/removing-zookeeper-dependency-in-kafka/&lt;/a&gt;. Last accessed: 7/7/2020.&lt;/li&gt;
&lt;li&gt; Announcing ksqlDB 0.10.0. &lt;a href="https://www.confluent.io/blog/ksqldb-0-10-0-latest-features-updates/"&gt;https://www.confluent.io/blog/ksqldb-0-10-0-latest-features-updates/&lt;/a&gt;. Last accessed: 7/16/2020.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>The Tech community’s response to Racial Justice Reform is led by IBM.</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Thu, 18 Jun 2020 23:14:27 +0000</pubDate>
      <link>https://dev.to/uequations/the-tech-community-s-response-to-racial-justice-reform-is-led-by-ibm-1gl4</link>
      <guid>https://dev.to/uequations/the-tech-community-s-response-to-racial-justice-reform-is-led-by-ibm-1gl4</guid>
      <description>&lt;p&gt;A link to IBM CEO’s letter to Congress on Racial Justice Reform has been added to our news site. I will more than likely be writing a blog post on our tech blog which will essentially be a commentary on this letter and may also reference the statements made by Microsoft and Salesforce on this issue. Possibly more than one post.&lt;/p&gt;

&lt;p&gt;As I mentioned before, a high school student can understand everything in this letter, and you may even encourage them to not only read it but also to use it as a template to write his/her own letter to Kamala and Cory. While we’re on this topic, I should also say one feature we will be adding to the news site is marking articles that can comfortably be read by a high school student. We just have to update the data model to allow for this. Parents, I think you’ll know what to do with this information&lt;br&gt;
:-).&lt;/p&gt;

&lt;p&gt;References&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; IBM CEO’s Letter to Congress on Racial Justice Reform. &lt;a href="https://www.ibm.com/blogs/policy/facial-recognition-susset-racial-justice-reforms/"&gt;https://www.ibm.com/blogs/policy/facial-recognition-susset-racial-justice-reforms/&lt;/a&gt;. Last Accessed: 6/17/2020.&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Introduction to TensorFlow</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Thu, 11 Jun 2020 06:55:39 +0000</pubDate>
      <link>https://dev.to/uequations/introduction-to-tensorflow-332m</link>
      <guid>https://dev.to/uequations/introduction-to-tensorflow-332m</guid>
      <description>&lt;p&gt;TensorFlow is an open-source neural network framework that makes it easy to build and deploy Machine Learning (ML) models across many different devices.  In order to install TensorFlow, you’ll need to have Python installed first.&lt;/p&gt;

&lt;p&gt;You can reference the following if you need some help getting TensorFlow installed:&lt;br&gt;
&lt;a href="https://www.tensorflow.org/install/pip#virtual-environment-install"&gt;https://www.tensorflow.org/install/pip#virtual-environment-install&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I would strongly recommend installing TensorFlow in a virtual environment.  Once that’s installed, if you’re comfortable with python you should be familiar with the concept of importing packages.  One way of checking you have TensorFlow installed correctly is to try to install it while in interactive mode.&lt;/p&gt;

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

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(venv) … $ python
…
&amp;gt;&amp;gt;&amp;gt; import tensorflow as tf
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;Well, don't stop there.  Let's try to print the version:&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; print(‘tensorflow version’,tf.__version__)
tensorflow version 2.2.0
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;How about add?&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;gt;&amp;gt;&amp;gt; print(tf.add(1,1))
tf.Tensor(2, shape=(), dtype=int32)
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;

&lt;p&gt;You good???  No vicious erros??  I’m impressed.  You appear to be somewhat comfortable with TensorFlow, so I think next time we’ll be ready to talk about Keras, which is a high-level neural network built on top of TensorFlow.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;A LIGHTNING-FAST INTRODUCTION TO DEEP LEARNING AND TENSORFLOW 2.0.&lt;br&gt;
&lt;a href="https://builtin.com/machine-learning/introduction-deep-learning-tensorflow-20"&gt;https://builtin.com/machine-learning/introduction-deep-learning-tensorflow-20&lt;/a&gt;.  Last accessed: 6/11/2020.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;TFRT: A new TensorFlow runtime.&lt;a href="https://blog.tensorflow.org/2020/04/tfrt-new-tensorflow-runtime.html"&gt;https://blog.tensorflow.org/2020/04/tfrt-new-tensorflow-runtime.html&lt;/a&gt;.  Last accessed: 6/11/2020.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Google’s 7 steps of Machine Learning in practice: a TensorFlow example for structured data. &lt;a href="https://towardsdatascience.com/the-googles-7-steps-of-machine-learning-in-practice-a-tensorflow-example-for-structured-data-96ccbb707d77"&gt;https://towardsdatascience.com/the-googles-7-steps-of-machine-learning-in-practice-a-tensorflow-example-for-structured-data-96ccbb707d77&lt;/a&gt;.  Last accessed: 6/11/2020.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>tensorflow</category>
      <category>python</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>GraphQL: A solution for connecting data</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Tue, 21 Apr 2020 04:19:51 +0000</pubDate>
      <link>https://dev.to/uequations/graphql-a-solution-for-connecting-data-56c3</link>
      <guid>https://dev.to/uequations/graphql-a-solution-for-connecting-data-56c3</guid>
      <description>&lt;p&gt;You may wonder why a startup like Hasura(@hasurahq) is able to raise almost $10 million to simplify GraphQL for developers.  In that same breath, I should say I am very grateful to developers like Christian Nwamba(&lt;a class="comment-mentioned-user" href="https://dev.to/codebeast"&gt;@codebeast&lt;/a&gt;
) who are helping developers understand these concepts.  Before we talk about what it can do, though, let's talk about what it is.&lt;br&gt;&lt;br&gt;
GraphQL is an open-source query and data manipulation language for APIs.&lt;br&gt;
It, presently, contains the five built-in types:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; String&lt;/li&gt;
&lt;li&gt; Boolean&lt;/li&gt;
&lt;li&gt; Int&lt;/li&gt;
&lt;li&gt; Float&lt;/li&gt;
&lt;li&gt; ID&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These data types provide a foundation for building schemas or documented representations of data entities and their interactions.&lt;br&gt;&lt;br&gt;
So where does GraphQL fit into your current architecture?  Putting a GraphQL server in front of a data source can help create minimal architecture.  GraphQL can be used as a light wrapper around existing APIs.  In other words, GraphQL APIs allow us to efficiently connect data—reducing complexity.  Thinking in graphs is about thinking about the data and the connections among the different entities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;References&lt;/strong&gt;:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Hasura raises $9.9M Series A to simplify GraphQL for developers.  &lt;a href="https://techcrunch.com/2020/02/26/hasura-raises-9-9m-series-a-to-simplify-graphql-for-developers/"&gt;https://techcrunch.com/2020/02/26/hasura-raises-9-9m-series-a-to-simplify-graphql-for-developers/&lt;/a&gt;.  Last Accessed: 4/20/2020.&lt;/li&gt;
&lt;li&gt; Get Started Building GraphQL APIs With Node.  &lt;a href="https://css-tricks.com/get-started-building-graphql-apis-with-node/"&gt;https://css-tricks.com/get-started-building-graphql-apis-with-node/&lt;/a&gt;.  Last Accessed: 4/20/2020.&lt;/li&gt;
&lt;li&gt; Advice from a GraphQL Expert.  &lt;a href="https://www.netlify.com/blog/2020/01/21/advice-from-a-graphql-expert/"&gt;https://www.netlify.com/blog/2020/01/21/advice-from-a-graphql-expert/&lt;/a&gt;.  Last Accessed: 4/20/2020.&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>graphql</category>
      <category>opensource</category>
      <category>letstalk</category>
      <category>startup</category>
    </item>
    <item>
      <title>Gatsby: A React-based static-site generator</title>
      <dc:creator>Mensah Alkebu-Lan</dc:creator>
      <pubDate>Mon, 20 Apr 2020 03:28:53 +0000</pubDate>
      <link>https://dev.to/uequations/gatsby-a-react-based-static-site-generator-2o7k</link>
      <guid>https://dev.to/uequations/gatsby-a-react-based-static-site-generator-2o7k</guid>
      <description>&lt;p&gt;Gatsby is a React-based static site generator powered by GraphQL.&lt;br&gt;
To create a new Gatsby project, we can, first,install the Gatsby CLI via npm:&lt;br&gt;
&lt;/p&gt;

&lt;div class="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; Gatsby
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;From here, we can create a new Gatsby project:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;gatsby new &lt;span class="o"&gt;[&lt;/span&gt;rootPath] &lt;span class="o"&gt;[&lt;/span&gt;starter]
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;Starters allow us to quickly spin up different types of Gatsby sites.  There are a number of Gatsby starters right within the GatsbyJs Github repo (&lt;a href="https://gihub.com/gatsbyjs"&gt;https://gihub.com/gatsbyjs&lt;/a&gt;).  For example, if you wanted to create a Gatsby project with a blog boilerplate, you could do the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;gatsby new my-blog https://gihub.com/gatsbyjs/gatsby-starter-blog
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;If we cd into the newly created project’s root directory, we can execute gatsby develop to start the development server.&lt;br&gt;&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FpVlHj4x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/u1oswuy7hajdus25y82p.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FpVlHj4x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/u1oswuy7hajdus25y82p.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;br&gt;
Eventually, amongst the text in your terminal, you should see the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight"&gt;&lt;pre class="highlight shell"&gt;&lt;code&gt;You can now view gatsby-starter-blog &lt;span class="k"&gt;in &lt;/span&gt;the browser:

http://localhost:8000/
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;



&lt;p&gt;There’s much more we could talk about, but we’ll stop here to give you a chance to get your hands dirty.  😊&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Qu006NfO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r9m6qfpj7xmn8qpt6x93.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qu006NfO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/r9m6qfpj7xmn8qpt6x93.PNG" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gatsby</category>
      <category>react</category>
      <category>generator</category>
      <category>project</category>
    </item>
  </channel>
</rss>
