<?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: Charisma Elohe</title>
    <description>The latest articles on DEV Community by Charisma Elohe (@elohe_charisma).</description>
    <link>https://dev.to/elohe_charisma</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%2F804878%2F4ae39e7c-febc-4430-92f1-e986f13b058f.jpg</url>
      <title>DEV Community: Charisma Elohe</title>
      <link>https://dev.to/elohe_charisma</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elohe_charisma"/>
    <language>en</language>
    <item>
      <title>Uncaught Typeerror: cannot read properties of undefined (reading 'render')</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Sat, 10 Dec 2022 23:14:59 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/uncaught-typeerror-cannot-read-properties-of-undefined-reading-render-2lnb</link>
      <guid>https://dev.to/elohe_charisma/uncaught-typeerror-cannot-read-properties-of-undefined-reading-render-2lnb</guid>
      <description>&lt;p&gt;Encountered a blank screen after running my Server.&lt;br&gt;
Everything had been rendered correctly, but none of the components was visible on the browser.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check the render method in the ReactDOM. The likely error is wrong method of importing the ReactDOM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;ReactDOM is a default export from the 'react-dom' module&lt;/p&gt;

&lt;p&gt;Your code editor might have autocompleted the import by putting curly braces around ReactDOM ie &lt;code&gt;import {ReactDOM} from 'react-dom'&lt;/code&gt; rather than &lt;code&gt;import ReactDOM from 'react-dom'&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Having it in curly braces treats ReactDOM as a named import and not a default one. &lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>javascript</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Plugin "react" was conflicted between "package.json..." and "BaseConfig..."</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Sat, 10 Dec 2022 09:17:09 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/plugin-react-was-conflicted-between-packagejson-and-baseconfig-6nj</link>
      <guid>https://dev.to/elohe_charisma/plugin-react-was-conflicted-between-packagejson-and-baseconfig-6nj</guid>
      <description>&lt;p&gt;I tried to start my react app by starting my server - &lt;code&gt;npm start&lt;/code&gt;&lt;br&gt;
But I kept on encountering the error above on my browser.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here is why:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was running my project on the right folder, but canonically the wrong one. (The capitalization of the path to the folder should be correctly capitalized as it is in your directories)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For example&lt;/strong&gt;&lt;br&gt;
D:/dev/projects/react-app-1 &lt;/p&gt;

&lt;p&gt;D:/Dev/Projects/React-app-1&lt;/p&gt;

&lt;p&gt;The above paths are not identical.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Wordpress file upload capacity limitation. (How to increase maximum upload file size, wordpress)</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Thu, 22 Sep 2022 23:17:02 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/wordpress-file-upload-capacity-limitation-35mn</link>
      <guid>https://dev.to/elohe_charisma/wordpress-file-upload-capacity-limitation-35mn</guid>
      <description>&lt;p&gt;You sometimes build your website on a staging site to ensure you only push the final and most desired output to the live site.&lt;br&gt;
However, trying to import the staging site file (wordpress) could prove to be an issue, like it was for me.&lt;/p&gt;

&lt;p&gt;Wordpress by default, takes in files not more than 90MB. But the file you've exported from your staging site is probably upwards of 200 MB &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution 1&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;_Edit on the .htaccess file&lt;br&gt;
_&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
php_value upload_max_filesize 256M
php_value post_max_size 256M
php_value memory_limit 256M
php_value max_execution_time 300
php_value max_input_time 300
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Solution 2&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Edit on the wp-config file&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Wp_config.php
@ini_set('upload_max_filesize','256M');
@ini_set('post_max_filesize','128M');
@ini_set('memory_limit','256M');
@ini_set('max_execution_time','300');
@ini_set('max_input_time','300');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are my go to solutions for this limitation, I will update the thread with more solutions.&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
      <category>php</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Django Admin Login Problem</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Wed, 21 Sep 2022 06:46:56 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/django-admin-login-problem-mpn</link>
      <guid>https://dev.to/elohe_charisma/django-admin-login-problem-mpn</guid>
      <description>&lt;p&gt;While creating your Django application, you're probably unable to login as the administrator to your site. And this can handicap you since you lose control.&lt;/p&gt;

&lt;p&gt;This is a Django x NonRelational Databases limitation&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;br&gt;
While creating your superuser, ensure that your server is not running.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Stop your server from running . Ctrl + C for those in local webserver development&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create superuser &lt;code&gt;python manage.py createsuperuser&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run your webserver &lt;code&gt;python manage.py runserver&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're good to go.&lt;/p&gt;

</description>
      <category>django</category>
      <category>backend</category>
      <category>webdev</category>
      <category>python</category>
    </item>
    <item>
      <title>Stripe payment gateway</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Mon, 19 Sep 2022 09:53:21 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/stripe-payment-gateway-3lfn</link>
      <guid>https://dev.to/elohe_charisma/stripe-payment-gateway-3lfn</guid>
      <description>&lt;p&gt;&lt;strong&gt;Client code and server code on the same URL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Is a common payment gateway and as a dev, you probably are required to integrate this for click commerce purposes.&lt;/p&gt;

&lt;p&gt;You need a checkout button to make a request with.&lt;br&gt;
Link a script from a Javascript file to ensure you select the button and embed functionality to it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create a server&lt;/strong&gt; → to process the payment requests . This needs to be processed on a server away from the client side to ensure they do not manipulate the payment details.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create an express server&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up an express server. By making a directory &lt;code&gt;mkdir server&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--FmEYasJg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ghoa1q4r5glgqp86n14k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--FmEYasJg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ghoa1q4r5glgqp86n14k.png" alt="Image description" width="612" height="292"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--OdCxME_P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hgueuo0u80upjfec4p0d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OdCxME_P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hgueuo0u80upjfec4p0d.png" alt="Image description" width="462" height="367"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Set up a new project in this directory by initializing &lt;code&gt;npm init -y&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install express , the stripe library &amp;amp; dotenv library that shall be essential in loading our environment variables&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add a dev dependency nodemon for autoreloads / restarts whenever changes are made to your server.(dynamism)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Server.js boilerplate logic&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Load the environment variables that you have set up in using the dotenv and config()&lt;/li&gt;
&lt;li&gt;Require express&lt;/li&gt;
&lt;li&gt;The call made when the checkout function is called is API-like and so we need to send the information in json format&lt;/li&gt;
&lt;li&gt;Set up stripe by requiring it.&lt;/li&gt;
&lt;li&gt;Declare the items in your store → this can be loaded from a DB. [ This ensures the client does not tweak product info from their end]. Products are declared in Dictionary like formats, where an ID has a respective value for product name and price. Capitalizes on the Map function.

&lt;ul&gt;
&lt;li&gt;The client only sends an ID to the server, and quantity . and the rest is populated by the server.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The app should listen to the port that is taking requests. in my case, port 3000
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;require('dotenv').config()

const express = require('express')
const app = express()

//calls shall be made like apis. We need to send the data packets in json
app.use(express.json())
app.use(express.static('public'))

const stripe = require('stripe')(process.env.STRIPE_PRIVATE_KEY)


const storeItems= new Map([
    [1, {priceInCents:10000, name:"White Jordan Sneakers"}],
    [2, {priceInCents:15000, name: "Customized Airforce Sneakers"}],
])

app.post('/create-checkout-session', async(req,res)=&amp;gt;{
    try{
      const session =await stripe.checkout.sessions.create({
        payment_method_types: ['card'],
        mode:'payment',
        line_items: req.body.items.map(item =&amp;gt;{
            const storeItem = storeItems.get(item.id)
            return {
                price_data: {
                    currency:'usd',
                    product_data:{
                        name:storeItem.name
                    },
                    unit_amount: storeItem.priceInCents
                },
                quantity:item.quantity,

            }
        }),
        success_url:`${process.env.SERVER_URL}/success.html`,
        cancel_url:`${process.env.SERVER_URL}/cancel.html`
        })
        res.json({url: session.url})
    }catch(e){
        res.status(500).json({error: e.message})
    }

})
app.listen(3000)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Create a public directory, where all the client logic files are stored.&lt;br&gt;
In the server javascript file, you’ll be required to define that the client side code will reside in this newly created directory.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;app.use(express.static(”public”)&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const button = document.getElementById("button")
button.addEventListener("click",()=&amp;gt;{
    fetch('/create-checkout-session',{
        method:'POST',
        headers:{
            'Content-Type':'application/json'
        },
        body: JSON.stringify({
            items: [
                {id: 1, quantity:2},
                {id:2, quantity:2}
            ]
        })           
        }).then(res =&amp;gt; {
            if (res.ok) return res.json()
            return res.json.then(json =&amp;gt; Promise.reject(json))
        }).then (({url })=&amp;gt;{
            console.log(url)
            //window.location = url
        }).catch(e=&amp;gt; {
            console.error(e.error)
        })
})

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Integrate client and server&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;On the event listener (on the script js file), we have to make a request to the server , to prompt return of a URL  to a checkout page.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In the request (parametric) , we pass in info about our purchase [id of the product , quantity etc] → we get a unique URL in return on where we’ll get the pay out.&lt;/li&gt;
&lt;li&gt;Within this logic, we have to define success and failure redirect mechanisms.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sessions&lt;/strong&gt;&lt;br&gt;
You need to create a session, where you’re redirected on success episodes.&lt;br&gt;
Here we also define the payment methods that we accept. Methods include bank transfers, cards etcetera.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Modes&lt;/strong&gt;→ we define the specific transaction iterations. Could be one time payments, or subscriptions etcetera.&lt;/p&gt;

&lt;p&gt;The success and failure urls are defined here. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;*&lt;em&gt;success *&lt;/em&gt;→ &lt;code&gt;$&lt;/code&gt;{process.env.SERVER_URL}/success.html&lt;/li&gt;
&lt;li&gt;*&lt;em&gt;cancel *&lt;/em&gt;→  &lt;code&gt;$&lt;/code&gt;{process.env.SERVER_URL}/cancel.html&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;We use environment variables to be able to push the same code to production. we could also however use the static way by explicitly defining the url → &lt;a href="http://localhost:3000/success.html"&gt;http://localhost:3000/success.html&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The SERVER_URL variable is declared in the .env file&lt;/p&gt;

&lt;p&gt;SERVER_URL = &lt;a href="http://localhost:3000"&gt;http://localhost:3000&lt;/a&gt; for the development url, and will be changed before being pushed to production.&lt;/p&gt;

&lt;p&gt;Remember to add your .env file to the gitignore file setup to protect the info that you push on a public repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stripe PRIVATE_KEY&lt;/strong&gt;&lt;br&gt;
You require a stripe account for this.&lt;br&gt;
Have the variable stored in the .env file since you’ll not push it to your public repo.&lt;/p&gt;

&lt;p&gt;This is all you need to have your stripe working.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/elloh414"&gt;Click Here&lt;/a&gt; to go to my github repo for clones, forks and collabs!!&lt;/p&gt;

&lt;p&gt;For the full &lt;a href="https://github.com/Elloh414/stripe"&gt;stripe code&lt;/a&gt; and you could also go through the &lt;a href="https://stripe.com/docs"&gt;official documentation.&lt;/a&gt;&lt;/p&gt;

</description>
      <category>stripe</category>
      <category>javascript</category>
      <category>dev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Micro-frontends (3/)</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Sat, 12 Feb 2022 21:51:43 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/micro-frontends-3-24be</link>
      <guid>https://dev.to/elohe_charisma/micro-frontends-3-24be</guid>
      <description>&lt;p&gt;-&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So micro-frontends are simply a collection of decentralised&lt;br&gt;
portions of a frontend application that compound to the same website.&lt;/p&gt;

&lt;p&gt;As part of the architecture, we have a framework that communicates between host pages and the individual mfes.&lt;br&gt;
It manages the loading and unloading of these mfes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;While designing this framework, we ought to consider:&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;1&lt;/strong&gt;.What elements of the application need to be decentralised.&lt;br&gt;
Here we analyse the parts that could more likely recycle and would not make sense to redo them each time we want to make use of them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2&lt;/strong&gt;.We make the units work together.&lt;br&gt;
&lt;strong&gt;3&lt;/strong&gt;.Routing -&amp;gt; we create a consistent and reliable way to make these artefacts interconnected and interdependent.&lt;br&gt;
&lt;strong&gt;4&lt;/strong&gt;.The elements should also have the capability of communicating with each other&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Microservices architecture&lt;/strong&gt;&lt;br&gt;
-It refers to a pattern for organising computer systems into services that can scale with demand.&lt;br&gt;
-Traditionally , scaling up demands meant we have to replicate multiple instances of the existing monolith so as to suffice the demands.&lt;/p&gt;

&lt;p&gt;-A  &lt;a href="https://www.google.com/search?q=what+is+a+monolith+in+software&amp;amp;sxsrf=APq-WBvaYxdWi2ZC0fE7Ah2g4M4uz5U0RQ%3A1644686699183&amp;amp;ei=a-0HYu7nCpXbkwX7lrDwCA&amp;amp;oq=what+is+a+monolith+in+so&amp;amp;gs_lcp=Cgdnd3Mtd2l6EAMYADIFCAAQgAQyBQgAEIAEMgYIABAWEB46BwgAEEcQsAM6BwgAELADEEM6CggAEOQCELADGAA6DAguEMgDELADEEMYAToPCC4Q1AIQyAMQsAMQQxgBOgQIABBDOgcIABCABBAKOggIABAWEAoQHkoECEEYAEoECEYYAVDVAlixEmCRHWgBcAF4AIABpQSIAacRkgEJMi0xLjQuMC4xmAEAoAEByAETwAEB2gEGCAAQARgJ2gEGCAEQARgI&amp;amp;sclient=gws-wiz"&gt;monolith application&lt;/a&gt; describes a single-tiered software application where the user interface and data access code are combined into a single program from a single platform. &lt;/p&gt;

&lt;p&gt;-A monolith centralises the codebase so that it is one place.&lt;br&gt;
-Also, there are lesser calls involved when we get a user request, and hence thinning the chances of failure.&lt;/p&gt;

&lt;p&gt;-However, problems start to occur when these monoliths get big. Centralised code leads to tight coupling that becomes difficult to break up.&lt;/p&gt;

&lt;p&gt;-There is also a cap to the performance of a machine. To mean, a very big program would be impossible to run on these machines.&lt;br&gt;
-As a solution, applications are broken down into services.&lt;/p&gt;

&lt;p&gt;-A service oriented architecture is able to scale the parts of an application that are under load.&lt;br&gt;
-Operating System Virtualization made service oriented architecture even more economical since one server could host multiple virtualized operating system instances.&lt;br&gt;
-Each of these instances can run a service. Therefore, you can host you multi-split application &lt;br&gt;
on just one server.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The catch.&lt;/strong&gt;&lt;br&gt;
-Using this platform meant that engineers would have to manage more &lt;strong&gt;layers of infrastructure&lt;/strong&gt; . &lt;br&gt;
These are:&lt;br&gt;
-The virtual machine hosts.&lt;br&gt;
-The hypervisor layer&lt;br&gt;
-the hardware&lt;/p&gt;

&lt;p&gt;-As if that’s not enough, it is prone to failures due to its complexity, and hence a harder debugging process&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;solution&lt;br&gt;
Elastic compute cloud&lt;/strong&gt;&lt;br&gt;
-The Elastic Compute Cloud (EC2) by amazon solves this predicament to some&lt;br&gt;
point. &lt;br&gt;
-Amazon rents out virtual machines to application owners. amazon focuses on the hardware&lt;br&gt;
maintenance and hypervisor, whereas the application programmers focus on&lt;br&gt;
the vm hosts - where their application code is running.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Containers&lt;/strong&gt;.&lt;br&gt;
-It is wasteful to have an entire virtual machine just to run a small piece of application code&lt;br&gt;
containers allow a vm to be sliced up into isolated file system regions&lt;br&gt;
-A size of the container ranges from the equivalent of an entire virtual machine down&lt;br&gt;
to a single service, hence, microservice.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The hierarchy&lt;/strong&gt;&lt;br&gt;
-Micro-services run in containers, which run on a virtual machine, that runs on a hypervisor which runs on a server.&lt;/p&gt;

&lt;p&gt;-The concept of micro-frontends is not altogether different from that of microservices.&lt;br&gt;
They both work on the principle of separating elements in order to achieve independence.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Devil in details&lt;/strong&gt;&lt;br&gt;
-There are hurdles that you must overcome for the micro-frontend to be deemed successful:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Pulling data from a micro-service&lt;/li&gt;
&lt;li&gt;Routing the micro-frontends&lt;/li&gt;
&lt;li&gt;Web components&lt;/li&gt;
&lt;li&gt;Communication with micro-frontends&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webpack</category>
      <category>devjournal</category>
      <category>programming</category>
    </item>
    <item>
      <title>Micro-Frontends (2/)</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Thu, 10 Feb 2022 06:48:37 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/micro-frontends-2-33b3</link>
      <guid>https://dev.to/elohe_charisma/micro-frontends-2-33b3</guid>
      <description>&lt;p&gt;&lt;strong&gt;Micro-frontend&lt;/strong&gt;&lt;br&gt;
A micro-frontend (mfe)can simply be described as the code for a &lt;strong&gt;portion **of a webpage. &lt;br&gt;
The webpage that hosts the component is referred to as the **host page.&lt;/strong&gt;&lt;br&gt;
There should be a framework that sits between the host page and mfe . &lt;br&gt;
This framework manages the loading and unloading the microfrontends.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Architecture&lt;/strong&gt;&lt;br&gt;
-Microfrontends&lt;br&gt;
-MicroFrontend Framework&lt;br&gt;
-Host pages&lt;/p&gt;

&lt;p&gt;A good example of mfes would be product section you use to display your products in the product section in your ecommerce site. &lt;br&gt;
You could use the same concept in the product description part.&lt;/p&gt;

&lt;p&gt;Another would be the headers and footers, which you would statically include in all pages of your site rather than hard code them in each page.&lt;/p&gt;

&lt;p&gt;An example in Django is using the static imports and extends.&lt;/p&gt;

&lt;p&gt;You would create the skeleton file ie base.html in my case - where you would have all the static elements including the header and footer, then you would include this page wherever you need it.&lt;/p&gt;

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

&lt;p&gt;I preferably develop the statics using bootstrap them load them as templates in my project.&lt;br&gt;
You simply render the file that you want.&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;My base.html&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% load static %}

&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8" /&amp;gt;
    &amp;lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&amp;gt;
    &amp;lt;!--Start of Imports --&amp;gt;
    &amp;lt;link
      href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,200;0,300;0,400;0,500;0,700;0,800;1,200;1,300;1,400;1,500;1,700&amp;amp;display=swap"
      rel="stylesheet"
    /&amp;gt;
    &amp;lt;link
      rel="stylesheet"
      href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
    /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/animate.css' %}" /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/owl.carousel.min.css' %}" /&amp;gt;
    &amp;lt;link
      rel="stylesheet"
      href="{% static 'css/owl.theme.default.min.css' %}"
    /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/magnific-popup.css' %}" /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/flaticon.css' %}" /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/style.css' %}" /&amp;gt;

    &amp;lt;!-- End of Imports --&amp;gt;

    &amp;lt;title&amp;gt;Prima's Liquours and Fine Wines&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    {% include 'partials/_topbar.html' %} {%block content%} {%endblock%}
    {%include 'partials/_footer.html' %}

    &amp;lt;!-- Beginning of Javascipt --&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery-migrate-3.0.1.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/popper.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/bootstrap.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.easing.1.3.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.waypoints.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.stellar.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/owl.carousel.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.magnific-popup.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.animateNumber.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/scrollax.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBVWaKrjvy3MaE7SQ74_uJiULgl1JY0H2s&amp;amp;sensor=false"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/google-map.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/main.js' %}"&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;!-- End of Javascipt --&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

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

&lt;/div&gt;



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

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

&lt;p&gt;I have written the header and footer elements once in my partials file, and import them in every page I wish to use, rather than include their code all over. &lt;br&gt;
It makes it easier to clean my code. Also, I only have to make any changes and corrections once.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;This is my header partial&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{% load static %}

&amp;lt;!DOCTYPE html&amp;gt;
&amp;lt;html lang="en"&amp;gt;
  &amp;lt;head&amp;gt;
    &amp;lt;meta charset="UTF-8" /&amp;gt;
    &amp;lt;meta http-equiv="X-UA-Compatible" content="IE=edge" /&amp;gt;
    &amp;lt;meta name="viewport" content="width=device-width, initial-scale=1.0" /&amp;gt;
    &amp;lt;!--Start of Imports --&amp;gt;
    &amp;lt;link
      href="https://fonts.googleapis.com/css2?family=Spectral:ital,wght@0,200;0,300;0,400;0,500;0,700;0,800;1,200;1,300;1,400;1,500;1,700&amp;amp;display=swap"
      rel="stylesheet"
    /&amp;gt;
    &amp;lt;link
      rel="stylesheet"
      href="https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
    /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/animate.css' %}" /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/owl.carousel.min.css' %}" /&amp;gt;
    &amp;lt;link
      rel="stylesheet"
      href="{% static 'css/owl.theme.default.min.css' %}"
    /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/magnific-popup.css' %}" /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/flaticon.css' %}" /&amp;gt;
    &amp;lt;link rel="stylesheet" href="{% static 'css/style.css' %}" /&amp;gt;

    &amp;lt;!-- End of Imports --&amp;gt;

    &amp;lt;title&amp;gt;Prima's Liquours and Fine Wines&amp;lt;/title&amp;gt;
  &amp;lt;/head&amp;gt;
  &amp;lt;body&amp;gt;
    {% include 'partials/_topbar.html' %} {%block content%} {%endblock%}
    {%include 'partials/_footer.html' %}

    &amp;lt;!-- Beginning of Javascipt --&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery-migrate-3.0.1.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/popper.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/bootstrap.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.easing.1.3.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.waypoints.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.stellar.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/owl.carousel.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.magnific-popup.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/jquery.animateNumber.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/scrollax.min.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyBVWaKrjvy3MaE7SQ74_uJiULgl1JY0H2s&amp;amp;sensor=false"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/google-map.js' %}"&amp;gt;&amp;lt;/script&amp;gt;
    &amp;lt;script src="{% static 'js/main.js' %}"&amp;gt;&amp;lt;/script&amp;gt;

    &amp;lt;!-- End of Javascipt --&amp;gt;
  &amp;lt;/body&amp;gt;
&amp;lt;/html&amp;gt;

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  So why would you use microfrontends?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Team scalability&lt;/strong&gt; - It is easier to collaborate on one element ie web page since the micro-frontends are versioned and independently deployed&lt;br&gt;
You can think of each microfrontend as it's own project.&lt;br&gt;
So the microfrontend team can work independently from the host page team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Performance increase strategy&lt;/strong&gt; -&lt;br&gt;
The division of tasks and roles in development make sure that each team&lt;br&gt;
gives total focus on what they are developing. The integration of these &lt;br&gt;
features gives a better end product. &lt;br&gt;
Think of car manufacturing - The interior designers worry less about &lt;br&gt;
the engine functionality, because that is not their domain - but the end &lt;br&gt;
product is one clean ride. You conquer by subdividing and micromanaging&lt;br&gt;
tasks&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Reusability&lt;/strong&gt; &lt;br&gt;
As long as the host pages meet the standards of the micro-frontends (mfe), the mfes can be reused&lt;br&gt;
I would still use cars. Those that develop engines, develop engines alone, &lt;br&gt;
any car from this industry that fits the standard the engine was meant for, can use&lt;br&gt;
this engine. This engine is therefore reusable.&lt;br&gt;
You would want prolly want a uniform design for you headers and footers in all &lt;/p&gt;

&lt;p&gt;pages of your website - to make sure users do not feel detached from it while using it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Techstack weaving&lt;/strong&gt;&lt;br&gt;
You are able to use different technologies to produce your final &lt;br&gt;
product. As long as the host and mfe meet the standard.&lt;br&gt;
You can develop your pages using Vue, or react, and have python used to build &lt;br&gt;
your backend.&lt;br&gt;
This breaks beyond technology limits and opens doors for innovation.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I implement some of this using Ionic and Angular and I will be documenting that soon.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;_I will keep you posted once I push the code to production. (The django project)&lt;/p&gt;

&lt;p&gt;For the ionic, I will push it to my github and share the link in the comment section. So be sure to check it out as well._&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>python</category>
      <category>programming</category>
    </item>
    <item>
      <title>Micro-frontends .</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Wed, 09 Feb 2022 21:06:34 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/micro-frontends-for-your-business-f2k</link>
      <guid>https://dev.to/elohe_charisma/micro-frontends-for-your-business-f2k</guid>
      <description>&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  Monolithic to micro-frontend migration.
&lt;/h2&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I have been indulging in micro-frontends these last few days and here is what I would share. Make sure you read through chronologically to get the gist of it.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Ecommerce and online transactions for businesses have recently mushroomed. In 2020 alone, there was a 16 - 19% increase in online retail sales' share of total retail sales (according to estimates in an UNCTAD report , 3 May).&lt;/p&gt;

&lt;p&gt;So suppose you are starting out your ecommerce store, all you require is a small scale website and it will suffice your needs. You have very few orders and you require only a handful of staff members. This website consists of the front-end and a business logic part that handles all your functionality. i.e the backend.&lt;/p&gt;

&lt;p&gt;With not so involving apps on your site, like about us, blog section, manageable cart checkouts etcetera , a monolithic architecture will most likely cut it for you.&lt;/p&gt;

&lt;p&gt;Over time, the ecommerce site grows and becomes a multinational business, and you process very many orders at a go, you are recruiting staff members, you are stocking up on goods etc, you are maintaining the inventory etcetera - This means that you have to beef up your site (more sections, more content, bigger capacity databases etc). There has to be accuracy in database queries lest &lt;br&gt;
it breaks your application, or give erring reports.&lt;/p&gt;

&lt;p&gt;You can solve this baggage by considering migration from monolithic to a micro-frontend architecture.&lt;/p&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h2&gt;
  
  
  Micro-frontends
&lt;/h2&gt;

&lt;p&gt;**&lt;br&gt;
Micro-frontends refer to a sub-division of a front-end application into multiple independent sections which are a part of a whole.&lt;/p&gt;

&lt;p&gt;For the approximately 260 islands of Japan to be still considered part of this state they communicate with each other. Verily, the constructs of micro-frontends have to be in consistent communication with each other.&lt;/p&gt;




</description>
      <category>webdev</category>
      <category>database</category>
      <category>programming</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Deleting unused media files in Django (Step by step)</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Mon, 31 Jan 2022 09:49:45 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/deleting-unused-media-files-in-django-joo</link>
      <guid>https://dev.to/elohe_charisma/deleting-unused-media-files-in-django-joo</guid>
      <description>

&lt;p&gt;We seldom have projects (web projects for example) that lack media files. A good example is, images. Images give unmatched and accurate description that words would have failed to bring out.&lt;/p&gt;

&lt;p&gt;We can load media as static elements on your web application or have them stored in the database for retrieval and rendering. The latter is used for major projects - where we only store what we need and can use.&lt;br&gt;
It is possible to deplete your space (or unnecessarily occupy it) with media files that we upload.&lt;/p&gt;

&lt;p&gt;It can be quite hectic to go through the deletion process. On the flip side, there is possibility to  automatically clean up the unused media files from our project. We depend on a clean package for this.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;br&gt;
This can be done on your virtual environment (like I have done) or entire system , depending on the user’s preference.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;pip install django-cleanup&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ogLbybTA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lqu3ukv5wiynccpy0apt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ogLbybTA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/lqu3ukv5wiynccpy0apt.png" alt="Image description" width="634" height="41"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the &lt;strong&gt;settings.py&lt;/strong&gt; file, under the &lt;strong&gt;installed_apps&lt;/strong&gt;, add the following line&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;‘django_cleanup.apps.CleanupConfig’&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wVckrlsI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/py82tiay9o89u7epsqul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wVckrlsI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/py82tiay9o89u7epsqul.png" alt="Image description" width="741" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>django</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>python</category>
    </item>
    <item>
      <title>The impact of Data Science in elections.</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Sat, 29 Jan 2022 22:43:34 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/the-impact-of-data-science-in-elections-1c1n</link>
      <guid>https://dev.to/elohe_charisma/the-impact-of-data-science-in-elections-1c1n</guid>
      <description>&lt;p&gt;&lt;strong&gt;_&lt;br&gt;
(The return of Cambridge Analytica?)_&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Just how strongly could technology (data science) alter votes in general elections.&lt;br&gt;
The term *&lt;em&gt;**_data&lt;/em&gt;* is the new oil_** has most certainly gained popularity (from&lt;br&gt;
not so long ago, but recently has.)&lt;br&gt;
From root definition, data refers to raw facts and information-pieces that &lt;br&gt;
can be collected about an entity.Our entity here is human beings.&lt;/p&gt;

&lt;p&gt;Human beings have many data points.These data points are relayed through our preferences (likes) and dislikes from our interactions,&lt;br&gt;
our speech, our social media and browsing patterns etcetera. &lt;br&gt;
With the right tools and technology, we can have this data collected and stored - then later used.&lt;/p&gt;

&lt;p&gt;Back to data as oil - Oil is of most benefit after being refined. The same way, crude data is of lesser benefit to us. The data we collect is crude, since it has (both relevant and irrelevant) parts.&lt;br&gt;
The data we collect is beneficial only when it has meaning.&lt;br&gt;
Collected data is cleaned. Here we remove outliers, inconsistent and or is irrelevant parts.&lt;br&gt;
We then analyze the data we have and interpret results.&lt;/p&gt;

&lt;p&gt;Artificial intelligence thrives from this aspect, data. The data that we have cleaned and interpreted reveals patterns to us (data scientists) who use this patterns to predict things and make decisions that are informed. &lt;/p&gt;

&lt;p&gt;You would more likely not go wrong on the predictions made from analyzed data,rather&lt;br&gt;
than simply following instincts.&lt;/p&gt;

&lt;p&gt;Back to elections.To ensure you garner the most votes, you must have the majority on your side. You can easily do this when you have information on these people,then manipulate their decisions by tailoring your products based on their likes and dislikes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources of data&lt;/strong&gt;&lt;br&gt;
You need a lot of data for you to form the right classifiers - and establish the groups that are formed,to influence your decision models.&lt;br&gt;
It is expensive and time consuming to collect data about every citizen that forms the voter's population.&lt;br&gt;
These analytics companies buy data from companies that store huge chunks of them - social media platforms.&lt;br&gt;
Facebook, Twitter , to name a few - trade your personal data to these companies.&lt;br&gt;
This is one of the ways they use to make profit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why are developing countries a fit in this?&lt;/strong&gt;&lt;br&gt;
There is an encouraging economic growth here in Kenya and burgeoning of the middle class. Improving infrastructure and &lt;br&gt;
electrification means that internet and smartphone access get a shilling friendlier everyday. This means that there is greater incalcation of the internet in many facets today - this is evident from the so vocal KOT group who are running riot everyday.&lt;br&gt;
By January 2020, Kenya had a little bit shy of 9 million facebook users. (Two years is a lot - so numbers have most probably tremendously grown),&lt;br&gt;
you can imagine how politicians can powerfully gain from this access.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So ,When is this unethical and considered crime?&lt;/strong&gt;&lt;br&gt;
Interested parties approach data science companies to help them in the tailoring of 'products' to sell to &lt;br&gt;
their supporters. (By products we refer to rebrands, speech creation etcetera). Voters are also manipulated with &lt;br&gt;
ominous attack advertisements against their opponents. They use hatespeech and image tainting to flourish their own bids.&lt;br&gt;
It requires good legal muscle to sanction such companies and opponents - especially in developing countries where &lt;br&gt;
data privacy and rules have not very well come into play.I am sure you have heard of Cambridge Analytica who have had a history&lt;br&gt;
with such sanctions. &lt;br&gt;
We are having elections this year (Kenya,2022), technology is still growing, there is power in information, and the outreach it could make. Could there be a repeat of this?&lt;/p&gt;

&lt;p&gt;Is Cambridge Analytica V2.0 feasible?&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>analytics</category>
      <category>datascientist</category>
      <category>classifiers</category>
    </item>
    <item>
      <title>Beginning Cyber-Security practice.</title>
      <dc:creator>Charisma Elohe</dc:creator>
      <pubDate>Thu, 27 Jan 2022 22:36:23 +0000</pubDate>
      <link>https://dev.to/elohe_charisma/beginning-cyber-security-practice-4il2</link>
      <guid>https://dev.to/elohe_charisma/beginning-cyber-security-practice-4il2</guid>
      <description>&lt;p&gt;Cyber Security is one of the most lucrative fields in computer science that is registering streams of new learners and professionals. &lt;br&gt;
The massive move from analogue to digital data has greatly led to this migration.&lt;/p&gt;

&lt;p&gt;Here are some vital resources you could use to make your learning path smooth. You could moreso use them to practise and affirm the skills you have learnt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Exploit.education&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://exploit.education/"&gt;https://exploit.education/&lt;/a&gt; - Exploit education is a platform with a variety of resources for learning vulnerability analysis, software debugging, exploit development, binary analysis and general cyber security issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Vulnhub.com&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.vulnhub.com/"&gt;https://www.vulnhub.com/&lt;/a&gt; - This refers to a collection of exploitable Virtual Machines where you can practise penetration without fear of infringement policies.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Newbiecontest.org&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.newbiecontest.org/"&gt;https://www.newbiecontest.org/&lt;/a&gt; - It is an online forum/platform that provides different challenges to your Cyber Security skills. The skills are not limited to: cryptography, forensics, Hacking etcetera.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Command Challenge&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://cmdchallenge.com/"&gt;https://cmdchallenge.com/&lt;/a&gt; - This is a platform where you get to practise your bash commands. It is simple and friendly to use since it instructs you on the command execution.&lt;/p&gt;

</description>
      <category>cybersecurity</category>
      <category>security</category>
    </item>
  </channel>
</rss>
