<?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>Forem: nuru</title>
    <description>The latest articles on Forem by nuru (@0xnuru).</description>
    <link>https://forem.com/0xnuru</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%2F1359126%2F4cf3f889-b922-4b2b-a7c0-123714fc6b85.jpg</url>
      <title>Forem: nuru</title>
      <link>https://forem.com/0xnuru</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/0xnuru"/>
    <language>en</language>
    <item>
      <title>Announcing Astrahealth V0.9🎉</title>
      <dc:creator>nuru</dc:creator>
      <pubDate>Wed, 15 May 2024 22:42:08 +0000</pubDate>
      <link>https://forem.com/0xnuru/astrahealth-48nf</link>
      <guid>https://forem.com/0xnuru/astrahealth-48nf</guid>
      <description>&lt;h3&gt;
  
  
  Introduction
&lt;/h3&gt;

&lt;p&gt;In Nigeria, a nation of over 200 million people, accessing quality healthcare is a major challenge. With a doctor-to-patient ratio of around &lt;strong&gt;1:10,000&lt;/strong&gt; according to &lt;a href="https://www.aljazeera.com/features/2023/10/23/death-on-duty-nigerian-doctors-blame-continued-exodus-on-state-negligence"&gt;Al Jazeera&lt;/a&gt;, the country falls far short of recommended levels. This shortage translates to long wait times, limited consultations, and often, a significant financial burden for those seeking medical attention.&lt;br&gt;
This lack of accessibility has a ripple effect. People, unable to see a doctor easily, often don’t seek medical attention until their conditions become severe, sometimes beyond salvation. Preventable issues may go unnoticed, and treatable illnesses can escalate. Imagine if a simple consultation via AstraHealth could address these concerns early on.&lt;br&gt;
Our app allows users to schedule a consultation with a world-class doctor in under 3 minutes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Our Story
&lt;/h3&gt;

&lt;p&gt;When it came to choosing a project for our portfolio, we explored various options - FinTech, EdTech, bespoke tailoring solutions, etc. which were all great. But AstraHealth resonated deeply. We saw a chance to tackle a real pain point: the difficulty of accessing healthcare in the country. &lt;/p&gt;

&lt;h3&gt;
  
  
  Technologies Architecture
&lt;/h3&gt;

&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%2Fli4hpafyxoov29v0gbqb.jpeg" 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%2Fli4hpafyxoov29v0gbqb.jpeg" alt="architecture" width="800" height="466"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This architecture is designed to provide a solid foundation for the MVP while leaving ample room for scalability.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Users access the AstraHealth application securely over HTTPS through a web browser by visiting &lt;a href="//health.astrafort.tech"&gt;health.astrafort.tech&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The request is received by the web server in the frontend which holds the HTML content and the static files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Requests that require any processing or business logic are forwarded to an ubuntu server which serves as a load balancer. I've installed HAProxy on the server to enable SSL proxy termination and load balancing.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The load balancer which is at &lt;a href="//api.astrafort.tech/docs"&gt;api.astrafort.tech/docs&lt;/a&gt; forwards all the request using a round-robin algorithm to the backend servers which hold the FastAPI codebase, the PostgreSQL server and the application server running with gunicorn. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Front-end Technologies
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Languages - HTML, CSS, JavaScript&lt;/li&gt;
&lt;li&gt;Platforms - Web browsers (chrome, opera, safari, firefox, etc.) and Desktop Platforms (windows, macOS, linux)&lt;/li&gt;
&lt;li&gt;Frameworks - Bootstrap&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Back-end Technologies
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;FastAPI: A high-performance web framework for building APIs &lt;/li&gt;
&lt;li&gt;SQLAlchemy: A comprehensive ORM and SQL toolkit&lt;/li&gt;
&lt;li&gt;Alembic: A lightweight database migration tool &lt;/li&gt;
&lt;li&gt;Pydantic: Provides data validation and settings management&lt;/li&gt;
&lt;li&gt;JWT Authentication: Secures user sessions with JSON Web Tokens&lt;/li&gt;
&lt;li&gt;OAuth 2.0: focuses on client developer simplicity while providing specific authorization flows for applications&lt;/li&gt;
&lt;li&gt;PostgreSQL: A robust, open-source object-relational database system&lt;/li&gt;
&lt;li&gt;Development and Testing&lt;/li&gt;
&lt;li&gt;Python’s unittest module&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  The Road Ahead
&lt;/h3&gt;

&lt;p&gt;As we look to the future, we have several exciting developments planned for AstraHealth:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Integration with Cal.com APIs: We are going to integrate Cal.com APIs for doctors so they can easily view and manage their appointments directly within the web app.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Mobile App Development: Our next major milestone is to develop a mobile app for AstraHealth. This will provide users with greater flexibility and accessibility, allowing them to book and attend virtual consultations on-the-go.&lt;/p&gt;

&lt;p&gt;Doctor Onboarding: We will begin onboarding qualified doctors onto the platform. This process will ensure that users have access to a diverse and experienced pool of healthcare professionals.&lt;/p&gt;

&lt;p&gt;Marketing Initiatives: We plan to collaborate with a marketing team to promote AstraHealth and attract new users. As part of this effort, we will offer free consultations to users for a limited period after onboarding. This initiative aims to build trust and demonstrate the value of our service to potential users.&lt;/p&gt;

&lt;p&gt;These future developments are designed to enhance the functionality, accessibility, and user experience of AstraHealth, positioning us for continued growth and success.&lt;/p&gt;

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

&lt;p&gt;AstraHealth is just the beginning of a transformative journey in virtual healthcare. The app still holds a lot of potential, and we are committed to working with experts to ensure it reaches fruition. Beyond virtual consultations, there are numerous opportunities to pivot and expand, such as integrating logistics for drug delivery and other healthcare services. With a solid foundation in place, the possibilities are endless. We are excited about the future and look forward to exploring these opportunities to create a comprehensive healthcare platform that serves the diverse needs of our users.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>python</category>
      <category>healthcare</category>
    </item>
    <item>
      <title>Behind the click: unraveling the mystery of the Internet</title>
      <dc:creator>nuru</dc:creator>
      <pubDate>Sun, 17 Mar 2024 16:04:23 +0000</pubDate>
      <link>https://forem.com/0xnuru/behind-the-click-unraveling-the-mystery-of-the-internet-3im7</link>
      <guid>https://forem.com/0xnuru/behind-the-click-unraveling-the-mystery-of-the-internet-3im7</guid>
      <description>&lt;p&gt;Ever wondered what happens behind the scenes when you type "google.com" and instantly see the Google homepage?&lt;br&gt;
This article will unravel the mystery in a way that's easy to understand, even for non-tech enthusiasts. Let's embark on a journey from typing a simple web address to accessing the vast world of the internet.&lt;/p&gt;

&lt;p&gt;When we enter a web address in our browser, we're essentially requesting a resource stored on another computer. This computer, technically referred to as a server, is always online and ready to respond to our requests.&lt;/p&gt;

&lt;p&gt;When we type "google.com" and hit enter, our browser first asks the question, "Who is google.com?" This process is known as a DNS lookup, where DNS stands for Domain Name System. Because computers identify each other on the internet with IP addresses, our browser needs to find the IP address of google.com. This is similar to what happens when you call 'Dad' on your phone. While the name 'Dad' is easy to remember, your phone can't actually call the name 'Dad'; it has to translate Dad to a phone number. Like phone numbers, IP addresses are not typically memorized.&lt;/p&gt;

&lt;h4&gt;
  
  
  How does our browser translate google.com to an IP address?
&lt;/h4&gt;

&lt;p&gt;In most cases, our browser first checks its own cache to see if it has a recently retrieved IP address for the domain name. This cache helps speed things up by avoiding redundant DNS lookups for frequently visited websites. If the cache doesn't have the address, the browser then checks the 'hosts file' to see if google.com is mapped to an IP address locally on our pc. If the IP address is not in the hosts file, the browser initiates a DNS lookup process to find the IP address for the domain name 'google.com'.&lt;/p&gt;

&lt;h4&gt;
  
  
  DNS lookup process
&lt;/h4&gt;

&lt;p&gt;Now that our browser is sure it doesn't have the IP address cached or stored locally on our PC, it begins a hunt for the IP address externally. It first queries our resolver, which is our ISP in most cases. If the resolver doesn't know the IP address, it asks the root servers. These root servers act like a phone book index. They point the resolver in the right direction for the Top-Level Domain (TLD) server it needs to contact next. There are 13 root servers in the world.&lt;/p&gt;

&lt;p&gt;Based on the TLD for the domain name, the resolver will query the appropriate TLD nameserver. For example, the ".com" TLD would have its own nameserver. &lt;br&gt;
The TLD nameserver then directs the resolver to the authoritative nameserver for the specific domain name "google.com." This authoritative nameserver holds the actual IP address for the domain name.&lt;/p&gt;

&lt;p&gt;Once the IP address is obtained, it is returned to the DNS resolver, which caches the result for future use. The browser also caches the IP address upon receipt. This helps improve performance by reducing the need for repeated DNS lookups for frequently accessed domain names.&lt;/p&gt;

&lt;p&gt;Now that our browser knows the IP address that google.com points to, it uses a set of protocols called TCP/IP (Transmission Control Protocol/Internet Protocol) to establish a connection with the server. Once connected, it sends what's called an HTTP request to the Google server. This request is the browser's way of asking the server to provide the content associated with google.com. The request we're making is quite interesting and encompasses enough details to write an entire article about!&lt;/p&gt;

&lt;p&gt;The Google server receives the request, processes it, and sends back a response. This response includes the content of the webpage (HTML code, multimedia images, etc.) formatted according to the browser's understanding.&lt;/p&gt;

&lt;p&gt;Our browser receives this response, downloads the HTML content, and begins to render it for us to see. This process involves interpreting the HTML code and displaying it as a visual representation—the web page we see every day.&lt;/p&gt;

&lt;h4&gt;
  
  
  If you're curious...
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;You can  Press &lt;code&gt;Ctrl + Shift + I&lt;/code&gt;  on Windows, &lt;code&gt;Command + Option + I&lt;/code&gt; on Mac, or use the &lt;code&gt;curl&lt;/code&gt; utility on Linux. This will let you see the data exchanged between your browser and the web server, including the HTML code that makes up the webpage. &lt;/li&gt;
&lt;li&gt;Typing in &lt;code&gt;216.58.215.174&lt;/code&gt; in your browser bypasses the need for a DNS lookup by your browser and takes you directly to google.com (Note: IP addresses can change, so this might not always be the exact IP address for Google's server).&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://x.com/0xNuru/status/1769138848171192794?s=20%20target="&gt;Here's&lt;/a&gt; a nifty trick you can do with '/etc/hosts' on Linux.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Our exploration has unveiled the intricate technology that transforms a simple web address into a fully loaded webpage in milliseconds. This remarkable feat is a testament to the extraordinary work of the many innovators who designed and continue to develop the Internet's infrastructure. These pioneers laid the groundwork for the global network that shapes our lives today. While this article focused on core concepts without delving into excessive technical details, it equips readers with a solid understanding of how the internet functions. This knowledge is valuable not just for software engineers and developers, but for anyone curious about the inner workings of the technology that has become an essential part of our world. Feel free share any additional insights or thoughts in the comments.&lt;/p&gt;

</description>
      <category>devops</category>
      <category>learning</category>
      <category>softwareengineering</category>
      <category>networking</category>
    </item>
  </channel>
</rss>
