<?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: Fikra_Dev</title>
    <description>The latest articles on DEV Community by Fikra_Dev (@fikradev).</description>
    <link>https://dev.to/fikradev</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%2F390793%2Ff0ac8d73-34a3-4d9e-b421-f89a0f37105b.jpg</url>
      <title>DEV Community: Fikra_Dev</title>
      <link>https://dev.to/fikradev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/fikradev"/>
    <language>en</language>
    <item>
      <title>Event-Driven Ansible</title>
      <dc:creator>Fikra_Dev</dc:creator>
      <pubDate>Sat, 04 Mar 2023 00:18:18 +0000</pubDate>
      <link>https://dev.to/fikradev/event-driven-ansible-52bn</link>
      <guid>https://dev.to/fikradev/event-driven-ansible-52bn</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;What is Ansible?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Ansible is a configuration management tool in the system administrators/Devops Engineer toolkit that is primarily used to automate the provisioning of servers. It is particularly useful when you have huge amounts of servers to manage as it helps with automating tasks. For example, if you were tasked to update one hundred servers, it would be a pain to update them individually. That is where ansible comes in.&lt;/p&gt;

&lt;p&gt;In a typical setup, you would have a Control Node and Managed Nodes. The control node is the machine that has Ansible installed on it. Ansible then allows you to add all the hosts (servers, etc) you want to administer to a special file known as an Inventory file on the control node. The managed nodes are added to the inventory file using either their IP address or FQDN. The managed nodes can also be grouped however you want them in the inventory file for easy referencing when running commands. Some common groupings include by region, by function or by type eg: database servers or web servers.&lt;/p&gt;

&lt;p&gt;The power of ansible comes out in the use of Playbooks. Playbooks are configuration files which contain plays. Each play is a set of coded instructions which when called perform some action on a server or group of servers. Playbooks can be used to execute very complicated operations. There are also ad-hoc commands which utilize ansible modules to run simple, sometimes one-line commands. The general idea is that playbooks run complicated actions and ad-hoc commands execute simple actions. See an example of each below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Playbook example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;--- name: update web servers
  hosts: webservers
  remote_user: root

  tasks:
  - name: ensure apache is at the latest version
    yum:
      name: httpd
      state: latest
  - name: write the apache config file
    template:
      src: /srv/httpd.j2
      dest: /etc/httpd.conf

- name: update db servers
  hosts: databases
  remote_user: root

  tasks:
  - name: ensure postgresql is at the latest version
    yum:
      name: postgresql
      state: latest
  - name: ensure that postgresql is started
    service:
      name: postgresql
      state: started
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;ad-hoc command example&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ansible [pattern] -m [module] -a "[module options]"

ansible atlanta -a "/sbin/reboot" #where atlanta is the name of a grp of svrs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  &lt;strong&gt;What is Event-Driven Ansible?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;We are already familiar with the terms event-driven programming, event-driven microservices and event-driven architecture. However, the new kid is event-driven Ansible.&lt;/p&gt;

&lt;p&gt;Event-Driven Ansible offers a new paradigm in the server automation realm. As its name suggests, it is simply the triggering of an automated action by a predetermined event. This automated action may be defined as multiple plays in a playbook or a simple ad-hoc command.&lt;/p&gt;

&lt;p&gt;A simple example of how event-driven Ansible can help System Administrators is in the automating of repetitive tasks such as provisioning additional storage when it falls below a specified threshold (the event).&lt;/p&gt;

&lt;p&gt;Event-Driven Ansible is currently in the developer preview and should become widely available in the very near future. One of the major benefits of this tool is its flexibility meaning that it can scale to match the size of your infrastructure. Its modularity also allows for on-the-fly modifications.&lt;/p&gt;

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

&lt;p&gt;Ansible as a tool has been solid in its performance and continued development. The addition of event-driven ansible will only increase its future use.&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>ai</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Microsoft 365 Security Options for Organizations</title>
      <dc:creator>Fikra_Dev</dc:creator>
      <pubDate>Sun, 23 Oct 2022 21:08:57 +0000</pubDate>
      <link>https://dev.to/fikradev/microsoft-365-security-options-for-organizations-3pfk</link>
      <guid>https://dev.to/fikradev/microsoft-365-security-options-for-organizations-3pfk</guid>
      <description>&lt;p&gt;Microsoft 365 and its suite of solutions offer a slew of applications that are perfect for online work and collaboration when the hybrid method of work is the norm.&lt;/p&gt;

&lt;p&gt;As a consequence of the Covid-19 pandemic, a lot of IT departments were forced to adopt Microsoft 365 solutions to facilitate remote work so that organizations could remain productive. However, one downside of this lies in the fact that not all IT teams were versed in Microsoft 365 and the depth of the solution. This has led to a lot of tenants and devices not being securely configured.&lt;/p&gt;

&lt;p&gt;This increases the threat surface for organizations, especially with the number of mobile devices, including laptops that are now in play. All is not lost, however, as Microsoft 365 itself has several solutions that organizations can use to up their security and reduce their vulnerability.&lt;/p&gt;

&lt;p&gt;The first step is to quickly identify where the organization stands in terms of what applications are most used, how employees are using and accessing them, how often they are used etc. Once this has been established, it is time to look at Microsoft 365’s Identity and Access Management platform and based on your previous assessment, apply what measures or combination of measures will help you.&lt;/p&gt;

&lt;p&gt;Azure Active Directory (Azure AD) is a good place to look as well as it offers both stand-alone solutions as well as it can synchronize with your on-prem Active Directory, to facilitate a hybrid environment. With such a configuration several other methods of authentication are introduced including single-sign-on. This method can use your on-prem active directory to authenticate users to the cloud and vice versa.&lt;/p&gt;

&lt;p&gt;Azure AD is included with your Microsoft 365 tenant, as such if you do not have an on-prem active directory you are not left out albeit it will not be as full-featured as an on-prem solution. The only caveat to this and the previous solutions highlighted is that it will require a special license add-on, Azure AD Premium P1 or above to unlock all the identity and access management features fully. These features will enable more granular control over your environment&lt;/p&gt;

&lt;p&gt;There is also Microsoft 365 Defender which is a purpose-built security suite for the platform.&lt;/p&gt;

&lt;p&gt;That being said, even if you only have a standard Microsoft 365 license, there are features there that can be used to increase your security footing. Enabling Multi-Factor Authentication (MFA) on your tenant is one such feature.&lt;/p&gt;

&lt;p&gt;These are just my ideas on what you can start looking at to get going in having a more secure 365 setup. What are your thoughts?&lt;/p&gt;

</description>
      <category>microsoftcloud</category>
      <category>security</category>
      <category>azure</category>
    </item>
    <item>
      <title>Understanding Data Types in Java</title>
      <dc:creator>Fikra_Dev</dc:creator>
      <pubDate>Thu, 07 Apr 2022 00:55:21 +0000</pubDate>
      <link>https://dev.to/fikradev/understanding-data-types-in-java-36h6</link>
      <guid>https://dev.to/fikradev/understanding-data-types-in-java-36h6</guid>
      <description>&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;Data types play a very important role in all programming languages but more so when it comes on to strictly typed languages.  Some of the more well known strictly typed languages include C# and Java.  But what does strictly-typed means?.&lt;/p&gt;

&lt;p&gt;In very simple terms, strictly-typed programming languages are languages where every variable/object when being created must be declared of some type.  The type will be determined by the kind of data that the programmer intends to store or operate on.   For example, if he/she intends to store a user's name in a variable then that variable would be declared using the following syntax:&lt;/p&gt;

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

String userName;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;The type that a variable is declared with will determine the kind of operations that can be done on it.  For example, the variable created above, could be joined/concatenated to another variable or value using the "+" operator which, coincidentally is also the addition operator that is used with numerical variable/values.  Other common String operations include making it all upper or lowercase.  The main idea to be understood here is that the data types determine which operations can and cannot be executed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Primitive and Non-Primitive
&lt;/h2&gt;

&lt;p&gt;There are essentially two (2) data types in Java, primitive and non-primitive.  A primitive data type is one that can store simple values or better yet a single value.  Examples of primitive data types include byte, int, boolean, short, long, float, char, double.  Eight (8) in total.&lt;/p&gt;

&lt;p&gt;A non-primitive data type on the other hand is one that can store multiple or more complex values. The non-primitive data types in Java are classes, objects, Strings, Arrays, Interfaces. &lt;/p&gt;

&lt;p&gt;String being a non-primitive is kind of peculiar but comes down to the fact that a String is an immutable array of characters that has its own set of methods to perform operations on it such as toUpperCase().  In this way, by having its own methods would mean that String is a class, hence a non-primitive data type.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enforcing Data Types
&lt;/h2&gt;

&lt;p&gt;So how is the data type enforced? If you try to run a Java program with an incorrect data type stored in a variable or object etc, that program would throw an error.  Even before that, as you type your code, most modern IDEs would indicate the error by either highlighting it or underlining it with red squiggles.  The error would need to be corrected before your program would run successfully.&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;Having a firm understanding of this foundation concept is important if anyone is to become successful at using Java.&lt;/p&gt;

&lt;p&gt;Thanks for the taking the time out to read my post. It is truly appreciated. If you want to know more about my journey follow me at:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.ryancampbell.codes"&gt;https://www.ryancampbell.codes&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Twitter: @coding_scorpion&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/FikraDev"&gt;https://github.com/FikraDev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>programming</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Are IDE Extensions Hurting Young Devs?</title>
      <dc:creator>Fikra_Dev</dc:creator>
      <pubDate>Tue, 13 Apr 2021 23:50:30 +0000</pubDate>
      <link>https://dev.to/fikradev/are-code-editor-extensions-hurting-young-devs-10mp</link>
      <guid>https://dev.to/fikradev/are-code-editor-extensions-hurting-young-devs-10mp</guid>
      <description>&lt;p&gt;There is no doubt that the shortcut/extensions contained within your favorite code editor allows for faster code production.  Recently I installed a particular AI based extension inside of VSCODE and after a few days I uninstalled it.  I found that it was not making me think.  It was as it typed generating suggestions that I could just tab and accept&lt;/p&gt;

&lt;p&gt;This got me thinking, is this the best thing for a young developer like myself? What if there was an apocalypse and we needed to build a site to inform the rest of the world but only had notepad, would a young dev know what to do without, VSCODE, Visual Studio, ATOM etc?&lt;/p&gt;

&lt;p&gt;Learning code is technical and you will not be able to remember it all, however, I am of the belief that just like learning the fundamentals of a language, young devs should learn the fundamentals without the help of all these fancy tools. &lt;/p&gt;

&lt;p&gt;What are your thoughts? Comment below and lets talk.&lt;/p&gt;

&lt;p&gt;Thanks for the taking the time out to read my post. It is truly appreciated. If you want to know more about my journey follow me at:&lt;/p&gt;

&lt;p&gt;Twitter: @fikra_dev&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/FikraDev"&gt;https://github.com/FikraDev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>My Approach to Learning Programming Concepts - When, Why?</title>
      <dc:creator>Fikra_Dev</dc:creator>
      <pubDate>Sat, 10 Apr 2021 11:50:52 +0000</pubDate>
      <link>https://dev.to/fikradev/my-approach-to-learning-programming-concepts-when-why-3d57</link>
      <guid>https://dev.to/fikradev/my-approach-to-learning-programming-concepts-when-why-3d57</guid>
      <description>&lt;p&gt;While my coding journey might be young, there are several observations that I have made.   One of these observations surrounds how programming concepts are taught and how we as learners interpret the concepts.&lt;/p&gt;

&lt;p&gt;Now, in this day and age there are a million ways and a million sources that facilitates someone learning to code without going to college or a Bootcamp.  Some of the most notable include FreeCodeCamp, YouTube, Udemy and we could go on forever.  But what I think is lost upon students of code, and it happened to me when I just started out, was not asking the right questions in order to cement or clear up our understanding of a concept. &lt;/p&gt;

&lt;p&gt;With that in mind, I am going to briefly explain the approach that I have personally taken to take my understanding of programming concepts to the next level.  &lt;/p&gt;

&lt;p&gt;Now, a lot these concepts, no matter the language or framework are taught in abstraction.  You understand the syntax of the language, you know how to create a variable etc. At the moment the instructor or lecturer is teaching you the concept of say, Arrays.  He then gives you some data and tells you to solve the problem and you do because at that moment you are learning Arrays.  &lt;/p&gt;

&lt;p&gt;But as a student of code one should not be just following along blindly and copying the code.  As a student of code, one should be actively asking themselves two questions when learning a programming concept, when and why.&lt;/p&gt;

&lt;h3&gt;
  
  
  When?
&lt;/h3&gt;

&lt;p&gt;Since adopting this process in my learning, whenever I am introduced to a new concept the first question I ask myself is, when would I use this?  For example, I am learning about Arrays in JavaScript, when would I use an Array? &lt;/p&gt;

&lt;p&gt;When is an interrogative word and in that vein it leads you to more questions and more questions and by the end of it the concept is cemented.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why?
&lt;/h3&gt;

&lt;p&gt;The second question I ask myself is why? Why use this concept over another.  Why use Array.Map() over Array.forEach(). One why will lead to another and then another but I guarantee you that this will enhance you understanding of any concept.&lt;/p&gt;

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

&lt;p&gt;These are the steps that I have taken in my young coding journey.  They might not work for everyone, however, they  helped me significantly improved my understanding of concepts and simultaneously my confidence in knowing when and where to apply concepts.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks for the taking the time out to read my post. It is truly appreciated.  If you want to know more about my journey follow me at:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Twitter: @fikra_dev&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/FikraDev"&gt;https://github.com/FikraDev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>My Coding Journey - Soldier Who Codes</title>
      <dc:creator>Fikra_Dev</dc:creator>
      <pubDate>Sat, 03 Apr 2021 17:29:30 +0000</pubDate>
      <link>https://dev.to/fikradev/my-coding-journey-soldier-who-codes-3829</link>
      <guid>https://dev.to/fikradev/my-coding-journey-soldier-who-codes-3829</guid>
      <description>&lt;p&gt;In January of 2019 I began contemplating my plans for the future.  I was now 37 years old and after spending 17 years in the military in Jamaica I was becoming tired of the routine and needed to move on.&lt;/p&gt;

&lt;p&gt;Now moving onto another career in this part of the world is easier said that done, because unlike other parts of the world, Jamaica has a degree culture.  Meaning that no matter how skilled you are both practically and theoretically, it is almost impossible to get a job, especially in a technical area without a degree.&lt;/p&gt;

&lt;p&gt;After starting a degree in economics approximately 5 years earlier it fell through because of financial reasons. However, over that time my passion moved from economics to tech. So in August 2019 I enrolled at a local community college and began a degree in Management Information Systems. The first semester to me was tougher that basic military training, literally.&lt;/p&gt;

&lt;p&gt;We were first introduced to C# and boy did I struggle with this especially the concept of arrays.  I remember one day I sat and cried and asked myself what the hell was I getting myself into.  But we had a lecturer who would continually reiterate to us, whenever we were not getting a concept, that it was normal and that we should relax.  My acceptance and realization of his reasoning came home one Sunday morning while scrolling through YouTube videos. &lt;/p&gt;

&lt;p&gt;I came upon a video by Gyasi Linje who was basically sharing his own struggles that he went through initially.  From that moment my outlook changed and I began approaching every concept with more positivity.  At the same time I started to understand that even professional programmers used Google and Stack Overflow. &lt;/p&gt;

&lt;p&gt;Two semesters later I got introduced to web development (HTML/CSS, JavaScript).  In that course I struggled with understanding the logic of JavaScript.  I was still able to successfully complete the course, however, I was not comfortable with my understanding of JS.  Once the semester ended I worked on gaining a better understanding of JS and built a travel site using JS.&lt;/p&gt;

&lt;p&gt;However, at the end of that process it was apparent that I had rushed through and skipped a lot of the fundamentals.  Nine months later I am slowly going through to ensure that I get a full understanding of JS and I am at a place now where I am lot more comfortable with it. &lt;/p&gt;

&lt;h3&gt;
  
  
  PLANS FOR THE FUTURE
&lt;/h3&gt;

&lt;p&gt;For the near future once I am comfortable that I have covered the fundamentals of JS I will move on to learning NodeJS and then ReactJS or VueJS.  &lt;/p&gt;

&lt;p&gt;I still have not made up my mind on what career path in IT I want to follow but for now I'm enjoying the journey.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks for the taking the time out to read my post. It is truly appreciated.  If you want to know more about my journey follow me at:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Twitter: @fikra_dev&lt;/p&gt;

&lt;p&gt;Github: &lt;a href="https://github.com/FikraDev"&gt;https://github.com/FikraDev&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
