<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[DevCNairobi - Medium]]></title>
        <description><![CDATA[Developer Circle: Nairobi - Medium]]></description>
        <link>https://medium.com/devcnairobi?source=rss----350e939edb04---4</link>
        <image>
            <url>https://cdn-images-1.medium.com/proxy/1*TGH72Nnw24QL3iV9IOm4VA.png</url>
            <title>DevCNairobi - Medium</title>
            <link>https://medium.com/devcnairobi?source=rss----350e939edb04---4</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sat, 14 Nov 2026 02:59:52 GMT</lastBuildDate>
        <atom:link href="https://medium.com/feed/devcnairobi" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[How does React Native actually do its work?]]></title>
            <link>https://medium.com/devcnairobi/how-does-react-native-actually-its-work-538dd224e0dd?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/538dd224e0dd</guid>
            <category><![CDATA[ui-ux-design]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[react-native-app]]></category>
            <dc:creator><![CDATA[Dominic Imbuga]]></dc:creator>
            <pubDate>Mon, 11 Oct 2021 04:47:38 GMT</pubDate>
            <atom:updated>2021-10-11T04:47:38.574Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/935/1*h7UK4LOPWdW2ln7kOY1cnw.jpeg" /></figure><p>If you are like me, a curious George , you will not be happy to just accepting what have been provided for you to use . You want to poke your nose into the hood and figure out how things work under the hood. How does React Native actually do its work?</p><p>You may have heard of hybrid mobile development and how react Native fits in the big picture in hybrid mobile development. The short story is about the problem the mobile app development community was challenged with , that of maintaining separate code bases for targeting both platforms because normally you have to build Android apps with Java or Kotlin and IOS apps with Swift or Objective-C !</p><p>This is a lot of code base to maintain, especially if you are a small company just starting out with no resources, you need to save on time and money. The question changed to , can we build under one code base and still target both platforms ?</p><p>React Native is one of the solutions to this challenge backed by Facebook, which is also behind React, you may not have realised it but Facebook&#39;s mobile app that you use to access your Facebook is built using React Native !</p><p>In this article we cover the salient features of hybrid mobile development and in particular how React Native works under the hood. You obviously have wondered how React Native uses JavaScript to build mobile apps that can run on both iOS and Android using the same code base, this is actually React Native&#39;s philosophy , &#39; Learn once write everywhere&#39; !</p><p>Just so you know, this is a real app that is built using JavaScript but then React runs on your mobile device.React Native does not use web views so you get access to 100% of the native APIs using JavaScript, the app built therefore will not look different from apps built using the Native approach.</p><p>Along the way, I will introduce the salient features that make this possible. Just sufficient enough for us to understand how React Native works. This will really be comfortable if you have good knowledge of JavaScript as well as React, however no assumption made, let&#39;s dive in !</p><p>The idea here is to use Hybrid Development using JavaScript as a language of choice. This is where we understand that both Android and iOS have an already built-in JavaScript engine. Android has V8 and iOS has JavaScript Code which already is being used by the browsers in each of this two dominant platforms.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/891/1*APMwueASyiIHNI6xdFhBEg.jpeg" /></figure><p>This means we have a virtual Machine already that understands JavaScript and is able to run JavaScript Code ! Why not build on top of that? React Native was born out of this what if question, it built a bridge into the Native environment.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/941/1*nTzlqzg3zRV0wu4G3sd5rA.jpeg" /></figure><p>This bridge taps in through the virtual Machine into the Native device capabilities and on top of this bridge we build React Native itself which is build with JavaScript and partly by Native code, that part is completely hidden from us.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/934/1*Dp_ee8lwBHH6L_ED8gsa9Q.jpeg" /></figure><p>We access the React Native itself by writing React Native application code on top of the React Native platform, this application code is completely written in JavaScript.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/931/1*hKVGvnlrWHtglZR04j3U-A.jpeg" /></figure><p>When you need to render your interface in either Android or iOS, both of them will access the native UI elements regardless of the platform then leverage them while rendering the UI for both platforms. This part is completely taken care of by the React Native platform.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/935/1*h7UK4LOPWdW2ln7kOY1cnw.jpeg" /></figure><p>We just live in the comfort of JavaScript environment and write our code Completely as if we were writing React Native Application and be able to leverage all of the native device capabilities.</p><p>If React Native is insufficient to meet your needs then you can always go native, meaning , injecting out of React Native environment then being able to that part of the app using native approaches.</p><p>But as you have realised in this article , React Native give you 100% access to native capabilities, this means you can do alot by just staying in the React Native environment except for very specific needs.</p><p>Congratulations for reading to the end.<br>Happy coding !</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=538dd224e0dd" width="1" height="1" alt=""><hr><p><a href="https://medium.com/devcnairobi/how-does-react-native-actually-its-work-538dd224e0dd">How does React Native actually do its work?</a> was originally published in <a href="https://medium.com/devcnairobi">DevCNairobi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to create windows and use window functions for pretty advanced SQL analysis.]]></title>
            <link>https://medium.com/devcnairobi/how-to-create-windows-and-use-window-functions-for-pretty-advanced-sql-analysis-cb7fd0f673e2?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/cb7fd0f673e2</guid>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[postgres]]></category>
            <dc:creator><![CDATA[Dominic Imbuga]]></dc:creator>
            <pubDate>Mon, 20 Sep 2021 08:19:12 GMT</pubDate>
            <atom:updated>2021-09-20T08:19:12.107Z</atom:updated>
            <content:encoded><![CDATA[<p>One of the most powerful concepts in SQL data analysis is the window function, it took a little practice for me to really nail it and it become extremely useful on my Machine learning journey as you will see here in this article.</p><p>Learning to use this tool in different situations made my data analysis effective. The Window function allowed me to compare one row to another without doing joins! This meant I could learn to do simple things like create a running total as well as tricky things like to determine whether one row was greater than previous row and classify it based on my findings.</p><p>The most practical example of a window function is a running total, for example, let us say you want to calculate a running total of how much standard paper Kiwanda sold today.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*AAzRKeKKYtwg9xHPvWSycg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/493/1*p5JTv89hCiTsfwlX8I223g.jpeg" /></figure><p>You can see that this query creates an aggregation running total, without using GROUP BY. Let us break down the syntax and see how it works.</p><p>The first part of this aggregation, looks a lot like any other aggregation, adding OVER designates it as a Window function. You could read the above aggregation as; take the sum of standard quantity across all rows leading up to a given row , in-order by occurred at.</p><p>Let us say that instead we want to start the running total OVER at the beginning of each month. To narrow the window from the entire dataset to individual groups within the dataset we use the PARTITION BY function.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*PguRQhKnGxZdN2cjvfInYw.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/645/1*acxffZyyBUaJnb4Y6q1uEA.jpeg" /></figure><p>Now, this query groups and orders the query at the month in which the transactions occurred.Within each month, it is ordered by occurred at and the running total sums across that current row and all previous rows of standard quantity. That is what happens when you group using PARTITION BY.</p><p>In case you are still stumped by ORDER BY, it simply orders the designated columns the same way the ORDER BY clause would except that it treats every partition as separate. It also creates the running total, without ORDER BY each value will simply be a sum of all standard quantity values in its respective month.</p><p>To get a clear picture, here is what happens when we run this query with ORDER BY .</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hIg2mkep9gC3nqL6aqH3VQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/675/1*cfLpuSG7t9pAHya2zo-LKQ.jpeg" /></figure><p>The ORDER and PARTITION defines what is referred to as the Window ; the ordered subset of data where all this calculation are made !</p><p>You have seen why one of the most powerful concepts in SQL data analysis is the window function, it will take a little practice for you to really nail it and see it become extremely useful. Making you a world class data analyst in the process because most SQL education end before the window function.</p><p>Congratulations for reading to the end. If you find this useful , clap ! so that other folks can see it easier.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=cb7fd0f673e2" width="1" height="1" alt=""><hr><p><a href="https://medium.com/devcnairobi/how-to-create-windows-and-use-window-functions-for-pretty-advanced-sql-analysis-cb7fd0f673e2">How to create windows and use window functions for pretty advanced SQL analysis.</a> was originally published in <a href="https://medium.com/devcnairobi">DevCNairobi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to use SQL subqueries to substantially increase the types of problems you can solve]]></title>
            <link>https://medium.com/devcnairobi/how-do-i-substantially-increase-the-volume-of-data-i-can-comfortably-work-with-306bbdaa83c9?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/306bbdaa83c9</guid>
            <category><![CDATA[datascience-training]]></category>
            <category><![CDATA[postgres]]></category>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[machine-learning]]></category>
            <dc:creator><![CDATA[Dominic Imbuga]]></dc:creator>
            <pubDate>Mon, 13 Sep 2021 08:01:31 GMT</pubDate>
            <atom:updated>2021-09-13T08:01:31.641Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/816/1*hKCCZXp5AvLjCU8xnHQJAg.png" /></figure><p>How do I substantially increase the volume of data I can comfortably work with? How do I increase the problems I can solve ? I had just realized that, a major part of machine learning is data.</p><p>It was so important that I spend more time on exploring data.Data is the most important part of Machine learning. If I have no data, then machine learning cannot help me, so before I get myselfself elbow-deep in machine learning, it was important for me to set myself for success</p><p>At this point on my machine learning journey, I had learnt all the basics on SQL tools to work creatively with data, I understood database structure and generally knew how to access information. I could even do some simple aggregation.</p><p>However there were few things left to learn that would make me able to solve any problem I&#39;m confronted with and this would set me along the path to becoming a skilled practitioner of the art .</p><p>In this article ,let us happily explore and enjoy the journey as I share what I learnt, we are going to learn to query from the results of another query. This allowed me to build more transformation into my query , organize work more easily and even make my query run faster !</p><p>Subqueries also known as inner queries or nested queries which is a tool for performing operations in multiple steps. This tool will allow us to answer more complex questions.</p><p>Now that we are getting into more complex queries using subqueries the Termux postgres terminal workspace for executing our SQL maybe alittle crumped .If you have not already been writing your code in an editor, its great time to start .</p><p><em>In my workflow in termux, I have two sessions running,one with vim file open with subquery.sql extension which I can edit the queries then copy paste the query for evaluation In the second Termux session that has the postgre running.</em></p><p><em>Cheers to the creators of Termux and Vim , it is an awesome tools for developers and Engineers alike to leverage on their mobile phones to do some cool stuff like this series of articles you are reading on SQL Data Analysis.</em></p><p><strong>Kiwanda is not a real company, We’ve fabricated it and all the data for the sake of this article.The questions we will answer using Kiwanda are meant to simulate real world problems,To get your environment set go here https://link.medium.com/1c3YbDqDoib, we had done that .</strong></p><p>Let us put our marketing manager hats on, we would like to know which channel sends the most traffic per day on average to Kiwanda , which is tricky because in order to do this we will have to aggregate events by channel, by day then we need to take those and average them.</p><p>Let&#39;s break down that example,</p><p>First we start by quering the underline table to make sure the data makes sense for what we are trying to do</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*o0ehrlFAuv1mupKE2Pq9KQ.jpeg" /></figure><p>Next we will count up all the events in each channel in each day.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*AxyQE7sHpCJfQaj7bw7nZQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/467/1*1GcgofSAhV_w60HqPURREA.jpeg" /></figure><p><em>NOTE: I&#39;m using vim to write, edit , copy and paste to postgreSQL .The file is saved as subquery.sql that is why my vim has highlighted my SQL code.</em></p><p>The last step is that we want to average across the events colum we have created, in order to do that we would want to query against the results from this query.</p><p>We can do that by wrapping our query in a parentheses and using it in our FROM cluase in the next query that we write. As you can now see it is a query inside a query in other words a subquery !</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*ThMwg5Cfd8YulyUKH-rVFg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/657/1*6KU_TBkgKJSMgI3bRcjddQ.jpeg" /></figure><p>Subqueries are required to have aliases, which are added after the parentheses the same way you will add an alias to a table. Here we are just selecting all the data from the subquery.</p><p>Let us go the last mile and average events for each channel, since the subquery acts like a one table in the FROM clause , we will put a GROUP BY cluase after the subquery .</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*vVD3ExQkuJqNznXcUFJMlg.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*lpyrwK-L-U3hsjJmIxt3TQ.jpeg" /></figure><p>Since we are now reordering based on this new aggregation, we no longer need the ORDER BY statement in the subquery, so let us take that out to keep things clean.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*PcNmwK6_TXIQ_EnEl_eGMQ.jpeg" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*gR1kEmFdOy82fnHJ_lL2WQ.jpeg" /></figure><p>Just so we are clear on how things are really happening here, let us breakdown on how this new query runs. First your inner query will run, it may sound like a no brainer, but it is important !</p><p>The inner query must actually run on its own as the database will treat it as an independent query. Once the inner query is complete, the rest of the query also known as the outer query will run across the results set created by the inner query.</p><p>Some SQL editor actually allows you to highlight and run the inner query and do some edits before you run the outer query. This is a great when you want say to edit the inner query, quickly see its output if it is correct before running the outer query again. This is a good practice because it saves on resources.</p><p>Subqueries can be used in several places within a query, they can really be used in anywhere you might use a table name or even a column name or an individual value.</p><p>They are especially useful in conditional logic in conjunction with WHERE or JOIN clauses or in the WHEN potion of a CASE statement. Writing subqueries allows you to substantially increase the types of problems you can solve and the volume of data you can comfortably work with in SQL</p><p>Congratulations for reading to the end !</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=306bbdaa83c9" width="1" height="1" alt=""><hr><p><a href="https://medium.com/devcnairobi/how-do-i-substantially-increase-the-volume-of-data-i-can-comfortably-work-with-306bbdaa83c9">How to use SQL subqueries to substantially increase the types of problems you can solve</a> was originally published in <a href="https://medium.com/devcnairobi">DevCNairobi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Automate and Scale SQL capabilities using Google Cloud Platform]]></title>
            <link>https://medium.com/devcnairobi/you-have-noticed-that-we-are-running-all-our-sql-commands-on-our-termux-terminal-740ffeeada21?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/740ffeeada21</guid>
            <category><![CDATA[gcp]]></category>
            <category><![CDATA[cloud]]></category>
            <category><![CDATA[bigquery]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[sql]]></category>
            <dc:creator><![CDATA[Dominic Imbuga]]></dc:creator>
            <pubDate>Mon, 30 Aug 2021 06:34:50 GMT</pubDate>
            <atom:updated>2021-08-30T06:34:50.288Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*tQSuEx8QJzMJXEPlVtKzcg.jpeg" /></figure><p><em>GCP NETWORK, The largest of its kind on earth.</em></p><p>You have noticed that we are running all our SQL commands on our Termux terminal from our previous article demo at https://link.medium.com/n8UPtodv7hb .</p><p>How can we scale this up? Can this approach be used to handle terabytes of data ? You maybe be wondering. Of course not, the good news is that all this commands that we have been writing can be used in the same way on the cloud .</p><p>A little about me is that I’m a cloud engineer by training, thanks to the Google Africa Developer Scholarship 2020 program where I was as student and the same 2021 program where I’m a mentor for the associate cloud engineers track.</p><p>This has journey has totally absolutely changed my perspective and taught me that If I don’t enjoy that mindset of being a life long learner, I can have a career but I will not be happy with it.</p><p>Through the scholarship, I learned implementating, deploying, migrating and maintaining applications in the Cloud. I noticed that I understand different Google Cloud Platform (GCP) services and features and I&#39;m able to apply my knowledge, analyse requirements, evaluate different options and create my own services.</p><p>Why not use this skill set to accelerate my machine learning journey ? I thought, If using a managed service allows me to outsource a lot of the administration and maintainance overhead to Google.</p><p>In this article we will be architecting our own data platform infrastructure in GCP and move from PostgreSQL on Termux. Let us think global and develop locally, we have to have the bigger picture for kiwanda data infrastructure, right?</p><p>We definitely want to choose a managed service to make our work easier, this will enable us to focus on first things first which is uncovering meaningful insights from data using SQL. Our upgraded tools lists for this cloud job will be:</p><p>• BigQuery</p><p>• Cloud Dataflow</p><p>• Cloud Dataprep</p><p>• Cloud Dataproc</p><h3>BigQuery</h3><p>BigQuery is GCPs serverless highly scalable and cost effective cloud data warehouse. It is a petabyte scale data warehouse that allows for super fast queries using the processing power of Google&#39;s infrastructure.</p><p>Because there is no infrastructure for you to manage, you can focus on uncovering meaningful insights using familiar SQL without the need for the database administrator.</p><p>BigQuery is used by all types of organisations and there is a free usage tier to help you get started. You can access BigQuery by using the GCP console, by using command line tool or by making calls to the BigQuery rest API using variety of clients libraries like Python, Java or .net. There are third party services that help with data visualization or loading data</p><p>This querry below takes less than a minutes to execute on BigQuery to process on a table of over 100 billion rows on 4.1TB ! it would take hours or days through a serial execution like we have been doing on our our dataset.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/898/1*v-d8YejUZeTa8c0WRneV9w.jpeg" /></figure><p><strong>Cloud Dataflow</strong></p><p>It is a managed service for executing a wide variety data processing patterns . It&#39;s a fully managed service for transforming and enriching data in stream and batch modes with equal reliability and expressiveness.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*3wvhtbnt7TdBJgMK_gJmfA.jpeg" /></figure><p>This data could come from other GCP service like Cloud Datastore or Pub/Sub or ingested from third party services. After you transform data in cloud data flow you can now analyse it in BigQuery , AI platform or even Cloud Bigtable.</p><p><strong>Cloud Dataprep</strong></p><p>This is an intelligent data service for visual exploring , cleaning and preparing Structured and unstructured data for analysis , reporting and Machine learning.</p><p>With automatic schema , data types, possible JOINs and anomaly detection. You can skip time consuming data profiling and focus on data analysis.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*I3qdGb_qxwZjKupJk21MUg.jpeg" /></figure><p>Cloud Dataprep is fully managed and scales on demand to meet your data preparation needs so you can Focus on analysis. The refined data can be then exported to BigQuery or cloud storage for analysis and Machine learning</p><p><strong>Cloud Dataproc</strong></p><p>This is a fast, easy to use fully managed cloud service for running Apache spark and Apache Hadoop clusters in a simpler way.</p><p>Without using cloud Dataproc it can take from 5 to 30mins to create Spark and Hadoop Clusters on premise or through other IaaS providers.</p><p>Cloud Dataproc clusters are quick to start, scale and shutdown with each of this operations taking less that 90mins. Built in integration with BigQuery, Cloud storage, cloud Bigtable and this provides you with a complete data platform.</p><p>I hope this article made you feel more comfortable with using different GCP data tools to automate and scale your data platform ready for machine learning. Now it&#39;s your turn, go ahead and apply what you have learnt in this article by architecting your own data infrastructure in GCP.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=740ffeeada21" width="1" height="1" alt=""><hr><p><a href="https://medium.com/devcnairobi/you-have-noticed-that-we-are-running-all-our-sql-commands-on-our-termux-terminal-740ffeeada21">How to Automate and Scale SQL capabilities using Google Cloud Platform</a> was originally published in <a href="https://medium.com/devcnairobi">DevCNairobi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to use SQL Aggregations to add value to raw data]]></title>
            <link>https://medium.com/devcnairobi/imagine-yourself-as-marketing-manager-at-kiwandayou-want-to-compare-facebook-as-a-marketing-channel-a152e0fd0173?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/a152e0fd0173</guid>
            <category><![CDATA[datascience-training]]></category>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[termux]]></category>
            <category><![CDATA[postgresql]]></category>
            <category><![CDATA[ecommerce]]></category>
            <dc:creator><![CDATA[Dominic Imbuga]]></dc:creator>
            <pubDate>Mon, 09 Aug 2021 07:02:07 GMT</pubDate>
            <atom:updated>2021-08-09T07:02:07.589Z</atom:updated>
            <content:encoded><![CDATA[<p>Imagining myself as a marketing manager at Kiwanda, I wanted to compare Facebook as a marketing channel against all other channels.I knew Facebook is a great channel for my business, but is it better than all the rest combined ? How would I use SQL tool to answer this question?</p><p>So far on my journey, I used JOINs to explore the data, and I shared In our last article (https://link.medium.com/IC4qug5w6hb) , as we looked at how to leverage SQL to link tables together. You saw why SQL is one of the most popular environments for working with data as we learned how to write JOINs.</p><p>Along the way, I found myself using raw level outputs for the early exploratory work , when searching my database to better understand the data and JOINs were handy , as I got a sense for how the data looks , and begin looking answers to my questions, aggregates became more useful.</p><p>Raw data is overwhelming and less valuable than aggregated data, fortunately, databases are great at aggregating data and the SQL language was easy to learn. I’m familiar with Excell ,and found out that SQL commands are similar ! how convenient.</p><ul><li><strong>COUNT</strong> — counts how many rows are in a particular colum</li><li><strong>SUM</strong> adds together all the values in a particular colum</li><li><strong>MIN</strong> and MAX returns the lowest and highest values in a particular colum</li></ul><p>These function operates down colum not across a rows. So I could do things like sum up all quantities of paper ever delivered at Kiwanda, Instead of getting a results set many thousands of rows long, I just got one line with the answer !</p><p>Kiwanda is not a real company we fabricated it in our first article to help us answers some business questions with data, check it out <em>https://link.medium.com/IC4qug5w6hb</em></p><p>Let us get our hands dirty while we help Kiwanda answer some of its tricky questions. We will look at the following aggregation’s salient features.</p><ul><li>NULL</li><li>SUM</li><li>GROUP BY</li><li>DATE Functions</li></ul><p>We are using <strong>Termux</strong> and <strong>PostgreSQL</strong>. Check out our previous article on getting your environment ready here <a href="https://link.medium.com/qlS3FPfx6hb">https://link.medium.com/qlS3FPfx6hb</a></p><p><strong>Null</strong></p><p>Before we dive deep into SQL aggregations, let’s take a look at the concept of NULLs , <strong>NULL</strong> means no data, it is different from 0 or space and there is a good reason. This is a very crucial concept guys, because from a business perspective, for Kiwanda a 0 means that no paper was sold, which could mean a sell was attempted but not made, a <strong>NULL</strong> could mean no sell was even attempted.</p><p>This is a very meaningful difference. So it&#39;s important to know what NULLs are and how to work with them to gain meaningful insights from data.</p><h3><strong>Scenario</strong></h3><p>Imagining yourself as a Sales manager at Kiwanda, you might want want to know all the accounts for which the person of contact (primary_poc) is <strong>NULL</strong>, if you don’t have a person of contact , chances are you are not going to be able to keep that customer for much longer. Right? Let’s find these accounts !</p><p><em>SELECT id , name , website, sales_rep_id</em></p><p><em>FROM accounts</em></p><p><em>WHERE primary_poc IS NULL;</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1010/1*6zR5-NXMIWJVxo6EC49skw.jpeg" /></figure><p>Rows for <strong>NULL</strong> values in primary_poc returned</p><p><em>Note: We have used is </em><strong><em>NULL</em></strong><em> instead of </em><strong><em>= NULL</em></strong><em> because </em><strong><em>NULL</em></strong><em> is not a value but is the property the data.</em></p><h3><strong>Date function</strong>.</h3><p>I noticed that date are abit hard to work with, aggregating by date fields in particular does not work in a practical way, it treats each time stamp as unique , when it will be more practical to round to the nearest day, week or month and aggregated across that period.</p><p>The good news though, there are plenty of special functions to make date easy to work with.</p><p>When storing dates , different format exists , like for those who live in the United States you probably used to seeing dates formated as mm/dd/yy or similar month first format. which is non-conventional compared to the rest of the world standard because the rest of the world the dates are formated as dd/mm/yy. This is not necessary better or worse it just different.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*uob7OKrGV0nMdy-pA_YRyA.jpeg" /></figure><p>Different date and time formats in the world</p><p>Databases on the other side do it differently, in a yet another interesting way, ordering from least to most granular part of the date, yy/mm/dd. This is a very specific utility because it makes it so that the date sorted alphabetically are also in chronological order, in other words, date ordering is same whether you think dates or bits of text.</p><p>The year first way that databases store dates is idea for sorting the way we want to retrieve this information in the future.Whether we want the most recent or oldest information, day first and month first date formats are sort funny ways that don&#39;t make any sense if you think about it.</p><p>The benefit I love the most about this date format is that, dates can easily be truncated inorder to group them for analysis.</p><p>Scenario</p><p>Lets explore this date functions with our Kiwanda data. On what day of the week are the most sales made ?</p><p><em>SELECT DATE_PART(&#39;dow&#39;, occurred_at) AS day_of_week,</em></p><p><em>SUM(total) AS total_qty</em></p><p><em>FROM orders</em></p><p><em>GROUP BY 1</em></p><p><em>ORDER BY 2 DESC;</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*8bdMwMnbFmv4KpPsL0Mxhw.jpeg" /></figure><p>Looks like the most paper was ordered on a Sunday</p><p>Note: dow stands for the day of the week and returns a value from 0 to 6 , where 0 is Sunday and 6 is Saturday.</p><p>Now,</p><p>Imagining yourself as marketing manager at Kiwanda you want to compare Facebook as a marketing channel against all other channels.You know Facebook is a great channel for your business, but is it better than all the rest combined ? How would use SQL to answer this question?</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=a152e0fd0173" width="1" height="1" alt=""><hr><p><a href="https://medium.com/devcnairobi/imagine-yourself-as-marketing-manager-at-kiwandayou-want-to-compare-facebook-as-a-marketing-channel-a152e0fd0173">How to use SQL Aggregations to add value to raw data</a> was originally published in <a href="https://medium.com/devcnairobi">DevCNairobi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[The real power of SQL is JOINs]]></title>
            <link>https://medium.com/devcnairobi/datascience-dataanalytics-postress-sql-ecommerce-6b76daee74e8?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/6b76daee74e8</guid>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[termux]]></category>
            <category><![CDATA[ecommerce]]></category>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[postgresql]]></category>
            <dc:creator><![CDATA[Dominic Imbuga]]></dc:creator>
            <pubDate>Mon, 26 Jul 2021 07:08:13 GMT</pubDate>
            <atom:updated>2021-08-02T14:52:00.476Z</atom:updated>
            <content:encoded><![CDATA[<p>The real power of SQL comes from working with data across multiple tables at once. The term relational database reffers to the fact that tables within it realate to one another. They contain common identifiers that allow information from multiple table to be easily combined.</p><p>Keeping all companies data from purchasing transactions to employee job satisfaction to inventory in a single Excell dataset doesn’t make aton of sense.The table would hold a ton of information and it will be hard to determine row colum structure for so many different kind of data.</p><p>Databases give us the flexibility to keep things organized neatly in their own tables, So they are easy to find and work with , while also allowing us to combine tables as needed to solve problems that require several types of data.</p><p>Our goal is to use SQL’s data analysis superpower to answer tricky businesses questions). Now you are about to see why SQL is one of the most popular environments for working with data as we learn how to write joins</p><p>We&#39;ll be using Termux! This way we can practice to write SQL queries anywhere using Android smartphones, don&#39;t let that long ride bore you, performs some data science ! You can find Termux on Google store and more information on how to install Postgres and git on Termux , and all the cools things Termux can do , head over here <a href="https://wiki.termux.com">https://wiki.termux.com</a> . Please feel free to reach out if you having issues setting it up.</p><p>Setup</p><p>When in Termux, create a directory</p><h3>mkdir kiwanda &amp;&amp; cd Kiwanda</h3><p>I have already created a repository on gitlab that has a data set name kiwanda.sql we will use postgres ,so go ahead and clone the repo</p><p><em>git clone https://gitlab.com/Domminique/kiwanda.git</em></p><p>To use analysis kiwanda.sql dataset we need PostgreSQL with our kiwanda.sql.Before we can use PostgreSQL we need to install it in Termux of course. Head here https://wiki.termux.com/wiki/Postgresql to do it</p><p>Make sure your Postgress is running since PostgreSQL uses a client/server model. A PostgreSQL session should be running.</p><p>Create a new database with</p><h3>$ psql createdb kiwanda</h3><p>Then copy the kiwanda.sql dataset we cloned from gitlab to that database for our analysis. Note the path of the SQL file location</p><h3>$ psql kiwanda &lt; /data/data/com.termux/files/home/kiwanda/kiwanda.sql</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/714/1*mPNiBWlyr31UC419I47Z-A.jpeg" /></figure><p>psql kiwanda tells PostgreSQL we are using the kiwanda database and the kiwanda=# means our database it ready for queries and \qt list tables in the database</p><p>If you are here, you are set 🚀</p><p>To understand what joins and why they are helpful, lets think about Kiwanda&#39;s orders table.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*Ha_sdRAW5g9aFIEFj3sf0g.jpeg" /></figure><p>Looking back at this table , you will notice that non of the orders say the name of the customer. Instead the table reffers to customers by numerical values in the account_id colum. We will need to join another table inorder to connect this data to names.</p><p>Lets look at the Entity Relationship Diagram of Kiwanda database</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BZrxuSMe4177kW1WbE1XIg.png" /></figure><p>There are reasons someone might have made the decision to separate orders from the information about the customer placing those orders, two of the most important ones reasons are,</p><p>Orders and accounts are two different kinds of objects and would be easy to organize if kept separate.</p><p>This multiple-table structure allows queries to execute more quickly</p><p>JOINs will make your queries alittle more complicated . Let&#39;s first break down all the parts of a JOIN and to see what they do before you write some of your own.</p><p>We will start by an INNER JOIN then we will move into the others later. In order to write a JOIN the first thing we will need is a SELECT and FROM clauses just like any other query.</p><p>In this case, we are looking to add account name to each order, so we start with the orders table. The next thing we need is a JOIN clause, you can think of this as a second FROM clause, it identifys the table where the data we want to join lives. In this case account name lives in the account table. Finally we need to specify the relationship between the two tables . This happens by writing a logical statement in the ON clause.</p><p>You can see the results contain orders and the accounts that placed them. The tricky part about JOINs is that they are means to do other types of analysis.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*u4BxMvavzerZ9W_wfg-Y-w.jpeg" /></figure><p>Combining data isn’t an end into itself , It’s a tool that allows us to filter or aggregate with an expanded set of information. That means queries involving JOINs can get pretty complicated . In order to get the exact results we are after we need to be careful about exactly how we filter our data.</p><p>Congratulations for reading to the end ! You have skilled up</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6b76daee74e8" width="1" height="1" alt=""><hr><p><a href="https://medium.com/devcnairobi/datascience-dataanalytics-postress-sql-ecommerce-6b76daee74e8">The real power of SQL is JOINs</a> was originally published in <a href="https://medium.com/devcnairobi">DevCNairobi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why do analysts like SQL]]></title>
            <link>https://medium.com/devcnairobi/why-do-analyst-like-sql-9cbc600de571?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/9cbc600de571</guid>
            <category><![CDATA[machine-learning]]></category>
            <category><![CDATA[data-analyst]]></category>
            <category><![CDATA[sql]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[postgres]]></category>
            <dc:creator><![CDATA[Dominic Imbuga]]></dc:creator>
            <pubDate>Mon, 19 Jul 2021 07:13:39 GMT</pubDate>
            <atom:updated>2021-07-23T14:02:07.988Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*BZrxuSMe4177kW1WbE1XIg.png" /></figure><p><em>Entity Relationship Diagram for Kiwanda database</em></p><h3>On my transitioning journey from software engineering to machine learning engineering I met data. What is the first thing first in machine learning? Yes you guessed right, data. Companies today capture tons of data and expect employees in all departments to use it methodically in their decision making.</h3><p>A lot of this data lives in databases and most of the worlds databases are accessed using Structured Query Language which is abbreviated as SQL. It has been around since the 1970s and it’s the most common method of accessing data and the database today.</p><p>SQL is a tool, it has a variety of functions that allows it&#39;s us to read, manipulate and change data. In this article we will primary focus on part of SQL used in data analysis, because SQL has so many uses in software engineering.</p><p>You don&#39;t need to be an analyst or have any prior experience with SQL knowledge in order to get value from this article, in infact this article is accessible to folks who work in marketing, finance, operations or anywhere in between .</p><p>There are lots of ways to do this, but ask any data scientist or analyst and they will tell you that bulk of their work happens in SQL.</p><p>SQL is popular for data analysis for a few reasons,</p><ul><li>It&#39;s semantically easy to understand and learn</li><li>It can be used to access large amounts of data directly where it is stored, you don&#39;t have to copy data into other applications to view it and you don&#39;t have to worry about your spreadsheet application crushing because of data overload.</li><li>It&#39;s easy to audit and replicate , In a spreadsheet tool like Excell you have to click in each cell to know how they are calculated, with SQL you can just read the query from top to bottom, nothing is hidden.</li><li>SQL can run queries on multiple tables at once a cross large datasets. It&#39;s great for peroming the types of aggregation you might normally do in an excell table; Counts, Sums, minimums and Maximums ..etc but Excell maxises out at just over 1 million rows, with SQL you can querry across billions of rows at time</li></ul><p>Maybe most importantly, SQL is incredible flexible , especially when compared to the out of the box dashboard products like Google analytics, In Google analytics you may be able to answer questions like which pages on my site receives alot of traffic and where is it coming from ? But you can use SQL filtering capabilities to answer much deeper more complex questions like how many viewers returned to my site between one and three weeks after their first visit? And what typically brings them back?</p><p>This features make SQL one of the primary data analysis tools for both beginners and experts.</p><p>For example , Using SQL, let&#39;s use data from Kiwanda a company that sells paper.There are 50 sales reps spread across Kenya in 4 regions .They sell three types of paper regular, poster and glossy. Their clients are primary large fortune 100 companies whom they attract by advertising on Facebook, Twitter and Google .</p><p>Kiwanda is not a real company, We&#39;ve fabricated it and all the data for the sake of this article.The questions we will answer using Kiwanda are meant to simulate real world problems.</p><p>Using SQL we will be able help Kiwanda answer tricky questions like ;</p><ul><li>Which of their product line is worst performing ?</li><li>Which of their marketing channel they should make a greater investment in?</li></ul><p>Next article let’s get our hands dirty using this datasets and PostgreSQL to help Kiwanda use it’s data, as you know data is the new oil!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9cbc600de571" width="1" height="1" alt=""><hr><p><a href="https://medium.com/devcnairobi/why-do-analyst-like-sql-9cbc600de571">Why do analysts like SQL</a> was originally published in <a href="https://medium.com/devcnairobi">DevCNairobi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Paid Programs for Technical Writers]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/devcnairobi/paid-programs-for-technical-writers-29e92e6bb076?source=rss----350e939edb04---4"><img src="https://cdn-images-1.medium.com/max/2600/0*XxCVqkuchuSrFmCk" width="7360"></a></p><p class="medium-feed-snippet">Technical writing is the process of documenting processes such as software documentation and instructional material for programming.</p><p class="medium-feed-link"><a href="https://medium.com/devcnairobi/paid-programs-for-technical-writers-29e92e6bb076?source=rss----350e939edb04---4">Continue reading on DevCNairobi »</a></p></div>]]></description>
            <link>https://medium.com/devcnairobi/paid-programs-for-technical-writers-29e92e6bb076?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/29e92e6bb076</guid>
            <category><![CDATA[technical-writing]]></category>
            <category><![CDATA[freelance-writing]]></category>
            <category><![CDATA[writing]]></category>
            <dc:creator><![CDATA[Licio Lentimo]]></dc:creator>
            <pubDate>Mon, 31 May 2021 07:50:22 GMT</pubDate>
            <atom:updated>2022-11-24T09:35:24.493Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Set Up a Free VPN Server in AWS]]></title>
            <link>https://medium.com/devcnairobi/set-up-a-free-vpn-server-in-aws-ee3198bc049?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/ee3198bc049</guid>
            <category><![CDATA[aws]]></category>
            <category><![CDATA[openvpn]]></category>
            <category><![CDATA[vpn]]></category>
            <dc:creator><![CDATA[Licio Lentimo]]></dc:creator>
            <pubDate>Mon, 26 Apr 2021 07:00:41 GMT</pubDate>
            <atom:updated>2021-04-26T07:00:41.094Z</atom:updated>
            <content:encoded><![CDATA[<p>A Virtual Private Network (VPN) is a way to maintain online anonymity by masking your public IP address so your online activity is untraceable. There are a ton of VPN services and apps available out there, most of which have paid plans, but in this post I am going to demonstrate how you can set up your own, for free. Let’s get started.</p><h4>Create an account in AWS</h4><p>We first need to have an account with AWS set up. So head over to this <a href="http://aws.amazon.com">link </a>to create your account.</p><p><a href="https://aws.amazon.com">Cloud Computing Services - Amazon Web Services (AWS)</a></p><p>Fill in all the required info, then proceed below.</p><h4>Login to your Management Console</h4><p>Once you sign in to your Management Console, head over to the Services tab and under Compute, click on EC2. You can read more about EC2 <a href="https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html">here</a>. Once that loads up, click on the Launch Instance button.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/806/1*Ezq7SYGmwtK_ohhTxs2wXg.png" /><figcaption>Click on the Launch Instance button</figcaption></figure><p>On the left panel, click on AWS Marketplace. On the search bar, search for <em>openvpn</em> and look for the <em>“free tier eligible” </em>sign for the OpenVPN Access Server then select it. Scroll down and click on Continue. <a href="https://aws.amazon.com/marketplace/search/results?x=0&amp;y=0&amp;searchTerms=openvpn+access+server">OpenVPN Access Server</a> by <em>OpenVPN Technologies, Inc</em>. is a full-featured SSL VPN software solution that integrates the open-source OpenVPN server capabilities with additional features. Those features include a simplified administration web interface and automated certificate management to easily issue user certificates and keys without necessarily requiring an existing public key infrastructure (PKI).</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*duQjcfVSajN6bsyNOYIbjw.png" /><figcaption>Select the OpenVPN Access Server with free tier eligible option</figcaption></figure><h4>Create a new key pair</h4><p>Select the t2.micro option with the <em>“free tier eligible”</em> option then click Review and Launch.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*hufUhewUN61-a8SIdnxXBA.png" /><figcaption>Select t2.micro option with free tier eligible</figcaption></figure><p>On the bottom right corner click on Launch and a pop-up menu should appear. On the pop-up menu select Create a new key pair, give it a name then download it. Take note of the location you download it in your computer. Once you download it, click on Launch Instances. This will take a while but once it finishes, click on your <em>Instance ID </em>to take you to your dashboard. Click on Connect.</p><h4>Set up the SSH Client on your local machine</h4><p>Select the ssh client tab and copy the <em>Example </em>command. I’m on a Windows machine as I do this, those on Linux and Mac can use the terminal. Meanwhile I’ll use PowerShell. Paste the command and run it. Make sure you have the correct path of your key pair file within the command. Mine looks like this: Downloads/liciovpn.pem. Accept the licenses as well and keep everything else as default. It will then prompt you to run the command as <em>openvpnas </em>rather than root. Just replace root with openvpnas. Like below:</p><p>ssh -i Downloads/liciovpn.pem <a href="mailto:openvpnas@ec2-3-17-61-207.us-east-2.compute.amazonaws.com"><strong>openvpnas</strong></a><a href="mailto:openvpnas@ec2-3-17-61-207.us-east-2.compute.amazonaws.com">@ec2–3–17–61–207.us-east-2.compute.amazonaws.com</a></p><p>Next, we need to set up our password to something we can remember. Run the command <em>sudo passwd openvpn</em> to change your password.</p><h4>Test it out on your browser</h4><p>On your Instances tab in AWS, click on your Public IP Address on a new tab like this:</p><p><a href="https://mypublicipaddress:943/admin"><em>https://mypublicipaddress:943/admin</em></a></p><p>To enable OpenVPN to work well in this situation, by default the OpenVPN daemon listens on the TCP port 443 and can forward incoming web browser requests to a web service on port TCP 943 (since you cannot have both the web server and the OpenVPN server listening on the same port). You are then able to bypass existing firewall limitations.</p><p>Login using your username <em>openvpn </em>and the new password you set. Once you login click on <em>Agree </em>to accept the terms. Under the Configurations tab click on VPN Settings<em>. </em>Under the Routing section, for the question <em>Should client Internet traffic be routed through the VPN?</em> Switch to <em>Yes, </em>scroll down and <em>Save Settings.</em></p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*KnJ1yVrkr2eYuWhmqoFOIQ.jpeg" /><figcaption>Switch to Yes</figcaption></figure><p>Click on<em> </em>Update Running Server to update your changes. On the URL bar, remove the <em>admin/vpn_settings</em> from the URL, the new URL should look like this: <a href="https://mypublicipaddress:943/admin"><em>https://mypublicipaddress:943</em></a><em>. </em>Once logged in, choose the OS you’re on and download it then install it.</p><p>Once installed, sign in once again using the username <em>openvpn </em>and the password you had set earlier. Flip the switch and start using your free VPN server in the cloud.</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=ee3198bc049" width="1" height="1" alt=""><hr><p><a href="https://medium.com/devcnairobi/set-up-a-free-vpn-server-in-aws-ee3198bc049">Set Up a Free VPN Server in AWS</a> was originally published in <a href="https://medium.com/devcnairobi">DevCNairobi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Why Worry about responsible Machine Learning?]]></title>
            <link>https://medium.com/devcnairobi/why-worry-about-responsible-machine-learning-f70ce39921ff?source=rss----350e939edb04---4</link>
            <guid isPermaLink="false">https://medium.com/p/f70ce39921ff</guid>
            <dc:creator><![CDATA[Dominic Imbuga]]></dc:creator>
            <pubDate>Mon, 15 Mar 2021 07:13:29 GMT</pubDate>
            <atom:updated>2021-03-15T07:13:29.343Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/720/1*1cX13npX8M-sKHMtk2_mmA.jpeg" /></figure><p>Machine learning capabilities has empowered data scientists and developers to innovate, however it&#39;s always wise to take a step back, and the ask hard questions;</p><p><strong><em>Are we innovating responsibly with machine learning ?</em></strong></p><p><strong><em>Are we deploying trustworthy machine learning solutions for our customers?</em></strong></p><p>A<strong>re we enabling stakeholder confidence and regulatory compliance?</strong></p><p>With great power comes great responsibility, we have read and heard that over and over again, Machine Learning is powerful , it’s a state-of-the-art technology that is helping the world’s most important institutions use their data to solve their most urgent problems.</p><p>We got to work for common good within our organization and with other organizations to make sure that our work is not only useful but safe.</p><p>In this articles let&#39;s ponder on worries about machine learning and how we can inculcate responsible AI principles in our daily ML development cycles and build trust throughout our the development circle.</p><p>Lets first look at the machine learning worries.</p><p><strong><em>1.Increasing Inequality</em></strong></p><p><strong><em>2 Weaponization</em></strong></p><p><strong><em>3.Unintentional Bias</em></strong> like Showing high end jobs ads to men more than women</p><p><strong><em>4.Adversarial attacks</em></strong></p><p><strong><em>5.Killer Drones</em></strong></p><p><strong>6.Deep Fake</strong></p><p><strong><em>7.Data poisoning especially Public data poisoning</em></strong></p><p><strong>8.Hype</strong> Definitely the biggest threats to Machine Learning that promises unrealistic expectations</p><h3><strong>How to get over the hump</strong></h3><p>One solution to mitigate some of the worries highlighted above is <strong>Microsoft AI principles. </strong>Microsoft is collaborating with research and academics around the globe in effort to advance responsible AI practices and technologies . They include;</p><p><strong>Accountability</strong></p><p>People should be accountable for Machine learning systems</p><p><strong>Reliability and safety</strong></p><p>Machine learning systems should perform reliably and safety</p><p><strong>Fairness</strong></p><p>Machine learning systems should treat all people fairly</p><p><strong>Inclusiveness</strong></p><p>Machine learning systems should empower everyone and engage people</p><p><strong>Transparency</strong></p><p>Machine learning systems should be understandable</p><h3><strong>Conclusion</strong></h3><p>To have the principles on your finger tips we use the acronym PARFIT, just remember that A <strong>PERFECT</strong> ML model is <strong>PARFIT</strong> .</p><p><strong>P</strong>rivacy &amp; Security</p><p><strong>A</strong>ccountability</p><p><strong>R</strong>eliability &amp; Safety</p><p><strong>F</strong>airness</p><p><strong>I</strong>nclusiveness</p><p><strong>T</strong>ransparency</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=f70ce39921ff" width="1" height="1" alt=""><hr><p><a href="https://medium.com/devcnairobi/why-worry-about-responsible-machine-learning-f70ce39921ff">Why Worry about responsible Machine Learning?</a> was originally published in <a href="https://medium.com/devcnairobi">DevCNairobi</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
    </channel>
</rss>