<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Ahmed Omar on Medium]]></title>
        <description><![CDATA[Stories by Ahmed Omar on Medium]]></description>
        <link>https://medium.com/@ahmedomarpro?source=rss-5ff9f4b9a718------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*dL9BeoXgOlfRiuMFhRwRBQ.jpeg</url>
            <title>Stories by Ahmed Omar on Medium</title>
            <link>https://medium.com/@ahmedomarpro?source=rss-5ff9f4b9a718------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Fri, 22 May 2026 00:40:40 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@ahmedomarpro/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Clean Architecture Simpler in code]]></title>
            <link>https://medium.com/@ahmedomarpro/clean-architecture-simpler-in-code-73e40a966aa8?source=rss-5ff9f4b9a718------2</link>
            <guid isPermaLink="false">https://medium.com/p/73e40a966aa8</guid>
            <category><![CDATA[android]]></category>
            <category><![CDATA[android-development]]></category>
            <category><![CDATA[clean-architecture]]></category>
            <category><![CDATA[solid]]></category>
            <category><![CDATA[clean-code]]></category>
            <dc:creator><![CDATA[Ahmed Omar]]></dc:creator>
            <pubDate>Fri, 13 Mar 2020 02:57:23 GMT</pubDate>
            <atom:updated>2020-03-13T02:57:23.948Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/772/1*pGvgODWOo56cvqy1BSHttw.jpeg" /></figure><p>Clean Architecture defines the way in which the various layers of an app i.e. presentation, use case, domain, data, and framework layer interact with each other. The Clean Architecture produce a system that is testable, UI-independent, and independent of external agencies and libraries. The following image is a popular clean architecture image:</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/772/1*B7LkQDyDqLN3rRSrNYkETA.jpeg" /></figure><p>These circles represent the various levels in our application. As we move inward in the circle, each circle is more abstract and higher-level. The inner circle is not dependent on any outer circle and the most inner circle denotes the business logic of the application.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*u2pFoe_PTeW9iDgbQdUXSw.png" /></figure><figure><img alt="" src="https://cdn-images-1.medium.com/max/800/1*E1LHQ1L7-a7_Itb5Lj46Dw.png" /></figure><h4>. Reference</h4><h3><a href="https://github.com/android10/Android-CleanArchitecture">Android-CleanArchitecture</a></h3><h3><a href="https://github.com/Ahmedomarpro/SOLID-Design-Principles">SOLID-Design-Principles</a></h3><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=73e40a966aa8" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Kotlin Native for Android and  iOS Applications]]></title>
            <link>https://medium.com/@ahmedomarpro/kotlin-native-for-android-and-ios-applications-b05b7fb9ed4f?source=rss-5ff9f4b9a718------2</link>
            <guid isPermaLink="false">https://medium.com/p/b05b7fb9ed4f</guid>
            <category><![CDATA[kotlin]]></category>
            <category><![CDATA[android]]></category>
            <category><![CDATA[kotlin-native]]></category>
            <category><![CDATA[ios]]></category>
            <dc:creator><![CDATA[Ahmed Omar]]></dc:creator>
            <pubDate>Wed, 11 Mar 2020 18:33:20 GMT</pubDate>
            <atom:updated>2020-03-11T18:45:18.537Z</atom:updated>
            <content:encoded><![CDATA[<h3>Kotlin Native for Android and iOS Applications</h3><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*4GO2bicjfj5fMQvdERXCyQ.png" /><figcaption>Android and iOS</figcaption></figure><p>The most challenging is that it was long since I wrote an <em>iOS </em>application, and I wanted to add something different by using the latest UI native languages enhancements in the 2 frameworks (<strong>Jetpack Compose</strong> &amp; <strong>SwiftUI</strong>), as these are the latest updates and not covered in any official codelabs and documentation, yet.</p><p>To make the audience interested with the top, specialty that most of them are expert in <em>iOS </em><strong>Swift</strong>, I have to make them feel the pain from real life experience managing Mobile <em>Android </em>and <em>iOS </em>teams to create 2 native apps for the same project or client.</p><p>But as I mentioned they don’t utilize <strong>Jetpack Compose</strong> and <strong>SwiftUI.</strong></p><p>I am going to make some changes on it and updates to look like that, <a href="https://github.com/joreilly/PeopleInSpace">https://github.com/joreilly/PeopleInSpace.</a></p><ul><li><a href="https://www.raywenderlich.com/1022411-kotlin-multiplatform-project-for-android-and-ios-getting-started">https://www.raywenderlich.com/1022411-kotlin-multiplatform-project-for-android-and-ios-getting-started</a></li><li><strong>Setting Up the Local Environment</strong></li><li>We will be using <a href="https://developer.android.com/studio/">Android Studio</a> for the Android part of the tutorial. It is also possible to use <a href="https://jetbrains.com/idea">IntelliJ IDEA</a> Community or Ultimate edition.</li><li>The Kotlin plugin 1.3.50 or higher should be installed in the IDE. This can be verified via <em>Language &amp; Frameworks | Kotlin Updates</em> section in the <em>Settings</em> (or <em>Preferences</em>) window.</li><li>A macOS host operating system is required to compile for iOS and macOS devices. We need to have <a href="https://developer.apple.com/xcode/">Xcode</a> and the tools installed and configured. Check out the <a href="https://developer.apple.com/xcode/">Apple Developer Site</a> for more details.</li></ul><p><em>Note: We’ll be using IntelliJ IDEA 2019.2, Android Studio 3.4, Kotlin 1.3.50, Xcode 10.3, macOS 10.14, Gradle 5.5.1</em></p><p><strong>. Creating an Android Project</strong></p><p>We need Android Studio for the tutorial. We can download and install it from the <a href="https://developer.android.com/studio/">https://developer.android.com/studio/</a>. Let’s open the IDE and check that we see the newest Kotlin version, namely 1.3.50 or newer under the Kotlin section <em>Languages &amp; Frameworks</em> | <em>Kotlin</em> in the <em>Settings</em> (or <em>Preferences</em>) dialog of Android Studio.</p><p>Our first step is to create a new Android project via the <em>Start a new Android project</em> item on the Android Studio home screen. We then proceed to select the <em>Empty Activity</em> option and click <em>Next</em>. It’s important to pick the <em>Kotlin</em> language in the wizard. Let’s use the com.jetbrains.handson.mpp.mobile package for the tutorial. Now we can press the <em>Finish</em> button and create our new Android project.</p><p>At this point, we should be able to compile and run the Android application. Let’s check that it works!</p><p>The step-002 branch of the <a href="https://github.com/kotlin-hands-on/mpp-ios-android/tree/step-002">github.com/kotlin-hands-on/mpp-ios-android</a> repository contains a possible solution for the tasks that we have done above. We can also download the <a href="https://github.com/kotlin-hands-on/mpp-ios-android/archive/step-002.zip">archive</a> from GitHub directly or check out the repository and select the branch.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*98FFHWTtWie1zvMuGKLbuw.png" /><figcaption>ANDROID</figcaption></figure><h4><strong>. Shared Kotlin Code for iOS</strong></h4><p>et’s run the packForXcode Gradle task of the SharedCode project. We can do it either from the <em>Gradle</em> tab in AndroidStudio or by running the ./gradlew :SharedCode:packForXcode command from console. This task is designed to help to simplify the setup of our iOS Framework in the Xcode project model.</p><p>We need several binaries from the framework to use it with Xcode:</p><ul><li>iOS arm64 debug --- the binary to run the iOS device in debug mode</li><li>iOS arm64 release --- the binary to include into a release version of an app</li><li>iOS x64 debug --- the binary for iOS simulator, which uses the desktop mac CPU</li></ul><p>The easiest way to configure Xcode to use a custom-built framework is to place the framework under the same folder for all configurations and targets. Then add a custom step to the Xcode project build to update or build the framework before the actual Xcode build is started. Xcode sets several environment variables for custom steps; we can use these variables in the Gradle script to select the requested target platform and the configuration. For more details, please refer to the packForXcode task sources in the SharedCode/build.gradle.kts file.</p><p>Let’s now switch back to Android Studio and execute the build target of the SharedCode project from the <em>Gradle</em> tool window. The task looks for environment variables set by the Xcode build and copies the right variant of the framework to the SharedCode/build/xcode-frameworks folder. We can then include the framework from that folder into the build</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*rRwMRZOGdQUKr1uXHVELxg.png" /><figcaption>IOS</figcaption></figure><p><strong><em>. Reference</em></strong></p><p><strong>1- </strong><a href="https://play.kotlinlang.org/hands-on/Targeting%20iOS%20and%20Android%20with%20Kotlin%20Multiplatform/01_Introduction"><strong>Play.kotlinlang.org</strong></a></p><p><strong>2- </strong><a href="https://github.com/kotlin-hands-on/hands-on"><strong>hands</strong></a><strong>-on</strong></p><p><strong>3</strong><a href="https://www.raywenderlich.com/1022411-kotlin-multiplatform-project-for-android-and-ios-getting-started"><strong>- Kotlin Multiplatform Project for Android and iOS: Getting Started</strong></a></p><p><strong>4- </strong><a href="https://www.linkedin.com/in/shadyselim/"><strong>Shady Yehia Selim, MSc,MBA</strong></a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b05b7fb9ed4f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Welcome Android RI_view]]></title>
            <link>https://medium.com/@ahmedomarpro/welcome-android-ri-view-dc264558cf34?source=rss-5ff9f4b9a718------2</link>
            <guid isPermaLink="false">https://medium.com/p/dc264558cf34</guid>
            <category><![CDATA[android]]></category>
            <category><![CDATA[firebase]]></category>
            <dc:creator><![CDATA[Ahmed Omar]]></dc:creator>
            <pubDate>Thu, 27 Apr 2017 18:23:55 GMT</pubDate>
            <atom:updated>2017-04-27T18:23:55.682Z</atom:updated>
            <content:encoded><![CDATA[<p>Welcome Android RI_view</p><p>Firebase evolved from Envolve, a prior startup founded by Tamplin and Lee in 2011. Envolve provided developers an API that let them integrate online chat into their websites. After releasing the chat service, Tamplin and Lee found that the service was being used to pass application data that wasn’t chat messages. Developers were using Envolve to sync application data such as game state in realtime across their users. Tamplin and Lee decided to separate the chat system and the real-time architecture that powered it, founding Firebase as a separate company in April 2012. Firebase raised $1.4 million in seed funding in May 2012 from Flybridge Capital Partners, Greylock Partners, NEA and others. The company raised $5.6 million in Series A funding from Union Square Ventures and Flybridge Capital Partners in June 2013. On 21 October 2014, Firebase announced it had been acquired by Google for an undisclosed amount. On October 13, 2015 Google acquired Divshot to merge it with Firebase team, for an undisclosed amount. Before the acquisition, Divshot had raised $1.18 million in two rounds of funding, according to TechCrunch. Since the acquisition Firebase has grown inside Google and expanded their services to become a unified platform for mobile developers. Firebase now integrates with various other Google services to offer broader products and scale for developers. The vision of Firebase stays the same and aim to help developers build better apps and grow successful businesses.<br>On January 18, 2017, Google announced that it signed an agreement to acquire Fabric and Crashlytics from Twitter, and that those services would join the Firebase team. <a href="http://firebase.google.com">firebase.google.com</a></p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=dc264558cf34" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>