<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Arnold Wafula</title>
    <description>The latest articles on DEV Community by Arnold Wafula (@arnoldwafula).</description>
    <link>https://dev.to/arnoldwafula</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1017232%2F84b364bb-d398-4f4c-a5d4-cb36dea0267a.jpeg</url>
      <title>DEV Community: Arnold Wafula</title>
      <link>https://dev.to/arnoldwafula</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/arnoldwafula"/>
    <language>en</language>
    <item>
      <title>How to Unpublish an App From Google Play Store</title>
      <dc:creator>Arnold Wafula</dc:creator>
      <pubDate>Sat, 01 Jul 2023 21:52:41 +0000</pubDate>
      <link>https://dev.to/arnoldwafula/how-to-unpublish-an-app-from-google-play-store-228p</link>
      <guid>https://dev.to/arnoldwafula/how-to-unpublish-an-app-from-google-play-store-228p</guid>
      <description>&lt;h2&gt;
  
  
  How to Unpublish an App From Google Play Store
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;The very brief process of unpublishing 🚮 your app&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oh5LWl32--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2400/1%2Ayk9HLCRc3ByA6rMFQ8J66w.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oh5LWl32--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2400/1%2Ayk9HLCRc3ByA6rMFQ8J66w.jpeg" alt="Google Play Store Banner" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As we saw in the &lt;a href="https://arnoldwafula.medium.com/5-steps-to-publish-your-app-on-google-play-store-5216e8c1780c"&gt;last article&lt;/a&gt;, publishing an app to the Play Store is simple. Here, we will delve into the reverse process, unpublishing. While publishing requires plenty of time (testing) and planning, unpublishing is swift.&lt;/p&gt;

&lt;p&gt;Without further ado, let us go through the process of unpublishing an app from the Play Store.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Go to Play Console
&lt;/h2&gt;

&lt;p&gt;Visit the &lt;a href="https://play.google.com/console/developers/?pli=1"&gt;Play Console&lt;/a&gt; and log in with your developer account.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UtkI1k3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A4bM4bp157EG1A9bGMB4bbQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UtkI1k3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A4bM4bp157EG1A9bGMB4bbQ.png" alt="Choose developer account" width="574" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Select The App from the List
&lt;/h2&gt;

&lt;p&gt;On the Play Console home page, under “All apps,” select the app that you want to unpublish from the Play Store.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Aaz7W9GR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2A2H38f5H8V6OYrsE7glo35w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Aaz7W9GR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2A2H38f5H8V6OYrsE7glo35w.png" alt="Select the app you want to unpublish" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will take you to the app dashboard where you will proceed to the next step.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w30qPNf5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2AxTfMFpnwfu9AuYDj3EPGWQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w30qPNf5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2AxTfMFpnwfu9AuYDj3EPGWQ.png" alt="App Dashboard" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Select Setup from the side menu
&lt;/h2&gt;

&lt;p&gt;On the side menu, scroll down to the “Release” section.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zAPYCwTw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2AQFY1Lez8yn9sE8jq6jszig.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zAPYCwTw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2AQFY1Lez8yn9sE8jq6jszig.png" alt="Select Setup under “Release”" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select the Setup menu. It has four options;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;App Integrity&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Integrity API Report&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Internal app sharing&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Advanced settings&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Step 4: Choose Advanced Settings
&lt;/h2&gt;

&lt;p&gt;On the “Advanced Settings” page, the App availability tab will open by default.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sARSFwcp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2ABCI9EBT4Ej28fYezFQCnTw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sARSFwcp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2ABCI9EBT4Ej28fYezFQCnTw.png" alt="Unpublished" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Choose the Unpublished option.&lt;/p&gt;

&lt;p&gt;Done!!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NB:&lt;/strong&gt; Unpublishing does not fully remove the app. Users that have installed the app on their devices will still find it on the Play Store and receive updates.&lt;br&gt;
 To completely remove the app, contact the Play Console support team &lt;a href="https://support.google.com/googleplay/android-developer/gethelp?visit_id=638130374458737855-1460335542&amp;amp;rd=1#"&gt;here&lt;/a&gt; to raise a ticket.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Thank you for reading 🥳. You can support me by buying me a cup of coffee &lt;a href="https://ko-fi.com/arnoldwafula#checkoutModal"&gt;here&lt;/a&gt; ☕.&lt;/p&gt;

&lt;p&gt;See you at the next one&lt;/p&gt;

&lt;p&gt;Peace ☮️✌️&lt;/p&gt;

</description>
      <category>android</category>
      <category>unpublish</category>
      <category>googleplayconsole</category>
      <category>development</category>
    </item>
    <item>
      <title>5 Steps to Publish Your App on Google Play Store</title>
      <dc:creator>Arnold Wafula</dc:creator>
      <pubDate>Sat, 01 Jul 2023 19:27:33 +0000</pubDate>
      <link>https://dev.to/arnoldwafula/5-steps-to-publish-your-app-on-google-play-store-4ml7</link>
      <guid>https://dev.to/arnoldwafula/5-steps-to-publish-your-app-on-google-play-store-4ml7</guid>
      <description>&lt;h2&gt;
  
  
  5 Steps to Publish Your App on Google Play Store
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;A step-by-step guide to having your app on the largest app store&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KEvdHVYq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2400/1%2Ayk9HLCRc3ByA6rMFQ8J66w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KEvdHVYq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2400/1%2Ayk9HLCRc3ByA6rMFQ8J66w.png" alt="Google Play Store Banner" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Android is the &lt;a href="https://www.bankmycell.com/blog/android-vs-apple-market-share/"&gt;most popular mobile operating system&lt;/a&gt; in the world. With a market share of 71.63%, it topples immediate competitor iPhone OS (iOS) at 27.71%. iOS was released in June 2007 at the infamous iPhone 1 launch by the late Steve Jobs.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/VQKMoT-6XSg"&gt;
&lt;/iframe&gt;
&lt;br&gt;
Despite existing before iOS, &lt;a href="https://www.androidauthority.com/google-android-acquisition-884194/"&gt;Android was acquired by Google in 2005&lt;/a&gt; and launched commercially in September 2008. It would later gain traction around 2011/2012 with the release of Android version 2.3 Gingerbread, and now at Android 14, the numbers don’t lie. From availability on affordable mobile devices to a broad ecosystem (Smartphones, tablets, smartwatches, TV, and Auto), it is undoubtedly a giant.&lt;/p&gt;

&lt;p&gt;In this simple guide, I will teach you how to publish your Android app to the Play Store and take advantage of &lt;a href="https://play.google.com/console/developers/?pli=1"&gt;3.6 Billion Android devices across 190 countries&lt;/a&gt; worldwide.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ NB: This guide is for Android Developers. To learn Mobile Development with Android, start &lt;a href="https://developer.android.com/courses"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Prerequisites:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Play Console account&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;App AAB file&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Logo image&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Banner image&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;App Screenshots&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Link to the privacy policy page&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 1: Create a Play Console Account
&lt;/h2&gt;

&lt;p&gt;This account will enable you to publish and manage your apps. It comes with tools such as stats, growth, monetization and insights such as app installs, uninstalls, device types, etc.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Go to &lt;a href="https://play.google.com/console/developers/?pli=1"&gt;Google Play Console&lt;/a&gt; to create an account.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Follow the prompts to set up account details.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Pay a one-time fee of $25.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Await confirmation.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Done!!&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 2: Login and Create an App
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UtkI1k3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A4bM4bp157EG1A9bGMB4bbQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UtkI1k3Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2000/1%2A4bM4bp157EG1A9bGMB4bbQ.png" alt="Choose Developer Account" width="574" height="393"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;On the Console home page, under “All apps” click the blue “Create App” button in the top right corner.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Aaz7W9GR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2A2H38f5H8V6OYrsE7glo35w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Aaz7W9GR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2A2H38f5H8V6OYrsE7glo35w.png" alt="Google Play Console Home Page" width="800" height="356"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fill out the form with your details (App Name, Default Language, App or Game, Free or Paid), check the boxes in the Declarations section and click the “Create App” button at the bottom.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QDCRfAGC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2AWvohNykudQTO2Ecz1BKO4Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QDCRfAGC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2AWvohNykudQTO2Ecz1BKO4Q.png" alt="Create app 1" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iVLasqF4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2A-mx8K7QY1nvxsQjPOHaa7A.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iVLasqF4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2A-mx8K7QY1nvxsQjPOHaa7A.png" alt="Create app 2" width="800" height="381"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Navigating App Dashboard
&lt;/h2&gt;

&lt;p&gt;Before publishing your app, it is good practice to ensure that it has been tested and is error-free. The app dashboard presents a few options for testing.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oY312O_6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2582/1%2AFvoxMUB9wUDq5iuXHVCzUg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oY312O_6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2582/1%2AFvoxMUB9wUDq5iuXHVCzUg.png" alt="Start testing now" width="800" height="304"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click Start Testing now and follow the instructions&lt;/p&gt;

&lt;p&gt;There are 2 types of tests;&lt;/p&gt;

&lt;h3&gt;
  
  
  Alpha
&lt;/h3&gt;

&lt;p&gt;Tests the least stable version of the app within a small group (company or development team).&lt;/p&gt;

&lt;h3&gt;
  
  
  Beta
&lt;/h3&gt;

&lt;p&gt;Tests a more stable version of the app within a larger group. The Beta version is near release.&lt;/p&gt;

&lt;p&gt;Next, scroll down to “Set up your app.”&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Set up your app
&lt;/h2&gt;

&lt;p&gt;Expand the view tasks arrow to fill in the app contents starting with;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---BbxVeLN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2594/1%2AQJC91v5DDEVZhuv1uaADBw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---BbxVeLN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2594/1%2AQJC91v5DDEVZhuv1uaADBw.png" alt="Set up your app" width="800" height="426"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Set privacy policy&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;App access&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Ads&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Content rating&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Target Audience&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;News apps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;COVID-19 contact tracing and status apps&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Data safety&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Government apps&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Under the MANAGE HOW YOUR APP IS ORGANIZED AND PRESENTED section&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YagbYU1W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2616/1%2AhQd3vSB78BR_VMWH-8VeAw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YagbYU1W--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/2616/1%2AhQd3vSB78BR_VMWH-8VeAw.png" alt="MANAGE HOW YOUR APP IS ORGANIZED AND PRESENTED" width="800" height="92"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select an app category and provide contact details&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Set up your store listing&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5: Release your app
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xsq_70Ga--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2AyehsH-j7jQA9CHynhK8Wtw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xsq_70Ga--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2AyehsH-j7jQA9CHynhK8Wtw.png" alt="Release your app (Testing)" width="800" height="380"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Under this section, there are four options;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Test your app with a larger group of testers that you control (Optional)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Let anyone sign up to test your app on Google Play (Optional)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Build excitement for your app with pre-registration (Optional)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create and publish a release&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The first three have everything to do with testing. However, we are going to focus on the last option, Create and publish a release.&lt;/p&gt;

&lt;h3&gt;
  
  
  Create and publish a release
&lt;/h3&gt;

&lt;p&gt;This option is only enabled after you have completed the tasks described in Step 4. If you have then, let us proceed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8yD_88Uo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2ALhK8sAtYzVy0vVaW0VYSbA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8yD_88Uo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn-images-1.medium.com/max/3200/1%2ALhK8sAtYzVy0vVaW0VYSbA.png" alt="Create and publish a release" width="800" height="369"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click the downfacing arrow icon to expand the menu.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select countries and regions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;CREATE AND ROLL OUT A RELEASE&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Create a new release&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Preview and confirm the release&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Send the release to Google for review&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Done. Now wait a few days for Google to review the app and publish it to the Play Store. Once published, you can begin promoting it to drive traffic and increase downloads.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The publishing process is straightforward as long as you follow it correctly. As you begin the journey, always do your research to find out new ways of promoting and improving your Android applications. Akin to the tech world, the Android space evolves at a rapid pace, with new updates annually.&lt;/p&gt;

&lt;p&gt;Thank you for reading 🥳. You can support me by buying me a cup of coffee &lt;a href="https://ko-fi.com/arnoldwafula#checkoutModal"&gt;here&lt;/a&gt; ☕.&lt;/p&gt;

&lt;p&gt;See you at the next one.&lt;/p&gt;

&lt;p&gt;Peace ☮️✌️&lt;/p&gt;

</description>
      <category>android</category>
      <category>googleplayconsole</category>
      <category>publishing</category>
      <category>development</category>
    </item>
    <item>
      <title>7 Steps To Fact-Check an Image Online</title>
      <dc:creator>Arnold Wafula</dc:creator>
      <pubDate>Thu, 30 Mar 2023 10:28:50 +0000</pubDate>
      <link>https://dev.to/arnoldwafula/7-steps-to-fact-check-an-image-online-49dh</link>
      <guid>https://dev.to/arnoldwafula/7-steps-to-fact-check-an-image-online-49dh</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;The internet is the present and the future. In Kenya, internet usage is widespread since millions have mobile phones. According to &lt;a href="https://data.worldbank.org/indicator/IT.NET.USER.ZS?locations=KE"&gt;World Bank data&lt;/a&gt;, in 2020, 30% of the population had internet access. That is a high number compared to neighbouring Tanzania which ranked at 22%, Rwanda at 24 %, and Uganda far below at 6.1%.&lt;/p&gt;

&lt;p&gt;Despite being the future, it's a strange place that you should be careful about how to navigate. Starting March 20th 2023, weekly &lt;a href="https://www.washingtonpost.com/world/2023/03/27/kenya-opposition-protests-antigovernment-raila-odinga-william-ruto/34c57c18-cc7e-11ed-8907-156f0390d081_story.html"&gt;anti-government protests&lt;/a&gt; on Mondays have engulfed the streets of Nairobi. Amid these, misinformation is rampant on social media, especially Twitter - the most popular news social media platform.&lt;/p&gt;

&lt;p&gt;Below is a tweet with an image of a sheep inside a car, which the public might presume was stolen during the &lt;a href="https://www.businessdailyafrica.com/bd/corporate/companies/armed-groups-raid-kenyatta-family-owned-northlands-city-4174464"&gt;Northlands farm raid&lt;/a&gt; on March 27th 2023.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bE9VVEHT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0eah2c83cdk5ylfg1ypl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bE9VVEHT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0eah2c83cdk5ylfg1ypl.png" alt="Tweet With The Image" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To fact-check, the shared images, follow these steps;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Download The Image To Your Device.
&lt;/h3&gt;

&lt;p&gt;Click the three dots at the top right of the tweet and select "Save."&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YT7q-ST5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p8z9ol80bz4d315heohq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YT7q-ST5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p8z9ol80bz4d315heohq.png" alt="Saving The Image In The Tweet" width="720" height="1549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are using a browser, right-click the image and select "Save image as."&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 2: Go To The Google Home Page And Click The Camera Icon.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qiiDVqx---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y5ihc0jluc1dr54nam7g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qiiDVqx---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/y5ihc0jluc1dr54nam7g.png" alt="Google Home Page" width="800" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 3: Select The Downloaded Image From Your Device.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ChWyqzKn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k2jg6w6hk9mhmysab57j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ChWyqzKn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k2jg6w6hk9mhmysab57j.png" alt="Upload Image" width="800" height="347"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Alternatively, paste the image link in the bar below.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 4: Expand The Corners To Cover The Entire Image.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8KV_fxbR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klqxydry60stlbusree6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8KV_fxbR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/klqxydry60stlbusree6.png" alt="Expand Image Corners" width="800" height="383"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 5: Scroll Through The Visual Matches.
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8hl5t0dm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bqprif4e16ontkwzi9gj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8hl5t0dm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bqprif4e16ontkwzi9gj.png" alt="Visual Matches" width="769" height="699"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 6: Select The Most Credible Result Based On Recency.
&lt;/h3&gt;

&lt;p&gt;I chose the article from &lt;a href="https://www.huffingtonpost.co.uk/entry/its-ke-dezemba-heres-your-guide-to-getting-away-with-almost_uk_5c7e8cd9e4b078abc6c0824f"&gt;huffingtonpost.co.uk&lt;/a&gt;, originally published on November 25, 2016. &lt;strong&gt;NB: Always choose the earliest published source.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4y5sp4-x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eqslwk5pd2zm13m5duxe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4y5sp4-x--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/eqslwk5pd2zm13m5duxe.png" alt="Selected Visual Match" width="769" height="699"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 7: Done!! 🥳
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8IkPLQIU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rbb85wrtdbtaagg07m8m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8IkPLQIU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/rbb85wrtdbtaagg07m8m.png" alt="Huffingtonpost Article" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LQpmyfy0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ujba3hg2559p5yynpkov.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LQpmyfy0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ujba3hg2559p5yynpkov.png" alt="Original Tweet Containing The Image" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The image first appeared on a &lt;a href="https://twitter.com/Eusebius/status/543719687071490048"&gt;tweet&lt;/a&gt; by @&lt;a href="https://twitter.com/Eusebius"&gt;Eusebius&lt;/a&gt; on December 13, 2014.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;With that said, the next time you come across an image on the internet and want to verify its authenticity, follow the seven steps. Be sure to share the article with your friends and family. Thank you for reading 🥳.&lt;/p&gt;

&lt;p&gt;You can also support me by buying me a cup of coffee ☕ here; &lt;a href="https://ko-fi.com/arnoldwafula"&gt;https://ko-fi.com/arnoldwafula&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See you at the next one. Peace ☮️✌️&lt;/p&gt;

</description>
      <category>internet</category>
      <category>googlelens</category>
      <category>tutorial</category>
      <category>image</category>
    </item>
    <item>
      <title>Camp David Butchery App Review</title>
      <dc:creator>Arnold Wafula</dc:creator>
      <pubDate>Tue, 21 Mar 2023 20:39:55 +0000</pubDate>
      <link>https://dev.to/arnoldwafula/camp-david-butchery-app-review-56g9</link>
      <guid>https://dev.to/arnoldwafula/camp-david-butchery-app-review-56g9</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;Technology continues to revolutionise how businesses operate. From the delivery of services to the production of goods, tech is at the centre stage.&lt;/p&gt;

&lt;p&gt;Nowadays, you can place an order, make transactions and receive services from the comfort of your home. On the other hand, most businesses use &lt;strong&gt;&lt;a href="https://www.sap.com/africa/insights/what-is-erp.html"&gt;ERP&lt;/a&gt;&lt;/strong&gt; systems to run fundamental business processes, marketing tools, and delivery services for products.&lt;/p&gt;

&lt;p&gt;All this streamlines business activities, therefore, maximising profits.&lt;/p&gt;

&lt;h2&gt;
  
  
  History of the Word Butchery
&lt;/h2&gt;

&lt;p&gt;Originally French, the word "bouchier" evolved to "boucherie" and later to butchery (Middle English). Despite the changes, the meaning remained constant, a butcher's shop or slaughterhouse. In the West, butcher shops have decreased popularity since the bloom of supermarkets.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Motivated Me to Review the App
&lt;/h2&gt;

&lt;p&gt;This past week, I stumbled upon a YouTube video by &lt;a href="https://dev.tourl"&gt;Jaymo Ule Msee&lt;/a&gt; titled "&lt;em&gt;&lt;strong&gt;Secrets behind your favourite nyama choma you may not know."&lt;/strong&gt;&lt;/em&gt; I was super intrigued by a few discoveries I made. This motivated me to put down in writing my two cents.&lt;/p&gt;

&lt;p&gt;You can check out the video below for in-depth lessons about meat and the Camp David Butchery app.&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/FNbCyk8t5vE"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is the Camp David Butchery App?
&lt;/h2&gt;

&lt;p&gt;When was the time you saw an app exclusively for a butchery, through which you can order different cuts of premium quality meat, tripe, liver, sausages etc, all within a metropolitan (50-kilometre radius)? Here comes the &lt;strong&gt;Camp David Butchery&lt;/strong&gt; app for Android. I delved into Google and did a quick search on it and made some interesting findings;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;This butchery has been around for several years.&lt;/li&gt;
&lt;li&gt;They have several branches in Nairobi, namely; Camp David Carwash, Gumba Estate, Umoja 3, Kahawa Sukari and Camp Entumoto.&lt;/li&gt;
&lt;li&gt;They have great reviews online.
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--smd0-SQf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ppc6e8zl7abqq1hsqruf.PNG" alt="Camp David Butchery Review 1" width="758" height="111"&gt;
&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BjDF3-B8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8ynagv12xwz7lwz1k6gx.PNG" alt="Camp David Butchery Review 2" width="756" height="139"&gt;
&lt;/li&gt;
&lt;li&gt;Have a good reputation with most customers likely to recommend them to other people.&lt;/li&gt;
&lt;li&gt;They vacuum-pack meat which helps preserve them for a long time.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So I downloaded the app and tried it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Camp David App Details
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;App Name:&lt;/strong&gt; Camp David Butchery&lt;br&gt;
&lt;strong&gt;App Version:&lt;/strong&gt; 1.0.17&lt;br&gt;
&lt;strong&gt;Developer Name:&lt;/strong&gt; &lt;a href="https://play.google.com/store/apps/details?id=com.campdavid.campdavid"&gt;Camp David Butchery&lt;/a&gt;.&lt;br&gt;
&lt;strong&gt;Platforms available:&lt;/strong&gt; Android&lt;br&gt;
&lt;strong&gt;Pricing:&lt;/strong&gt; Free&lt;/p&gt;

&lt;p&gt;Note: The app works hand in hand with the Camp David Rider app, used by riders to make deliveries.&lt;/p&gt;

&lt;h2&gt;
  
  
  App Review
&lt;/h2&gt;

&lt;h3&gt;
  
  
  What Does The App Do?
&lt;/h3&gt;

&lt;p&gt;The app allows customers to order various premium quality in-stock meat cuts and meat products and have them delivered to their doorstep. You can also order on behalf of someone.&lt;/p&gt;

&lt;h3&gt;
  
  
  Audience
&lt;/h3&gt;

&lt;p&gt;The app is available to everyone aged 3+ with an Android smartphone and who is within the Nairobi metropolitan. Camp David is &lt;a href="https://www.bbc.com/news/uk-27324224"&gt;Halal&lt;/a&gt; certified and hence their meat can be consumed by the Muslim population.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rating: 5/5&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Simplicity
&lt;/h3&gt;

&lt;p&gt;The app is well-designed with a simple-to-use user interface. On the home screen are two sections;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Categories&lt;/li&gt;
&lt;li&gt;Featured products&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7cXNShQL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4bs871w5gjjqkknvh0og.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7cXNShQL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4bs871w5gjjqkknvh0og.png" alt="Home screen" width="720" height="1549"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The home screen design makes finding items effortless.&lt;/p&gt;

&lt;p&gt;At the top of every screen &lt;em&gt;(Home, Explore, Cart, Account)&lt;/em&gt; is a search bar which makes it easy to find any products available and in stock.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--j6LQ2bFt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlqix46t3jb0plkkpopp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--j6LQ2bFt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xlqix46t3jb0plkkpopp.png" alt="The search bar at every top of the screen" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The ordering process takes the cake since it gives the user a seamless experience. I have discussed the ordering process in detail later in the article. Also available is a checkout button to easily pay for your ordered products.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rating: 4.5/5&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Is It Fun to Use?
&lt;/h3&gt;

&lt;p&gt;The navigation bar transitions smoothly from one screen to the next with a rotating animation. This is delightful for users when navigating through the app.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ctr8WQfz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9f5jlc48dgsty4f3q7uv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ctr8WQfz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9f5jlc48dgsty4f3q7uv.gif" alt="Camp David App gif" width="192" height="427"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rating: 3/5&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Visual Design
&lt;/h3&gt;

&lt;p&gt;Visual design is one of the key elements of user experience and user interface design and the Camp David Butchery app utilizes it well enough through its simplicity.&lt;br&gt;
&lt;strong&gt;Consistency&lt;/strong&gt; - the colours and typography used are bold and consistent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Visual hierarchy&lt;/strong&gt; - visual hierarchy helps to focus user attention on important actions thus finding what you are looking for easily. This is perfectly executed in the app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Imagery and colour use&lt;/strong&gt; - each product has an accompanying image, name and description. Both influence how much your users like your product as they see what they are ordering. This is complemented by the use of simple colours, well-designed lists and buttons. The app makes great use of both&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rating: 4/5&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Accessibility
&lt;/h3&gt;

&lt;p&gt;Not much has been done to ensure accessibility besides it working with the in-built TalkBack feature. A lot can be improved i.e. adjustable font size and switch access for use with only one or two buttons.&lt;/p&gt;

&lt;p&gt;Rating: 2/5&lt;/p&gt;

&lt;h3&gt;
  
  
  App Usage
&lt;/h3&gt;

&lt;p&gt;I found it very easy to make an order and checkout, which are the primary uses of the app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rating: 5/5&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Similar Apps
&lt;/h3&gt;

&lt;p&gt;According to my research, there is no similar app available in Kenya. However, butchery order and delivery apps exist around the world and I found similar apps. The most popular are; &lt;a href="https://play.google.com/store/apps/details?id=com.licious&amp;amp;hl=en_IN"&gt;Licious&lt;/a&gt;, &lt;a href="https://play.google.com/store/apps/details?id=com.freshtohome&amp;amp;hl=en&amp;amp;gl=US"&gt;Fresh To Home&lt;/a&gt;, and &lt;a href="https://play.google.com/store/apps/details?id=com.fipola.android&amp;amp;hl=en_IN"&gt;Fipola&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Downside
&lt;/h2&gt;

&lt;p&gt;The major downside is that there isn't an iOS Version of the app just yet. This is a major drawback to potential customers who don't own Android devices, especially with more Kenyans acquiring iPhones. However, in the aforementioned video, Martin revealed that its development is underway and will be launched in the App Store soon.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ordering and Check-Out Process
&lt;/h2&gt;

&lt;p&gt;The ordering process is very straightforward. You can search for products or select from a long list on the home page. When you select a product, you can immediately "add to cart" or proceed to check out. If you are ordering multiple items, add each individual item to the cart and then when you are done, go to the cart and proceed to checkout.&lt;/p&gt;

&lt;p&gt;During checkout, you have two payment options; M-Pesa and a Debit card. However, note that payment is usually made on delivery. You also have the option to "order for someone else," and then enter their delivery address.&lt;/p&gt;

&lt;p&gt;Once you click check-out, you can now track your order. Receive the order and pay once delivered. Easy peasy 😊.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4zauWdiq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hv31ctv79691bymw8ze0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4zauWdiq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hv31ctv79691bymw8ze0.png" alt="Ordering Process" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Playstore link: &lt;a href="https://play.google.com/store/apps/details?id=com.campdavid.campdavid"&gt;https://play.google.com/store/apps/details?id=com.campdavid.campdavid&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;Although this "order-delivery" concept is already in use in apps such as Glovo, Uber Eats, Dial-A-Delivery etc, it is refreshingly new in the meat business. Hopefully, Camp David butchery will expand to other areas in Kenya, and other meat vendors will also adopt order delivery systems or apps for efficient service to their esteemed customers.&lt;/p&gt;

&lt;p&gt;Thanks for reading 🥳.&lt;/p&gt;

&lt;p&gt;You can support me by buying me a cup of coffee ☕ here; &lt;a href="https://ko-fi.com/arnoldwafula"&gt;https://ko-fi.com/arnoldwafula&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See you at the next one.&lt;/p&gt;

&lt;p&gt;Peace ☮️✌️&lt;/p&gt;

</description>
      <category>android</category>
      <category>appreview</category>
      <category>campdavid</category>
      <category>kenya</category>
    </item>
    <item>
      <title>The Complete Beginners Guide to Understanding APIs</title>
      <dc:creator>Arnold Wafula</dc:creator>
      <pubDate>Fri, 10 Mar 2023 11:16:36 +0000</pubDate>
      <link>https://dev.to/arnoldwafula/the-complete-beginners-guide-to-understanding-apis-2lbl</link>
      <guid>https://dev.to/arnoldwafula/the-complete-beginners-guide-to-understanding-apis-2lbl</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hUlZkz1_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztzsy87tmkd83n8rt91y.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hUlZkz1_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ztzsy87tmkd83n8rt91y.jpg" alt="Image by [storyset](https://www.freepik.com/free-vector/application-programming-interface-concept-illustration_25625375.htm) on Freepik" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Communication has evolved drastically since the &lt;a href="https://www.usg.edu/galileo/skills/unit07/internet07_02.phtml"&gt;invention of the internet&lt;/a&gt; on January 1, 1983. In the 21st century, blatantly referred to as the "social media era," information is conveyed efficiently and in real-time through the internet. On that premise, APIs play a role in information sharing and transmission.&lt;/p&gt;

&lt;p&gt;From sending messages to your friends or family on WhatsApp to reading tweets on Twitter, checking the weather forecast, or scrolling through your Google feed, you benefit from the power of APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Is An API
&lt;/h3&gt;

&lt;p&gt;Despite existing years &lt;a href="https://medium.com/transparent-data-eng/short-history-of-api-from-cabinet-to-big-boom-894c56b2c332"&gt;before&lt;/a&gt;, the first definition of an API was made in 1990 by Carl Malamud, who defined it as;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;A set of services available to a programmer for performing certain tasks.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Fast forward to February 7, 2000, at the IDG Demo conference. Cloud computing company Salesforce, Inc launched the first modern API, the Salesforce API.&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;API&lt;/strong&gt; is a medium through which two or more applications use requests and responses to communicate simultaneously. A client sends requests to a server; the API delegates them to the server. Eventually, the server sends back a response through the same API to the client.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What observations do we make?&lt;/strong&gt; The communication is indirect, with the API acting as the "middleman". During transmission, we only interact with the API layer that links the &lt;strong&gt;endpoints&lt;/strong&gt;; in this context, an endpoint is a &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_URL"&gt;URL&lt;/a&gt; that provides the location of a resource on the server.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The communication is indirect with the API acting as the "middleman".&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Check out the illustration below and the following simple examples to understand this concept.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eDTC_F4k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zo64gs2xqzm8k2iy41ha.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eDTC_F4k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zo64gs2xqzm8k2iy41ha.png" alt="**Illustration to show how an API works**" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 1:&lt;/strong&gt; Ordering food at a restaurant through a waiter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--s9_jxviX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9f0fnyttcfe0gyk9c66m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--s9_jxviX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9f0fnyttcfe0gyk9c66m.png" alt="**The process of ordering at a restaurant is similar to an API**" width="800" height="267"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example 2:&lt;/strong&gt; When signing up or logging in to DEV.to, you have social sign-on (SSO) options using apps such as Google, Facebook, Twitter, etc., to authenticate your details.&lt;/p&gt;

&lt;h3&gt;
  
  
  What Happens During the Single Sign-On?
&lt;/h3&gt;

&lt;p&gt;Common in many apps nowadays, single sign-on is an authentication method which enables users to log in to a session once, using one set of login credentials. It allows a user to access the app securely during that session without logging in again.&lt;/p&gt;

&lt;p&gt;During &lt;strong&gt;SSO&lt;/strong&gt;, the social media server (which contains user authentication details) communicates with the app using &lt;a href="https://www.okta.com/identity-101/whats-the-difference-between-oauth-openid-connect-and-saml/"&gt;OAuth&lt;/a&gt;, an authorization protocol to grant permissions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ez-l4yEn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4xalk64360y3c8t3c30w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ez-l4yEn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4xalk64360y3c8t3c30w.png" alt="**Zoom Sign-In page**" width="601" height="403"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you click the "Sign in with Google" button, a request is dispatched to the Google server through the Google API. The server or database verifies your credentials and then responds to the client through the API, which gives you access to the site or app.&lt;/p&gt;

&lt;h3&gt;
  
  
  Let Us Break Down The API Further
&lt;/h3&gt;

&lt;p&gt;The API stands for;&lt;br&gt;
A — &lt;strong&gt;Application.&lt;/strong&gt; P — &lt;strong&gt;Programming.&lt;/strong&gt; I — &lt;strong&gt;Interface.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Application&lt;/strong&gt; — software with a distinct function.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Programming&lt;/strong&gt; — writing instructions that tell the computer the tasks to perform.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interface&lt;/strong&gt; — the contract of service between two applications.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Applications are web browsers, mobile apps, IoT devices, and company servers or databases. Programming instructs the APIs on what tasks to perform, i.e. what endpoints to access and given inputs. The requests include &lt;strong&gt;GET&lt;/strong&gt;, &lt;strong&gt;POST&lt;/strong&gt;, &lt;strong&gt;PUT&lt;/strong&gt;, &lt;strong&gt;PATCH&lt;/strong&gt;, and &lt;strong&gt;DELETE&lt;/strong&gt;, which segues into the interface through which everything happens.&lt;/p&gt;

&lt;p&gt;Developers use APIs to hide complexity, organize code, and design reusable parts. Products and services hence communicate with others, providing an abstraction layer.&lt;/p&gt;

&lt;p&gt;When designing new products or managing existing ones, APIs give you flexibility, simplify design and administration, and provide opportunities for innovation. However, a developer must obtain an API key that uniquely identifies the app accessing its endpoints before use. We will discuss them further down in the article.&lt;/p&gt;


&lt;h3&gt;
  
  
  Types of APIs Based On Use Case
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Private APIs
&lt;/h4&gt;

&lt;p&gt;Also referred to as "internal APIs," they are strictly accessible within an organization. Due to their restrictiveness, they streamline data transfer between different systems and are highly secure, efficient, and traceable.&lt;/p&gt;

&lt;p&gt;Newly introduced systems can seamlessly integrate with these APIs.&lt;/p&gt;
&lt;h4&gt;
  
  
  Public APIs
&lt;/h4&gt;

&lt;p&gt;These are the most common types of APIs. They are also known as "open APIs" since they are accessible to anyone who wants to utilize them in an application.&lt;/p&gt;

&lt;p&gt;They exist in two models;&lt;br&gt;
&lt;strong&gt;1. Free&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;2. Subscription&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The latter is based on the number of requests per specific quota. For example, when appeals to the server exceed 10,000, the developer has to pay a subscription fee.&lt;/p&gt;

&lt;p&gt;Open sharing of data encourages integration with various apps, i.e., Uber and Google Maps API.&lt;/p&gt;
&lt;h4&gt;
  
  
  Partner API
&lt;/h4&gt;

&lt;p&gt;These are only accessible by authorized clients with whom you have a business relationship. Due to the stringent measures set, security is at a high level.&lt;/p&gt;
&lt;h4&gt;
  
  
  Composite API
&lt;/h4&gt;

&lt;p&gt;Composite APIs combine multiple requests into a single API call. For instance, to create order within a shopping cart, you need to access numerous endpoints;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a customer&lt;/li&gt;
&lt;li&gt;Create an order for the customer&lt;/li&gt;
&lt;li&gt;Add item 1 to the order&lt;/li&gt;
&lt;li&gt;Add another item&lt;/li&gt;
&lt;li&gt;Change the order status&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Due to fewer API calls, they have lower server load times, resulting in faster systems. Mainly used in microservices, one job may need data from many internal APIs to complete, thus encouraging simplicity.&lt;/p&gt;
&lt;h3&gt;
  
  
  Types of API Protocols
&lt;/h3&gt;
&lt;h4&gt;
  
  
  REST APIs
&lt;/h4&gt;

&lt;p&gt;REST stands for "Representational State" and is a web-based API that responds with data in JSON format. JSON is a lightweight text format for storing and transporting data.&lt;/p&gt;

&lt;p&gt;Example of JSON-formatted text:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
"first_name": "James",
"last_name": "Kamau",
"age": 25, 
"car": "Toyota Mark X" 
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;REST APIs are easier to use than the rest and hence preferred for beginners. JSON is reliable due to its scalability.&lt;/p&gt;

&lt;h4&gt;
  
  
  SOAP APIs
&lt;/h4&gt;

&lt;p&gt;They use a protocol (the Simple Object Access Protocol) and transmit data in XML format. Due to its stricter protocols, it is more powerful and secure than REST.&lt;/p&gt;

&lt;h4&gt;
  
  
  RPC-Based APIs
&lt;/h4&gt;

&lt;p&gt;These APIs invoke processes written with XML or JSON.&lt;/p&gt;

&lt;h4&gt;
  
  
  GRAPH QL
&lt;/h4&gt;

&lt;p&gt;According to GraphQL's official website;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This API receives requests from a client and &lt;strong&gt;strictly&lt;/strong&gt; sends back queried responses. This model appropriately utilizes resources, making it faster, more flexible, and developer-friendly.&lt;/p&gt;

&lt;p&gt;It is preferred by businesses and organizations when building APIs because it helps them develop apps faster.&lt;/p&gt;

&lt;h4&gt;
  
  
  WebSocket API
&lt;/h4&gt;

&lt;p&gt;WebSocket APIs allow a bidirectional interactive communication session between the browser and a server. This API enables you to send messages to a server and receive event-driven responses without querying the server for a reply.&lt;/p&gt;




&lt;h3&gt;
  
  
  Securing and Authorizing REST APIs
&lt;/h3&gt;

&lt;p&gt;REST APIs are the most commonly used since they run on the web and send and receive HTTP requests from remote servers.&lt;/p&gt;

&lt;p&gt;Applications use these APIs to display data fetched remotely. Before you can receive these requests, the API needs to authenticate your app to avoid security breaches that may culminate in server hacking. With that said, there are two main ways that you can secure and authorize REST APIs;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;API Keys&lt;/strong&gt; — API Keys verify the program making API calls to a server. They identify the application and ensure it has the access rights needed to make that call. They are not as secure, which is where the Authorization tokens come in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Authorization Tokens&lt;/strong&gt; — Authorize users to make API calls. The tokens authenticate the users to verify if they are the actual users and have the access rights to make the calls. They work like stamped tickets. The user retains access as long as the token remains valid. However, the token is invalidated once the user logs out or quits an app.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Importance of APIs
&lt;/h3&gt;

&lt;p&gt;Below are a few reasons why APIs are essential;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Access to critical information&lt;/strong&gt; — Clients can access information thanks to the power of APIs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Process Automation&lt;/strong&gt; — Process automation uses software and technologies to automate business processes and functions to accomplish organizational goals. APIs play a massive role in this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save time and resources&lt;/strong&gt; — Time is an essential resource. With APIs, developers can save time. Instead of building features from scratch, they can integrate third-party APIs into their apps to provide various services. It saves time and improves performance.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data integration&lt;/strong&gt; — As discussed above, APIs help integrate data to communicate between apps. Google Maps data is used in the Uber app to allow for a seamless experience between the driver and the customer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Acceleration of customer service&lt;/strong&gt; — Businesses use API services to acquire customer data from external servers. That would have taken a long time, i.e. searching for customer details using APIs takes less than 2 seconds. The same would take a long time without the help of APIs. That results in increased customer satisfaction and hence boosts customer-business relationships.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Examples of APIs
&lt;/h3&gt;

&lt;p&gt;Since the invention of APIs, many have developed various use cases. Some examples of APIs are;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Google Maps API&lt;/strong&gt; — Google Maps is a great example and a commonly used API in our daily lives. From requesting Uber rides to getting directions to your nearest coffee shop etc., you use the Google Maps API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Weather API&lt;/strong&gt; — The Weather API is utilized in most applications to show you the forecast for the week/month. With this, you can plan your day, know what to wear etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pay with M-PESA&lt;/strong&gt; — M-Pesa is a digital payment platform in Kenya. It allows customers to pay for goods and services online, i.e. when shopping for a TV. You can pay via M-Pesa, which is possible through the M-Pesa API.&lt;/li&gt;
&lt;/ol&gt;




&lt;h3&gt;
  
  
  API Documentation
&lt;/h3&gt;

&lt;p&gt;Before using an API, you need to read its documentation which details the services offered and how to utilize them, covering everything one needs to know for practical purposes.&lt;/p&gt;

&lt;p&gt;High-quality API documentation comes in handy to developers, improving development speed. They can either be auto-generated using tools or written manually. Excellent API documentation encompasses the following;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Simple explanations in easy-to-read English.&lt;/li&gt;
&lt;li&gt;Code samples to explain the functionality.&lt;/li&gt;
&lt;li&gt;Accurate and up-to-date documentation.&lt;/li&gt;
&lt;li&gt;Solutions to all problems the API can solve for the users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Endpoints, together with inputs to use to get the desired results are major points within API documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Example:&lt;/strong&gt; If you want to use the DEV.to API, you need to know how to acquire an API key and know the endpoints to use to, say, get medium users, posts, publications within a specific topic, and dates published, among other details. Details such as pricing are also vital since most APIs have a free tier based on the number of requests made.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;APIs play an essential role in our daily communication via the internet. Given the many scenarios demonstrated in the article, you will point out APIs used the next time you use apps on your phone.&lt;/p&gt;

&lt;p&gt;In the following article, I will build a simple Android weather app using the OpenWeatherMap API.&lt;/p&gt;

&lt;p&gt;See you at the next one.&lt;/p&gt;

&lt;p&gt;Peace ☮️✌️&lt;/p&gt;

</description>
      <category>api</category>
      <category>beginners</category>
      <category>sso</category>
      <category>authentication</category>
    </item>
    <item>
      <title>8 Valuable Technical Writing Lessons I Have Learnt So Far in 2023 (Beginners Perspective 🧐)</title>
      <dc:creator>Arnold Wafula</dc:creator>
      <pubDate>Tue, 21 Feb 2023 11:24:37 +0000</pubDate>
      <link>https://dev.to/arnoldwafula/8-valuable-technical-writing-lessons-i-have-learnt-so-far-in-2023-beginners-perspective--3e0</link>
      <guid>https://dev.to/arnoldwafula/8-valuable-technical-writing-lessons-i-have-learnt-so-far-in-2023-beginners-perspective--3e0</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;Have you ever experienced problems while operating an electronic device and resorted to reading its user guide or manual? If the answer is yes, then you have benefited from technical writing. Technical writing breaks down technical jargon into easy-to-understand steps that a non-technical person can understand.&lt;/p&gt;

&lt;p&gt;This past week, I attended a Twitter space hosted by &lt;a href="https://twitter.com/Joklinztech"&gt;Wisdom Nwokocha&lt;/a&gt;, a professional technical writer, and took home with me a few lessons, most of which comprise the content of this article.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Technical Writing
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Technical writing is a tool to communicate complex topics by dividing them into clear steps for the user. It guides product end-users to carry out specific tasks.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;With that in mind, we will delve into the eight lessons I have learned.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson 1: Do You Need a Programming Background
&lt;/h3&gt;

&lt;p&gt;Contrary to mass perception, you may or may not require a programming background. That is because technical writing transcends the technology space, precisely, programming.&lt;/p&gt;

&lt;p&gt;Technical writing is present within multiple professional fields, such as legal, engineering, banking, finance, aviation, electronics, healthcare, and education. For instance, a medical practitioner writes medical manuals and other healthcare-related documents, and a lawyer writes legal analyses and legal rights to express legal duties. The same applies to engineers, accountants, and more.&lt;/p&gt;

&lt;p&gt;First, develop a deep understanding of programming concepts if you write about programming.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson 2: Is Technical Writing Easier Than Programming
&lt;/h3&gt;

&lt;p&gt;Generally, writing involves breaking down concepts for the reader. It would be best to understand the respective topics to do that effectively. In the context of this article, our primary focus is on programming.&lt;/p&gt;

&lt;p&gt;So, is technical writing easier than programming? &lt;strong&gt;NO&lt;/strong&gt;, writing requires a lot of research, skill, and problem-solving - similar to being a programmer. Technical writing is a different ball game and is just as 'difficult' as being a developer, Software Engineer, programmer, et al. Note: Difficult is relative 😉.&lt;/p&gt;

&lt;p&gt;Despite all that, good research is underrated; therefore, to be a successful technical writer, you must use research to improve.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson 3: Applying For Technical Writing Jobs
&lt;/h3&gt;

&lt;p&gt;As discussed previously, before applying for a technical writing role, you must be familiar with the subject matter. As a beginner, how do you go about applying for these roles?&lt;/p&gt;

&lt;p&gt;I will split this into two main points;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Beginners Process&lt;/strong&gt; — As a beginner, before applying for technical writing roles, it is advisable to document your journey. Documenting your journey will polish your writing skills and help you better understand what you are learning. While building side projects and learning new concepts, write about them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resume&lt;/strong&gt; — Your resume is your selling point to potential clients. Many ask whether you need to tweak it while applying for a technical writing role. The short answer is &lt;strong&gt;NO&lt;/strong&gt;. Suppose you are a software engineer, and your resume highlights your skills; hence even as a technical writing beginner, your qualifications will suffice.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Lesson 4: Types of Technical Writing
&lt;/h3&gt;

&lt;p&gt;Some types of technical writing are;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Assembly Manuals&lt;/strong&gt; — assembly manuals provide instructions on how to operate the equipment. Writing assembly and repair manuals requires technical skills to understand a machine or equipment's assembly and re-assembly process.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Technical Documents, Reviews, and Reports&lt;/strong&gt; — the aforementioned are a mix of academic reporting and technical research-based guides. Reports explain the process and outcome of any research. Technical reports come in several shapes: preliminary research reports, case studies, business plans, feasibility reports, proposals, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User Manuals and Assistance Guides&lt;/strong&gt; — If you need answers to specific usage-related questions for consumer products, user manuals and assistance guides are made for you. User help guides break down a product into individual parts and clarify the functionality of each component. It also answers questions about each part's solutions and provides queries you may have throughout a product's lifespan.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Medical and Scientific Papers&lt;/strong&gt; — Researchers use these academic papers to interpret their findings, organize and condense them into engaging content, and publish them in various journals, newsletters, and online platforms.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Content Marketing&lt;/strong&gt; — organizations must build a "buzz" for their products to target customers. With content marketing, they target end-users of products to inform them of new products, which in turn, brings traffic to their site. The end goal is for some readers to become potential customers eventually.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lesson 5: Information Architecture
&lt;/h3&gt;

&lt;p&gt;Information Architecture focuses on organizing, structuring, and labeling content effectively. Information structure is critical in technical writing as it helps end-users comprehend and use the relayed information efficiently.&lt;/p&gt;

&lt;p&gt;When you apply it correctly, you will create high-quality content. Group the content into categories based on user's needs and how users understand the information. My three main takeaways from Information Architecture are;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Structure&lt;/strong&gt; — formatting and labeling encompass format. Knowing what type of lists to use, where to use tables, titles, subtitles, etc., is essential. A well-formatted technical article gets the point across to the reader fast and makes the content easy to digest.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Style Guide&lt;/strong&gt; — a style guide consists of principles and standards for writing and designing content. It defines the style that one should use throughout the technical document. The purpose of a style guide is to write clear documentation and maintain consistency in tone and style. Some popular style guides are &lt;a href="https://developers.google.com/style"&gt;Google Style Guide&lt;/a&gt;, &lt;a href="https://download-pdfs.com/v6/preview/?ch=1&amp;amp;js=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJhdWQiOiJKb2tlbiIsImV4cCI6MTY3Njk4NDc3MSwiaWF0IjoxNjc2OTc3NTcxLCJpc3MiOiJKb2tlbiIsImpzIjoxLCJqdGkiOiIydDJ0NGRyYXY2NTA3NTJ2ZXM0Y3RqdWsiLCJuYmYiOjE2NzY5Nzc1NzEsInRzIjoxNjc2OTc3NTcxNzI1MDg3fQ.ARjZMpn0hATSdNvAonyemsFOiE3tLnEQsXtl0ekEnFk&amp;amp;keyword=Sap_Style_Guide.pdf&amp;amp;offer_id=26&amp;amp;pid=6&amp;amp;ref_id=dac50b85dd8ea10bfa21f9f69VXtl7mg_fffaf283_c28f910b&amp;amp;sid=c017713e-b1d7-11ed-b256-b447298622ad&amp;amp;sub1=90131"&gt;SAP Style Guide&lt;/a&gt;, &lt;a href="https://www.amazon.com/Handbook-Technical-Writing-Tenth-Gerald/dp/1250004411"&gt;The Handbook of Technical Writing&lt;/a&gt;, &lt;a href="https://books.apple.com/us/book/apple-style-guide/id1161855204"&gt;Apple Style Guide&lt;/a&gt;, &lt;a href="https://global.oup.com/academic/product/new-oxford-style-manual-9780198767251?cc=nl&amp;amp;lang=en&amp;amp;"&gt;Oxford Manual of Style&lt;/a&gt;, and more.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Markdown&lt;/strong&gt; — According to &lt;a href="https://www.markdownguide.org/getting-started/"&gt;Markdown Guide&lt;/a&gt;, Markdown is a lightweight markup language that you can use to add formatting elements to plain text documents. Created by &lt;a href="https://daringfireball.net/projects/markdown/"&gt;John Gruber&lt;/a&gt; in 2004, Markdown is now one of the world's most popular markup languages. Blogging sites such as &lt;a href="https://medium.com/"&gt;Medium&lt;/a&gt;, &lt;a href="https://dev.to/"&gt;dev.to&lt;/a&gt;, and &lt;a href="https://hashnode.com/"&gt;hashnode&lt;/a&gt; use markdown to add formatting; hence to properly format articles, you need to understand Markdown.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lesson 6: Plagiarism
&lt;/h3&gt;

&lt;p&gt;In technical writing, research is necessary to piece information acquired from various sources. While using data from external sources, paraphrase the content or, better yet, quote the reference.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson 7: Challenges of Technical Writing
&lt;/h3&gt;

&lt;p&gt;Technical writing comes with its fair share of challenges. Here are a few;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Disorganized structure&lt;/strong&gt; — as discussed, the design of your content is essential. Poorly structured technical documents will confuse the readers. Information should be easy to find, and sections should flow with each other. During the planning stage of documentation, don't skip, so you have a system to follow when writing the content.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Insufficient information about the users&lt;/strong&gt; — Successful documentation relies on a deep knowledge of users, without which your technical writing is useless. Before you begin writing technical documents, you need a precise idea of who your users are so you can write compelling content. To understand the customer, conduct user interviews and collaborate with the marketing team to share their knowledge about customers.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;NB: Technical writers are user advocates in the organization and provide them with a voice within the product.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Getting people to review your work&lt;/strong&gt; — Unreviewed documentation will be flawed to the detriment of the end user. Defective documentation taints reflection on your writing and the organization for which you are writing. While asking for reviews, be concise about the feedback you want. Also, ask for reviews enough time in advance to get the most honest reviews.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Present Your Documentation In User-Friendly Format&lt;/strong&gt; — Say you guide users to customize a software product. If the readers have not installed the software yet, how will they customize it? So &lt;a href="https://www.freecodecamp.org/news/what-is-a-hyperlink-definition-for-beginners/"&gt;hyperlink &lt;/a&gt;the software installation link where necessary. While writing technical documents, hyperlink critical phrases that you must elaborate to your readers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consistency&lt;/strong&gt; — Technical writing should be coherent for users and convey clarity. Documents written over time, edited by various authors, or updated in a haphazard way are inconsistent. Inconsistency exists in many forms, i.e., style, layout, tone, etc.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lesson 8: Payment Methods
&lt;/h3&gt;

&lt;p&gt;Payment platforms used by most big companies include PayPal, Payoneer, Stripe, and more. Well-established companies use their payment policies, while startups are more flexible and can accommodate writers' options i.e, MPesa, Flutterwave, Simplepay, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conclusion
&lt;/h3&gt;

&lt;p&gt;At the end of the day, as a beginner, it's all about the quality of the content and not quantity. Also, as a technical writer, you should learn how to create docs such as &lt;a href="https://stoplight.io/api-documentation-guide#what-is-api-documentation"&gt;API Docs&lt;/a&gt;. Note: API Docs pay more than blog articles 😉.&lt;/p&gt;

&lt;p&gt;See you at the next one.&lt;/p&gt;

&lt;p&gt;Peace ☮️✌️&lt;/p&gt;

</description>
      <category>lessonslearned</category>
      <category>programming</category>
      <category>documentation</category>
      <category>technicalwriting</category>
    </item>
    <item>
      <title>Getting Started with Bottom Sheets in Android Using Kotlin Part 2 [Beginner Friendly]</title>
      <dc:creator>Arnold Wafula</dc:creator>
      <pubDate>Fri, 10 Feb 2023 20:11:24 +0000</pubDate>
      <link>https://dev.to/arnoldwafula/getting-started-with-bottom-sheets-in-android-using-kotlin-part-2-beginner-friendly-1in4</link>
      <guid>https://dev.to/arnoldwafula/getting-started-with-bottom-sheets-in-android-using-kotlin-part-2-beginner-friendly-1in4</guid>
      <description>&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;As discussed in &lt;a href="https://dev.to/arnoldwafula/getting-started-with-bottom-sheets-in-android-using-kotlin-part-1-beginner-friendly-lel"&gt;part 1 of the article&lt;/a&gt;, a bottom sheet is an elevated surface anchored to the bottom of the screen. We also saw how it allows room for more user interface elements such as images and text.&lt;/p&gt;

&lt;p&gt;In this article, we will create a modal bottom sheet that occupies the entire height of the screen. Remember the types of bottom sheets? Modal bottom sheet and Standard bottom sheet. In case you want to learn how to create a fullscreen standard bottom sheet, refer to this &lt;a href="https://iamnaran.medium.com/bottom-sheet-above-bottom-navigation-b10a0c92edd" rel="noopener noreferrer"&gt;article&lt;/a&gt; by &lt;a href="https://iamnaran.medium.com/" rel="noopener noreferrer"&gt;Narayan Panthi&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What will you learn?
&lt;/h2&gt;

&lt;p&gt;By the end of the article, you will learn the following;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a full-screen bottom sheet&lt;/li&gt;
&lt;li&gt;What is a bottom sheet behavior&lt;/li&gt;
&lt;li&gt;Different bottom sheets states&lt;/li&gt;
&lt;li&gt;Advantages of using bottom sheets&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Building the app
&lt;/h2&gt;

&lt;p&gt;Similar to the modal bottom sheet we created in part 1, the fullscreen bottom sheet will extend the &lt;em&gt;&lt;a href="https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetDialogFragment" rel="noopener noreferrer"&gt;BottomSheetDialogFragment&lt;/a&gt;&lt;/em&gt; class. If you wish to go straight into the source code, click the GitHub link below;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/arnold-wafula" rel="noopener noreferrer"&gt;
        arnold-wafula
      &lt;/a&gt; / &lt;a href="https://github.com/arnold-wafula/ModalBottomSheet-Medium" rel="noopener noreferrer"&gt;
        ModalBottomSheet-Medium
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A small project that demonstrates the implementation of the modal bottom sheet in android. Written for my article on medium (Getting Started with Bottom Sheets in Android Using Kotlin [Beginner Friendly])
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ModalBottomSheet-Medium&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;A simple android project that demonstrates the implementation of the modal bottom sheet in android. Written for my article on medium.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/8749415/216657281-ea1f2907-c55d-43b4-a99a-fabee6edce7e.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F8749415%2F216657281-ea1f2907-c55d-43b4-a99a-fabee6edce7e.png" alt="main_screen"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/8749415/216657305-e1f8c255-a16a-4bb5-9269-532c3ed94724.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F8749415%2F216657305-e1f8c255-a16a-4bb5-9269-532c3ed94724.png" alt="bottom_sheet_dialog"&gt;&lt;/a&gt;&lt;/p&gt;

  
    
    

    &lt;span class="m-1"&gt;device-2023-02-03-193245.mp4&lt;/span&gt;
    
  

  

  


&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/arnold-wafula/ModalBottomSheet-Medium" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;Since we had already set up the project, we will only make changes to two files and add a few resources such as text strings, images, and a drawable. The &lt;em&gt;item_bottomsheet_fullscreen.xml&lt;/em&gt; file includes a header image, title, subtitle, and paragraph text inside a &lt;em&gt;&lt;a href="https://developer.android.com/reference/androidx/core/widget/NestedScrollView" rel="noopener noreferrer"&gt;NestedScrollView&lt;/a&gt;&lt;/em&gt;. Find the source code below;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;





&lt;p&gt;I created a toolbar that contains a close button which can be used as an alternative to swiping the bottom sheet down to dismiss it. I also added a &lt;a href="https://github.com/arnold-wafula/ModalBottomSheet-Medium/blob/master/app/src/main/res/drawable/rabbit1.jpg" rel="noopener noreferrer"&gt;drawable&lt;/a&gt; for the header image.&lt;/p&gt;

&lt;h2&gt;
  
  
  Difference between a modal bottom sheet and a fullscreen modal bottom sheet
&lt;/h2&gt;

&lt;p&gt;So you might ask, what is the difference in implementation between the two? One thing we realize is the height. The fullscreen modal bottom sheet covers the entire screen height. How is this made possible? The &lt;em&gt;peekHeight&lt;/em&gt; attribute. But first, we have to set the screen height to MATCH_PARENT.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

// Height of the view
bottomSheet.layoutParams.height = ViewGroup.LayoutParams.MATCH_PARENT


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

&lt;/div&gt;
&lt;p&gt;Subsequently, define the bottom sheet behavior and apply the peekHeight attribute to it. According to official Android developer &lt;a href="https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetBehavior" rel="noopener noreferrer"&gt;documentation&lt;/a&gt;,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Bottom sheet behavior is an interaction behavior plugin for a child view of &lt;a href="https://developer.android.com/reference/androidx/coordinatorlayout/widget/CoordinatorLayout" rel="noopener noreferrer"&gt;CoordinatorLayout&lt;/a&gt; to make it work as a bottom sheet.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

val behavior = BottomSheetBehavior.from(bottomSheet)
behavior.peekHeight = resources.displayMetrics.heightPixels // Pop-up height


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

&lt;/div&gt;
&lt;h2&gt;
  
  
  Bottom sheet behavior states
&lt;/h2&gt;

&lt;p&gt;There are six states in the bottom sheet behavior;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;STATE_EXPANDED&lt;/strong&gt; — bottom sheet is visible and its maximum height and it is neither dragging nor settling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STATE_COLLAPSED&lt;/strong&gt; — visible but only its peek height is shown. Usually the ‘resting position’ of a Bottom Sheet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STATE_DRAGGING&lt;/strong&gt; — user is actively dragging the bottom sheet up or down.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STATE_HALF_EXPANDED&lt;/strong&gt; — the bottom sheet is half-expanded (used when fitToContents is false).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STATE_HIDDEN&lt;/strong&gt; — the bottom sheet is hidden and no longer visible.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;STATE_SETTLING&lt;/strong&gt; — settling to a specific height after a drag/swipe gesture.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To better understand the states, check out this &lt;a href="https://github.com/material-components/material-components-android/issues/2335" rel="noopener noreferrer"&gt;issue&lt;/a&gt; by &lt;a href="https://github.com/SilverEnd" rel="noopener noreferrer"&gt;SilverEnd&lt;/a&gt; on GitHub. In our project, we only use the expanded state.&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;

behavior.state = BottomSheetBehavior.STATE_EXPANDED // Expanded state


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

&lt;/div&gt;
&lt;p&gt;With that understanding, you can now copy &lt;em&gt;FullscreenBottomSheetDialog.kt&lt;/em&gt; source code below and paste it into your project;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;



&lt;h2&gt;
  
  
  Output
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22azehqmi0b7w4h5mypd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F22azehqmi0b7w4h5mypd.png" alt="Fullscreen Modal Bottom Sheet"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.youtube.com/shorts/e9OfU9sJU9o" rel="noopener noreferrer"&gt;Fullscreen modal bottom sheet Android YouTube&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of bottom sheets
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Swipeable — bottom sheets allow for an interactive user experience.&lt;/li&gt;
&lt;li&gt;Easily Accessible — since they are anchored at the bottom of the screen, interacting with them is easy.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;So that is a simple way to build a fullscreen modal bottom sheet in android. I hope you learned something new 😊. See you on the next one.&lt;/p&gt;

&lt;p&gt;Peace ☮️✌️&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>android</category>
      <category>bottomsheet</category>
      <category>kotlin</category>
    </item>
    <item>
      <title>Getting Started with Bottom Sheets in Android Using Kotlin Part 1 [Beginner Friendly]</title>
      <dc:creator>Arnold Wafula</dc:creator>
      <pubDate>Sat, 04 Feb 2023 17:58:02 +0000</pubDate>
      <link>https://dev.to/arnoldwafula/getting-started-with-bottom-sheets-in-android-using-kotlin-part-1-beginner-friendly-lel</link>
      <guid>https://dev.to/arnoldwafula/getting-started-with-bottom-sheets-in-android-using-kotlin-part-1-beginner-friendly-lel</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1e8nu6veqjz8zyxs2mhy.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1e8nu6veqjz8zyxs2mhy.jpeg" alt="Photo by [Jonathan Kemper](https://unsplash.com/de/@jupp?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText) on [Unsplash](https://unsplash.com/photos/t6Wmvbw_MdI?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText)" width="800" height="533"&gt;&lt;/a&gt;&lt;br&gt;
Hi guys 👋, in this article, I'm going to delve into what a bottom sheet is, its common uses, and how it can be implemented in android development using Kotlin. I will cover its implementation in the traditional view system (XML-based).&lt;/p&gt;

&lt;p&gt;Without further ado, we can ask ourselves the question. What is a bottom sheet?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;According to Google's material.io documentation, a bottom sheet is a surface containing supplementary content that are anchored to the bottom of the screen and can be dismissed in order to interact with the underlying content.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Its use has been preferred over dialogs in recent years and as a smartphone user either on Android or iOS, you must have interacted with it. Personally an avid YouTube user, it is heavily and perfectly integrated within its U.I.&lt;/p&gt;

&lt;p&gt;It is also worth noting that they are flexible and can hold a diverse range of information and layouts, including menu items, actions, and supplemental content.&lt;/p&gt;



&lt;p&gt;&lt;strong&gt;There are two types of bottom sheets;&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Standard bottom sheet&lt;/li&gt;
&lt;li&gt;Modal bottom sheet&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Standard Bottom Sheet
&lt;/h2&gt;

&lt;p&gt;Also known as persistent bottom sheets, they co-exist with the screens main U.I and allow for simultaneous interaction with both the U.I and itself. It exists in the expanded, collapsed, and hidden states.&lt;/p&gt;

&lt;p&gt;A good example of an app that utilizes the standard bottom sheet is Google Maps.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8y04ovn3a6h89th8992d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8y04ovn3a6h89th8992d.png" alt="Standard Bottom sheet. Image courtesy of: https://m3.material.io/components/bottom-sheets" width="800" height="473"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Modal Bottom Sheet
&lt;/h2&gt;

&lt;p&gt;Strictly use on mobile devices, modal bottom sheets block interaction with the rest of the screen and serve as a perfect alternative to dialogs, as they provide more room and allow for the use of views such as Images and Text.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6fqca0z78mp0cwew7yqa.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6fqca0z78mp0cwew7yqa.png" alt="Modal bottom sheet. Image courtesy of: https://m3.material.io/components/bottom-sheets" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In android development, they extend the &lt;a href="https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetDialogFragment" rel="noopener noreferrer"&gt;BottomSheetDialogFragment&lt;/a&gt; class to provide functionalities such as behavior, and screen height among others. In this article, I am going to focus on the modal bottom sheets since they have a more popular use case compared to persistent bottom sheets.&lt;/p&gt;

&lt;p&gt;If you wish to go straight into the source code, click the GitHub link below;&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/arnold-wafula" rel="noopener noreferrer"&gt;
        arnold-wafula
      &lt;/a&gt; / &lt;a href="https://github.com/arnold-wafula/ModalBottomSheet-Medium" rel="noopener noreferrer"&gt;
        ModalBottomSheet-Medium
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A small project that demonstrates the implementation of the modal bottom sheet in android. Written for my article on medium (Getting Started with Bottom Sheets in Android Using Kotlin [Beginner Friendly])
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;ModalBottomSheet-Medium&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;A simple android project that demonstrates the implementation of the modal bottom sheet in android. Written for my article on medium.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/8749415/216657281-ea1f2907-c55d-43b4-a99a-fabee6edce7e.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F8749415%2F216657281-ea1f2907-c55d-43b4-a99a-fabee6edce7e.png" alt="main_screen"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/8749415/216657305-e1f8c255-a16a-4bb5-9269-532c3ed94724.png"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F8749415%2F216657305-e1f8c255-a16a-4bb5-9269-532c3ed94724.png" alt="bottom_sheet_dialog"&gt;&lt;/a&gt;&lt;/p&gt;

  
    
    

    &lt;span class="m-1"&gt;device-2023-02-03-193245.mp4&lt;/span&gt;
    
  

  

  


&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/arnold-wafula/ModalBottomSheet-Medium" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;





&lt;p&gt;On &lt;a href="https://developer.android.com/studio" rel="noopener noreferrer"&gt;Android Studio&lt;/a&gt;, Google's official IDE for Android development, navigate to File-&amp;gt;New-&amp;gt;New Project. Under the templates tab, choose Phone and Tablet and select Empty Activity. Let's start by creating the activity_main layout;&lt;/p&gt;


&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Set up the MainActivity file by copy-pasting the code below;&lt;/p&gt;

&lt;p&gt;MainActivity.kt&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;We will then define the layout for a single item containing an image and text that will appear in the modal bottom sheet. Create a new layout XML file item_bottomsheet and copy-paste the source code below;&lt;/p&gt;

&lt;p&gt;item_bottomsheet.xml&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Finally, the ModalBottomSheetDialog class displays the items defined in the item_bottomsheet.xml.&lt;/p&gt;

&lt;p&gt;ModalBottomSheetDialog.kt&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag_gist-liquid-tag"&gt;
  
&lt;/div&gt;


&lt;p&gt;Here is the final result;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2rhhazni301sgq3uckw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz2rhhazni301sgq3uckw.png" alt="Main screen with buttons to launch bottom sheets" width="720" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F77h1fjrdw72wi408j9uv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F77h1fjrdw72wi408j9uv.png" alt="bottom sheet displayed" width="720" height="1600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So that is a simple way to build the modal bottom sheet in android. See you in part 2 of the article where I will dive into the fullscreen implementation of the same.&lt;/p&gt;

&lt;p&gt;Peace ☮️✌️&lt;/p&gt;

</description>
      <category>devto</category>
      <category>community</category>
      <category>announcement</category>
    </item>
  </channel>
</rss>
