Hello, My name is Mohammad Abbas and I am the new intern at Narbase Technologies. I am on my way to become a mobile application developer yeeeh.
As a part of my internship, I have to post weekly on the blog to give a summary of what I had learned and what kind of problems I met and how I solved them. So guess what? I will be posting here every single week starting from this week.
At first, I need to bring to your attention that I couldn’t post in past few weeks due to certain events, so this post will be a summary for the first two weeks of August 2018 -the third week was Eid-, so let’s get started.
At the first day, my supervisor Islam sat with me and introduced me to Git as a version control system and told me that is what they are using in the company to organize and manage all of their projects in a systematic manner, so my first task was to learn about Git.
I knew Git but as a definition and its benefits but I never took the effort to learn how to use Git, so I started learning Git. Islam showed me this very good and informative website called Git Immersion to get up and running with Git, and because I already had a little bit of knowledge of Linux and how to deal with the command line and the terminal, I didn’t have much trouble to start with Git. Git is a very useful tool in managing different parts of projects and enhancing the collaboration between team members, not just in the software industry but also in many other areas. Git gives you tools to track down your changes in your code and give the chance to many team members to work on the same file separately without affecting each other work and give the tools to update your code to include your colleagues’ changes and even give tools to handles changes conflict between team members work.
So now I started getting familiar with Git, but how I am gonna exactly use Git, here Islam introduce me to something called Git-Flow as a successful Git branching model, so what is Git-Flow?
Briefly, Git-Flow model is to have a repository to be a central one – although there is no such a thing as a central repo in Git at a technical level – let’s name it origin, where every developer pulls and pushes to it. This central repo holds two main branches named (master and develop) with an infinite lifetime. origin/master is considered to be the main branch where the source code of HEAD always reflects a production-ready state, while origin/develop is considered to be the main branch where the source code of HEAD always reflects state with the latest changes for the next release. When the source code in develop branch reach a stable point and is ready to be released, all of the changes should be merged back into master. There are many supporting branches to aid parallel development between team members, you may use: Feature branches, Release branches, and Hotfix branches. Each of these branches has a specific purpose and bound to strict rules as to which branches may be their originating branch and which branches must be their merge target.
I hope I got you to feel excited about Git-Flow, I quoted must of the above from the original article about Git-Flow by the creator of this model, check the link for more information (https://nvie.com/posts/a-successful-git-branching-model).
My third task was the most exciting one, it’s time to dive into Android. So Islam pointed me to a bunch of tutorials about Android development from a website called Vogella, and here are highlights of what I had learned during the past two weeks. Android is an operating system based on the Linux Kernal and is developed in the Android Open Source Project (AOSP) lead by the giant in tech world Google. I learned that Android divide into four levels which are: Applications, Application Framework, Libraries and Runtime, and last, the Linux Kernal. Android developer typically works with the first two layers. I learned about the Android versions, Android application components, Android manifest file that describe the application, I am also introduced to the Android Studio IDE and built a couple of apps with it. I get familiar with the concept of Activity which simply is what the user is interacting with within the application itself – but it’s much more than that -, also the concept of the XML file that describes the user interface using views and view groups. A view in Android represents a button, text view ..etc, and view group as the name implies is a group of child views and the one I dealt with so far is the layout manager which is responsible for the layout itself and its child views. There are many layout managers but I dealt with two layouts till now, Linear Layout, and Relative Layout. I also learned about the Android project structure and what it contains, also I learned a couple of Android Studio shortcut that helped me a lot. And finally, I start learning about Android Intents which is a message that allows your application components to request functionality from other Android components. Android supports explicit intents and implicit intents. Explicit intents explicitly define the component which should be called by the Android system, for example, to take input from the user in the first activity and want to process it in other activity in the same app. Implicit intents specify the action which should be performed, for example, your app activity wants to open a link, so it tells the Android system to view a webpage which is not part of the original application itself.
I just scratch the surface and there are a lot more in the topic of Intents, I didn’t even have a good understanding of it yet, so I need to read more about it.
I think I said a lot in this post but as I said, it’s two weeks post.
Till next week.