<?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"><channel><title><![CDATA[Doka's Blog]]></title><description><![CDATA[Software Engineer|| Business Analyst || Executive Virtual Assistant]]></description><link>https://udoka.hashnode.dev</link><generator>RSS for Node</generator><lastBuildDate>Mon, 09 Nov 2026 02:53:41 GMT</lastBuildDate><atom:link href="https://udoka.hashnode.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[The Art of Yapping - How I retain my framing in conversations.]]></title><description><![CDATA[Becoming a professional yapper]]></description><link>https://udoka.hashnode.dev/the-art-of-yapping-how-i-retain-my-framing-in-conversations</link><guid isPermaLink="true">https://udoka.hashnode.dev/the-art-of-yapping-how-i-retain-my-framing-in-conversations</guid><category><![CDATA[Yapping]]></category><category><![CDATA[Public Speaking]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Mon, 10 Mar 2025 22:19:39 GMT</pubDate><content:encoded><![CDATA[<p>Someone asked me today how I am able to speak impromptu and speak flawlessly. My response was “I am a professional yapper”. Well, while there's that, there's actually more to it.</p>
<p>In my customer meetings, office talks, discussions with friends, random chats, I've always been given the feedback, “you speak well, but how do you talk for long without exhausting your thoughts?”. Regardless of the framing of this question, I provide similar responses - these responses I will share with you in this article.</p>
<p>For the most part of my childhood, I spent time with my dad — a professional yapper — discussing about history, wars, social studies, you name it. I asked questions, took notes of the new words I learnt, then, went back to practice those words with examples from my pocket dictionary. Sooner, I began to use those words in our conversations, I recall the way his eyes lit up everytime He heard me use a word correctly. My dad was really proud of me, in every sense of the word, “Proud”. He nicknamed me “encyclopedia” and everytime I'd travel six hours back to boarding school with him, we'd chat about anything that comes to mind — we were friends — and like they say, “you become like the company you keep”, I too became a professional yapper. The only defect to this was the incessant yapping as a child at home, but I am blessed with a community of listeners as my nuclear family, so, they always listened. If I didn't yap a day, everyone believes I'm ill or sad — a lifetime belief. Truth is, they were always right 🤣 .</p>
<p>How did the little Udoka grow retaining the same skills I learnt unbeknownst to me from the master yapper himself - my dad? Like, I said earlier, I have a community of listeners and communicators as family. Despite the absence of my ability to yap outside this circle (my family), I soon cultivated the ability to yap with my subconscious about things. How did I do that? It takes different routes, the most prominent is consuming any externally available information and just like I practiced the words I learnt from my yapping sessions with my dad, I had internalized deliberations on the information I just consumed. In simple terms, While I appeared quiet and blank of expressions outside the realms of my family, it was “a bustling eke market day of information trade” going on internally. This became my go to means of having the same deliberations I had with my parents and siblings but with myself. Every opportunity to have a chat with someone else on any related subject became an avenue to have deeper physical conversations based on my existing knowledge and learn.</p>
<p>So far, you would have noticed that “the art of flawless professional yapping” is not one that comes on the whims of emotions or like a dove descending with the exposition of a soon-to-be messiah, it takes practice and consistent exercising of the art of yapping.</p>
<p>You may still have the question, how do you really put these information together in your head when you are actually yapping? I'd tell you how. Let me tell you how I do this using my most recent public delivery of an executive yapping session at the just concluded Microsoft AI Tour where I have the most publicly available human evidence to my yapping prowess. 😂😂😂 What does this even mean 😂 there goes my yapping.</p>
<p>I was informed two weeks to the D-day that I had to lead the executive demo session for Copilot. I shouted, “yeeee egbami o” 😁😁 the local girl in me crept out for a second. As a sidenote, this is one of the many things I do with business executives but not on the scale of a Global Microsoft event. With little time and multiple other existing responsibilities, I knew I had to reference my yapping origins, for days I whittled my cards till I had the strongest cards some nights to the event. So what were those cards I played?</p>
<p>THE SKILL OF EXPERIENCE</p>
<p>As a Cloud Solution Architect for Generative AI, some of my time is spent with business executives, technical decision makers, change champions exploring our Microsoft AI solutions — mostly Copilot for Microsoft 365. These conversations can take unexpected turns and they require extensive knowledge and the ability to influence change and empower these executives with new sphere of knowledge. Everyday, I encounter different versions and perceptions to the applications of Copilot for Microsoft 365, my knowledge gets tested and I am able to have deep and sometimes intense yapping sessions on the application I love the most right now — Copilot for Microsoft365 (M365). Personally, I am a highly curious person, I find myself going beyond the usual in gaining new knowledge on alot of things including Copilot for M365 so I have a broader perspective to both the business and technical expectations of the B2B executives I engage and Microsoft as a business. This means a practical knowhow of the application, Copilot for M365. Beyond the understanding of this application there is the need to possess the ability to share your knowledge in relatable clear terms custom to the specific audience and their goals. Despite having the knowhow, I dealt cards trying to craft a relatable means of communicating this knowledge to the Microsoft AI Tour audience which were a mix of attendees from different economic and social backgrounds. What did I do to find a way out before I exhausted my strong cards?</p>
<p>THE COMMUNITY OF LISTENERS, DELIBERATORS AND EXCELLENT COMMUNICATORS</p>
<p>Althrough this article, you have seen how people, places and processes influenced and impacted on my progress, this event like every other thing was no exception. I had a community of experienced senior colleagues who allowed me to bring my individual ideas forward and we all respectfully brainstormed in the short times we had free from our job expectations — they allowed me institute the same process I used as a child, then my creative ability broke forth like the stars beaming through the skies at night. My creative juice began flowing — on the road, in my bathroom (my encounter spot where ideas break forth), while eating, early hours of the morning — everytime my brain had a free second it was “a busy eke market day of information trade”. By the weekend to the D-day, I pulled out the queen 👸 of my card deck. What were all the other cards I whittled, you may ask?</p>
<p>AN ESPIONAGE OF KNOWLEDGE, FREE FOR ALL TO SEE, YET ACCESSED BY A FEW</p>
<p>Recently, I asked an older colleague what education was like without YouTube, let's just say I still can't wrap my head around that reality.</p>
<p>As someone with a photographic memory that creates pictures of everything, I assimilate visual content faster. One of my cards in my deck of bridges has always been the vast information available on YouTube unearthed by a few seconds of curious search, so, I dealt this card. At my free time, I watched videos on different topics including Microsoft’s own Copilot centric videos. I watched TedX speakers, intellectually and vocabulary sound YouTubers. The goal was to spin up my warm data reserves for speaking eloquently and my personal vocabulary kits. Soon, I became inundated with an avalanche of information. It was now time to piece all together in a meaningful way to all parties involved. Here came the queen 👸 I mentioned earlier. What's this queen card ?</p>
<p>A QUEEN KNOWS WHO SHE IS AND THE POWER SHE POSSESSES TO BRING COLOR AND VALUE TO LIFE FROM THE LITTLE FRAGMENTS ✨️</p>
<p>Like a Queen, this process is where everything always comes together and creates a holistic base for the successful pivot to brighter realms, my queen is my book and pen. With just 3days, to the event, I penned down all the details of the sessions, my envisioning of the flow of the demo, the content of the demo, how I will kick-off the demo, how I and my co-presenter will pivot, my outfit, the impact of the sessions, every single detail of the event from when I walk in and exit the event venue – “Write the vision and make it plain” – this became my playbook now the vision was clear and defined. I kicked off phase 2, practicing my speech with my Copilot App and asking it for feedback then refining my words.</p>
<p>Now the tension began to rise, so I pull the next strong card. What was it?</p>
<p>THE KINGS OF KINGS IN HIS FULL GLORY</p>
<p>One of the funny memories of my childhood my parents always referenced was, I was their only child that prayed for every single thing. I cut my finger, I call my parents for prayers. I feel ill, I call my parents for prayers. I get a gift, I pray. Prayer for me is more than a religion it's a personal belief and conviction based on personal life encounters that there's always a God that will help me — and He always does.</p>
<p>As emotions began to build up, I went to the only Daddy I have left and told him my fears, desires and expectations. I asked for divine wisdom then I let it go. With two of my strongest cards now dealt there was just one last string to pull.</p>
<p>PRE-YAPPING IS A WAY TO GO</p>
<p>An eve to the event at about 8pm WAT, I and my brilliant co-presenter spent hours presenting our topic to the empty seats in one of our meeting rooms at the Microsoft Lagos office. We reviewed every detail, criticised our presentation, helped each other see our blindspots then gave it off to God before we left later that evening.</p>
<p>PS: this would be a lifetime memory for me, this my very senior colleague, really included me, my thoughts, my yapping, my fears, allowed me to criticize him ruthlessly and He took every single feedback. A man of wisdom needs not to boast of it, He exudes wisdom in every expression of himself. This is who this colleague is. A true man of wisdom and dignity.</p>
<p>THEN IT ALL CAME TOGETHER</p>
<p>The D-day, the moment we have both prepared and prayed for came and we did an exceptional delivery. Despite the technical malfunctioning of the projection device.</p>
<p>How did I stay connected and still deliver my demo despite the technical failures?</p>
<p>PREPARATION, A DECK OF CARDS FOR THE WIN</p>
<p>From the beginning of this article, I have repeatedly shown you how I always prepared, whether it was engaging my Dad and practicing his words afterwards or consuming information and deliberating with my siblings or internalising my dialogues or even writing my ideas, and connecting with my beliefs; you have seen a persistent dedication towards high value results. I was able to impact the value of the demonstration because I was prepared, I knew my story, I lived and experienced the story I was sharing. I had embodied the entire story.</p>
<p>As you have read this article to this concluding section, you may have reflected or related to the actions I take to replenish my knowledge and create mindmaps for my brain to quickly connect the dots and craft a flawless flow of words that reflect the images captured from the information I have consumed.</p>
<p>Just like I am able to have impromptu conversations, I have written this article from the persistently resurfacing thoughts of sharing my means to “a flawless yapping session” allowing the words flow as the thoughts are projected from the images of my brain. I wrote this article on my phone lying down in my room just after coming home from work. To crudely express how I am able to speak impromptu yet eloquently, I have decided not to edit the content of this article. Feel free to share your thoughts. As I prepare to sleep.</p>
<p>FINALLY, I LEAVE WITH YOU MY PEACE ✌️</p>
<p>Overall, as the saying goes, “you become what you consume”, I hope this article ignites a personal reflection and helps you find the tools in your personal kits that enables you express your original thoughts flawlessly. Maybe not as a professional yapper but as one with the ability to retain your frame while speaking and as one with the exceptional skill of THE ART OF YAPPING.</p>
]]></content:encoded></item><item><title><![CDATA[Microsoft AI Tour, Nigeria through my eyes]]></title><description><![CDATA[My experience as a plenary speaker at the AI Tour Nigeria, 19th February 2025]]></description><link>https://udoka.hashnode.dev/microsoft-ai-tour-nigeria-through-my-eyes</link><guid isPermaLink="true">https://udoka.hashnode.dev/microsoft-ai-tour-nigeria-through-my-eyes</guid><category><![CDATA[copilot]]></category><category><![CDATA[AI]]></category><category><![CDATA[agents]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Sun, 23 Feb 2025 22:49:57 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1740342126869/eb645c7e-dfdf-4dc2-a052-ce8b825c853c.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Microsoft AI Tour in Nigeria: A Personal Narrative</p>
<h1 id="heading-introduction">Introduction</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1740352166520/7bceced9-56c4-46f2-b558-8bd85b134d33.png" alt class="image--center mx-auto" /></p>
<p>Microsoft is on a mission to empower everyone on the planet Earth to achieve more and has been persistent in making this happen for the past 50 years—a mission I benefitted from an early age.</p>
<p>As an 8-year-old, Microsoft Excel enabled me to transform my makeshift bank, called SINLE at the time, maintained in my old notebooks to an electronically managed bank using Microsoft Excel, which happened to be the first application I ever used.</p>
<h1 id="heading-my-journey-with-microsoft-technologies">My Journey with Microsoft Technologies</h1>
<p>For the past two years, I've been privileged to work on the same technologies that helped me transform my childhood idea—Microsoft ModernWork technologies. Leveraging modern work technologies, including Microsoft Copilot, I have empowered African enterprises and ecosystems with digital and AI transformation skills.</p>
<h1 id="heading-the-global-ai-tour-in-nigeria">The Global AI Tour in Nigeria</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1740351737809/d128a8fc-64bb-4e19-bfcf-0080d1ec640e.jpeg" alt class="image--center mx-auto" /></p>
<p>Microsoft has been on a global AI tour since 2024, visiting different countries and continents. On February 19, 2025, the tour came to Nigeria.</p>
<p>The General Manager, Microsoft Nigeria &amp; Ghana, Ola Williams kicked off the event with a refreshing keynote emphasizing Microsoft’s commitments, the outcomes of Microsoft's investments and her AI commitments</p>
<p>Next was a presentation from the President - Microsoft Africa, Lillian Barnard. Afterwards, we had the announcement of Microsoft investment to train 1million Nigerians in developing AI skills.</p>
<p>Following this was a Fireside chat with Ravi Bhat which preceeded the Copilot for Execitives demo — my session.</p>
<h1 id="heading-then-there-was-me">Then there was me!!!</h1>
<p>At the just-concluded AI tour, which was hosted at Eko Hotels and had over 250 attendees, I had the honor of leading the Copilot for Executives demo alongside Dr. Nnanna, an esteemed senior colleague and friend.</p>
<p>During this demo, I showcased to the audience the transformational power of Microsoft Copilot and how it unlocks the richness of data in the very apps they work with through natural language, enabling them to unleash their creativity, optimize business processes, and supercharge their productivity.</p>
<h1 id="heading-the-copilot-executive-demo">The Copilot Executive Demo</h1>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1740352026395/7b2d726a-5308-4e35-8452-ce6b4cb06da5.jpeg" alt class="image--center mx-auto" /></p>
<p>Using the story of my childhood bank, SINLE, I showed the audience how SINLE leveraged Copilot to explore investment opportunities for the festive period in Nigeria, which we call "Detty December."</p>
<p>In this demonstration, I showcased how the team leveraged Copilot across the Microsoft 365 cloud applications. This enabled them to manage their entire business process flow. Infused with the transformative power of Copilot, the SINLE team optimized their processes from ideation, planning, execution, and expansion to integration with other businesses. I demonstrated how the team leveraged agents like the SharePoint agent, <a target="_blank" href="https://www.youtube.com/watch?v=goKAz1lpiFM">Copilot for Sales,</a> the Microsoft 365 Copilot agent, and a <a target="_blank" href="https://www.youtube.com/watch?v=e_5hguWGqRk">Microsoft Dynamics reconciliation agent</a> to speed up business processes, allowing them to consolidate data from multiple sources, including CRMs and their already existing Microsoft 365 data.</p>
<h1 id="heading-preparation-and-inspiration">Preparation and Inspiration</h1>
<p>To execute this demo, I drew inspiration from Satya and CVP Sumit’s demonstration style in their Microsoft events, which I consistently watch. This helped me to deliver a seamless demonstration showcasing innovative Microsoft technologies. Their presentation style inspired me to craft my demo in a way that communicated the value of Copilot, resonated with the audience, and made the complex capability of Copilot accessible and intuitive.</p>
<p>After my presentation, the audience erupted in a round of applause. Overall, the audience was lit up with the demo, and after my session, I received lots of questions and accolades, especially around the agents, specifically the SharePoint agent.</p>
<h1 id="heading-the-sharepoint-agent">The SharePoint Agent</h1>
<p>For the SharePoint agent, which garnered a lot of interest and attention during the presentation, the idea came from my childhood experience running a makeshift bank at home. As a child, when my parents wanted to withdraw funds from my bank, they usually left little notes for me, which I used to process their transactions. I remembered how my transition to Excel improved the process of reviewing all their notes to identify gaps and help speed up the transactions. I thought to myself, "What if we have an agent that can help the SINLE team review proposals?" This was the foundation for creating the SharePoint agent I used for this demo.</p>
<p>I designed an agent that helped the SINLE team quickly review proposals and contract agreements from vendors and partners. This allowed them to swiftly review and validate proposals, streamlining the RFP process and saving the team time to focus on what matters most.</p>
<h1 id="heading-audience-engagement">Audience Engagement</h1>
<p>Many attendees have requested access to my presentation slides. I understand the importance of staying current with recent Microsoft technologies, and I appreciate your commitment to enhancing your knowledge.</p>
<p>Microsoft Copilot is a continuously evolving application. To ensure you receive real-time updates on Microsoft's AI solutions, including Copilot and Copilot agents, please refer to <a target="_blank" href="https://www.linkedin.com/posts/udokaku-ugochukwu_discover-copilot-resources-activity-7299560395810201600-oJCi?utm_source=share&amp;utm_medium=member_desktop&amp;rcm=ACoAAB5v8GQBl8g6LaeKz518OZeupKhB0Dp2gpg">this file</a>.</p>
<p>Furthermore, for access to the specific videos on agents that I have created, please find all my videos via this link. You can <a target="_blank" href="https://1drv.ms/f/c/8852ad4861743794/Eu6bKPMVLkBMiUGhRBsuM20BChJnRXRhHm8u9mUIBTjYaw">view photos of the day here.</a></p>
<h1 id="heading-event-highlights">Event Highlights</h1>
<p>Beyond my demonstration, I enjoyed other aspects of the events, including the panel session with Ravi and the fireside chat that followed immediately after my session.</p>
<p>Additionally, I attended Dr. Nnanna’s two breakout sessions where he went in-depth into Microsoft's data and AI solutions, the need for responsible AI design, as well as data security guidelines.</p>
<h1 id="heading-reflection-and-gratitude">Reflection and Gratitude</h1>
<p>As I reflect on my experience, I am grateful for the insights gained, knowledge shared, and the opportunity to lead the demonstration of Copilot to the audience, empowering attendees with AI skills at the Microsoft AI tour in Lagos. This event has not only deepened my understanding of Microsoft Copilot, it has also provided me with a unique perspective on the potential of AI to transform lives and industries.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1740351946622/00a25dec-3a4b-4257-988f-6e3f7471c8ec.jpeg" alt class="image--center mx-auto" /></p>
<p>I must highlight my exceptional collaborative experience with Dr. Nnanna. Working closely with him, sharing ideas, and reviewing our thoughts provided clear guidance as we sought feedback from each other. His dedication to excellence was inspiring, and his openness to constructive criticism created a safe and inclusive environment for both of us. I was impressed by the time we invested in preparing for events—the weekend preparations, night rehearsals, and his reception of my ideas were invaluable. This collaboration was one experience I will reflect on as I continue my journey.</p>
<p>I would like to extend my gratitude to Microsoft for investing in the Nigerian ecosystem. I thank Lillian, the President of Microsoft Africa, Ola, the GM for Microsoft Nigeria, my colleagues, the African leadership team who were present at the Microsoft AI tour, and every member of the Microsoft Nigerian team who contributed to making this event a success.</p>
<p>I also want to appreciate the support of my friends and colleagues throughout this journey. My biggest cheerleaders—Frances, Winner, Mercy MJ, Edi, Nofisat, Siviwe, Austin, Dayoumi, Erene, Abiodun, Tunmike, Isaac, Aunty Toyin, Aunty Remi, and Dr. Nnanna—your support and trust in me have been invaluable.</p>
<h1 id="heading-conclusion">Conclusion</h1>
<p>The Microsoft AI tour is an experience I will always remember, and I am grateful for the opportunity to showcase Copilot to the audience, demonstrating how they can leverage Copilot in transforming their employee experience and business processes. I look forward to all the amazing things that come out of this session and the journey ahead for me. Thank you for taking the time to read about my experience.</p>
<p>See you in my next blog post.</p>
]]></content:encoded></item><item><title><![CDATA[Why AI ethical laws, governance and regulations are important and should remain relevant]]></title><description><![CDATA[Our lives evolve, and so does everything that applies directly to human lives. Artificial Intelligence (AI) has become part of our lives so, AI needs to…]]></description><link>https://udoka.hashnode.dev/why-ai-ethical-laws-governance-and-regulations-are-important-and-should-remain-relevant</link><guid isPermaLink="true">https://udoka.hashnode.dev/why-ai-ethical-laws-governance-and-regulations-are-important-and-should-remain-relevant</guid><category><![CDATA[AI]]></category><category><![CDATA[AI ethics]]></category><category><![CDATA[#ai-tools]]></category><category><![CDATA[AI Governance]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Mon, 16 Sep 2024 00:11:28 GMT</pubDate><content:encoded><![CDATA[<p><img src="https://cdn-images-1.medium.com/max/800/1*qlpXx3lqFG93fqueb0XZ_Q.png" alt /></p>
<h3 id="heading-introduction">Introduction</h3>
<p>Our lives evolve, and so does everything that applies directly to human lives. Artificial Intelligence (AI) has become part of our lives so, AI needs to have protective guardrails (Ethical Laws, Governance, and Regulations) to ensure our safe usage of the AI systems.</p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">Throughout this article, I use both the <strong>doctor-patient analogy</strong> and the <strong>patient-digital health AI</strong> analogy.</div>
</div>

<p>Think of a time when you felt sick, paid your doctor a visit, and during the consultation, you were asked a series of questions to assess your medical situation. Your doctor, who is a highly trained medical professional working with you as your medical assistant to provide the relevant medical support, needed to get more information about the context of your illness and general information about your health to determine the suitable next steps to provide adequate and safe medical support for you. AI systems work similar to your doctor. Let us explore some fundamentals in AI to understand better.</p>
<h3 id="heading-what-is-ai">What is AI?</h3>
<p>AI is an acronym that means <strong><em>Artificial Intelligence</em></strong>. Just like your doctor, AI is a highly trained system that uses a vast amount of data, allowing it to act or mimic human-like intelligence to perform tasks based on the context of the data it receives. AI uses learned patterns and its vast amount of knowledge(<em>data sources</em>), like your doctor, to generate responses tailored to your specific context (<em>inputs</em>).</p>
<blockquote>
<p>In simple terms, and according to <a target="_blank" href="https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-artificial-intelligence">Microsoft Azure</a>, AI is defined as “the ability of a computer system to mimic human-like cognitive functions, such as learning and problem-solving” .</p>
<p>According to <a target="_blank" href="https://www.ibm.com/topics/what-is-artificial-intelligence">IBM</a>, AI is “a branch of computer science dealing with the simulation of intelligent behavior in computers”.</p>
</blockquote>
<h3 id="heading-types-of-ai">Types of AI</h3>
<p>AI has been around for over 50 years, with evolving abilities from the Checkers program in 1951 to recent applications like <a target="_blank" href="https://www.ibm.com/topics/large-language-models"><strong><em>Large Language Models</em></strong></a>, example; GPT-4 and LLaMA 3, and others. Scientists have continuously contributed to improving the quality and ability of machines to mimic human intelligence. <a target="_blank" href="https://www.britannica.com/science/history-of-artificial-intelligence">A brief history of AI dates to the early to mid-90s</a>, and researchers have defined levels of AI that speak to its capabilities, categorized in three types. The three categories are:</p>
<p>1. <strong>Weak AI (or Narrow AI or Artificial Narrow Intelligence)</strong>: This type of AI is designed to perform a specific task or a set of related tasks. It operates under a narrow range of conditions and lacks general cognitive abilities. Example, Siri, Netflix movie recommendations, etc. </p>
<p>2. <strong>General AI (or Artificial General Intelligence, AGI)</strong>: This is a form of AI that can understand, learn, and apply intelligence across a broad range of tasks, like human cognitive abilities. Currently, AGI remains theoretical and has not yet been achieved.</p>
<p>3. <strong>Strong AI (or Artificial Superintelligence)</strong>: This hypothetical AI would surpass human intelligence across all aspects, including creativity, problem-solving, and social skills. It remains a topic of speculation and future potential.</p>
<h3 id="heading-foundations-of-ai">Foundations of AI</h3>
<p>For machines to behave in certain ways they are preprogrammed to behave like they do, and this applies to AI. So, what are the core building blocks of AI that makes it function like it does?</p>
<p>AI systems require to be trained on vast amounts of data to enable them to learn and evolve in improving their responses and outcomes. This means, data is a powerhouse for the application of AI systems.</p>
<p>1. <strong>Data</strong>: For AI systems to behave in a predefined way, mimicking any of the <a target="_blank" href="https://www.britannica.com/technology/artificial-intelligence/Methods-and-goals-in-AI"><strong>five human aspects</strong></a>, they need adequate high-quality data for optimal development. Data is collected properly and securely, cleaned, and stored in a suitable data storage solution for preprocessing. The pre-processed data is fed to the machine learning model for training.</p>
<p>2. <strong>Preprocessing</strong>: Data must be pre-processed into formats that AI systems can understand, by <a target="_blank" href="https://datatunnel.io/glossary/vectorization/">vectorization</a> and <a target="_blank" href="https://www.mckinsey.com/featured-insights/mckinsey-explainers/what-is-tokenization">tokenization</a>.</p>
<p>3. <strong>Machine Learning</strong>: Machine learning involves training algorithms to understand and learn from data inputs to make decisions or predict outcomes. There are three main types:</p>
<p>a. <strong>Supervised Learning</strong>: Involves the use of labelled data to train algorithms to predict results or classify items. For example, labelling drugs in an online pharmaceutical store.</p>
<p>b. <strong>Unsupervised Learning</strong>: Involves training models with unlabeled data to find hidden patterns or intrinsic structures. For instance, recognizing behavioral patterns of patients and grouping them according to recognized patterns in their behavior. </p>
<p>c. <strong>Reinforcement Learning:</strong> This involves an AI agent that learns by interacting with its environment and receiving feedback, which it uses to improve its outcomes and decision-making.</p>
<p>4. <strong>Algorithms</strong>: Algorithms are sets of well-defined instructions a computer uses to solve a defined problem. For example, your doctor followed a set of steps to diagnose your health condition and decide on the optimal medical support you need. Algorithms implement this step-by-step decision-making process.</p>
<p>5. <strong>Deep Learning</strong>: Is a subset of machine learning that enables Machine learning models to simulate the complex decision-making process of the human brain by using multilayers of neural networks (neural networks are series of algorithms taking inputs and transferring their outputs across layers within the algorithm). This enables the network to learn, model complex data patterns and make complex decisions.</p>
<p>6. <strong>Natural Language Processing (NLP):</strong> Is a subset of AI focused on providing a way for computer systems to understand, interpret and generate human language by combining machine learning, deep learning, and computational linguistics to process and understand human language.</p>
<h3 id="heading-human-intelligence-ai-aims-to-mimic">Human intelligence AI aims to mimic.</h3>
<p>AI is designed around the ability of machines to simulate human knowledge majorly around five areas;</p>
<p>1. <strong>Learning</strong>: As humans we acquire knowledge from our interactions. AI is designed to use machine learning, deep learning, and reinforcement learning to learn from interactions, much like humans learn from interactions.</p>
<p>2. <strong>Problem Solving</strong>: Like how humans apply known procedures and knowledge to decide on the best approach for solving a task, AI applies algorithms, <a target="_blank" href="https://www.simplilearn.com/tutorials/artificial-intelligence-tutorial/heuristic-function-in-ai">heuristics</a>, and <a target="_blank" href="https://towardsdatascience.com/understanding-optimization-algorithms-in-machine-learning-edfdb4df766b">optimization techniques</a> to make predictions and solve complex problems.</p>
<p>3. <strong>Language Understanding</strong>: AI uses Natural Language Processing(NLP) to understand human language, predict patterns, and perform <a target="_blank" href="https://www.ibm.com/topics/sentiment-analysis"><strong>sentiment analysis</strong></a>, allowing it to recognize and respond to emotional cues.</p>
<p>4. <strong>Reasoning</strong>: AI uses predefined rules or algorithms and knowledge bases to make decisions and draw inferences, akin to how humans use their experiences, mental or mind maps, in brainstorming for decision making or prediction.</p>
<p>5. <strong>Perception</strong>: Each day, the human brain processes over 10gigabytes of data from our sensory organs allowing the brain to make better decisions. For an AI system to replicate this ability to perceive its environment, it uses computer vision and natural language processing to replicate sensory perceptions, processing and understanding visual and textual information.</p>
<p><a target="_blank" href="https://www.britannica.com/technology/artificial-intelligence/Methods-and-goals-in-AI">Artificial intelligence — Machine Learning, Robotics, Algorithms | Britannica</a></p>
<hr />
<p>Now we reviewed some of the fundamentals of AI systems, we would now explore the need for ethical laws and regulations.</p>
<h3 id="heading-why-we-need-ethical-laws-and-regulations-for-ai-systems">Why we need ethical laws and regulations for AI systems</h3>
<p>Like your doctor, who is governed by strict professional ethics and laws, to ensure safe medical practices, AI systems need to be guided by laws and regulations to ensure safe and secure usage. These laws are essential to protect <strong>privacy, promote fairness, ensure transparency, prevent bias, maintain accountability, and build trust</strong>. Without such systems in place, AI could be misused, leading to societal harm, including monetary, physical, economic damage, and even potential wars.</p>
<p>There are various AI laws implemented for the safeguarding the development and adoption of AI systems. For this article, I will be focusing on the <a target="_blank" href="https://www.unesco.org/en/articles/recommendation-ethics-artificial-intelligence"><strong>UNESCO Ethical AI framework</strong></a> and <a target="_blank" href="https://www.microsoft.com/cms/api/am/binary/RE4pKH5#:~:text=At%20Microsoft%2C%20we%E2%80%99ve%20recognized%20six%20principles%20that%20we,safety%2C%20privacy%20and%20security%2C%20inclusiveness%2C%20transparency%2C%20and%20accountability.?msockid=0bd6c80ca86260bf1884dcf4a9a261ae"><strong>Microsoft’s AI Principles</strong></a><strong>.</strong></p>
<h3 id="heading-ethical-ai-frameworks">Ethical AI Frameworks</h3>
<p>The UNESCO Ethical AI Framework is the first global AI framework adopted by all 193 member countries in November 2021. It aims to implement strategies to uphold human dignity, protect human rights, and guide the ethical development and deployment of AI technologies. It addresses critical issues such as transparency, accountability, privacy, and data protection. Below are key points for each of the ten principles stated in the document:</p>
<p>1. <strong>Proportionality and Do No Harm</strong>: “None of the processes related to the AI system life cycle shall exceed what is necessary to achieve legitimate aims or objectives and should be appropriate to the context.” </p>
<p>2. <strong>Safety and Security</strong>: “Unwanted harms (safety risks), as well as vulnerabilities to attack (security risks) should be avoided and addressed, prevented, and eliminated throughout the life cycle of AI systems.”</p>
<p>3. <strong>Fairness and Non-Discrimination</strong>: “AI actors should promote social justice and safeguard fairness and non-discrimination of any kind in compliance with international law.” </p>
<p>4. <strong>Sustainability</strong>: “The development of sustainable societies relies on the achievement of a complex set of objectives on a continuum of human, social, cultural, economic, and environmental dimensions.” </p>
<p>5. <strong>Right to Privacy, and Data Protection</strong>: “Privacy, a right essential to the protection of human dignity, human autonomy, and human agency, must be respected, protected, and promoted throughout the life cycle of AI systems.” </p>
<p>6. <strong>Human Oversight and Determination</strong>: “Member States should ensure that it is always possible to attribute ethical and legal responsibility for any stage of the life cycle of AI systems.” </p>
<p>7. <strong>Transparency and Explainability</strong>: “The transparency and explainability of AI systems are often essential preconditions to ensure the respect, protection, and promotion of human rights, fundamental freedoms, and ethical principles.”</p>
<p>8. <strong>Responsibility and Accountability:</strong> “AI actors and Member States should respect, protect, and promote human rights and fundamental freedoms and should also promote the protection of the environment and ecosystems.” </p>
<p>9. <strong>Awareness and Literacy</strong>: “Public awareness and understanding of AI technologies and the value of data should be promoted through open and accessible education, civic engagement, digital skills, and AI ethics training.” </p>
<p>10. <strong>Multi-Stakeholder and Adaptive Governance and Collaboration</strong>: “Participation of different stakeholders throughout the AI system life cycle is necessary for inclusive approaches to AI governance, enabling the benefits to be shared by all, and to contribute to sustainable development.” </p>
<h3 id="heading-microsoft-ai-principles">Microsoft AI Principles</h3>
<p>The Microsoft AI Principles emphasizes six core areas when developing AI systems. To remember these principles, I’ve coined the acronym <strong>PITFAR</strong> and attached it to a memorable food sentence(<em>as a gourmand, for things like this I think food first - lol</em>)  — <strong>P</strong>lea<strong>S</strong>e <strong>I</strong>nclude <strong>T</strong>asty <strong>F</strong>ries <strong>A</strong>nd <strong>R</strong>ib<strong>S</strong>. Let’s elaborate on each of them:</p>
<p>1. <strong>Privacy and Security</strong>: AI systems should be designed to protect user privacy and secure data.</p>
<p>2. <strong>Fairness</strong>: AI systems should treat all people fairly and avoid biases that could lead to discrimination.</p>
<p>3. <strong>Reliability and Safety</strong>: AI systems should perform reliably and safely, with robust protections against unintended consequences.</p>
<p>4. <strong>Inclusiveness</strong>: AI models perform well for all users, and no one is excluded from the opportunities provided by intelligent solutions.</p>
<p>5. <strong>Transparency</strong>: AI systems processes should be understandable, and their decisions explainable to every user.</p>
<p>6. <strong>Accountability</strong>: The people who design and deploy AI systems must be accountable for how their systems operate.</p>
<p>The above guardrails are plausible examples of well-defined rules that any developer of an AI system should follow. They can also serve as a means for enforcing AI governance across systems. Governments around the world are developing more tailored ethical laws, and as these laws are implemented, the required legal penalties should be clearly stated for defaulters. These principles, laws, and regulations will ensure the safe development of AI systems and facilitate the enforcement of AI governance practices.</p>
<h3 id="heading-typical-ethical-issues-that-may-arise-in-ai">Typical ethical issues that may arise in AI.</h3>
<p>Imagine you are using a digital health AI system to assist you with your diagnosis and treatment. Even though the technology is advanced, there are some tricky ethical issues that could come up:</p>
<p>1. <strong>Bias and Discrimination</strong>: Just like a doctor could unintentionally make biased decisions based on incomplete information or subconscious bias, AI systems can also reflect and even amplify biases present in their training data. For example, if an AI tool is used for medical diagnoses, it might not be as accurate for all demographics if its training data wasn’t diverse enough. This could lead to unfair treatment of certain groups or potential medical hazards.</p>
<p>2. <strong>Privacy Concerns</strong>: When you use your digital health AI system, it may involve sharing a lot of personal health data. If this data isn’t protected properly, there’s a risk of breaches or unauthorized access. Just as you trust your doctor to keep your information confidential, we need to ensure that AI systems safeguard your privacy.</p>
<p>3. <strong>Accountability and Responsibility</strong>: If the AI system makes a mistake in your treatment plan, it can be challenging to figure out who is responsible. Is it the AI, the developers who created it, or you the user? Clear guidelines are needed to address mistakes and ensure accountability. Developers of AI systems must provide for all users including stakeholders and co-developers, clear details on how their AI systems work and state in clear terms the responsibility for all parties involved.</p>
<p>4. <strong>Autonomous Decision-Making</strong>: Imagine your doctor started using AI to make treatment decisions without any human oversight to the outcomes of its decision. This could be a concern if the AI is making critical health decisions on its own. It’s important to ensure that AI systems are used responsibly and with appropriate human oversight and the outputs of Ai systems are reviewed for validate the accuracy.</p>
<p>5. <strong>Lack of Transparency</strong>: If an AI system is involved in your diagnosis but doesn’t explain its reasoning, it can be hard for you to understand how decisions are made. Transparency is key to ensuring trust and understanding in AI-assisted healthcare.</p>
<h3 id="heading-why-we-need-the-laws-and-why-we-need-to-stay-current">Why we need the laws and why we need to stay current</h3>
<p>So, why is it important to have laws and keep them current stay up to date with them?</p>
<p>1. <strong>Adapting to Rapid Technological Changes</strong>: Like your doctor needs to stay current with the latest medical advancements, AI laws and regulations need to be up-to-date to the rapid developments in AI. This helps manage new risks and opportunities effectively, ensuring that AI tools are up-to-date and relevant.</p>
<p>2. <strong>Protecting Human Rights</strong>: In the same way medical ethics ensure your rights and dignity are respected during treatment, AI laws must protect human rights such as privacy and freedom from discrimination. Ensuring these rights are safeguarded in AI applications is essential for the safe usage of AI systems.</p>
<p>3. <strong>Maintaining Public Trust</strong>: Trust is crucial in the doctor-patient relationship, and the same goes for AI. Transparent and current regulations help build trust that AI systems are being developed responsibly and ethically. This gives the public confidence in the outputs of AI systems.</p>
<p>4. <strong>Encouraging Ethical Innovation</strong>: Just as your doctor follows ethical guidelines in patient care, more relevant and clear laws and guidelines must be implemented for ethical AI development. This encourages innovations that are aligned with societal values and ethical standards.</p>
<p>5. <strong>Preventing Misuse and Harm</strong>: Proper regulations are like safety nets that prevent misuse of AI and mitigate potential harms. They help ensure that AI systems, like those used in healthcare, are secure and used responsibly, avoiding negative impacts on patients and society. Therefore, AI governance cannot be overlooked as it is vital for enforcing these AI guardrails.</p>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Understanding AI’s capabilities, types, and the importance of ethical regulations is crucial as we develop and integrate these technologies into society. By adhering to ethical frameworks and principles, we can ensure AI systems are developed and used responsibly, safeguarding human dignity and promoting fairness, transparency, and accountability.</p>
<div data-node-type="callout">
<div data-node-type="callout-emoji">💡</div>
<div data-node-type="callout-text">If you enjoyed reading this or need to discuss this article, reach out to me on Twitter. It does not end here; see below for other details. Thank you for reading this article, and I hope you enjoyed it.</div>
</div>

<h3 id="heading-some-other-ai-laws-and-frameworks">Some other AI laws and frameworks</h3>
<ul>
<li><p><a target="_blank" href="https://ec.europa.eu/digital-strategy/our-policies/artificial-intelligence_en"></a><a target="_blank" href="https://www.oecd.org/going-digital/ai/principles/">OECD AI Principles</a></p>
</li>
<li><p><a target="_blank" href="https://assets.publishing.service.gov.uk/media/614db4d1e90e077a2cbdf3c4/National_AI_Strategy_-_PDF_version.pdf">UK’s National AI Strategy</a></p>
</li>
<li><p><a target="_blank" href="https://www.whitehouse.gov/ostp/ai-bill-of-rights/">Blueprint for an AI Bill of Rights</a></p>
</li>
<li><p><a target="_blank" href="https://www.coe.int/en/web/artificial-intelligence/the-framework-convention-on-artificial-intelligence">The Framework Convention on Artificial Intelligence</a></p>
</li>
</ul>
<h3 id="heading-glossary">Glossary</h3>
<blockquote>
<p>GPT-4 generated content</p>
</blockquote>
<ul>
<li><p><strong>Heuristics</strong>: Simple rules or shortcuts used to make quick decisions or solve problems without needing a detailed analysis.</p>
</li>
<li><p><strong>Computational Linguistics</strong>: The study of how computers can understand and work with human language using algorithms and models.</p>
</li>
<li><p><strong>Models</strong>: Mathematical tools or algorithms that learn from data to make predictions or perform tasks, like recognizing patterns.</p>
</li>
<li><p><strong>Data Storage Solution</strong>: Systems used to keep and manage data, such as hard drives, databases, and cloud storage services.</p>
</li>
</ul>
<h3 id="heading-references">References</h3>
<ul>
<li><p><a target="_blank" href="https://www.ibm.com/blog/10-ai-dangers-and-risks-and-how-to-manage-them/">10 AI dangers and risks and how to manage them — IBM Blog</a></p>
</li>
<li><p><a target="_blank" href="https://en.wikipedia.org/wiki/Algorithm">Algorithm - Wikipedia</a></p>
</li>
<li><p><a target="_blank" href="https://www.scu.edu/ethics/all-about-ethics/artificial-intelligence-and-ethics-sixteen-challenges-and-opportunities/">Artificial Intelligence and Ethics: Sixteen Challenges and Opportunities — Markkula Center for Applied Ethics (scu.edu)</a></p>
</li>
<li><p><a target="_blank" href="https://www.britannica.com/technology/artificial-intelligence/Reasoning">Artificial intelligence — Reasoning, Algorithms, Automation | Britannica</a></p>
</li>
<li><p><a target="_blank" href="https://www.simplilearn.com/tutorials/artificial-intelligence-tutorial/heuristic-function-in-ai">Heuristic Function in AI (Artificial Intelligence) - SimpliLearn</a></p>
</li>
<li><p><a target="_blank" href="https://www.microsoft.com/cms/api/am/binary/RE4pKH5#:~:text=At%20Microsoft%2C%20we%E2%80%99ve%20recognized%20six%20principles%20that%20we,safety%2C%20privacy%20and%20security%2C%20inclusiveness%2C%20transparency%2C%20and%20accountability.?msockid=0bd6c80ca86260bf1884dcf4a9a261ae">How we approach responsible AI at Microsoft</a></p>
</li>
<li><p><a target="_blank" href="https://www.microsoft.com/en-gb/ai/principles-and-approach?msockid=0bd6c80ca86260bf1884dcf4a9a261ae#tabs-pill-bar-occ736_tab0">Responsible AI Principles and Approach | Microsoft AI</a></p>
</li>
<li><p><a target="_blank" href="https://towardsdatascience.com/understanding-optimization-algorithms-in-machine-learning-edfdb4df766b">Understanding Optimization Algorithms in Machine Learning | by Supriya Secherla | Towards Data Science</a></p>
</li>
<li><p><a target="_blank" href="https://www.ibm.com/think/topics/artificial-intelligence-types">Understanding the different types of artificial intelligence</a></p>
</li>
<li><p><a target="_blank" href="https://pg-p.ctme.caltech.edu/blog/ai-ml/what-is-artificial-intelligence">What is Artificial Intelligence? A Comprehensive Guide for Beginners — Caltech</a></p>
</li>
<li><p><a target="_blank" href="https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-machine-learning-platform/">What is machine learning? - Microsoft Azure</a></p>
</li>
<li><p><a target="_blank" href="https://www.ibm.com/topics/natural-language-processing">What is NLP (Natural Language Processing)? | IBM</a></p>
</li>
<li><p><a target="_blank" href="https://www.ibm.com/topics/sentiment-analysis">What is Sentiment Analysis? | IBM</a></p>
</li>
</ul>
]]></content:encoded></item><item><title><![CDATA[Data Roles]]></title><description><![CDATA[Who works with data? What do they do?]]></description><link>https://udoka.hashnode.dev/data-roles</link><guid isPermaLink="true">https://udoka.hashnode.dev/data-roles</guid><category><![CDATA[Databases]]></category><category><![CDATA[data professionals]]></category><category><![CDATA[data roles]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Sat, 04 Nov 2023 13:42:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1699104297629/f7d9ad9d-23d4-4fdb-9077-eef398dd8c02.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A brief overview of the distinct types of data professionals.</p>
<p>The previous article, "<a target="_blank" href="https://udoka.hashnode.dev/what-is-data-like-i-am-five">What is Data - like I am five</a>" explained data and emphasized that <mark>data is everywhere</mark>. This means everybody uses data in their daily activities. However, there are people/roles that deal with collecting, processing, analyzing and the visualization of data.</p>
<p>In this article, we will explore some of these roles in data and their responsibilities.</p>
<p>You will encounter the word "<em>database</em>" in this article. Therefore, before we get into the roles, it is important to understand what a database is.</p>
<h3 id="heading-database">Database</h3>
<blockquote>
<p>According to <a target="_blank" href="https://www.geeksforgeeks.org/what-is-database/">GeeksforGeeks</a>, A database is an organized collection of data stored in a computer system and usually controlled by a database management system (DBMS)</p>
</blockquote>
<p>A database is a data store where data is collected and stored for further use. For example, think of a database like your daily journal where you take note of all your daily activities, plans and things (data) you may use in the future. In the IT world, your daily journal is called a <strong><em>database.</em></strong> Database systems are computers that are used to electronically store collections of related data and organize these data, such that it is easily accessed, managed, and updated.</p>
<h3 id="heading-database-administrator">Database Administrator</h3>
<blockquote>
<p>According to <a target="_blank" href="https://www.pluralsight.com/resource-center/guides/guide-to-becoming-a-database-admin">Pluralsight</a>, The database administrator (DBA) is the person who manages, backs up and ensures the availability of the data produced and consumed by today’s organizations via their IT systems.</p>
</blockquote>
<p>A database administrator oversees the creation of databases for the storage of data from multiple sources, maintaining the databases, and ensuring data is available for use within an organization. This includes:</p>
<ul>
<li><p>Monitoring the sources of data inflow to the database.</p>
</li>
<li><p>Updating the database.</p>
</li>
<li><p>Setting up new databases.</p>
</li>
<li><p>Creating database backups and recovery systems.</p>
</li>
</ul>
<h3 id="heading-data-architect">Data Architect</h3>
<blockquote>
<p>According to <a target="_blank" href="https://www.coursera.org/articles/data-architect">Coursera</a>, Data architects are IT professionals who leverage their computer science and design skills to review and analyze the data infrastructure of an organization, plan future databases, and implement solutions to store and manage data for organizations and their users.</p>
</blockquote>
<p>Data Architects are data professionals who design, create, and develop an organization's data architecture for their database systems. They define the structure for storing data, securing, and managing the flow of data from diverse data sources. They define and oversee the overall structure, design, and governance of data systems and environments.</p>
<p>Data architects use various methods and tools, such as data modeling, data warehousing, data integration, and data security, to create and implement data strategies and policies. Data architects often work with data engineers, data analysts, and data scientists to ensure the alignment and compatibility of data systems and solutions.</p>
<h3 id="heading-data-engineer">Data Engineer</h3>
<blockquote>
<p>According to <a target="_blank" href="https://corporatefinanceinstitute.com/resources/data-science/data-engineer/">Corporate Finance Institute</a>, A data engineer is an individual responsible for managing, optimizing, overseeing, and monitoring data retrieval, storage, and distribution.</p>
</blockquote>
<p>A data engineer develops and configures data systems such as databases and large-scale processing systems. They collect, manage, process, validate and optimize data for further use.</p>
<p>A data engineer designs, builds, and maintains the infrastructure and architecture that enable data collection, storage, processing, and analysis. Data engineers use various technologies and tools, such as cloud computing, big data frameworks, pipelines, and databases, to create and manage data systems. Data engineers often work with data analysts and data scientists to ensure the quality, reliability, and scalability of data.</p>
<h3 id="heading-data-scientist">Data Scientist</h3>
<blockquote>
<p>According to <a target="_blank" href="https://azure.microsoft.com/en-us/resources/cloud-computing-dictionary/what-is-data-science">Microsoft Azure</a>, A data scientist collects, analyzes, and interprets big data to uncover patterns and insights, make predictions, and create actionable plans.</p>
</blockquote>
<p>A Data Scientist is a data professional who applies advanced techniques and methods, such as machine learning, statistical methods, artificial intelligence, and programming, to analyze large and complex data sets. Data scientists use data to build models, algorithms, and systems that can generate predictions, classifications, or recommendations.</p>
<h3 id="heading-data-analyst">Data Analyst</h3>
<blockquote>
<p>According to <a target="_blank" href="https://www.coursera.org/articles/what-does-a-data-analyst-do-a-career-guide">Coursera</a>, A data analyst collects, cleans, and interprets data sets in order to answer a question or solve a problem.</p>
</blockquote>
<p>A data analyst is a data professional who manipulates data to extract trends, patterns, and insights into useful business information enabling businesses to harness their data estate to maximize value and make data-driven decisions.</p>
<p>A data analyst is someone who collects, cleans, organizes, and explores data to answer specific questions or solve problems. Data analysts use various methods and tools, such as spreadsheets, databases, statistics, and visualization, to perform data analysis. Data analysts often work closely with business stakeholders, managers, or clients to understand their needs and provide insights and recommendations based on data.</p>
<h3 id="heading-data-visualization-specialist">Data Visualization Specialist</h3>
<p>Data Visualization Specialists are storytelling experts they use visual techniques to present data, making it easier to understand trends, outliers, and patterns in data.</p>
<p>Data visualization specialists create and design visual representations of data, such as charts, graphs, maps, and dashboards. Data visualization specialists use various tools and techniques, such as color, shape, size, and interactivity, to communicate data effectively and efficiently. Data visualization specialists often work with data analysts and data scientists to present and explain data insights and findings visually.</p>
<h3 id="heading-conclusion">Conclusion</h3>
<p>Data roles are diverse and dynamic, and they offer many opportunities and challenges for data professionals. Data roles require different skills, tools, and knowledge, but they also share some common characteristics, such as curiosity, creativity, problem-solving, and collaboration. Data roles are essential for making sense of the data that surrounds us and using it to improve our lives and society.</p>
<p><strong>PS:</strong></p>
<p>Here is an AI-generated description of the roles mentioned in this article</p>
<blockquote>
<p>Here’s a comparison of the roles you mentioned:</p>
</blockquote>
<div class="hn-table">
<table>
<thead>
<tr>
<td>Role</td><td>Description</td></tr>
</thead>
<tbody>
<tr>
<td><strong>Database Administrator</strong></td><td>Database Administrators are IT professionals responsible for keeping a database up to date and running. <a target="_blank" href="http://www.itcareercoach.com/data-analyst-vs-database-administrator-jobs-which-is-better/">Their responsibilities include writing scripts, updating the database, keeping the database running 24/7, and backing up the database<sup>1</sup></a>.</td></tr>
<tr>
<td><strong>Data Engineer</strong></td><td><a target="_blank" href="https://in.indeed.com/career-advice/finding-a-job/data-analyst-vs-data-scientist-vs-data-engineer">Data Engineers build and maintain the data infrastructure that other data team members use to perform various tasks</a>. <a target="_blank" href="https://towardsdatascience.com/what-is-the-difference-between-a-data-engineer-a-data-scientist-and-a-data-analyst-8d3431ce505e">They specialize in handling semi-structured, unstructured, and streaming data</a>.</td></tr>
<tr>
<td><strong>Data Analyst</strong></td><td>Data Analysts deliver value to their companies by taking data, using it to answer questions, and communicating the results to help make business decisions. <a target="_blank" href="https://www.dataquest.io/blog/data-analyst-data-scientist-data-engineer/">Common tasks include data cleaning, performing analysis, and creating data visualizations</a>.</td></tr>
<tr>
<td><strong>Data Scientist</strong></td><td>Data Scientists are specialists in solving complex issues through analytical analysis. <a target="_blank" href="https://ubiminds.com/en-us/data-scientist-vs-data-analyst-vs-data-engineer-vs-dba/">They capture large amounts of unstructured data and transform them into meaningful datasets that can be used for decision-making</a>.</td></tr>
<tr>
<td><strong>Data Architect</strong></td><td>Data Architects design, create, deploy and manage an organization’s data architecture. They define how the data will be stored, consumed, integrated and managed by different data entities and IT systems.</td></tr>
<tr>
<td><strong>Data Visualization Specialist</strong></td><td>Data Visualization Specialists use visual techniques to present data, making it easier to understand trends, outliers, and patterns in data. They often work closely with data analysts to communicate complex data in a visual way.</td></tr>
</tbody>
</table>
</div><p>Please note that the exact responsibilities can vary from company to company.</p>
]]></content:encoded></item><item><title><![CDATA[What is Data - like I am five]]></title><description><![CDATA[Data is information that we can use to learn about things. For example, you can use data to learn about your favorite animals, colors, foods, or games…]]></description><link>https://udoka.hashnode.dev/what-is-data-like-i-am-five</link><guid isPermaLink="true">https://udoka.hashnode.dev/what-is-data-like-i-am-five</guid><category><![CDATA[data]]></category><category><![CDATA[data for beginners]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Sat, 04 Nov 2023 11:05:23 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1699095799915/036c7f42-6ae5-4cab-b7c4-51a4905f3d92.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-what-is-data">What is Data?</h2>
<h3 id="heading-data-is-information">Data is information</h3>
<p>Data is information that we can use to learn about things. For example, you can use data to learn about your favorite animals, colors, foods, or games. Data can be words, numbers, pictures, sounds, or anything else that tells us something.</p>
<h3 id="heading-data-is-everywhere">Data is everywhere</h3>
<p>Data is everywhere around us. You can find data in books, magazines, newspapers, websites, apps, TV shows, movies, music, and more. You can also make your data by asking questions, doing experiments, or observing things. For example, you can make data by counting how many cars pass by your window, how many times you can jump on one foot, how many colors you can see in a rainbow, how many dresses you have, and where you ate last night.</p>
<h3 id="heading-data-is-fun">Data is fun</h3>
<p>Data is fun because you can use it to discover new things, solve problems, or create stories. You can also use data to play games, draw pictures, or make music. For example, you can use data to play tic-tac-toe, hangman, bingo, sudoku, crossword puzzles, or trivia. You can also use data to draw graphs, charts, or maps. You can also use data to make songs, poems, or jokes.</p>
<h3 id="heading-data-is-important">Data is important</h3>
<p>Data is important because it helps us understand the world and make good decisions. For example, you can use data to know what time to go to bed, what to eat for breakfast, when you were in school last, who visited you or what to wear for the weather. You can also use data to help other people, animals, or plants. For example, you can use data to recycle, save water, or plant trees.</p>
<p>Data tells us more about things, helps us understand better and guides us in making the right decisions. Data is like your teacher giving you more insight on a subject.</p>
<p>I hope you learned something from the data in this article. See you in the next article. Cheers</p>
]]></content:encoded></item><item><title><![CDATA[How To Step Through System Files With Python]]></title><description><![CDATA[Hi, welcome to my blog where I write about interesting Python stuff, this article is centered around the os.walk() function. Before I get to the formal…]]></description><link>https://udoka.hashnode.dev/how-to-step-through-system-files-with-python</link><guid isPermaLink="true">https://udoka.hashnode.dev/how-to-step-through-system-files-with-python</guid><category><![CDATA[Python 3]]></category><category><![CDATA[python beginner]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Sat, 04 Nov 2023 09:49:44 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1699092857432/11ebeda3-934d-4463-a8f9-b3155326ee30.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h3 id="heading-the-python-oswalk-function">THE PYTHON OS.WALK() FUNCTION</h3>
<p>Hi, welcome to my blog where I write about interesting Python stuff, this article is centered around the os.walk() function.</p>
<h3 id="heading-what-is-oswalk-function">WHAT IS OS.WALK() FUNCTION?</h3>
<p>Before I get to the formal description of what this is,</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1602084411090/g2FyteJQL.png" alt="Pile of cartons with books inside" /></p>
<p>Imagine you have a pile of books in different boxes, unpacking the books to see the contents is a hell of a strenuous task and you wouldn't want to go that route. The stated scenario is similar to the files and directories of your computer.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1602084696936/QyjrE_TlP.gif" alt="path.gif" /></p>
<p>Let's say you want to check the contents of a folder that in itself has one or more sub-folders, checking the files would be time-consuming and strainous just like with the books. This is where the python os.walk() function serves as a life-saver.</p>
<p>The os.walk() function walks through a folder and its subfolders their file contents and displays their contents. It accepts one argument, which is the path of the folders and files to be iterated.</p>
<h3 id="heading-how-can-i-use-this-then">HOW CAN I USE THIS THEN?</h3>
<p>Just like the python range() function that loops through a range of numbers, the os.walk() function also iterated through a specified path returns 3 values:</p>
<ul>
<li><p>A string of the current folder's name.</p>
</li>
<li><p>A list of strings of the folders in the current folder.</p>
</li>
<li><p>A list of strings of the files in the current folders.</p>
</li>
</ul>
<p>Let's get our hands to work.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1602086034420/0xv62p6kV.gif" alt="jjj.gif" /></p>
<p>Enter this into your interactive shell:</p>
<pre><code class="lang-plaintext">myPath = '/home/udoka/Desktop'        #replace this with a path in your system
#iterating through the folders and files in myPath
for folderName, subfolder, fileName in os.walk(myPath):
     print('the current folder is' + folderName)
     print(subfolder)        #this returns a list of all subfolders
     print(fileName)         #this returns a list of all files
     for aSubFolder in subfolder:
         print('the current subfolder =' + aSubFolder)
     for eachFile in fileName:
         print('the file inside is =' + folderName + eachFile)
     print('\n')
</code></pre>
<h3 id="heading-what-next">WHAT NEXT???</h3>
<p>Now, you can combine this function, with other functions in the shutil and os modules, to create new files, move, archive and rename files.</p>
<p>Thanks for reading, do leave a reaction to this. You can reach out to me on <a target="_blank" href="https://twitter.com/Udoka_Ugo_">Twitter</a></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1602086354535/zz-y-KJS1.jpeg" alt="hhhh.jpeg" /></p>
]]></content:encoded></item><item><title><![CDATA[18 git commands you should know]]></title><description><![CDATA[Open source collaboration brings amazing ways of contributing to a diverse range of projects from the comfort of your space, through the internet on code…]]></description><link>https://udoka.hashnode.dev/18-git-commands-you-should-know</link><guid isPermaLink="true">https://udoka.hashnode.dev/18-git-commands-you-should-know</guid><category><![CDATA[Open Source]]></category><category><![CDATA[Git]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Thu, 27 Jan 2022 19:33:10 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1632249404932/0l8R-hWff.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Open source collaboration brings amazing ways of contributing to a diverse range of projects from the comfort of your space, through the internet on code collaboration platforms like <em>github, gerrit, and gitlab</em> using a version control system named "Git".</p>
<p>Welcome to this article, where I will show you 18 Git commands used regularly when contributing to open source projects.</p>
<p>Here is what we will discuss;</p>
<ul>
<li><a class="post-section-overview" href="#Ch1">What is Git</a></li>
<li><a class="post-section-overview" href="#18gc">18 Git Commands</a><ul>
<li><a class="post-section-overview" href="#gc1">Git clone</a> </li>
<li><a class="post-section-overview" href="#gc2">Git init</a> </li>
<li><a class="post-section-overview" href="#gc3">Git branch</a> </li>
<li><a class="post-section-overview" href="#gc4">Git checkout</a> </li>
<li><a class="post-section-overview" href="#gc5">Git status</a> </li>
<li><a class="post-section-overview" href="#gc6">Git add</a> </li>
<li><a class="post-section-overview" href="#gc7">Git commit</a> </li>
<li><a class="post-section-overview" href="#gc8">Git push</a> </li>
<li><a class="post-section-overview" href="#gc9">Git pull</a> </li>
<li><a class="post-section-overview" href="#gc10">Git revert</a> </li>
<li><a class="post-section-overview" href="#gc11">Git review</a> </li>
<li><a class="post-section-overview" href="#gc12">Git merge</a> </li>
<li><a class="post-section-overview" href="#gc13">Git fetch</a> </li>
<li><a class="post-section-overview" href="#gc14">Git remote</a> </li>
<li><a class="post-section-overview" href="#gc15">Git reset</a> </li>
<li><a class="post-section-overview" href="#gc16">Git rm</a> </li>
<li><a class="post-section-overview" href="#gc17">Git log</a> </li>
<li><a class="post-section-overview" href="#gc18">Git show</a></li>
</ul>
</li>
</ul>
<p></p><div id="Ch1"></div><p></p>
<h3 id="heading-what-is-git">What is Git</h3>
<p>According to <a target="_blank" href="https://en.wikipedia.org/wiki/Git">Wikipedia</a>, Git is software for tracking changes in any set of files, usually used for coordinating work among programmers collaboratively developing source code during software development.
Simply put, Git is the tool for accessing projects, tracking changes, deleting, and updating changes to a project residing in a remote computer which is accessed through the internet.</p>
<h3 id="heading-18-git-commands">18 Git Commands</h3>
<ol>
<li><strong>Git clone</strong>: <span id="gc1"><span> downloads a copy of a project to your local computer.</span></span></li>
<li><strong>Git init</strong>: <span id="gc2"><span> sets your local project to be ready for operations with git.</span></span></li>
<li><p><strong>Git branch</strong>: <span id="gc3"><span> creates, lists, renames and deletes branches.</span></span></p>
<ul>
<li><strong><em>git branch </em></strong>:  create a new branch. This does not switch to the new branch automatically.</li>
<li><strong><em>git branch --list</em></strong>: list all branches this works the same way as git branch, delete, or rename a branch.</li>
<li><strong><em>git branch -d </em></strong>: delete a specific branch. This prevents you from deleting a branch with unmerged changes, if you want to delete the branch anyway, use <strong>git branch -D</strong>, to forcefully delete the branch.</li>
<li><strong><em>git branch -m </em></strong>: rename a branch</li>
</ul>
</li>
<li><p><strong>Git checkout</strong>: <span id="gc4"><span> moves from one to another existing branch.</span></span></p>
</li>
<li><strong>Git status</strong>: <span id="gc5"><span>checks and display details of the current state of your local repository.</span></span></li>
<li><strong>Git add</strong>: <span id="gc6"><span> includes file changes to the local repository.</span></span></li>
<li><p><strong>Git commit</strong>: <span id="gc7"><span> saves included file changes for publishing to the remote repository.</span></span></p>
<ul>
<li><strong><em>Git commit -m""</em></strong>:  attaches the commit message to all files saved for publishing.</li>
<li><strong><em>Git commit -a</em></strong>: launches the terminal where the commit message is written.After entering the commit message, press ctrl+x then Enter to save the commit  message.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1608175205435/zMOk47HX_.png" alt="commita.png" /></li>
<li><strong><em>Git commit --amend</em></strong>: launches the terminal and allows you to edit your previous commit message and updates the commit message across all affected files to be published.</li>
<li><strong><em>Git commit --amend --no-edit</em></strong>: automatically applies previous commit message to the current commit made.</li>
</ul>
</li>
<li><p><strong>Git push</strong>: <span id="gc8"><span> publishes your committed changes from your local repository to the remote repository.</span></span></p>
</li>
<li><strong>Git pull</strong>: <span id="gc9"><span> downloads content from the remote repository to your local repository.</span></span></li>
<li><strong>Git revert</strong>: <span id="gc10"><span> creates a new commit with rolled back changes of the old commit without deleting the old commit.</span></span></li>
<li><p><strong>Git review</strong>: <span id="gc11"><span> commonly used on <strong><em>gerrit</em></strong>, git review does the following:</span></span></p>
<ul>
<li>it looks up which branch to push to in the .git review file. If it can't find this information, it pushes to master.</li>
<li>it figures out what "topic" to put on the revision (you can set the topic manually with -t).</li>
<li>if you're resubmitting a downloaded change, it will reuse the tag of the original change.</li>
<li>if your commit summary contains a bug number like bug T12345, the tag will be bug/12345 else, the tag will be the name of your local branch.</li>
<li>it rebases your change against the HEAD of the branch you're pushing to (you can use git review -R to skip this).</li>
<li>if you are submitting more than one change at once, or submitting a change that's based on another unmerged change, it will ask you whether you really meant to do that (use -y to skip this).</li>
<li>finally, it pushes the change for review.</li>
</ul>
</li>
<li><p><strong>Git merge</strong>: <span id="gc12"><span>  is used to integrate changes from another branch into your branch.</span></span></p>
</li>
<li><strong>Git fetch</strong>: <span id="gc13"><span> only downloads new data from a remote repository  but doesn't integrate this new data into your working files.</span></span></li>
<li><strong>Git remote</strong>: <span id="gc14"><span> manages connections to other remote repositories  tracked on your local repository.</span></span></li>
<li><strong>Git reset</strong>: <span id="gc15"><span> used to undo uncommitted changes.</span></span></li>
<li><strong>Git rm</strong>: <span id="gc16"><span> removes tracked file(s) from a Git repository.</span></span></li>
<li><strong>Git log</strong>: <span id="gc17"><span> shows all commits in your local repository.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1608231428531/E3npxrlz4.png" alt="log.png" /></span></span></li>
<li><strong>Git show</strong>: <span id="gc18"><span> displays more details on  commits made in your local repository. 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1608231613549/LiaExcvhh.png" alt="show.png" /></span></span></li>
</ol>
<h3 id="heading-resources">Resources</h3>
<ul>
<li><a target="_blank" href="https://github.com/git-guides">git guides</a> </li>
<li><a target="_blank" href="https://www.git-tower.com/learn/git">git tower</a></li>
<li><a target="_blank" href="https://stackoverflow.com/questions/27764857/how-does-git-review-work">stackoverflow</a> </li>
</ul>
<p>Thanks for reading.
Hope you found this useful. Feel free to share this article with your network, you can also signup to my newsletter to get updates of new articles published on my blog.</p>
<p>Let's connect on  <a target="_blank" href="https://twitter.com/Udoka_Ugo_">Twitter</a> </p>
]]></content:encoded></item><item><title><![CDATA[Getting Started with Python]]></title><description><![CDATA[Just like with your cooking utensils, that come handy in preparing your desired meals, Programming languages are tools used in developing or creating…]]></description><link>https://udoka.hashnode.dev/getting-started-with-python</link><guid isPermaLink="true">https://udoka.hashnode.dev/getting-started-with-python</guid><category><![CDATA[2Articles1Week]]></category><category><![CDATA[Python 3]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[Best of Hashnode]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Thu, 03 Dec 2020 06:44:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1632249576582/Bisp6Jeud.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Just like with your cooking utensils, that come handy in preparing your desired meals,
Programming languages are tools used in developing or creating useful products and visualizing our ideas, this is one way to see these programming languages. </p>
<p> Some persons(especially beginners) choose programming languages for reasons like;</p>
<ul>
<li>It is in invoke</li>
<li>Many people are using it</li>
<li>Alot of people are talking about it and so on.</li>
</ul>
<p>If these are the reasons you chose python as a programming language, I would advice  you have a rethink.</p>
<p>Before choosing a language,take these few steps;</p>
<ol>
<li>Get a book and pen, write out why you chose to write codes.</li>
<li>What do you want to achieve from programming and what are your areas of interest?</li>
<li>Do some research on various programming languages.</li>
<li>Now, choose a programming language that you would like to use in achieving these aims.</li>
</ol>
<p>If you still chose PYTHON, <strong>congratulations and welcome on board</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595580650093/O1RsiGbDd.png" alt="mmm.png" /></p>
<h2 id="brief-overview-of-python">Brief overview of python</h2>
<p>Python is a general-purpose, object-oriented programming language, used for <a target="_blank" href="https://www.edureka.co/blog/python-applications/">diverse purposes</a> .
It is a  <a target="_blank" href="https://realpython.com/lessons/dynamic-vs-static/">dynamically typed</a> language  written in simple English terms and is therefore great for beginners. </p>
<p>You would also want to keep in mind that, Python is an interpreted language,meaning that it does not just translate your codes into an object code, but it does a line by line translation of your code such that once an error is found, it automatically halts the program execution, this does not mean all your codes from the point where it was halted downwards are wrong, but it might just be an error at the point it halted execution.
This would help you in understanding how your program is being executed by Python and save you the <strong>PANIC</strong>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595580998387/CUDd_cH0x.jpeg" alt="need.jpg" /></p>
<p>You need to get an  <a target="_blank" href="https://www.python.org/downloads/">Integrated Development Environment</a> and get it  <a target="_blank" href="https://realpython.com/installing-python/">installed</a> </p>
<p>To get started, here are some things to familiarize with, I have also added some links to these concepts;</p>
<ul>
<li><p><a target="_blank" href="https://dev.to/charanrajgolla/beginners-guide---object-oriented-programming">Object Oriented programming</a> </p>
</li>
<li><p><a target="_blank" href="https://www.python.org/dev/peps/pep-0008/">Python conventions</a> </p>
</li>
</ul>
<p>I would recommend you also familiarize with <strong>Data Structures and Algorithms
</strong></p>
<p>For starters, get the book,  <a target="_blank" href="https://automatetheboringstuff.com/2e/">'Automating the boring the stuff with python'</a> , it is a great start for beginners.</p>
<p>Good luck on your coding journey, I hope to see your amazing products soon.</p>
<p>Thanks for reading this, Feel free to drop your comments and like this article.</p>
]]></content:encoded></item><item><title><![CDATA[Debugging in python using the "raise statement"]]></title><description><![CDATA[Debugging involves identifying, understanding and resolving possible causes of error in your code, as a programmer, the occurrence of bugs is inevitable…]]></description><link>https://udoka.hashnode.dev/debugging-in-python-using-the-raise-statement</link><guid isPermaLink="true">https://udoka.hashnode.dev/debugging-in-python-using-the-raise-statement</guid><category><![CDATA[debugging]]></category><category><![CDATA[Python 3]]></category><category><![CDATA[python beginner]]></category><category><![CDATA[2Articles1Week]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Thu, 05 Nov 2020 13:14:37 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1632249813548/K5GEUXpMk.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Debugging involves identifying, understanding and resolving possible causes  of error in your code, as a programmer, the occurrence of bugs is inevitable. Whether you are a beginner or a professional programmer, the tendency of writing codes that results in error still exists.</p>
<p>In this blog article, we would be looking at how to identify the causes of bugs(errors) in your program code and how to manage or handle resulting errors.</p>
<p>According to  <a target="_blank" href="https://en.wikipedia.org/wiki/Debugging">Wikipedia</a> , Debugging in computer programming and software development is the process of finding and resolving bugs (defects or problems that prevent correct operation) within computer programs, software, or systems.</p>
<blockquote>
<p>An exception is an event, which occurs during the execution of a program that disrupts the normal flow of the program's instructions </p>
</blockquote>
<p>Python raises an exception whenever it encounters incorrect code during program execution.</p>
<p>In my previous article,<a target="_blank" href="https://udoka.hashnode.dev/catch-the-bugs">"Catch the bugs"</a>, I wrote about using the try and except statement to handle possible exceptions(errors). You can also raise your own exceptions in your code in a more understandable format you desire using the raise statement.</p>
<h2 id="the-raise-statement">The raise statement</h2>
<p>The raise statement is usually used within a function definition and the try and except statements  to handle errors resulting within the program code. </p>
<p>In a program without the try and except statement, on program execution, once the python interpreter encounters a raise statement, it automatically crashes the program and display the message passed to the exception() function as string, otherwise, it stops the program execution and moves to the except statement. We would look at examples on this later in this article.</p>
<h2 id="how-to-raise-exceptions-using-the-raise-statement">How to raise exceptions using the "raise" statement</h2>
<p>In order to define your own ways of handling possible errors in your code using the raise statement, the raise statement must consist of;</p>
<ul>
<li>The raise keyword</li>
<li>An Exception() function call</li>
<li>Your desired error message passed as a string to the Exception() function.</li>
</ul>
<p>As mentioned earlier, the try and except can be used with the raise statement.</p>
<p>Now let us go further to see some implementations of this.</p>
<h2 id="simple-implementation-of-the-raise-statement">Simple Implementation of the raise statement</h2>
<p>Like I mentioned in the <code>raise statement</code> section above, raise statements are usually used within a function.
Let us see how this is done;</p>
<p>Suppose, a mall has a rule for packaging customer purchased items, such that, only 6 chocolates, 4 burgers and 5 cupcakes can be put in a shopping bag. </p>
<p>We would define a function that takes in the number of chocolates, burgers and cupcakes to be put in a shopping bag and raises an  exception where they are more than 6,4,5 respectively.</p>
<p>For these examples, I would be using Vs-code and python 3.8.2.</p>
<p>In your choice editor, enter the following (you can use your preferred message with the Exception calls);</p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">bagChecker</span>(<span class="hljs-params">chocolates, burgers, cupcakes</span>):</span>
    <span class="hljs-keyword">if</span> chocolates &gt; <span class="hljs-number">6</span>:
        <span class="hljs-keyword">raise</span> Exception(<span class="hljs-string">'You have exceeded the number of chocolates for one shopping bag'</span>)
    <span class="hljs-keyword">if</span> burgers &gt; <span class="hljs-number">4</span>:
        <span class="hljs-keyword">raise</span> Exception(<span class="hljs-string">'You have exceeded the number of chocolates for one shopping bag'</span>)
    <span class="hljs-keyword">if</span> cupcakes &gt; <span class="hljs-number">5</span>:
        <span class="hljs-keyword">raise</span> Exception(<span class="hljs-string">'You have exceeded the number of chocolates for one shopping bag'</span>)
</code></pre><p>Now call this function and pass the following values as argument, and run your program.</p>
<pre><code><span class="hljs-attribute">bagChecker</span>(<span class="hljs-number">4</span>, <span class="hljs-number">7</span>, <span class="hljs-number">9</span>)
</code></pre><p>Your output would be;</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604580965970/CV1TwBlp-.png" alt="pic_one.png" /></p>
<p>Now let us put this bagChecker() function within the try and except statement,</p>
<pre><code><span class="hljs-keyword">try</span>:
    bagChecker(<span class="hljs-number">4</span>, <span class="hljs-number">7</span>, <span class="hljs-number">9</span>)
<span class="hljs-keyword">except</span> Exception <span class="hljs-keyword">as</span> error:
    print(str(error))
</code></pre><p>Your output would be;</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604580979837/t_XTPzuqD.png" alt="pic_two.png" /></p>
<p>Notice, the difference in the presentation of the error message, for the first example, the code crashed, then raised the exception, that resulted in the output as seen in example 1.</p>
<p>While, in the second example, the program execution in the try statement on encountering an exception, stopped and moved over to the except statement passed the error message in the exception() into 'error', then the error message was displayed in a simple and straight-forward format using the print statement.</p>
<p>From this, you can see that inserting your raise statement within a try and except statement provides;</p>
<ul>
<li>A  more clarified and straight-forward way of identifying causes of program errors with personalized error messages other than the default python error message.</li>
<li>Handles errors more grace-fully instead of letting the entire program crash.</li>
</ul>
<p>Thanks for reading.</p>
<p>I hope this was resourceful.</p>
<p>Drop a like and/or a comment.</p>
]]></content:encoded></item><item><title><![CDATA[The Gerrit Code review tool.]]></title><description><![CDATA[The outreachy contributing phase just ended, and as a successful applicant for the initial application, I chose a Wikimedia project for the contributing…]]></description><link>https://udoka.hashnode.dev/the-gerrit-code-review-tool</link><guid isPermaLink="true">https://udoka.hashnode.dev/the-gerrit-code-review-tool</guid><category><![CDATA[Git]]></category><category><![CDATA[code review]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[2Articles1Week]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Sun, 01 Nov 2020 15:00:06 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1632250412569/XS2aqwjXL.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>The outreachy contributing phase just ended, and as a successful applicant for the initial application, I chose a Wikimedia project for the contributing phase. 
Wikimedia uses phabricator for managing and creating tasks and Gerrit for hosting their Code repositories, making open source contributions, and code review.
When this phase began, it was my first time knowing about and I was quite confused initially understanding how to use these tools. </p>
<p>Like with me, perhaps this is your first time hearing Gerrit, and you might be wondering, "What is Gerrit".
 Let's go on you would find out more about this.</p>
<p>This article would provide an overview of Gerrit.</p>
<h2 id="what-is-gerrit">What is Gerrit?</h2>
<p><strong>Gerrit:</strong>  just like Github, Gitlab, Bit-bucket, or any other code-review tool, it is a web-based code review tool built on  <a target="_blank" href="https://git-scm.com/book/en/v2/Getting-Started-About-Version-Control">git version control</a>  that provides a framework you and your teams can use to review code before it becomes part of the codebase.</p>
<h2 id="some-awesome-features-of-gerrit">Some Awesome Features of Gerrit.</h2>
<ul>
<li>Commits made to Gerrit are done in Patches called Patch sets.</li>
<li>Gerrit allows for the addition of code reviewers on patches.</li>
<li>On Gerrit, commits made are automatically assigned a Change-Id which can be seen once the first patch is made on a branch.</li>
<li>It also presents you with buttons you could either use to rebase, abandon, restore an abandoned patch, revert a merged patch or make edits to your changes.</li>
<li>If for some reason you lose your local files, after making commits to your Gerrit account, Gerrit provides you with an option to download the exact patch you need, with the change previously made to the Patch and any sub-patch on the parent patch.</li>
<li>All files where changes are made in a patch-set are listed out, as seen here.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604241001194/NDib3KXLF.png" alt="nggh.png" /></li>
<li>Gerrit allows for comments on changes to be made directly on the affected area, by simply highlighting the area and pressing "c" on your keyboard, a comment box appears, where you can now enter your comment, save, then at the top of the commit page, click on reply to send your comment. as seen here.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604180476874/gqOitPOjY.png" alt="comment.png" /> 
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604180638235/b1WZEyITq.png" alt="comm.png" /></li>
<li>It provides you with a Graphical User Interface (G.U.I) that allows for making edits to affected files as seen here;</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604231672366/-8uldNenO.png" alt="edits.png" /></p>
<p>This allows for efficient and more specific ways of communication between the reviewer and contributor.
 For example;</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604180919201/9qWIWGq7i.png" alt="mi.png" /></p>
<p>Here, I placed a comment on Line 221 of the <code>script/pagefromfile.py</code> file. It shows a descriptive hyperlink showing the affected file and the line.
Clicking on the file name takes you to the file <code>script/pagefromfile.py</code>, and clicking on line 221 takes you to the point where the comment was made.</p>
<ul>
<li>Like your social platform chats are organized in sequential order, Gerrit organizes uploaded patches, their corresponding comments, and subsequent patches in their order of arrival sequentially, this helps users track recent comments and patches as seen below.</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604182210383/wTW8tIPXB.png" alt="Screenshot from 2020-10-31 23-06-02.png" /></p>
<h2 id="an-overview-of-some-gerrit-functionalities">An Overview of Some Gerrit Functionalities</h2>
<p>For this article, I would use my Wikimedia Gerrit account to explain further.
Here is an overview of a Gerrit GUI.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604233528606/HIjlkE9Xu.png" alt="ovv.png" /></p>
<p>As seen from the image above, there are some differences between Gerrit and other code review tools you know.
Let me walk you through the functionalities of the different sections of this tool using the numbered areas in the diagram.</p>
<ol>
<li><p>This shows the status of your commit, which can be: </p>
<ul>
<li><strong>Active:</strong> indicates your commit is still in the review process.</li>
<li><strong>Merged:</strong> indicates your commit has been reviewed and merged to the codebase.</li>
<li><strong>Abandoned:</strong> indicates your commit/patch set would not be reviewed and has been dropped from the review list.</li>
<li><strong>Merge Conflict:</strong> indicates your patch set has a conflict with the codebase.</li>
</ul>
</li>
<li><p>This is the last number associated with your commit in the URL.</p>
</li>
<li><p>This contains the commit message as seen in the image, </p>
<ul>
<li>[IMPR] Rewrite scripts new option handler.</li>
<li>The Id of the issue, like <strong>Bug: T264721</strong>.</li>
<li>Change-Id: the number automatically associated with your patch set on successful commit.</li>
</ul>
</li>
<li><p>Changes includes the following;</p>
<ul>
<li><strong>Open:</strong> shows all open commits/patch-sets.</li>
<li><strong>Merged:</strong> shows all merged commits/patch-sets.</li>
<li><strong>Abandoned:</strong> shows all abandoned commits/patch-sets.</li>
</ul>
</li>
<li><p><strong>Reply:</strong> This is where you can add comments if you do not want to comment on a particular code area.</p>
</li>
<li><p><strong> Your:</strong> consists of the following;</p>
<ul>
<li><strong>Dashboard:</strong> This leads you to your personal dashboard as seen here;
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604236940175/qYoNVJ9P2.png" alt="nnn.png" /></li>
<li><strong>Draft Comments:</strong>  This shows all unsent comments on patchsets.</li>
<li><strong>Edits:</strong> This shows all patch-sets you have made edits to its code.</li>
<li>Watched Changes</li>
<li>Starred Changes</li>
<li><strong>Groups:</strong> points to the group section under your settings.</li>
</ul>
</li>
<li><p><strong>Documentation:</strong> this covers the documentation of the gerrit tool and contains the following;</p>
<ul>
<li><strong>Table of content:</strong> shows the  <a target="_blank" href="https://gerrit.wikimedia.org/r/Documentation/index.html">documentation for the gerrit review tool</a> , you can read this to understand more about this tool and how to interact with it.   </li>
<li><strong>Searching: </strong> launches the search option of the documentation.</li>
<li><strong>Uploading</strong></li>
<li><strong>Access Control</strong></li>
<li><strong>RESTAPI</strong></li>
<li><strong>Project Owner guide</strong></li>
</ul>
</li>
<li><p><strong>Browse:</strong> this contains the following:</p>
<ul>
<li><strong>Repositories:</strong> lists code repositories under a project.</li>
<li><strong>Plugins:</strong>  lists all plugins under a project. </li>
<li><strong>Groups:</strong> lists groups within a project.</li>
<li><strong>Code search:</strong> allows search for codes within repositories in a project.</li>
</ul>
</li>
<li><p><strong>Search Bar:</strong> allows searches to be made across the contents of a project.</p>
</li>
<li><p><strong>Add reviewer:</strong> here you can add reviewers to your patchset. For example, I added Xqt, Jenkins bot, and xSavitar as reviewers to this patch-set.</p>
</li>
<li><p>This shows the status of tests performed on your patchset. For example, this patch-set passed all tests and the status as shown below indicates success.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604239242179/LTwz3_jRH.png" alt="statuscheck.png" /></p>
</li>
<li><p><strong>Rebase:</strong> option for integrating changes to your patch.</p>
</li>
<li><p><strong>Abandon:</strong> option for dropping a patch-set.</p>
</li>
<li><p><strong>Edit:</strong>  option to edit the code in a patch-set from the Gerrit GUI.</p>
</li>
<li><p>This includes the following options:</p>
<ul>
<li><strong>Download Patch:</strong> allows you to download the exact patch-set with all the previous changes made to the patch.</li>
<li><strong>Mark reviewed</strong></li>
<li><strong>Cherry Pick</strong></li>
</ul>
</li>
<li><p>Here you can view and edit your profile settings and other settings on Gerrit.</p>
</li>
<li><p><strong>Merge Conflicts: </strong> this shows patches with merge conflicts from other contributors and if any merge conflicts your own contributions.</p>
</li>
<li><p><strong>Restore: </strong> the restore option allows you to restore an abandoned patch-set.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604241986256/lzi5aFX2I.png" alt="nnn.png" /></p>
</li>
<li><p><strong>Revert: </strong> the revert option allows you to revert a merged patch-set.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1604242162265/5jVbGNH6y.png" alt="nnn.png" /></p>
</li>
</ol>
<p>Hope this was helpful, you can leave a comment or your choice emoji.</p>
<p>Thank you for reading, I would love to connect with you at  <a target="_blank" href="https://twitter.com/Udoka_Ugo_">Twitter</a> .</p>
<p>Do share your valuable feedback and suggestions! </p>
]]></content:encoded></item><item><title><![CDATA[A beginner's guide to open source contribution]]></title><description><![CDATA[Hi, welcome to my blog post on getting started with open source contributions. Getting started with open source for me was quite mystifying . I had to read…]]></description><link>https://udoka.hashnode.dev/a-beginners-guide-to-open-source-contribution</link><guid isPermaLink="true">https://udoka.hashnode.dev/a-beginners-guide-to-open-source-contribution</guid><category><![CDATA[2Articles1Week]]></category><category><![CDATA[Continuous Integration]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[Open Source]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Thu, 03 Sep 2020 19:55:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1632249942778/KVh4PYA0X.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi, welcome to my blog post on getting started with open source contributions. Getting started with open source for me was quite mystifying . I had to read a lot but still needed a guide. I decided that once I  got a grasp of open source, I'd break it down in the simplest way any beginner could understand, this is the motivation behind this article. 
Let's get started.</p>
<h1 id="what-is-open-source">What is Open source?</h1>
<p>Open source is a software just like your bank apps, but one in which it's original source code(initial codes used in developing the software) is made public (open to access by the public), which you could contribute your quota to it's progress.</p>
<h1 id="what-then-is-open-source-contribution">What then is Open Source Contribution?</h1>
<p>Open source contribution is the collaboration of individuals from different areas of specialization in technology to the progress of a project.</p>
<h1 id="why-should-i-contribute-to-open-source-projects">Why  should I contribute to open source projects?</h1>
<p>It is normal have the thought,'If I am not getting paid why should I be concerned about contributing to open source', but contributing to open source;</p>
<ul>
<li>Exposes you to better easier and simpler codes</li>
<li>Broadens your knowledge on implement of algorithms in more easier and neater.</li>
<li>Helps you get comfortable with working with teams.</li>
<li>Expands your knowledge on diverse languages, their incorporation with frameworks, and multiple ways of implementing different ideas in technology.</li>
<li>Exposes to different areas in technology and broadens your knowledge.</li>
<li>Builds a formidable network.</li>
<li>You get recognized for your effort.</li>
</ul>
<h1 id="how-can-i-contribute-to-open-source">How can I contribute to open source?</h1>
<p> Making open source contributions can be done in multiple ways, some of which include;</p>
<ul>
<li>Documentation: by either effecting changes to the projects documentation or drafting new documentations for projects.</li>
<li>Coding: contributing to the project code base, this would require some programming skills.</li>
<li>Reporting issues/bugs.</li>
<li>Translating project documentations.</li>
<li>Advocate for a project.</li>
<li>Designs.</li>
</ul>
<p>Before, you get started, I'd advice you pick a project, you would love to be contributing to and be intentional about your efforts, and also grow with the project, this helps build your leverage in no time. You don't want to go around without doubling your efforts. When I got started, I almost fell into this category, all thanks to my guide, <strong>Raphael Noriode</strong>, I was out of it sooner.</p>
<h1 id="after-picking-a-project-whats-next">After picking a project what's next?</h1>
<p>As a beginner to open source you would want to pick up issues with labels such as: <em><a target="_blank" href>good first issue</a> , <a target="_blank" href>help wanted</a>, <a target="_blank" href>beginners only</a>, or <a target="_blank" href>newcomers only</a></em>, While you familiarize with the project, read up the READ.md and CONTRIBUTING.md files.</p>
<p>Also, check out for links to the discussion forums for the project you are contributing to and join, this might either be a <a target="_blank" href="https://slack.com/intl/en-ng/help/articles/212675257-Join-a-Slack-workspace">Slack</a> or <a target="_blank" href="https://support.discord.com/hc/en-us/articles/360033931551-Getting-Started">discord</a> channel. </p>
<p>You don't need to be scared or feel intimidated, open source is a very welcoming space, make sure to ask questions when you need help. You can tag the <em>project maintainers</em> (people who oversee the project progress and continuity) or the person that reported an issue on your comments. Wait for a response from them, this might take time as they are really occupied with loads of jobs, so joining a discussion forum and asking your questions would be more preferable. If you choose to ask your questions in their discussion forums, make sure to reference the issue you are facing through a link.</p>
<h3 id="now-you-have-chosen-an-issue-to-fix-the-next-thing-to-do-is-show-an-interest-on-the-issue-this-simply-means-leaving-a-comment-on-the-issue-indicating-interest">Now you have chosen an issue to fix, the next thing to do is show an interest on the issue , this simply means leaving a comment on the issue indicating interest.</h3>
<p>Once, this is done, you should await responses and if the issue is still available you would be assigned the issue. Once you get assigned the issue, now it's time to fork and clone the repository, to effect changes.
This article here, <a target="_blank" href="https://udoka.hashnode.dev/making-my-first-commits-ckenigjd7018aefs15qvf4f80">Making my first commits</a> is a good guide for this.</p>
<p>Thank you for reading this article, if you need any further guide on this, you can reach out to me on <a target="_blank" href="https://twitter.com/Udoka_Ugo_">Twitter</a> .</p>
<p>Your comments are very welcomed.</p>
]]></content:encoded></item><item><title><![CDATA[My first Github Commit]]></title><description><![CDATA[Hi!, welcome to my blog post where I'd take you through making your first commit on GitHub. First, it is important you understand that GitHub just like…]]></description><link>https://udoka.hashnode.dev/my-first-github-commit</link><guid isPermaLink="true">https://udoka.hashnode.dev/my-first-github-commit</guid><category><![CDATA[2Articles1Week]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[community]]></category><category><![CDATA[Continuous Integration]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Wed, 02 Sep 2020 21:48:55 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1632250836757/cRLdixXi5.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Hi!, welcome to my blog post where I'd take you through making your first commit on GitHub.</p>
<p>First, it is important you understand that GitHub just like Gitlab is built on git, which is a command line tool, this simply means GitHub gives you among other features, a graphical interface to git. Working with git and GitHub would require executing some lines of codes on your computer terminal. Let's get to work.</p>
<p>If you are new to open source contributions, you might want to take a look at <a target="_blank" href="https://udoka.hashnode.dev/a-beginner-guide-to-open-source-contribution-ckenilfq6018kefs10a8i5iew">my other article on a beginner guide to open source contribution</a> to get you started.</p>
<p>I'd like to think you have read the contributing.md and read.md files of the project you chose,picked up an issue to fix on the project, indicated interest and have been assigned the issue.</p>
<p>In order to make contributions to a project, you would have to fork the repository (get a copy of the project to your GitHub account), at the top-right you would see a fork button as shown below:</p>
<p>Also take note of the number of the issue usually displayed as, for example, <strong>#12</strong>, you would need this while making your pull request later on.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599173056310/P-qPPYROu.png" alt="fork.png" />
Wait for this to be done
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599173101624/6SRb9fIp5.png" alt="loading in.png" />
Next, click on the clone button as seen here:
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599173457911/u-Oy3OwLR.png" alt="clone1.png" />
Then copy the url you see, click on this icon or highlight the url and copy, you would soon be needing this url you just copied.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599173528001/fC2k7t48f.png" alt="clone 2.png" />
Now, go to your computer terminal and enter the following;</p>
<p>First, you should make a directory where this project files would be downloaded into your local computer, and change into that directory as shown here</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599173668987/20mp9K0nk.png" alt="about to clone.png" />
It is now time to get the project files from your  earlier cloned GitHub repository to your computer, this is done by, entering git clone then paste the link you copied like this</p>
<pre><code>git <span class="hljs-keyword">clone</span> https:<span class="hljs-comment">//github.com/UdokaVrede/awesome-github-profiles.git</span>
</code></pre><p>your link should have a .git extension at the end when pasted. Press enter, and wait for the  project to get cloned to your local computer as seen below</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599173869233/525XGkRVg.png" alt="cloned.png" />
Once, completed, close the terminal and open the folder you just created in your preferred code editor, I used visual studio code for this.</p>
<p>On your terminal, enter the following  as shown below</p>
<pre><code><span class="hljs-attribute">git</span> checkout -b main
</code></pre><p><strong>main</strong> is the name I gave to my branch, so give your branch a name, please do not use main as this might be the name of the actual branch on your repository, you do not need conflicts.</p>
<p>This creates a new branch which is a duplicate of the original branch from it's beginning to the point where the new branch was created, this is done to avoid messing up contents of your original branch.
Now you are in a new branch, enter this in your terminal,</p>
<pre><code>git <span class="hljs-keyword">init</span>
</code></pre><p>as seen here</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599174639056/KkNMBL54s.png" alt="init.png" />
Now go ahead to make your changes. For the issue I am fixing here, which is a typo in contributing.md of this project, I'd have to locate <em>Contributing.md</em> to fix the error as seen.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599175070656/HYVL5bvwz.png" alt="contri.png" />
Make all the required changes and save. This was the typo.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599175385281/6vE8lNaAz.png" alt="error.png" />
Now you can add, commit and push your changes back to the branch you created earlier. Note, to see the current status of your work, run</p>
<pre><code><span class="hljs-attribute">git</span> status
</code></pre><p>you would see something like this;
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599175566526/84TZcysEi.png" alt="status.png" />
you can now add the changes, you made by running,</p>
<pre><code>git <span class="hljs-keyword">add</span> .
</code></pre><p>to add all changes,</p>
<p>or </p>
<pre><code>git <span class="hljs-keyword">add</span> CONTRIBUTING.md
</code></pre><p>to add specific files or folders.</p>
<p>Note, you should replace CONTRIBUTING.md with the name of the modified file, I used CONTRIBUTING.md because, it is the file I made changes to as seen above.
To see that your changes have been added, run</p>
<pre><code><span class="hljs-attribute">git</span> status
</code></pre><p>Next, commit your changes with a message on what you did as seen below</p>
<pre><code>git <span class="hljs-keyword">commit</span> -m <span class="hljs-string">''</span>your message should go <span class="hljs-keyword">in</span> her<span class="hljs-string">e''</span>
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599176005814/OTVFb1A12.png" alt="comm.png" />
Note:  Different projects have their own specified way of making commits. At <a target="_blank" href="https://layer5.io/">Layer5</a>, where I have made some contributions, you are required to add a sign-off message, do well to read the contributing.md file carefully while making your contributions. </p>
<p>Now you have committed your changes, next, you would push your changes to the branch you created earlier, if you can no longer remember the name, run</p>
<pre><code><span class="hljs-attribute">git</span> branch
</code></pre><p>you would see the name of the branch, as seen
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599176652829/BKoWjXRpm.png" alt="branch.png" />
Now, push the branch you just saw, by running</p>
<pre><code>git <span class="hljs-keyword">push</span> origin main
</code></pre><p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599177202730/9aGweu6YF.png" alt="pushed.png" />
Note: <strong>main</strong> is my branch name so use the name you saw when you ran the <strong>git branch</strong> command</p>
<p>Next, go back to your github repository, you forked and refresh, you would see this</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599177253007/gncxpt7ic.png" alt="prtime.png" />
Click on compare when this appears;
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599177313204/UMMLmrYnV.png" alt="compared.png" />
If you there are no conflicts, you would see the <strong>"Able to merge"</strong> message in green. 
you can scroll down to see the changes you made, also notice your commit message you entered earlier while making your commit besides your profile image.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599178004695/SwTMRtYYy.png" alt="changes.png" /></p>
<h3 id="creating-your-pull-request">Creating your pull request</h3>
<p>When creating pull request as shown below, reference the issue which your pull request fixes, this can be done by simply stating points like</p>
<pre><code><span class="hljs-attribute">This</span> pull request fixes issue <span class="hljs-comment">#followed by the issue number</span>
</code></pre><p>In this case, mine was 74, if you forgot this, right-click on issues and open the issues in a new tab, search for the issue you are fixing and get the number of that issue.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599178554152/CvmNXJxdv.png" alt="corre.png" /></p>
<p>You also need to give a brief and detailed description of what you did, do not forget to do this, it explains your changes to the maintainers, as seen above.</p>
<p>When this is done, click on the  green colored <strong>create pull request</strong> button to create your pull request and this below brings you to a successful end of your first commit.
<img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599178696208/qDvT8GDKG.png" alt="end.png" /></p>
<p>Congratulations to you.</p>
<p>Once, your pull request is reviewed and satisfied to have met its necessary requirements in relation to the issue, it would be merged.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1599178952353/UgnAZDA1Q.jpeg" alt="congr.jpg" /></p>
<p>Kudos to you, you are finally an Open Source Contributor. </p>
<p>If you have any further issues or questions, feel free to contact me on <a target="_blank" href="https://twitter.com/Udoka_Ugo_">Twitter</a> and follow me on <a target="_blank" href="https://github.com/UdokaVrede">Github</a>.</p>
<p>If this was helpful, drop a comment, like or share to your friends</p>
]]></content:encoded></item><item><title><![CDATA[Basic Python Operators]]></title><description><![CDATA[From your daily mathematical calculations, to your daily comparison of items or conditions, all of these require the use of mathematical operators to…]]></description><link>https://udoka.hashnode.dev/basic-python-operators</link><guid isPermaLink="true">https://udoka.hashnode.dev/basic-python-operators</guid><category><![CDATA[2Articles1Week]]></category><category><![CDATA[Python 3]]></category><category><![CDATA[General Programming]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Thu, 23 Jul 2020 01:36:54 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1632250135090/En1DHm7pW.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>From your daily mathematical calculations, to your daily comparison of items or conditions, all of these require the use of mathematical operators to perform these calculations whether you are using a device or want to write the codes to perform these actions.</p>
<p>In this article, I would work you through the basic operators in python</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595466646371/ldP9gc3A6.jpeg" alt="piii.jpeg" /></p>
<p>Let's go ahead;</p>
<h2 id="what-are-operators">What are Operators?</h2>
<p>Operators are simply symbols used in performing arithmetic or logical operations on one or more operands.
Operands on the other hand, are the values on which these operations are performed to produce a result.</p>
<h2 id="classification-of-python-operators">Classification of Python Operators</h2>
<p>For the purpose of this article, we would be looking at the three(3) main classifications of python operators, which include;</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595467320831/ikQtlts0y.png" alt="2nd.png" /></p>
<h3 id="1-arithmetic-operators">1). Arithmetic Operators:</h3>
<p>The arithmetic operators takes one or more operands and performs mathematical operations on them then it returns a value whose type is determined by the type of the operands. 
Further details of python data types would be seen in my preceding articles.</p>
<p>Let's see the types of arithmetic operators in python:</p>
<ul>
<li>Exponent  **  used for your usual math raise to power calculations</li>
<li>Modulus %  used to get the remainder part of division</li>
<li>Integer division/floored quotient // gets the whole number part of division</li>
<li>Division / gives both the whole number and remainder of division</li>
<li>Multiplication *</li>
<li>Subtraction  -</li>
<li>Addition +</li>
</ul>
<p>let's see some examples of the above operators, enter the code below in your python shell</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595460677788/CZXD904sM.png" alt="first.png" /></p>
<p>From the above notice that, 3**4, gave 81,this is same as your usual 3^4 done in mathematics. 7%2 resulted in 1 this is because when 2 divides 7, the answer you get is 3 remainder 1, %(modulus) gives the remainder and not the whole number, while // (integer divisor) gives the whole number part, also / (division operator) gives the whole result both the whole number and remainder part.</p>
<p>Also, - Parentheses ()    is used for grouping values<br />let's see how this can be implemented, Assume you want to add 3 to 2 then multiply it by 3, now 2+3=5 and 5*3=15, in the code below see how using the () helps group your values to obtain accurate results and what happens if otherwise.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595462178261/nasI43YL3.png" alt="2nd.png" /></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595467555242/QX23g6GJM.png" alt="2nd.png" /></p>
<h3 id="2-comparison-operators">2).  Comparison Operators:</h3>
<p>These operators evaluate two values and returns a boolean value either true or false.</p>
<p>The comparison operators are:</p>
<ul>
<li>==        Equal to                              checks that value a is same as value b</li>
<li>!=         Not equal to                       checks that value a is not same as value b</li>
<li>'&gt;='        Greater than or Equal to   checks that value a is greater than or equal to value b</li>
<li>&lt;=         Less than or equal to       checks that value a is lesser than or equal to value b</li>
<li>'&gt;'           Greater than                     checks that value a is greater than value b</li>
<li>&lt;           Lesser than                       checks that value a is lesser than value b</li>
</ul>
<p>Let's see some examples;</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595463386283/dduRVVgu_.png" alt="3rd.png" /></p>
<p>Next is;</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595467988593/6s481JvDy.png" alt="2nd.png" /></p>
<h3 id="3-logical-operators">3). <strong>Logical Operators:</strong></h3>
<p>These operators take two (2) operands, perform operations on them and returns a boolean value which could be  either True or False</p>
<p>Operators in this category are used to compare or combine operands, they include;</p>
<ul>
<li>and            returns True if both operands are True else it returns False</li>
<li>or              returns True if one or the both operands are True, else  it returns False</li>
<li>not              returns the negative value of an operands</li>
</ul>
<p>Let's see some examples,</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1595465356606/ZpK9UD2c7.png" alt="444.png" /></p>
<p>I hope this article was helpful.</p>
<p>Thank you for reading this, Feel free to leave a comment and/or share with your contact.</p>
<p>Let's connect on  <a target="_blank" href="https://twitter.com/Udoka_Ugo_">Twitter</a>.</p>
]]></content:encoded></item><item><title><![CDATA[Bugs everywhere! Catch them All]]></title><description><![CDATA[When writing codes, there are usually times when an error occurs and identifying the cause could be very tasking, you might as well as spend a good amount…]]></description><link>https://udoka.hashnode.dev/bugs-everywhere-catch-them-all</link><guid isPermaLink="true">https://udoka.hashnode.dev/bugs-everywhere-catch-them-all</guid><category><![CDATA[Python 3]]></category><category><![CDATA[Bugs and Errors]]></category><category><![CDATA[learn]]></category><category><![CDATA[coding]]></category><category><![CDATA[2Articles1Week]]></category><dc:creator><![CDATA[Udokaku Ugochukwu]]></dc:creator><pubDate>Mon, 13 Jul 2020 15:48:14 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1632250308274/tHhSM08oE.jpeg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>When writing codes, there are usually times when an error occurs and identifying the cause could be very tasking, you might as well as spend a good amount of time, checking through but might not find anything after all. In the end, you might get help, then you realize it was something you knew could have easily identified an error.</p>
<p>When I started coding, I remember a time when I had a bug that took me two days to find and when I did, it was a semicolon at the end of my for loop.</p>
<p> The big question now is,
 <strong>🤨 How did I skip that?
</strong></p>
<p>Let's say 🤔 </p>
<ul>
<li>The lengthy error message</li>
<li>You were tensed</li>
<li>Anxiety </li>
<li>You taught you know every detail of the code,(sure!, you did write those codes). </li>
</ul>
<p>You definitely are not experiencing anything different, someone else has.</p>
<p>So, why not find a way to catch the bugs, you know might occur.</p>
<p>How do I then catch these errors(bugs), and make the errors understandable to anyone?🤔</p>
<p>In this article, I would be show you through on how this can be implemented in a simple Python program using the TRY and EXCEPT clauses. </p>
<p>Let’s get started; </p>
<p>Now get your devices on which you run your python codes handy, if you don’t have a device, there are numerous online python IDE you can utilize, I’d recommend, https://www.onlinegdb.com/online_python_compiler.</p>
<p>Using a simple division problem as an example, </p>
<p>create a new file and enter the following lines of code, then save and run;</p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">divise</span>(<span class="hljs-params">a,b</span>):</span>    <span class="hljs-comment">#initialization of the function to divide two numbers</span>
    <span class="hljs-keyword">return</span> a/b    <span class="hljs-comment">#return value gotten from division</span>

print(divise(<span class="hljs-number">6</span>,<span class="hljs-number">0</span>))    <span class="hljs-comment">#print value returned by the function call and input of values for variables,’a’ and             ‘b’</span>
print(divise(<span class="hljs-number">18</span>,<span class="hljs-number">2</span>))
print(divise(<span class="hljs-number">25</span>,<span class="hljs-number">5</span>))
</code></pre><p>when this code is executed, you would notice that it’s execution was halted, as soon as the interpreter met with an error in the first print statement which resulting from dividing 6 by 0.</p>
<p>We don’t want our program execution to be interrupted by bugs, that might take time understanding and  not to mention, bugs we know are likely to happen. So what now.</p>
<p>When you inputted zero as a divisor, it might have skipped your memory that zero as a divisor would result in a RUNTIME ERROR,ZeroDivisionError,(this was exactly the error given by the interpreter).</p>
<p>Let’s get our bugs using a TRY and EXCEPT clause to catch subsequent errors like this, by putting potential error resultant codes in the TRY clause;</p>
<ul>
<li>Create a new file and enter the following lines of code, then save and run </li>
</ul>
<pre><code><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">divise</span>(<span class="hljs-params">a,b</span>):</span>
    <span class="hljs-keyword">try</span>:
        <span class="hljs-keyword">return</span> a/b    

    <span class="hljs-keyword">except</span> ZeroDivisionError:
        print(‘Look again, you have entered zero(<span class="hljs-number">0</span>) <span class="hljs-keyword">as</span> a divisor’)



print(divise(<span class="hljs-number">6</span>,<span class="hljs-number">2</span>))    
print(divise(<span class="hljs-number">18</span>,<span class="hljs-number">0</span>))
print(divise(<span class="hljs-number">25</span>,<span class="hljs-number">5</span>))
</code></pre><ul>
<li>Go ahead, execute the code, now you can see that when the interpreter got to the point where zero is the divisor, a detailed text was printed out. This helps you know what actually happened and what caused the error in simple understandable terms .</li>
</ul>
<p>You can also put your function calls in the TRY and EXPECT clauses, again create a new file and enter these codes: </p>
<pre><code><span class="hljs-function"><span class="hljs-keyword">def</span> <span class="hljs-title">divise</span>(<span class="hljs-params">a,b</span>):</span>    
    <span class="hljs-keyword">return</span> a/b    
<span class="hljs-keyword">try</span>:
    print(divise(<span class="hljs-number">6</span>,<span class="hljs-number">0</span>))    
    print(divise(<span class="hljs-number">18</span>,<span class="hljs-number">2</span>))
    print(divise(<span class="hljs-number">25</span>,<span class="hljs-number">5</span>))

<span class="hljs-keyword">except</span> ZeroDivisionError:
    print(‘Look again, you have entered zero(<span class="hljs-number">0</span>) <span class="hljs-keyword">as</span> a divisor’)
</code></pre><ul>
<li>You would notice that subsequent lines of codes were not executed, this is because, when the interpreter enters the EXPECT clause, it does not go back to the TRY clause, but continues downwards to the end. Change the print statement with the divisor to the last place and see that all codes are executed, you can play around with this.</li>
</ul>
<p>Now you got your bug in a container, you can easily locate and fix the error. </p>
<p>💪Kudos to you, Great Job!.</p>
<p>If you found this interesting, feel free to drop a comment, share with your contacts and you can also sign up to my newsletter for more interesting content like this.</p>
]]></content:encoded></item></channel></rss>