<?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: Dule Martins</title>
    <description>The latest articles on DEV Community by Dule Martins (@dule_martins).</description>
    <link>https://dev.to/dule_martins</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%2F83504%2F2e0bcb03-4664-489f-971e-a84237bd3d9c.png</url>
      <title>DEV Community: Dule Martins</title>
      <link>https://dev.to/dule_martins</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dule_martins"/>
    <language>en</language>
    <item>
      <title>C++ Linked Lists Explained</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Thu, 25 Jul 2024 10:04:02 +0000</pubDate>
      <link>https://dev.to/dule_martins/c-linked-lists-explained-33jg</link>
      <guid>https://dev.to/dule_martins/c-linked-lists-explained-33jg</guid>
      <description>&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ghnzjrvusj18lgbcq9j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ghnzjrvusj18lgbcq9j.png" alt="C++ linked List" width="643" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As a software developer, you’ll often work with lists—essential data structures for storing elements of the same type. In C++, lists differ from vectors because their data isn’t stored in contiguous memory. This difference has major implications for operations like finding or inserting elements. Let’s dive into these differences to help you better understand some fundamental programming concepts.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding C++ Linked Lists
&lt;/h2&gt;

&lt;p&gt;Before exploring linked lists, let’s compare them to a closely related data structure: the vector. Vectors store elements in contiguous memory, allowing fast data access. For example, finding the length of a vector is as simple as subtracting the first element’s address from the last. However, this adjacency in memory means that manipulating one part of the vector requires shifting other elements, which can be costly. That’s where linked lists come in.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a C++ Linked List?
&lt;/h2&gt;

&lt;p&gt;A linked list is a more complex data structure than a vector. Each element in a linked list consists of the data itself and one or more pointers. A pointer is a variable that holds a memory address. In a singly linked list, each element points to the next one. In a doubly linked list, each element has pointers to both the previous and next elements. By default, C++ uses doubly linked lists, as seen in the C++ Standard Library.&lt;/p&gt;

&lt;h3&gt;
  
  
  To create a list in C++:
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;std::list&amp;lt;int&amp;gt; fibonacci = {0, 1, 1, 2, 3, 5, 8};&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;When defining a list, specify the data type in angle brackets (&lt;code&gt;&amp;lt; &amp;gt;&lt;/code&gt;), and all elements must be of the same type.&lt;/p&gt;

&lt;h3&gt;
  
  
  Linked List Operations
&lt;/h3&gt;

&lt;p&gt;Think of a linked list as a chain of elements. This structure allows you to manipulate it more dynamically than a vector. When inserting or deleting an element, only the directly connected elements need to be adjusted by updating the pointers. In contrast, manipulating a vector is like shifting items in an egg carton—everything needs to be rearranged to maintain order.&lt;/p&gt;

&lt;h4&gt;
  
  
  Inserting an Element
&lt;/h4&gt;

&lt;p&gt;Here’s how to insert an element at the beginning of a linked list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;list&amp;gt;
using namespace std;

int main() {
  list&amp;lt;int&amp;gt; fibo = {1, 1, 2, 3, 5, 8};  // create a Fibonacci sequence without zero

  fibo.push_front(0);  // insert 0 at the beginning

  for (int n : fibo) {
    cout &amp;lt;&amp;lt; n &amp;lt;&amp;lt; ' ';
  }
}

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;0 1 1 2 3 5 8&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To append an element to the end of the list, use &lt;code&gt;push_back&lt;/code&gt;.  &lt;/p&gt;

&lt;h4&gt;
  
  
  Removing an Element
&lt;/h4&gt;

&lt;p&gt;You can easily remove elements by value. In this example, you’ll delete elements with a value of 1 from the Fibonacci sequence:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;list&amp;gt;
using namespace std;

int main () {
  list&amp;lt;int&amp;gt; fibo = {0, 1, 1, 2, 3, 5, 8};

  fibo.remove(1);  // remove all elements with value 1

  for (int n : fibo) {
    cout &amp;lt;&amp;lt; n &amp;lt;&amp;lt; ' ';
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;0 2 3 5 8&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This removes all instances of the value. If you need to target a specific element, use an iterator.&lt;/p&gt;

&lt;h4&gt;
  
  
  Deleting by Position with an Iterator
&lt;/h4&gt;

&lt;p&gt;An iterator points to the address of the element you want to erase:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#include &amp;lt;iostream&amp;gt;
#include &amp;lt;list&amp;gt;
using namespace std;

int main () {
  list&amp;lt;int&amp;gt; fibo = {0, 1, 1, 2, 3, 5, 8};
  list&amp;lt;int&amp;gt;::iterator it;

  it = fibo.begin();  // point the iterator to the start
  ++it;               // move the iterator one element forward
  fibo.erase(it);     // erase the element the iterator points to

  for (int n : fibo) {
    cout &amp;lt;&amp;lt; n &amp;lt;&amp;lt; ' ';
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;0 1 2 3 5 8&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Inserting an Element by Position
&lt;/h4&gt;

&lt;p&gt;You can also use an iterator to insert an element at a specific position:&lt;/p&gt;

&lt;h1&gt;
  
  
  include 
&lt;/h1&gt;

&lt;h1&gt;
  
  
  include 
&lt;/h1&gt;

&lt;p&gt;using namespace std;&lt;/p&gt;

&lt;p&gt;int main () {&lt;br&gt;
  list fibo = {0, 1, 2, 3, 5, 8};&lt;br&gt;
  list::iterator it;&lt;/p&gt;

&lt;p&gt;it = fibo.begin();  // point the iterator to the start&lt;br&gt;
  ++it;               // move one element forward&lt;br&gt;
  fibo.insert(it, 1); // insert 1 at the current position&lt;/p&gt;

&lt;p&gt;for (int n : fibo) {&lt;br&gt;
    cout &amp;lt;&amp;lt; n &amp;lt;&amp;lt; ' ';&lt;br&gt;
  }&lt;br&gt;
}`&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;0 1 1 2 3 5 8&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Reversing the List
&lt;/h4&gt;

&lt;p&gt;To print the Fibonacci sequence in reverse, simply use &lt;code&gt;reverse&lt;/code&gt; on a doubly linked list:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&lt;/code&gt;`&lt;/p&gt;

&lt;h1&gt;
  
  
  include 
&lt;/h1&gt;

&lt;h1&gt;
  
  
  include 
&lt;/h1&gt;

&lt;p&gt;using namespace std;&lt;/p&gt;

&lt;p&gt;int main() {&lt;br&gt;
  list fibo = {0, 1, 1, 2, 3, 5, 8};&lt;/p&gt;

&lt;p&gt;fibo.reverse();  // reverse the list&lt;/p&gt;

&lt;p&gt;for (int n : fibo) {&lt;br&gt;
    cout &amp;lt;&amp;lt; n &amp;lt;&amp;lt; ' ';&lt;br&gt;
  }&lt;br&gt;
}&lt;br&gt;
`&lt;code&gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;8 5 3 2 1 1 0&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  When Not to Use Linked Lists
&lt;/h2&gt;

&lt;p&gt;If you need to frequently access elements, such as with indexing, vectors are a better option. Linked lists, while flexible, take longer to compute because their elements aren’t stored in contiguous memory. To access an element, a linked list must traverse each node, which is computationally expensive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lists vs. Vectors
&lt;/h3&gt;

&lt;p&gt;So when should you use lists, and when should you use vectors? It’s not always as simple as the theory suggests. Even for tasks involving a lot of insertion and deletion—actions typically suited for linked lists—a vector might perform better in some cases. Bjarne Stroustrup, the creator of C++, found that vectors outperform linked lists even when working with collections of over half a million elements. The takeaway: deciding between these data structures often requires empirical evidence.&lt;/p&gt;

&lt;h3&gt;
  
  
  Further Reading
&lt;/h3&gt;

&lt;p&gt;To explore more about linked lists, check out the C++ specifications or find a manual implementation of a doubly linked list for deeper insights.&lt;/p&gt;

</description>
      <category>cpp</category>
      <category>programming</category>
      <category>coding</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Figure out what’s wrong with your documentation.</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Tue, 31 Oct 2023 16:45:27 +0000</pubDate>
      <link>https://dev.to/dule_martins/figure-out-whats-wrong-with-your-documentation-4kd1</link>
      <guid>https://dev.to/dule_martins/figure-out-whats-wrong-with-your-documentation-4kd1</guid>
      <description>&lt;p&gt;Curiosity is a valuable trait for anyone who works on/with a team to achieve success. Most of you will want to ask what, how, and why things are not turning out as planned or as predicted. What could be going wrong? What should we be doing differently?  This experience of curiosity is not different from what a technical writer faces when asked to figure out what’s wrong with documentation. &lt;/p&gt;

&lt;p&gt;How do you give users what they want in your documentation, and how do you know something is wrong? To help figure out what might be wrong with the documentation, we need to draw a line to what type of documentation we refer to by giving specific information about the documentation in question. &lt;/p&gt;

&lt;p&gt;You’d agree that documentation can vary greatly, from user manuals to technical guides, API documentation, and product documentation, and the issues can range from inaccuracies, clarity, and conciseness to formatting problems. This post talks about how you can figure out what’s wrong and the steps to take in tackling those issues generated from your documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  What could be wrong with your documentation?
&lt;/h2&gt;

&lt;p&gt;Knowing what could be wrong with your documentation is one of the most critical steps toward growth and improving the documentation quality and effectiveness.&lt;/p&gt;

&lt;p&gt;Building documentation without integrating means to gather feedback and review metrics from your readers is the basis for all things wrong with your documentation. Feedback helps you understand the impact of your documentation and the use of analytics tools to track user engagement. &lt;br&gt;
Metrics like page views, search queries, bounce rates, and the time users spend on each documentation page are essential to publishing more comprehensive and effective documentation. &lt;/p&gt;

&lt;p&gt;A high bounce rate or short time on a page may indicate that users need help finding what they need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt; Conducting a survey, user testing, or direct communication with users. Pay attention to their comments and suggestions, as they can highlight confusion or dissatisfaction. Adopt the integration of analytic tools to monitor valuable metrics needed for documentation growth and effectiveness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Knowing your documentation type
&lt;/h2&gt;

&lt;p&gt;Here, I refer to the specific format or structure for creating and organizing documentation. Most organizations use DITA for their documentation. DITA is the Darwin Information Typing Architecture, and it is the go-to for easily reused, managed, and publication formats for various documentation. &lt;/p&gt;

&lt;p&gt;Imagine a scenario where &lt;code&gt;https:docs.xyz.com&lt;/code&gt; is a documentation assigned to you. Figure out what could be wrong with the documentation. Here is an example structure for our documentation:&lt;/p&gt;

&lt;p&gt;URL: &lt;code&gt;docs.xyz.com/user_guide&lt;/code&gt;&lt;br&gt;
Title: User Guide for XYZ Software&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Introduction&lt;/strong&gt;&lt;br&gt;
Overview of XYZ Software&lt;br&gt;
Defined Target Audience&lt;br&gt;
Defined Style Guide&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Getting Started&lt;/strong&gt;&lt;br&gt;
System Requirements&lt;br&gt;
Installation Instructions&lt;br&gt;
Licensing Information&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;User Interface&lt;/strong&gt;&lt;br&gt;
Main Menu&lt;br&gt;
Toolbars&lt;br&gt;
Navigation Pane&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Working with XYZ Software&lt;/strong&gt;&lt;br&gt;
Creating New Project&lt;br&gt;
Code Sample&lt;br&gt;
Importing Data&lt;br&gt;
Editing Options&lt;br&gt;
Saving and Exporting/Lunch Projects&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Advanced Features&lt;/strong&gt;&lt;br&gt;
Customizing Preferences&lt;br&gt;
Collaboration and Sharing&lt;br&gt;
Keyboard Shortcuts&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Troubleshooting&lt;/strong&gt;&lt;br&gt;
Common Issues and Solutions&lt;br&gt;
Error Messages&lt;br&gt;
Contacting Support&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Appendix&lt;/strong&gt;&lt;br&gt;
Glossary of Terms&lt;br&gt;
Frequently Asked Questions&lt;br&gt;
Additional Resources&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Integrated tool&lt;/strong&gt;&lt;br&gt;
Google Analytics&lt;br&gt;
Feedback Card&lt;br&gt;
Documentation Survey&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each topic is self-contained, written information to help with readers' needs, and topics can be reused/ referred to in a different section of the documentation. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What to do:&lt;/strong&gt; Use metadata and structured content for easy organization, searching, and documentation customization.&lt;/p&gt;

&lt;h2&gt;
  
  
  Figure out what’s wrong.
&lt;/h2&gt;

&lt;p&gt;Now, we conduct a content audit of current documentation &lt;code&gt;docs.xyz.com&lt;/code&gt; against our chosen style, i.e., Google developer style guide, to assess the relevance and accuracy of your documentation. Check for outdated or redundant content that you can rewrite for clarity. Also, ensure content conciseness and consistency, inclusive documentation for a more global audience, tone of voice, and knowing who is performing what action in the documentation.&lt;/p&gt;

&lt;p&gt;Writing clear and bug-free code samples helps to improve the quality of your documentation and reduces time spent on trying to implement suggestive changes your documentation provides. Give your readers an insight into problem-solving with your documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Here is what’s wrong with your documentation.
&lt;/h2&gt;

&lt;p&gt;You have successfully conducted a survey, content audit, and user test about your documentation. Results gathered from those activities have to be constructed into a table form and prepared as a proposal to your manager about what’s wrong with the documentation by organizing a table of issues generated from the content audit and including the non-usage of third-party tools for documentation analysis.&lt;/p&gt;

&lt;p&gt;With our created scenario, we have a structured documentation and integrated tool for generated feedback. What could be wrong with our documentation is caused by auditing our content using a Google style guide, checking for clarity of words, inclusiveness, and tone of voice. While writing, you should adhere to a global writing style.&lt;/p&gt;

&lt;p&gt;Now, submit a proposal to your manager asking that somebody should work on these issues, give priority to them, and the expected time frame to get it done.&lt;/p&gt;

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

&lt;p&gt;In summary, forming a documentation analysis is like figuring out what is wrong with your documentation which requires a careful consideration of the factors mentioned above. The quality of your analysis and the validity of your report &lt;/p&gt;

</description>
      <category>documentation</category>
      <category>writing</category>
      <category>community</category>
    </item>
    <item>
      <title>How to Improve Existing Documentation.</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Wed, 16 Aug 2023 16:29:05 +0000</pubDate>
      <link>https://dev.to/dule_martins/how-to-improve-existing-documentation-548f</link>
      <guid>https://dev.to/dule_martins/how-to-improve-existing-documentation-548f</guid>
      <description>&lt;p&gt;I have been working on some sets of documentation for weeks now, and the task was to improve the documentation structure. align the documentation to fit specific style guides and establish clearer and more concise documentation. &lt;/p&gt;

&lt;p&gt;With this, I produce content with consistent capitalization, spelling, punctuation, formatting, and grammar conventions. Also, I was able to control other writing variables, like tone of voice, and sentence fluency.&lt;/p&gt;

&lt;p&gt;Improving existing documentation is an important step toward improving any written material's clarity, correctness, and usability. Here are some ways to improve your documentation: &lt;/p&gt;

&lt;h2&gt;
  
  
  Understand and review the existing documentation.
&lt;/h2&gt;

&lt;p&gt;Begin by correctly reading and understanding the existing documentation. Determine its strengths, flaws, and places for growth. While doing that, you need to have at the back of your mind that there is a standard you expect the documentation to adhere to.&lt;/p&gt;

&lt;p&gt;This standard is been measured by any style guide of your choice or organizational choice, within the context of my work I was using the Google developer style guide to establish a set of rules for subsequent documentation to follow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Choose a Style Guide
&lt;/h2&gt;

&lt;p&gt;Imagine owning a restaurant, and you want to maintain consistency in the test of food, creating this unique identity for your food leaves a lasting impression on your customers. You have something like a standard that all your chefs both past, present, and future chefs you work with, should follow. More like saying this is how we do things.&lt;/p&gt;

&lt;p&gt;A style guide is a set of rules established to help technical writers work cohesively that reflects true corporate style and maintains documentation consistency. There are tons of style guide out there, you can choose to create one or adopt the existing one while you wait.&lt;/p&gt;

&lt;h2&gt;
  
  
  Set clear goals
&lt;/h2&gt;

&lt;p&gt;Determine the purpose and goals of your documentation. What information should it provide? What problems or questions should it address? Having clear goals help you focus your efforts on relevant improvements. &lt;/p&gt;

&lt;p&gt;Knowing what and where to implement your changes is the reason why you started with this task. My goals were to make sure the document followed the standard of Google developer's style guide, so I made sure my words and sentence structure were in line with that of the style guide.&lt;/p&gt;

&lt;p&gt;I had to study the style guide, check for accurate use of words, linking text, and file extension format as well. My ability to understand the style guide was one thing that helped me produce the proper documentation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gather user feedback
&lt;/h2&gt;

&lt;p&gt;Surveys are a great way to gather feedback from a large number of users. You can create a survey or integrate tools into your documentation so users can submit their responses online.&lt;br&gt;
Once you have gathered user feedback, you can use it for continuous documentation. You can use the feedback to identify areas where your product’s documentation can be improved, and this feedback makes changes that make your product’s documentation user-friendly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;p&gt;It is also important to make sure that the documentation is up-to-date and reflects the latest changes to the product.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>What exactly is an API endpoint</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Thu, 28 Jul 2022 06:55:19 +0000</pubDate>
      <link>https://dev.to/dule_martins/what-exactly-is-an-api-endpoint-32f4</link>
      <guid>https://dev.to/dule_martins/what-exactly-is-an-api-endpoint-32f4</guid>
      <description>&lt;p&gt;Just like the human bones connect with each other via the joint, likewise, an API connects two software, enabling them to interact and transfer data. API is an acronym for Application Programming Interface. To read more about API you should check here.&lt;/p&gt;

&lt;h2&gt;
  
  
  What exactly is an API endpoint?
&lt;/h2&gt;

&lt;p&gt;Endpoints are the end path of a resource URL and usually have brief descriptions. Also, an endpoint shows how you can access specific information from a resource, not the base path shared by all endpoints.&lt;/p&gt;

&lt;h2&gt;
  
  
  API URL is not an Endpoint
&lt;/h2&gt;

&lt;p&gt;This is a common mistake people make most times, identifying an endpoint as URL is wrong. URL is a base path to the resource API, it can be associated with any HTTP method.&lt;/p&gt;

&lt;p&gt;An API URL Path is an address that allows you to access an API and its various features. It is the base address for a specific API that you’re using. Until you choose a specific Endpoint, though, the base URL isn’t going to do much. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://jsonplaceholder.typicode.com/"&gt;Jsonplaceholder&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A URL is the full address for the resource which has multiple parts i.e. base path and endpoint – &lt;a href="https://www.linkedin.com/feed/update/urn:li:activity:6955861586976604160/"&gt;Nauman Ali&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  API endpoint
&lt;/h2&gt;

&lt;p&gt;The API full address isn’t going to do much for you without adding a base path and a specific endpoint. An endpoint is arguably the most critical aspect of API documentation because this is what developers will implement to make their requests.&lt;/p&gt;

&lt;p&gt;Those specific characters to be added are URI; “a sequence of characters that identifies a web resource by location, name, or both available on the internet”. It is the added characters that make it unique from others in the same resource.&lt;/p&gt;

&lt;p&gt;An endpoint contains detailed information; it could be about the weather forecast for a specific location or information about a user/anything with the use of HTTP methods and parameters, a response that contains elements about the endpoint is displayed.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://api.openweathermap.org/com/surfreport/123?&amp;amp;days=2&amp;amp;units=metrics&amp;amp;hour=1400"&gt;https://api.openweathermap.org/com/surfreport/123?&amp;amp;days=2&amp;amp;units=metrics&amp;amp;hour=1400&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Request from an API endpoint
&lt;/h2&gt;

&lt;p&gt;Every API call returns expected information, in the case of our chosen API endpoint above, you’ll get the following  surfreport element:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Beach&lt;/li&gt;
&lt;li&gt;Day&lt;/li&gt;
&lt;li&gt;surfheight (units: feet)&lt;/li&gt;
&lt;li&gt;wind (units: kts)&lt;/li&gt;
&lt;li&gt;tide (units: feet)&lt;/li&gt;
&lt;li&gt;water temperature (units: F degrees)&lt;/li&gt;
&lt;li&gt;recommendation - string (“suggest something you could do with the information")&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Sample code in getting the above information
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "surfreport": [
        {
            "beach": "Santa Cruz",
            "monday": {
                "1pm": {
                    "tide": 5,
                    "wind": 15,
                    "watertemp": 80,
                    "surfheight": 5,
                    "recommendation": "Go surfing!"
                },
                "2pm": {
                    "tide": -1,
                    "wind": 1,
                    "watertemp": 50,
                    "surfheight": 3,
                    "recommendation": "Surfing conditions are okay, not great."
                },
                "3pm": {
                    "tide": -1,
                    "wind": 10,
                    "watertemp": 65,
                    "surfheight": 1,
                    "recommendation": "Not a good day for surfing."
                }
                ...
            }
        }
    ]
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;If you have a lot of endpoints to document, you’ll probably want to create templates that follow a common structure - Tom Johnson&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Expected error from an API endpoint
&lt;/h2&gt;

&lt;p&gt;There are situations where you may make an API call expecting to see a JSON file but instead you are seeing an HTML error page,&lt;br&gt;
causing you to think at what point did my code go wrong? &lt;/p&gt;

&lt;p&gt;That’s the point you forgot to send an “Accept” header with your request. Cases like this are synonymous with Symfony; A PHP framework whose default error response is a 500 HTML error page.&lt;/p&gt;

&lt;p&gt;Also, you may have seen a 404 status code with an error message in your browser response saying page not found?&lt;/p&gt;

&lt;p&gt;This error simply means that your browser is able to communicate to the server where your API is being stored. Initiated a connection but the server could not find what you are looking for thus responding with a 404 error. There are many reasons like broken links, deleted or moved content, etc. That could lead to 404 pages.&lt;/p&gt;

&lt;p&gt;As a technical writer documenting an API, you are faced with an error trying to test an API and you feel your heart beating so fast with fear of how you can handle such an error. An error like “Invalid Fields” are common during API test, data is returned in a manner that is incorrect and unexpected.&lt;/p&gt;

&lt;p&gt;Solutions to this error are basically stated during the development of the API docs, making such all fields are described to increase consistency during API tests. Linking your page properly gives your browser the necessary information to display to site visitors and fix the 404 status code.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;According to NordicAPI An API is only as good as its documentation&lt;br&gt;
While documenting your API you test to see the response and describe each field according to its purpose. Documentation is key.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;The understanding that an API endpoint is a base path with characters that makes it unique among others in the same resource is key, and to operate on an API endpoint totally depends on your HTTP method that is been specified in the documentation, be it “GET, POST, PUT or etc”.&lt;br&gt;
“Forgetting a single "s" can get you in a lot of trouble when testing an API. Some APIs may only support HTTPS, while others may support HTTP for some endpoints and not others.”&lt;/p&gt;

&lt;p&gt;Thanks for taking out the time to read this brief information about API endpoints.&lt;/p&gt;

</description>
      <category>api</category>
      <category>endpoint</category>
      <category>rest</category>
      <category>postman</category>
    </item>
    <item>
      <title>Using curl to Test a REST API</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Thu, 14 Jul 2022 14:10:32 +0000</pubDate>
      <link>https://dev.to/dule_martins/using-curl-to-test-a-rest-api-2jbd</link>
      <guid>https://dev.to/dule_martins/using-curl-to-test-a-rest-api-2jbd</guid>
      <description>&lt;p&gt;I believe the scientist Roy Fielding while creating the REST API, thought of the data it will transfer between web services. The number of services that depend on REST protocol for communication including cloud systems and microservices has increased, this made the requirement for REST API to take a serious turn in checking for the quality of a REST-based API. &lt;/p&gt;

&lt;p&gt;This article is intended to introduce you to the basics of testing and interacting with a REST API using curl. As you follow these instructions, keep in mind that you made be using a different computer’s OS. But, in this article, I will be using a Windows terminal.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;p&gt;Things needed to follow along as you read this article:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Window terminal&lt;/li&gt;
&lt;li&gt;Install curl&lt;/li&gt;
&lt;li&gt;REST API to test and interact with, check &lt;a href="https://openweathermap.org/"&gt;openweathermap&lt;/a&gt; or &lt;a href="https://jsonplaceholder.typicode.com"&gt;jsonplaceholder &lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Let’s get started
&lt;/h2&gt;

&lt;p&gt;curl is a “&lt;strong&gt;command-line tool for transferring data specified with URL syntax&lt;/strong&gt;”. Open your terminal, I’m assuming you might have downloaded curl and got it installed on your machine. To download curl click &lt;a href="https://curl.se/download.html"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;curl works with HTTP request methods like &lt;strong&gt;GET&lt;/strong&gt;, &lt;strong&gt;PUT&lt;/strong&gt;, &lt;strong&gt;POST&lt;/strong&gt;, and &lt;strong&gt;DELETE&lt;/strong&gt;.&lt;br&gt;
Your terminal in Windows should looks like this:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_LLnqwmw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4g7o7kfqves7a0ov77lf.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_LLnqwmw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4g7o7kfqves7a0ov77lf.PNG" alt="Terminal Icon" width="196" height="60"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Open and paste &lt;code&gt;“curl -v”&lt;/code&gt; to display the version of your curl and to verify that you have installed it properly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6YzP0RN4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/asrdf4u5g7q8ffbzzynw.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6YzP0RN4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/asrdf4u5g7q8ffbzzynw.PNG" alt="Display curl version" width="716" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s assume you are logged in to &lt;a href="//www.opemweathermap.org"&gt;openweathermap &lt;/a&gt;and pick an API to test using curl.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NyJ3mHVl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7p9esv64x1f9m3kigb77.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NyJ3mHVl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/7p9esv64x1f9m3kigb77.PNG" alt="API from Openweathermap" width="632" height="77"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s define some terms here, so it will help us get a grab on what we are doing and what we should be expecting.&lt;br&gt;
APIs are made up of parameters that define the response of an API call. In our case, we have:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Lat” and “Lon”: Geographical coordinates (latitude, longitude).&lt;/li&gt;
&lt;li&gt;“AppID”: Your unique API key (you can always find it on your account page)&lt;/li&gt;
&lt;li&gt;“Mode”: Response format. Possible values are XML and HTML. If you don't use the mode parameter, the format is JSON by default.&lt;/li&gt;
&lt;li&gt;“Units”: Units of measurement. standard, metric and imperial units are available. If you do not use the units parameter, standard units will be applied by default.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Next, we paste our API URL into our terminal and press enter.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fH6d8Q3H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n3pqjlljh2yxtjx70dkb.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fH6d8Q3H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/n3pqjlljh2yxtjx70dkb.PNG" alt="command terminal" width="800" height="44"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is an API test call with curl; the underlined parts are the parameters and methods used. We included a zip code = 95050, an app id/API key we got from our page on &lt;a href="//www.openweathermap.org"&gt;openweathermap&lt;/a&gt;, and Units = imperial.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--WyAvIhDO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jiubhet9rg7fmj58tqmn.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WyAvIhDO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jiubhet9rg7fmj58tqmn.PNG" alt="API key" width="589" height="93"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That is our API key. The result of the curl API test call is shown below.&lt;/p&gt;

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

&lt;p&gt;curl defaults to interacting with the server using a GET HTTP request method, which is used for reading data only. We will cover the other HTTP request methods later in this article.&lt;/p&gt;

&lt;h3&gt;
  
  
  curl API response
&lt;/h3&gt;

&lt;p&gt;You notice the display we got from our activity with the terminal. That is a JSON file that holds information about the weather situation in  Santa Clara, US. The syntax for a curl command is as follows: &lt;br&gt;
&lt;code&gt;curl [options] [URL...]&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
Options are added to a curl command to specify the output of an API response. In the case of the API call we made, we included the “&lt;em&gt;-X&lt;/em&gt;” option and followed it with the “GET” HTTP request method.&lt;/p&gt;

&lt;h2&gt;
  
  
  curl options
&lt;/h2&gt;

&lt;p&gt;There are other options that are added to curl when making an API request, here are the options that could be used when making requests:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;curl -x, --request - specify the type of HTTP method to be used.&lt;/li&gt;
&lt;li&gt;curl -i, --include - Include the response headers to be outputted.&lt;/li&gt;
&lt;li&gt;curl -d, --data - Specify the data sent by the API as an output.&lt;/li&gt;
&lt;li&gt;curl -h, --header - Additional header to be sent.&lt;/li&gt;
&lt;li&gt;curl -v, --details - Output more detailed information about the API URL, is it also be used without a URL to show the version of curl being installed on your device.&lt;/li&gt;
&lt;li&gt;curl -o, -- save -  save the output as a file&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Using different HTTP request methods with curl
&lt;/h2&gt;

&lt;p&gt;Now that we know how to do a basic query of a REST API using curl, we can now use different HTTP methods in making queries.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using the GET HTTP request method.
&lt;/h3&gt;

&lt;p&gt;GET is the default method when making HTTP requests with curl.&lt;br&gt;
The requests made in the examples above were done with the Get request method.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using the POST HTTP request method.
&lt;/h3&gt;

&lt;p&gt;The POST HTTP request is not always in use, but while using the POST method you need to understand curl options and with the explanation given above that would help. Let’s dive in with this example and for the sake of this example, we will be using data from the &lt;a href="https://jsonplaceholder.typicode.com"&gt;jsonplaceholder&lt;/a&gt; API.&lt;br&gt;
First, paste this &lt;br&gt;
&lt;code&gt;“curl https://jsonplaceholder.typicode.com/posts”&lt;/code&gt;&lt;br&gt;
In your terminal and added a parameter like &lt;br&gt;
&lt;code&gt;“curl https://jsonplaceholder.typicode.com/posts?userId=1”&lt;/code&gt;&lt;br&gt;
To filter the query.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0-vj2bcc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/60sezw5xpsy0728mjmtf.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0-vj2bcc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/60sezw5xpsy0728mjmtf.PNG" alt="Json data" width="800" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The following command will help makes a POST request using the data specified with the -d option:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JKurskxj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f6vtyz8d325jejpi3lrk.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JKurskxj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/f6vtyz8d325jejpi3lrk.PNG" alt="Post Method" width="800" height="64"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here we go with the response&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zV1Zqls7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p9r2fsatyr1h3ctw0rcl.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zV1Zqls7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p9r2fsatyr1h3ctw0rcl.PNG" alt="Post Method Response" width="800" height="143"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Using the PUT HTTP request method.
&lt;/h3&gt;

&lt;p&gt;PUT HTTP request is used to update or replace a resource on the server about a data set when interacting with a REST API. It shares some similarities with POST, but in this case, we want to replace the resource with a specific data request.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tEnRuf_e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jyfqpnto8ladphvcbyhk.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tEnRuf_e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jyfqpnto8ladphvcbyhk.PNG" alt="Put Method request" width="800" height="43"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I just pasted &lt;br&gt;
&lt;code&gt;“curl -X PUT -d "userId=5&amp;amp;title=Hello World&amp;amp;body=Post body." https://jsonplaceholder.typicode.com/posts/5”&lt;/code&gt;&lt;br&gt;
In my terminal as shown above and here is the result&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LRfkL1QX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nw2mb66djvplhs4yh3py.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LRfkL1QX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nw2mb66djvplhs4yh3py.PNG" alt="Put Method Response" width="800" height="126"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We just added a new set of data to the resource file, and the data we added is displayed as a JSON file.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using the DELETE HTTP request method.
&lt;/h3&gt;

&lt;p&gt;There may be data you want to remove from the server, the HTTP Delete request method delivers that function using curl. Your syntax will include “-X DELETE” to specify the DELETE HTTP request method and a specific resource URL with parameters to delete.&lt;br&gt;
Here we go!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_TjdWR8Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kuvzyrboofnr7rviopmb.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_TjdWR8Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/kuvzyrboofnr7rviopmb.PNG" alt="curl -x" width="525" height="55"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The empty curly brackets represent an empty object in JSON meaning there is no data in the JSON file for posts/1.&lt;/p&gt;

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

&lt;p&gt;I just show you the basics around using curl to test a REST API, one benefit you get using curl is the fact that it makes you understand how to use the command line. &lt;/p&gt;

</description>
      <category>rest</category>
      <category>api</category>
      <category>technicalwriting</category>
      <category>curl</category>
    </item>
    <item>
      <title>APACHE APISIX: As an API Gateway in Microservices</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Mon, 24 Jan 2022 12:36:38 +0000</pubDate>
      <link>https://dev.to/dule_martins/apache-apisix-as-an-api-gateway-in-microservices-4c4b</link>
      <guid>https://dev.to/dule_martins/apache-apisix-as-an-api-gateway-in-microservices-4c4b</guid>
      <description>&lt;h2&gt;
  
  
  Table of Content
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Microservices and Its Impact.&lt;/li&gt;
&lt;li&gt;API Gateway.&lt;/li&gt;
&lt;li&gt;How API Gateway Works.&lt;/li&gt;
&lt;li&gt;Integration of APISIX.&lt;/li&gt;
&lt;li&gt;Conclusion.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;When building your application as a set of microservices, you’d decide how your application’s clients will interact with the microservices. With a monolithic application there is just one set of touchpoints of communication between an API and a server. &lt;/p&gt;

&lt;p&gt;In a microservices architecture, however, each microservice exposes a set of what are typically fine‑grained endpoints. &lt;br&gt;
In this article, you’ll walk through how microservices impacts client‑to‑application communication and the integration of an API Gateway called &lt;strong&gt;&lt;a href="//www.apisix.apache.org"&gt;APISIX&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Microservices and Its Impact
&lt;/h2&gt;

&lt;p&gt;Designing an application that is multi-lingual and easily scalable, easy to maintain and deploy while minimizing failure, microservices are used to achieve such results. Microservice is the process of designing and developing separated components that come together to form a more functional system.&lt;/p&gt;

&lt;p&gt;Tasks are separately handled in microservice applications and its communication between clients and servers are handled using lightweight mechanisms. The communication between these services occurs through protocols such as HTTP, AMQP, and TCP. HTTP/REST and asynchronous messaging are the most widely used protocols. &lt;/p&gt;

&lt;p&gt;You can design your application as a collection of loosely coupled services that are connected together via an API Gateway.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is API Gateway
&lt;/h2&gt;

&lt;p&gt;The word API is an acronym for Application Programming Interface as you may already know, and it is a means of communication between clients and server. &lt;br&gt;
API gateway is a tool that manages clients and collection of backend services, it acts as an overturned proxy to accept all API calls made by the clients.&lt;/p&gt;

&lt;p&gt;It accumulates all requests made and provides the accurate result needed, an API gateway is one part of the API management system that handles all requests processed, and gives back it’s result, ensuring they continuously meet high performance and security standards.&lt;/p&gt;

&lt;p&gt;Enabling an API Gateway, you can create any type of APIs be it RESTful APIs and WebSocket APIs that foster real-time communication between applications. API Gateway supports containerized and serverless workloads, as well as web applications.&lt;/p&gt;

&lt;h2&gt;
  
  
  How API Gateway Works
&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%2F20gob78hpn1ck8ez3apr.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%2F20gob78hpn1ck8ez3apr.png" alt="API Gateway Pattern"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Cloud native architectures bring a whole new level of challenges, as does traffic from websites, mobile and IoT applications.”&lt;br&gt;
Based on the adaptation of architecture like microservice the APISIX Gateway was designed to handle more traffic from different sources.&lt;/p&gt;
&lt;/blockquote&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%2Fsrn9bpzswd9uh3gfqb7c.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%2Fsrn9bpzswd9uh3gfqb7c.png" alt="API Gateway Microservices"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Integration of APISIX
&lt;/h2&gt;

&lt;p&gt;&lt;a href="//www.apisix.Apache.org"&gt;Apache APISIX&lt;/a&gt; is a dynamic, real-time, high-performance API gateway that provides rich traffic management features such as load balancing, dynamic upstream, canary release, service meltdown, authentication, observability, and other rich traffic management features.&lt;/p&gt;

&lt;p&gt;With the adoption of microservices over monolithic applications development, Apache APISIX is providing a more maintainable and scalable gateway system. For developers that are yet to be familiar with Apache APISIX, let me create this impression; APISIX is a dynamic version of Nginx. Using Lua to scale the development of plugins that has innovated the approach of traffic management.&lt;/p&gt;

&lt;p&gt;Apache APISIX don’t relate with database, it handles traffic from L4 and L7 Network services, playing the role of load balancing over these network protocols. Apache APISIX is more like an all in one solution for L7 traffic. There are other Open Source projects that are designed and developed to handle similar issues related with L7 traffic; Nginx, Envoy, Kubernetes (K8s): ingressive controller, and Service Mesh.&lt;/p&gt;

&lt;p&gt;Nginx is used in handling the movement of data packets that are initially entering a network from the clients, and while traffic within the data center – i.e server to server -- is also handled by Envoy. APISIX is one technology that handles both clients and server traffic.&lt;/p&gt;

&lt;h2&gt;
  
  
  APISIX SOLUTION
&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%2Fohi7fo86dko1ngw6lzm1.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%2Fohi7fo86dko1ngw6lzm1.png" alt="APISIX Solution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  USED CASE
&lt;/h2&gt;

&lt;p&gt;Banks uses Java Spring Cloud gateway to manage their data processes, and openID connects plugins for Apache APISIX to configure &lt;a href="https://www.okta.com/products/authentication/" rel="noopener noreferrer"&gt;Okta authentication&lt;/a&gt;. &lt;br&gt;
“Unlike the traditional authentication model, the centralized authentication model takes user authentication out of the application service. &lt;/p&gt;

&lt;p&gt;Take Apache APISIX as an example, the centralized authentication process is shown in the following diagram: first, the user initiates a request, and then the front gateway is responsible for the user authentication process, interfacing with the identity provider and sending the identity provider an authorization) request to the identity provider. The identity provider returns user info. After the gateway identifies the user, it forwards the user identity information to the back-end application in the form of a request header.”&lt;/p&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%2Foglepd1b8a9euji994kb.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%2Foglepd1b8a9euji994kb.png" alt="APISIX Modern Authentication"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;Enterprises worldwide have used Apache APISIX to handle business-critical traffic, covering finance, Internet, manufacturing, retail, carriers, and more, such as NASA, the EU's Digital Factory, China Airlines, China Mobile, Tencent, Huawei, Sina Weibo, NetEase, Ke, 360, Taikang, Nayuki, and more. You can get started &lt;a href="https://apisix.apache.org/docs/apisix/getting-started/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&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%2Fgithub.com%2Fapache%2Fapisix" 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%2Fgithub.com%2Fapache%2Fapisix" alt="Github:"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapisix.apache.org" 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%2Fapisix.apache.org" alt="Official website:"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>microservices</category>
      <category>cloudnative</category>
      <category>apigateway</category>
      <category>devops</category>
    </item>
    <item>
      <title>Stop procrastination get things done.</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Mon, 21 Jun 2021 07:25:10 +0000</pubDate>
      <link>https://dev.to/dule_martins/stop-procrastination-get-things-done-bed</link>
      <guid>https://dev.to/dule_martins/stop-procrastination-get-things-done-bed</guid>
      <description>&lt;p&gt;Have you ever wonder while it seem things are not going towards the direction you actual wanted, while you have been coming up with excuses when being ask about the task that was assigned to you? or you're currently undergoing a self taught series on how to be a productive developer but it seems it is taken months to meet up your expectations.&lt;/p&gt;

&lt;p&gt;Most times we are not able to hold ourselves accountable for not finishing up or being consistency when we're undergoing our self taught series on being a 10x Dev. we give excuse when we don't meetup deadline for a task that was assigned to us.&lt;/p&gt;

&lt;h2&gt;
  
  
  It Feels so Darn Good
&lt;/h2&gt;

&lt;p&gt;Psychologists believe that the reason we procrastinate is that it feels so darn good. Can you believe that? All that guilt, stress, and bad self-image feel good?&lt;/p&gt;

&lt;p&gt;Maybe It does though, doesn’t it? Not the accusing or blaming oneself, but the excuse-making and the excuse-fulfilling. Then you hurry to wrap-up if it was a project/task assigned to you.&lt;/p&gt;

&lt;p&gt;According to Dustin Wax he explain that "Most of the things we do while we procrastinate are fun, offering an immediate payoff—instead of the deferred payoff of the routine, boring, or lengthy projects we’re putting off. A little thrill now makes us feel better than a bigger thrill at some point in the distant future".&lt;/p&gt;

&lt;h2&gt;
  
  
  Desire is Stronger than Habit
&lt;/h2&gt;

&lt;p&gt;We want to be productive and we will, so what do we do? Desire is stronger than habit, and currently we have the habit of procrastinating and changing from it requires us to desire a new habit, it means becoming someone different, it means growing as a person—and all that stuff is really not comfortable.&lt;/p&gt;

&lt;p&gt;Because we have been inspired or motivated by a friend or colleague or after watching a YouTube video of how someone else is a 10x developer, this triggers in us a motivation that we can also be a 10x developer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Every Endeavor Has a Ton of Paths
&lt;/h2&gt;

&lt;p&gt;Specificity in desire! Every endeavor has a ton of paths towards a specific want/need, and most of us spend a lot of time considering all possible paths instead of just committing to one and flourishing. You're going to end up unmotivated again, because a specific target wasn't set.&lt;/p&gt;

&lt;p&gt;Let's assume your specific target is Technical Writing, and it is also assumed that you have done you home work by getting to know what and why you want to be a 10x technical writer and possibly you may have been a writer for a while. Getting things done require you create a process of getting your 10x badge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Write About It
&lt;/h2&gt;

&lt;p&gt;You learn a new tool you write about it, You search for open source project and contribute to their documentation, you join a slack channel of a community of those interested in documentation like writethedocs.org, GitLab documentation, and thegooddocproject.org. Turning this activities into a step-by-step task to be achieve within a given time.&lt;/p&gt;

&lt;p&gt;More googling less window shopping and social media fleet/ stories. More active on twitter around tweet that relates to technical writing. Put your work out there, be open and expect criticism, be proactive and committed you can do it, so just do it!&lt;/p&gt;

&lt;p&gt;I’m a fan of universal principles, and create a process is one of them. Whatever we're doing; programming, writing, design, and management, we learn it through following a trusted process. Either we paid someone (school, bootcamp, course, mentor) to guide us through that process, or do it ourselves.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>todayilearned</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>API: Def, Types, Spec, and Docs. A stone's throw into the application programming interface</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Sat, 17 Apr 2021 17:43:48 +0000</pubDate>
      <link>https://dev.to/dule_martins/api-def-types-spec-and-docs-a-stone-s-throw-into-the-application-programming-interface-2g4i</link>
      <guid>https://dev.to/dule_martins/api-def-types-spec-and-docs-a-stone-s-throw-into-the-application-programming-interface-2g4i</guid>
      <description>&lt;p&gt;You don't have to be around the tech space for months before coming across the word API. Words like API shouldn't be a new thing to anyone that reads tech magazines or blog posts like what you are doing now, one thing reading of blog post and a tech magazine helps you with is getting familiar with buzzwords in the tech space.&lt;/p&gt;

&lt;p&gt;Before learning web development the word API sounded like a complex term that would be difficult to understand and start running with. Over time the term has become a frequently used word, companies are now developing API as a product and creating a role for documentarians to help them organize and structure words that will enable their users to use their API without any difficulty.&lt;/p&gt;

&lt;p&gt;I got to know about the history of API after reading about it on &lt;a href="https://www.redhat.com/"&gt;RED HAT.&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;APIs emerged in the early days of computing, well before the personal computer. At the time, an API was typically used as a library for operating systems. The API was almost always local to the systems on which it operated, although it sometimes passed messages between mainframes. After nearly 30 years, APIs broke out of their local environments. By the early 2000s, they were becoming an important technology for the remote integration of data.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Technically, API stands for Application Programming Interface. Most large companies have built APIs for their customers, or for internal use, or as a Product, as a means of collaboration between two different and remote companies.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Web as an Instance
&lt;/h2&gt;

&lt;p&gt;Think about the Web as a large network of connected servers, where we make a request through HTTP and get a response that is been define in a structured way.&lt;/p&gt;

&lt;p&gt;The web provides information to users from a remote server, every web page on the internet is stored somewhere on a remote server that receives request and process response.&lt;/p&gt;

&lt;p&gt;When you type a web address into your browser, a request goes out to the web remote server. Once your browser receives the response, it interprets the code and displays the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  API Def.
&lt;/h2&gt;

&lt;p&gt;While the acronym is commonly referenced, few understand its actual meaning. Like we clearly stated above what the acronym represents. Understand that software is built to communicate, this is the whole essence to while most software applications are built with the integration of APIs that serve then data from other applications, it could be to communicate with a store by placing orders and check out or a bank by processing payment or transfer.&lt;/p&gt;

&lt;p&gt;Software or its elements don’t need a graphical user interface to communicate with each other. Software products exchange data and functionalities via a machine-readable medium which can be likened to – Application programming interfaces.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An API is a set of programming code that enables data transmission between one software product and another. It also contains the terms of this data exchange.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Types of API
&lt;/h2&gt;

&lt;p&gt;There are severe types of APIs and some APIs are been made available base on their release policy. API release policy could be Private, Partner, and Public. For example, with Javascript API you can perform an action like While the browser usually is 'above' any code running in it, a  &lt;a href="https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/browserSettings"&gt;Mozilla-derived API&lt;/a&gt;  allows JavaScript limited access to browser settings. Think about aspects such as reading the user's homepage, how bookmarks are handled, and where new tabs show up.&lt;/p&gt;

&lt;h3&gt;
  
  
  API release policy:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Private&lt;/strong&gt;: These APIs are solely used within an organization and  In-house developers use these APIs to integrate a company’s IT systems or applications, build new systems or customer-facing apps leveraging existing systems. The private strategy allows a company to fully control API usage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Partner&lt;/strong&gt;: Openly promoted but available for known business partners who have signed an agreement with the publisher or the API company. The common use case for partner APIs is software integration between two parties. For example, an e-commerce platform like  &lt;a href="//www.timiun.com"&gt;Timiun&lt;/a&gt;  integrated a payment API develop and publish by  &lt;a href="https://www.mymonify.com/"&gt;Monify&lt;/a&gt; &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Public&lt;/strong&gt;: These types of APIs are publicly available to use like OAuth APIs from Google. It has also not given any restriction to use them. So, they are also known as Public APIs.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;APIs can be classified according to the systems for which they are designed. There are Database APIs that enable communication between an application and a database management system. working with databases by writing queries to access data, change tables, etc.&lt;/p&gt;

&lt;p&gt;Web APIs provide machine-readable data and functionality transfer between web-based systems which represent client-server architecture. These APIs mainly deliver requests from web applications and responses from servers using Hypertext Transfer Protocol (HTTP).&lt;/p&gt;

&lt;h2&gt;
  
  
  API Spec
&lt;/h2&gt;

&lt;p&gt;An API spec is made up of a plan of how your API should look structurally - like an architectural design of a product. The best part of an API Spec is that it enables you to isolate design flaws or problems before you write a line of code.&lt;/p&gt;

&lt;p&gt;The advantage that comes with planning your API specification is something worth the time put in. Building your API base on specification could possibly add two or more weeks to the deadline for the development life-cycle, but it worth it.&lt;/p&gt;

&lt;p&gt;The idea behind APIs is simple, it should be flexible enough to be used by anyone and adequately documented to enter face with the developers using it. Most time thinks of API having customer support where a developer could chat up the support about the difficulties s/he could be facing integrating using the API, but this is while we have Technical writers and Documentarians I supposed.&lt;/p&gt;

&lt;h2&gt;
  
  
  API Docs
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;API documentation is a technical content deliverable, containing instructions about how to effectively use and integrate with an API - Swagger.io&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As stated above, API documentation is a company's customer support system for marketing their API, so you understand how effective and the amount of effort that has been put out to have that ready for consumption.&lt;/p&gt;

&lt;p&gt;Is easy to ready documentation but it is more fun when it is properly structured in a manner that a user can easily locate what s/he is looking out for. Most documentation teams while building the docs for their APIs are responsible for continuous maintenance of the documentation, so they basically design means of getting feedback from users on how to improve the docs.&lt;/p&gt;

&lt;p&gt;Once I heard someone saying "if you don't document it then it didn't happen", documentation is an art of credibility, and reading documentation carefully is an art of consistency.&lt;/p&gt;

&lt;p&gt;Thanks for reading !!!!&lt;/p&gt;

</description>
      <category>api</category>
      <category>documentation</category>
      <category>web</category>
      <category>developer</category>
    </item>
    <item>
      <title>How you can still learn while on Social Media(Internet).</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Wed, 04 Nov 2020 14:50:27 +0000</pubDate>
      <link>https://dev.to/dule_martins/how-you-can-still-learn-while-on-social-media-internet-5b7a</link>
      <guid>https://dev.to/dule_martins/how-you-can-still-learn-while-on-social-media-internet-5b7a</guid>
      <description>&lt;p&gt;The pandemic has proven we will be spending more time on the internet, there will be a lot of digital accelerator programs, and online mentor classes, leveraging on articles, videos, and podcast will always be a means for self-development.&lt;/p&gt;

&lt;h2&gt;
  
  
  A mentor in a place of learning like social media
&lt;/h2&gt;

&lt;p&gt;One way I would like to introduce the word Mentor here was done my Zig Ziglar and He said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"In the entrepreneurship world, mentors art as an adviser, compensated or not."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, we all know how important this set of awesome persons are on our journey, as we travel with our mission statement in delivering our objectives and achieving our vision. Getting one has been like a journey that we admire the destination and hope we get there soon. The internet has become an integral part of everyday life for many of us, It enhances social interaction, communication, and builds communities. A space with different communities and communications, few friends believe that if you are an active member of any community of interest, you would likely meet a mentor online or offline. &lt;strong&gt;What do you think?&lt;/strong&gt; I would love to read your thoughts in the comment section.&lt;/p&gt;

&lt;p&gt;Having a mentor can provide you with many advantages.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Mentoring is a brain to pick, an ear to listen, and a push in the right direction." &lt;br&gt;
John Crosby.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The internet as a mentor can help to shorten your learning curve, open your mind to new ideas and possibilities, identify opportunities, and advise on how to promote yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Social Media as an environment that mentors
&lt;/h2&gt;

&lt;p&gt;While the time we spent on the Social media is increasing, it is advisable we understand the fact that social media is an environment just like every other environment that experiences both negative and positive communication, we have to choose our battle so we can carefully choose a weapon and master its technique. The internet "Social Media" is filled with a wide range of topics and conversation, the first step in making its a place where you pick brains, listen, and move in a direction is by choosing your topic of interest.&lt;/p&gt;

&lt;p&gt;The tech space is an awesome environment that its setup supports career development, personal promotion, and social network, due to its communities and free learning resources. Our interest in tech and its community is every day been influence by those we admire in the tech space on social media. The internet has been a mentor to us overtime consciously or unconsciously. Platforms like DEV.to, Hashnode, Facebook, Twitter, Slack, Reddit, and Podcast among others have been the Communities where we experience our mentoring session as I may call it. Accelerator (Digital) programs and Bootcamps have their way to increase our confidence and involvement in open source activities. With the Four Industrial Revolutions on the move, the internet environment has become more educative and at the same time, it could be destructive.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--fK-3oSlf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/7gj0iy4nzv8h9v0grxhs.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fK-3oSlf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/7gj0iy4nzv8h9v0grxhs.jpg" alt="Alt Text" width="800" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Fear of Social Media (Internet) Distraction
&lt;/h2&gt;

&lt;p&gt;Often times we set out to search for something on the internet, we tend to open more tabs on our devices, while we read through each tab to actually find that which we seek, we bump into something even more intriguing and veer off in that direction. This often seems like our habit most times, even while visiting twitter it is possible to be distracted by other tweets that are not our topic of interest.&lt;/p&gt;

&lt;p&gt;According to Beckett Frith in a publication on hrmagazine:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Instant messaging app WhatsApp was found to be the most distracting platform in the survey of 2,000 people, with 72% of workers chatting with their friends on it when they should be working. It was closely followed by Facebook, which distracts 70% of workers, while Instagram (49%), Twitter (41%), and Snapchat (30%) were also named as common workplace distractions."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;if this is true for the workplace, then it has an influence on us as an individual. But, this is the same social media platform that could as well serve as a mentor, &lt;strong&gt;How?&lt;/strong&gt; one of my favorite functions on Twitter is the ability to choose and follow your topic of interest and google likewise, others follow this same step in personalizing users' activity. "These tools grow more powerful all the time as new advances in algorithmic technologies and artificial intelligence are integrated" into the Content Space. &lt;strong&gt;Dipayan Ghosh&lt;/strong&gt; and &lt;strong&gt;Ben Scott&lt;/strong&gt; talk about this more in their post about &lt;strong&gt;DigitalDeciet&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why It Doesn't Seem Difficulty In Getting A Mentor
&lt;/h2&gt;

&lt;p&gt;I can’t tell if it is difficult in getting a mentor or not because I don’t have one yet, what am sure of is this, while it doesn’t seem difficult for me to locate a mentor on this path of life, I believe it is the social media. And Samy Dindane said this “Social media is widening the gap between those who will stay average and those who will rise to the top. You can either use it to scroll other people’s (fake) lives &amp;amp; share memes. Or leverage it to learn new skills, build a network, help people &amp;amp; improve your quality of life”. With tools like Social media management services (SMMS), Search engine optimization (SEO), and GPS location tracking on modern smartphones, with how fast artificial intelligence is been adopted, sooner or now our social media existence will be a reflection of our activities and connection.&lt;/p&gt;

&lt;p&gt;This has widened the need for more online communities and community managers, development, and distribution of content. Indeed the social media have grown into our personal mentor.&lt;/p&gt;

&lt;p&gt;Thank you for your time, It never hurts to ask someone to share an article if it resonated with her/him.&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>career</category>
    </item>
    <item>
      <title>Manipulating the Web using Jquery</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Tue, 27 Oct 2020 21:52:07 +0000</pubDate>
      <link>https://dev.to/dule_martins/manipulating-the-web-using-jquery-48ng</link>
      <guid>https://dev.to/dule_martins/manipulating-the-web-using-jquery-48ng</guid>
      <description>&lt;p&gt;The DOM, a structure the web browser is built upon to relate with webpages. It generates information about your webpage by interacting with the HTML file, the web browser reads the HTML files by selecting document needed to communicate with website visitors. This document is been manipulated to change the Web App, so it would respond to user actions. Web App is built for users and everyday people access the web for information, and there are Web Apps that have been manipulated with beautiful technologies like JQuery to provide every user with his or her request.&lt;/p&gt;

&lt;p&gt;JavaScript which is the #1 most popular programming language on Github in terms of pull requests, has a large community of developers and free Open Source Project as well. JQuery is a JavaScript library which was designed to simplify the way developers interact with HTML element during coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  JQUERY?
&lt;/h2&gt;

&lt;p&gt;As stated earlier, it is a JavaScript library and the most popular one, designed to simplify workflow for web developers. As written on the official website&lt;/p&gt;

&lt;p&gt;“jQuery is a fast, small, and feature-rich JavaScript library.”&lt;/p&gt;

&lt;p&gt;The popularity of JQuery can be confirmed on Wikipedia:&lt;/p&gt;

&lt;p&gt;“As of May 2019, jQuery is used by 73% of the 10 million most popular websites. Web analysis indicates that it is the most widely deployed JavaScript library by a large margin, having at least 3 to 4 times more usage than any other JavaScript library.”&lt;/p&gt;

&lt;p&gt;During the course of us defining what JQuery does, we made mention of "Library", now what’s a library? This is a concept of taking a block of code written by someone with a bunch of methods and properties on it and we add it into our project to make things easier and faster. This method helps developers to Select Element, Manipulate Element, Create Element, Add Event Listener, Animate Elements, Add Effects, and Make HTTP Request.&lt;/p&gt;

&lt;h2&gt;
  
  
  WHY USE JQUERY?
&lt;/h2&gt;

&lt;p&gt;JQuery is a great tool, and using it shouldn’t be a thing of fear or confusion, because if you think it will make your workflow faster then go ahead including it. Few developers have given the advice to be considerate while using JQuery as a dependency in developing a library because modern browsers are been ship with some utility code that makes Apps compatible. Selecting an element with “document.querySelectorAll()” is considered to be lengthy, with JQuery this can be fixed just by using the “$(dollar sign)” to select elements. It also makes your code shorter and clear, for example, check out the block of code with and without Jquery.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7BqffuKJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/zpfjfzos61a20e0ipr6h.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7BqffuKJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/zpfjfzos61a20e0ipr6h.JPG" alt="Alt Text" width="355" height="204"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In as much as using JQuery make things faster and easier, you will be on a safe side if you understand the basic concept of Vanilla Js; which is using the DOM manipulators to create a dynamic Web Apps by Selecting element using the document.querySelector(), document.querySelectorAll(), document.getElementById(), document.getElementByTagName().&lt;/p&gt;

&lt;h2&gt;
  
  
  USING JQUERY TO MANIPULATE A WEB APP?
&lt;/h2&gt;

&lt;p&gt;Now, that we all have gotten to know what and why JQuery? I think we need to know how we can use this awesome tool to manipulate a Web App. First, assuming all directory are well arranged and we have our js folder where all our JavaScript files are been saved. Inside the js folder, for the sake of this article, we create another folder called lib for our library files. There are two ways to include JQuery in your project.&lt;/p&gt;

&lt;p&gt;Include using CDN Link.&lt;br&gt;
Download a compatible file for your device from the JQuery website. CDN = Content Delivery Network is simply a way to include JQuery without downloading it into your device, to know more visit the &lt;strong&gt;&lt;a href="https://code.jquery.com/"&gt;link&lt;/a&gt;&lt;/strong&gt;. While downloading JQuery for your project, there are options like the compressed version and the uncompressed version. The compressed version is more likely faster to load because it is compressed, to know the difference between these two, check the prefix added to the name. For the compressed file, you see we have jquery-2.1.4.min.js, and the uncompressed file is jquery-2.1.4.js&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;!-----------------jquery included here-------------&amp;gt;
&amp;lt;script type = "text/javascript" src="jquery-2.1.4.min.js"&amp;gt;&amp;lt;/script&amp;gt;
```



Now, we just added the mini version of JQuery to our project, so time to check if JQuery is actually included. And we added it in our head tag **&amp;lt;head&amp;gt;&amp;lt;/head&amp;gt;** so it runs first before the App runs.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/v38ozst9vw63tedbjprr.JPG)

To wrap this up on how to include JQuery for our project, either way, works, but we need a script tag &amp;lt;script&amp;gt;&amp;lt;/script&amp;gt; and a source attribute with value such as device directory or CND link.

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/b7zry2yy5wdqtc6mws3t.JPG)

CDN allows you to access JQuery via the internet because it is hosted and the other allows you to access JQuery from your device directory after download.

## SELECTING ELEMENT USING JQUERY

For the most part, jQuery uses the same query syntax as CSS to select elements. The typical pattern is to select one or more elements and then perform some action on them, manipulate or retrieve data from them. So, for example, here is a jQuery selector to get all div elements in the DOM
$("div") The following query would give you the element that has an ID of main: $("#main") Just like CSS, the hash sign selects elements with a specific ID, and a dot selects elements that have a specific class. You can also use compound search criteria. This next query would return all of the elements that are descendants of the element with an ID of main and have a class of selected: $(#main .selected") With this manipulating, your Web App for it to respond to users becomes easy and faster. A jQuery select returns a jQuery object that is like an array but also has lots of built-in functions to do all sorts of things, which we will read about a few of them as we progress through this article. For example, the following line of code would hide all of the elements returned from the previous select (set their CSS display attribute to none): $(#main .selected").hide() Simple and powerful right? Ya! It’s obvious how short and clear it is for you to select an element, add actions to that element without writing a long line of code.

## LET’S MANIPULATE A WEB APP TO RESPOND TO USERS ACTION.

Now that we have the basics under our belt let's get started on the Web App. We'll call our App TasksApp. First, make a directory for our App folders and rename it according to the files that will be saved inside. Also rename the .html, .css, and .js files to taskApp. Now we're ready to start our first HTML5 application. You can find the code for this section on my [Github page](https://github.com/Dule-mart/TaskApp). What we intend achieving with the App is enabling users to manipulate their tasks by editing them, deleting them, or moving them up or down in the order of the list, here is our App template;

![HTML-FILE](https://dev-to-uploads.s3.amazonaws.com/i/l02cap8yzu5i8bv96q6m.JPG)


![CSS-FILE](https://dev-to-uploads.s3.amazonaws.com/i/ew30jzu52hd43a13o8yg.JPG)

![JS-FILE](https://dev-to-uploads.s3.amazonaws.com/i/t1lgul26beaq0l5t2vp8.JPG)

![App-display](https://dev-to-uploads.s3.amazonaws.com/i/c92gcjn9q2rdl5wrnc48.JPG)

Now, let’s talk more about the images you just saw. Those were actually our App template and the App display but without being able to add tasks to our App yet. We use JQuery to select the input element so we can add tasks to a list and ye! we just deploy our task App.

First, we get the text field by doing a jQuery select on its id=" new-task-name". Then we add a keypress() event handler to that element that was selected using $("#new-task-name"), passing in a function to execute every time the event is triggered. jQuery passes one parameter to the event handler function "(e)", which is a keypress event object. The event object which is pass as a parameter contains a property named **"which"** that contains the character code of the key that was pressed. The one we are interested in here is the Enter key, which has a code of 13.

After writing our addTask method with a return value, Next, we add another function call onto the end of the keypress() handler to set the focus back to the text field. Our addTask methods have another function inside of it that actually add a task to the element list, by so doing we are creating a list of task to be done.

We create a function addTaskElement() and pass in taskName as an argument to check if the taskName is true, which in this case means it’s not an empty string. What just happened? We created a task list application where the user can type in task names and build a list of tasks using JQuery to manipulate with our HTML tag. Let's open the application in our browser and see what we've got so far:

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/kzmat146c7yz2ukfu8xz.JPG)

Thanks for reading this article, hope you found it helpful…
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

</description>
      <category>jquery</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>html</category>
    </item>
    <item>
      <title>Mini Crash Course: Documentation using MkDocs</title>
      <dc:creator>Dule Martins</dc:creator>
      <pubDate>Thu, 06 Aug 2020 14:46:56 +0000</pubDate>
      <link>https://dev.to/dule_martins/mini-crash-course-documentation-using-mkdocs-4l6g</link>
      <guid>https://dev.to/dule_martins/mini-crash-course-documentation-using-mkdocs-4l6g</guid>
      <description>&lt;p&gt;Documentation gets out of date quickly because it depends on the code running the software, and code has bugs, and once a bug is fixed or an update is done you need to update your documentation as well. now let us talk about documentation; It is a “material that provides official information or evidence or that serves as a record.”&lt;br&gt;
Documentation is an important part of software engineering. Types of documentation include:&lt;br&gt;
&lt;strong&gt;Requirements&lt;/strong&gt; — Statements that identify the attributes, capabilities, characteristics, or qualities of a system. This is the foundation for what will be or has been implemented.&lt;br&gt;
&lt;strong&gt;Architecture/Design&lt;/strong&gt; — Overview of software. Includes relations to an environment and construction principles to be used in the design of software components.&lt;br&gt;
Technical — Documentation of code, algorithms, interfaces, and APIs.&lt;br&gt;
&lt;strong&gt;End-user&lt;/strong&gt; — Manuals for the end-user, system administrators, and support staff.&lt;br&gt;
&lt;strong&gt;Marketing&lt;/strong&gt; — How to market the product and analysis of the market demand.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yNzFGfc6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/9z9xm2z88dr05v5w3vxw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yNzFGfc6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/9z9xm2z88dr05v5w3vxw.jpg" alt="Alt Text" width="800" height="350"&gt;&lt;/a&gt;&lt;br&gt;
XD-Adobe&lt;br&gt;
Now, let us shift our focus to how we can generate a static site for End-Users using MkDocs. MkDocs “builds completely static HTML sites that you can host on GitHub pages, Amazon S3, or anywhere else you choose”. writing with MkDocs is an amazing experience, maybe it is this way because of the flexibility I enjoy while writing, being able to see a live update of the docs and experiencing it like I’m visiting a web page it’s awesome.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dcgm0QfO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/k0t4sadnvkpyv322zdse.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dcgm0QfO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/k0t4sadnvkpyv322zdse.gif" alt="Alt Text" width="220" height="220"&gt;&lt;/a&gt;&lt;br&gt;
MkDocs is awesome&lt;/p&gt;

&lt;h1&gt;
  
  
  Beginning with MkDocs
&lt;/h1&gt;

&lt;p&gt;Let me assume you have python installed if not, please do well to get python install on your device by click here. Alright after installing your python the next thing to get up is your “pip” and If you’re using a recent version of Python, the Python package manager, pip, is most likely installed by default. However, you may need to upgrade pip to the lasted version, visit Installing pip to know more.&lt;br&gt;
Python and Pip fully checked, is time to install our awesome MkDocs using pip:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qi0mvzBL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/vjgi85w69krspaz8jmlo.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qi0mvzBL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/vjgi85w69krspaz8jmlo.PNG" alt="Alt Text" width="419" height="35"&gt;&lt;/a&gt;&lt;br&gt;
Command to install pip.&lt;br&gt;
MkDocs successfully installed, it is time to start our project, create a project and cd into your folder, for example:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NwU1epGZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/8x98ewixxriz8fq1diav.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NwU1epGZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/8x98ewixxriz8fq1diav.PNG" alt="Alt Text" width="466" height="82"&gt;&lt;/a&gt;&lt;br&gt;
project directory created&lt;br&gt;
Moving into our Project folder with the following command:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zt0OkAML--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/fmnau6m31btul2dux0kt.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zt0OkAML--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/fmnau6m31btul2dux0kt.PNG" alt="Alt Text" width="342" height="60"&gt;&lt;/a&gt;&lt;br&gt;
Project Folder&lt;br&gt;
In our project folder, there’s a single configuration file named mkdocs.yml, and a folder named docs that will contain your documentation source files. Right now the docs folder just contains a single documentation page, named index.md.&lt;br&gt;
The index.md have default information that can be edited at any time, now let us start our server via the windows terminal and see how it will display in the browser, starting the server requires you to write command as follows:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ljQPBpVr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/unvfbhhuanbnbgwnrhzw.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ljQPBpVr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/unvfbhhuanbnbgwnrhzw.PNG" alt="Alt Text" width="313" height="35"&gt;&lt;/a&gt;&lt;br&gt;
Starting your live serve for MkDocs&lt;br&gt;
This triggers an action that builds up your documentation site and provides a local serve code that serves as the URL:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p0a3CH0O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/6767okul2kmewy4lcx8c.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p0a3CH0O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/6767okul2kmewy4lcx8c.PNG" alt="Alt Text" width="534" height="195"&gt;&lt;/a&gt;&lt;br&gt;
Starting site directory&lt;br&gt;
The highlighted part of the image above is the serving point on which you can access your docs through the browser. first, copy the link past on your browser and you’ll see the default home page is displayed:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TwEIk8Dv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/01s3tkd8e8fm025la1dt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TwEIk8Dv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/01s3tkd8e8fm025la1dt.png" alt="Alt Text" width="800" height="538"&gt;&lt;/a&gt;&lt;br&gt;
Welcome to MkDocs&lt;br&gt;
Open the docs/index.md document in your text editor of choice, change the initial heading to whatever you want and save your changes. Your browser will auto-reload and you should see your updated documentation immediately. Check into mkdocs.yml and change the file you are seeing into a name you want for your site, for example:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--djWkyk9Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/1h5xe2zh2kno3lgcstbv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--djWkyk9Y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/1h5xe2zh2kno3lgcstbv.PNG" alt="Alt Text" width="367" height="50"&gt;&lt;/a&gt;&lt;br&gt;
My New Docs&lt;br&gt;
Open up your browser and you will see a display like this:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--zqqmxkOf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/mgmyh54rzsuwsn3gequv.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zqqmxkOf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/mgmyh54rzsuwsn3gequv.PNG" alt="Alt Text" width="800" height="369"&gt;&lt;/a&gt;&lt;br&gt;
Display effect&lt;/p&gt;

&lt;h1&gt;
  
  
  Adding page
&lt;/h1&gt;

&lt;p&gt;Now add a second page to your documentation and creating an internal link within your site. This &lt;a href="//about.md"&gt;home&lt;/a&gt; adds a link to your documentation, and creating a page requires you to edit your config file which is in mkdocs.yml like this:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EGhWjdld--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/wo04h1ll20vxwgt889wj.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EGhWjdld--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/wo04h1ll20vxwgt889wj.PNG" alt="Alt Text" width="279" height="124"&gt;&lt;/a&gt;&lt;br&gt;
Nav Bar with MkDocs&lt;br&gt;
After editing your configuration file just as I did above, Save your changes and you’ll now see a navigation bar with Home and About items on the left as well as Search, Previous, and Next items on the right.&lt;/p&gt;

&lt;h1&gt;
  
  
  Theming our documentation
&lt;/h1&gt;

&lt;p&gt;One amazing thing with MkDocs is the ability to add a theme to your docs and thanks to readthedocs community for providing us with an awesome theme. Edit the mkdocs.yml file and add a theme setting:&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--w7C7Jf5m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/yi6a5ygu68hvf1zrgq0n.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--w7C7Jf5m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/yi6a5ygu68hvf1zrgq0n.PNG" alt="Alt Text" width="304" height="25"&gt;&lt;/a&gt;&lt;br&gt;
Adding theme using VS Code&lt;br&gt;
Save your changes, and you’ll see the ReadTheDocs theme being used.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7olzuRM1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/u214tvp5p56wi8v7mn6r.PNG" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7olzuRM1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/i/u214tvp5p56wi8v7mn6r.PNG" alt="Alt Text" width="800" height="369"&gt;&lt;/a&gt;&lt;br&gt;
ReadTheDocs Theme&lt;br&gt;
Welcome you just publish your first MkDocs documentation site, hope you found this helpful.&lt;br&gt;
To read more click on MkDocs&lt;/p&gt;

</description>
      <category>writing</category>
      <category>markdown</category>
      <category>softwaredocumentation</category>
      <category>mkdocs</category>
    </item>
  </channel>
</rss>
