<?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: Darius Cooper</title>
    <description>The latest articles on DEV Community by Darius Cooper (@dariusc16).</description>
    <link>https://dev.to/dariusc16</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%2F1284399%2Fb8a4a096-0bf2-4779-8f67-ce1b3b9fee8d.jpeg</url>
      <title>DEV Community: Darius Cooper</title>
      <link>https://dev.to/dariusc16</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dariusc16"/>
    <language>en</language>
    <item>
      <title>Progressive Web Apps</title>
      <dc:creator>Darius Cooper</dc:creator>
      <pubDate>Mon, 22 Jul 2024 13:40:30 +0000</pubDate>
      <link>https://dev.to/dariusc16/progressive-web-apps-5194</link>
      <guid>https://dev.to/dariusc16/progressive-web-apps-5194</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction to Progressive Web Apps&lt;/strong&gt;&lt;br&gt;
Progressive Web Apps (PWAs) represent a hybrid of regular web pages (or websites) and mobile applications. They leverage the latest web technologies to bring a native app-like experience to users without requiring them to download and install an application from an app store.&lt;/p&gt;

&lt;p&gt;PWAs are built using standard web technologies such as HTML (Hypertext Markup Language), CSS (Cascading Style Sheets), and JavaScript. They are designed to be responsive, meaning they adapt and work seamlessly on any device - whether it's a desktop, tablet, or smartphone.&lt;/p&gt;

&lt;p&gt;Key features that define PWAs include:&lt;/p&gt;

&lt;p&gt;Progressive Enhancement: PWAs are built with progressive enhancement as a core principle, meaning they should work for every user regardless of browser choice because they are built with progressive enhancement as a core principle.&lt;br&gt;
Users can access PWAs through URLs, which eliminates the need for complex installation processes.&lt;/p&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%2Ffy5mt5bf44ajmgo6jxos.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%2Ffy5mt5bf44ajmgo6jxos.png" alt="Picture for Progressive web app" width="800" height="504"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;History behind Progressive Web Apps&lt;/strong&gt;&lt;br&gt;
The concept of Progressive Web Apps was first introduced by Google engineers Alex Russell and Frances Berriman in 2015. They envisioned PWAs as a way to combine the reach of the web with the capabilities of native applications.&lt;/p&gt;

&lt;p&gt;The term "Progressive Web App" emphasizes the progressive enhancement approach to web development, where basic web pages or applications are enhanced with modern web technologies to provide a richer user experience. This concept builds on earlier ideas of responsive web design and mobile-first strategies, aiming to bridge the gap between web and native apps.&lt;/p&gt;

&lt;p&gt;Key milestones in the development and adoption of PWAs include:&lt;/p&gt;

&lt;p&gt;Service Workers: Introduced as a key component for PWAs, Service Workers are scripts that run in the background independently of web pages. They enable features such as offline functionality, push notifications, and background sync.&lt;br&gt;
App Manifest: The Web App Manifest is a JSON file that provides metadata about the PWA, such as its name, icons, and preferred display mode. This allows PWAs to be installed on the user's device and behave more like native applications.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are Progressive Web Apps used for?&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;PWAs serve various purposes across different industries:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Enhanced Web Experience: They provide a more app-like experience for users accessing content via a browser.&lt;br&gt;
Offline Capabilities: Users can access PWAs even without an internet connection, thanks to caching technologies.&lt;br&gt;
Engagement: PWAs can send push notifications to users, increasing engagement and retention.&lt;br&gt;
Cross-Platform Compatibility: They run on any device with a web browser, reducing the need for platform-specific development.&lt;/p&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%2Fs0mck4w99jwsgy5gp2aq.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%2Fs0mck4w99jwsgy5gp2aq.png" alt="Image for Progressive" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How does it compare to other Types of apps?&lt;/strong&gt;&lt;br&gt;
&lt;em&gt;PWAs vs. Native Apps vs. Hybrid Apps:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;PWAs offer cross-platform compatibility and are accessible via a URL, eliminating the need for installation. They provide a similar experience to native apps but without the app store distribution model.&lt;br&gt;
Native Apps are developed for specific platforms (iOS, Android) using platform-specific languages (Swift, Kotlin/Java). They typically offer superior performance and access to device features.&lt;br&gt;
Hybrid Apps combine web technologies (HTML, CSS, JS) with native code wrappers. They offer cross-platform compatibility but may have performance limitations compared to native apps.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Benefits of Progressive Web Apps&lt;/strong&gt;&lt;br&gt;
Accessibility: PWAs are accessible via a URL and do not require installation from an app store.&lt;br&gt;
Offline Functionality: They can work offline or with limited connectivity, caching content and data.&lt;br&gt;
Engagement: PWAs can send push notifications to re-engage users.&lt;br&gt;
Cost-Effective: Development and maintenance costs can be lower compared to native apps, especially for cross-platform solutions.&lt;br&gt;
Discoverability: Since PWAs are web-based, they are indexed by search engines, improving discoverability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summary&lt;/strong&gt;&lt;br&gt;
Progressive Web Apps combine the best features of web and mobile applications, providing a responsive, engaging, and reliable user experience across various devices and network conditions. They offer businesses and developers a cost-effective solution to reach a broader audience without compromising on functionality or user experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Soucres:&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://youtu.be/sFsRylCQblw?si=_o6uVfeZTHpgvwMF" rel="noopener noreferrer"&gt;https://youtu.be/sFsRylCQblw?si=_o6uVfeZTHpgvwMF&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/3ODP6tTpjqA?si=TsarjmoJoWShnP9C" rel="noopener noreferrer"&gt;https://youtu.be/3ODP6tTpjqA?si=TsarjmoJoWShnP9C&lt;/a&gt;&lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Progressive_web_app" rel="noopener noreferrer"&gt;https://en.wikipedia.org/wiki/Progressive_web_app&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps" rel="noopener noreferrer"&gt;https://developer.mozilla.org/en-US/docs/Web/Progressive_web_apps&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>SSL Networking</title>
      <dc:creator>Darius Cooper</dc:creator>
      <pubDate>Mon, 17 Jun 2024 13:59:32 +0000</pubDate>
      <link>https://dev.to/dariusc16/ssl-networking-15eh</link>
      <guid>https://dev.to/dariusc16/ssl-networking-15eh</guid>
      <description>&lt;p&gt;&lt;strong&gt;What is SSL?&lt;/strong&gt;&lt;br&gt;
SSL (Secure Sockets Layer) is a standard security protocol for establishing encrypted links between a web server and a browser in online communication. It ensures that all data transmitted between the web server and browser remains encrypted and secure. SSL uses encryption algorithms to scramble data in transit, preventing unauthorized access and tampering. This encryption process involves symmetric and asymmetric encryption methods to secure data integrity and privacy.&lt;/p&gt;

&lt;p&gt;Sources for more information:&lt;/p&gt;

&lt;p&gt;SSL.com - What is SSL/TLS?&lt;br&gt;
GlobalSign - Understanding SSL/TLS&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is SSL used for?&lt;/strong&gt;&lt;br&gt;
SSL is primarily used to secure sensitive data transmission over the internet, including login credentials, credit card information, and personal data. It ensures that data exchanged between users and websites/services cannot be intercepted by malicious entities. SSL is essential for e-commerce websites, online banking, email servers, and any application where secure data transfer is critical.&lt;/p&gt;

&lt;p&gt;Sources for more information:&lt;/p&gt;

&lt;p&gt;Symantec - What is SSL and what are SSL Certificates?&lt;br&gt;
&lt;strong&gt;Process of SSL&lt;/strong&gt;&lt;br&gt;
 The SSL (Secure Sockets Layer) handshake process is crucial for establishing a secure and encrypted connection between a client (such as a web browser) and a server. This process involves several key steps that ensure data confidentiality, integrity, and authentication.&lt;/p&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%2F4och0x9ynnnksysw6day.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%2F4och0x9ynnnksysw6day.png" width="600" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Firstly, the SSL handshake begins with the Client Hello phase. Here, the client initiates the connection by sending a message to the server, specifying the SSL/TLS versions it supports, a list of cipher suites (encryption algorithms), and a random number.&lt;/p&gt;

&lt;p&gt;Upon receiving the Client Hello message, the Server Hello phase follows. In response, the server selects the highest SSL/TLS protocol version and cipher suite that both the server and client support. The server then sends back its own message, including its digital certificate, which contains its public key and other information necessary for the client to authenticate the server's identity.&lt;/p&gt;

&lt;p&gt;Once the client receives the server's certificate, it proceeds to verify its authenticity during the Certificate Validation phase. This involves checking whether the certificate was issued by a trusted certificate authority (CA) and whether it has not expired or been revoked. If validation succeeds, the client continues the handshake process.&lt;/p&gt;

&lt;p&gt;Next, the Key Exchange phase takes place. During this step, the client generates a random pre-master secret and encrypts it with the server's public key from the server's certificate. Only the server can decrypt this pre-master secret using its private key. Both the client and server then independently derive session keys from the pre-master secret to be used for symmetric encryption of data transmitted during the session.&lt;/p&gt;

&lt;p&gt;Finally, with the session keys established, the Secure Data Exchange phase begins. Now, all subsequent data transmitted between the client and server is encrypted using symmetric encryption with the session keys. This encryption ensures that data exchanged during the session remains confidential and integral.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources for more information:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SSL2BUY - History of SSL&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Advantages and Disadvantages of SSL
Advantages:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Data Encryption:&lt;/em&gt; Ensures data privacy and integrity.&lt;br&gt;
Trust and Authentication: Verifies the identity of websites and servers.&lt;br&gt;
Protection from Attacks: Mitigates risks of data interception and tampering.&lt;br&gt;
SEO Benefits: Google considers SSL/TLS encryption as a ranking factor.&lt;/p&gt;

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

&lt;p&gt;Performance Overhead: SSL/TLS encryption can slightly slow down data transfer speeds.&lt;br&gt;
Cost: SSL certificates can incur costs for purchase and renewal.&lt;br&gt;
Configuration Complexity: Implementing and maintaining SSL/TLS configurations can be complex.&lt;br&gt;
Sources for more information:&lt;/p&gt;

&lt;p&gt;Digicert - Advantages and Disadvantages of SSL&lt;br&gt;
Additional Resources&lt;br&gt;
For further reading and in-depth understanding of SSL/TLS and its implementation, consider these resources:&lt;/p&gt;

&lt;p&gt;YouTube - SSL Explained by Thycotic (Video explanation of SSL/TLS)&lt;br&gt;
Mozilla - SSL Configuration Generator (Tool for generating SSL configurations)&lt;br&gt;
OWASP - Transport Layer Protection Cheat Sheet (Guidelines for secure SSL/TLS implementation)&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Websocket</title>
      <dc:creator>Darius Cooper</dc:creator>
      <pubDate>Mon, 10 Jun 2024 03:30:39 +0000</pubDate>
      <link>https://dev.to/dariusc16/websocket-4chm</link>
      <guid>https://dev.to/dariusc16/websocket-4chm</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%2Fr11nzwppzrb7elv27roy.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%2Fr11nzwppzrb7elv27roy.png" alt="Websocket picture" width="800" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introduction to WebSockets&lt;/strong&gt;&lt;br&gt;
WebSockets represent a significant advancement in web technology, enabling real-time, bidirectional communication between clients and servers. Unlike traditional HTTP requests, which are unidirectional and stateless, WebSockets provide persistent connections that facilitate instantaneous data exchange.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How WebSockets work?&lt;/strong&gt;&lt;br&gt;
At its core, WebSocket is a protocol that establishes a full-duplex communication channel over a single TCP connection. This means that both the client and the server can send and receive data simultaneously without the overhead of multiple HTTP requests. The initial connection is established through a standard HTTP handshake, after which the connection is upgraded to the WebSocket protocol.&lt;/p&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%2Fpluxc5fr2tytzkfcqcx0.jpg" 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%2Fpluxc5fr2tytzkfcqcx0.jpg" alt="Websocket image" width="474" height="123"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of WebSockets&lt;/strong&gt;&lt;br&gt;
One of the key advantages of WebSockets is its low latency and high throughput, making it ideal for applications that require real-time updates, such as chat applications, online gaming, financial trading platforms, and collaborative tools. Additionally, WebSockets reduce server load by eliminating the need for frequent polling, leading to more efficient use of network resources.&lt;/p&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%2Fvuzk9pawr32uaq5k0g5i.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%2Fvuzk9pawr32uaq5k0g5i.png" alt="Websocket, and HTTP comparison" width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Implementing WebSockets&lt;/strong&gt;&lt;br&gt;
Implementing WebSockets in web applications typically involves using WebSocket APIs provided by modern web browsers, along with server-side WebSocket libraries or frameworks. Popular choices include Socket.IO, ws (Node.js WebSocket library), and Django Channels (for Python-based applications). With these tools, developers can easily integrate WebSocket functionality into their applications and harness the power of real-time communication.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WebSocket Security Considerations&lt;/strong&gt;&lt;br&gt;
While WebSockets offer many benefits, it's essential to consider security implications when implementing them in web applications. Cross-origin resource sharing (CORS), authentication, and encryption are critical aspects of WebSocket security. Additionally, developers should be aware of potential security vulnerabilities, such as denial-of-service (DoS) attacks, message tampering, and injection attacks, and take appropriate measures to mitigate these risks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Future of WebSockets&lt;/strong&gt;&lt;br&gt;
As web technology continues to evolve, WebSockets are expected to play an increasingly significant role in enabling interactive and immersive web experiences. With the advent of technologies like WebRTC (Real-Time Communication) and HTTP/3, which incorporates features like multiplexing and connection reuse, the future looks bright for real-time communication on the web.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What are WebSocket's used for?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multiplayer online games&lt;/li&gt;
&lt;li&gt;Live sports scores and updates&lt;/li&gt;
&lt;li&gt;Collaborative editing and documenting sharing&lt;/li&gt;
&lt;li&gt;Financial trading platforms&lt;/li&gt;
&lt;li&gt;Live streaming and broadcasting&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>GRAPHQL</title>
      <dc:creator>Darius Cooper</dc:creator>
      <pubDate>Mon, 27 May 2024 13:57:36 +0000</pubDate>
      <link>https://dev.to/dariusc16/graphql-38ei</link>
      <guid>https://dev.to/dariusc16/graphql-38ei</guid>
      <description>&lt;p&gt;&lt;strong&gt;Introduction:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GraphQL is a query language for APIs and a runtime for executing those queries.&lt;br&gt;
It was developed by Facebook in 2012 and open-sourced in 2015.&lt;br&gt;
GraphQL allows clients to request only the data they need, reducing over-fetching and under-fetching.&lt;br&gt;
It's gaining popularity due to its flexibility and efficiency in fetching and manipulating data.&lt;/p&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%2Fzxq2l40x19dsaga82bm6.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%2Fzxq2l40x19dsaga82bm6.png" alt="Graphql" width="800" height="606"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is GraphQL?:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;GraphQL is a query language that enables clients to request exactly the data they need from the server.&lt;br&gt;
Unlike REST APIs, where clients are limited to predefined endpoints, GraphQL provides a single endpoint for flexible data retrieval.&lt;br&gt;
Key features include a strongly typed schema, introspection, and the ability to traverse relationships between data entities.&lt;/p&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%2Fiau9dpcexs0jqj8keh7i.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%2Fiau9dpcexs0jqj8keh7i.png" alt="Another image for graphql" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;How does GraphQL work?:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
GraphQL operates through a schema that defines the types and relationships of the available data.&lt;br&gt;
Clients send queries to the GraphQL server specifying the exact data they require.&lt;br&gt;
Queries can retrieve nested data and multiple resources in a single request.&lt;br&gt;
Mutations allow clients to modify data on the server, while subscriptions enable real-time data updates.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Benefits of GraphQL:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
GraphQL reduces network overhead by allowing clients to request only the data they need.&lt;br&gt;
It improves frontend development efficiency by eliminating over-fetching and under-fetching issues.&lt;br&gt;
GraphQL schemas provide a clear contract between frontend and backend developers, promoting collaboration and reducing API versioning issues.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Use Cases:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Companies like GitHub, Shopify, and Airbnb have adopted GraphQL to improve their API performance and developer experience.&lt;br&gt;
GitHub's adoption of GraphQL led to a significant reduction in API response times and improved caching strategies.&lt;br&gt;
Shopify uses GraphQL to power its mobile app, enabling fast and efficient data fetching for its merchants.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Getting Started with GraphQL:&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
Popular GraphQL client libraries include Apollo Client for JavaScript and Relay for React.&lt;br&gt;
Server-side implementations like Apollo Server and GraphQL Yoga simplify building GraphQL APIs.&lt;br&gt;
Resources like the GraphQL documentation and tutorials on platforms like egghead.io provide guidance for learning GraphQL.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;Challenges and Considerations:&lt;br&gt;
*&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;While GraphQL offers many benefits, it also introduces complexity, especially in managing the schema and optimizing queries.&lt;br&gt;
Caching and authorization can be challenging to implement efficiently in a GraphQL environment.&lt;br&gt;
Careful schema design and performance monitoring are essential for scaling GraphQL APIs.&lt;/p&gt;

&lt;p&gt;GraphQL offers a modern approach to API development, providing flexibility, efficiency, and improved developer experience.&lt;br&gt;
By understanding its principles and best practices, developers can harness the power of GraphQL to build better APIs and applications.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Squlite</title>
      <dc:creator>Darius Cooper</dc:creator>
      <pubDate>Mon, 22 Apr 2024 13:59:00 +0000</pubDate>
      <link>https://dev.to/dariusc16/squlite-435h</link>
      <guid>https://dev.to/dariusc16/squlite-435h</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%2Fzyvvtawgzdjkc1elz68m.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%2Fzyvvtawgzdjkc1elz68m.png" alt="Squlite picture for blog" width="800" height="308"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is Sqlite?&lt;/strong&gt;&lt;br&gt;
SQlite is an embedded SQL database engine. Unlike most other SQL databases, SQlite does not have a separate server process. SQlite reads and writes directly to ordinary disk files. A complete SQL database with multiple tables, indices, triggers, and views, is contained in a single disk file. &lt;br&gt;
                The database file format is cross-platform - you can freely copy a database between 32-bit and 64-bit systems or between big-endian and little-endian architectures. These features make SQlite a popular choice as an Application File Format. SQlite database files are a recommended storage format by the US Library of Congress. Think of SQlite not as a replacement for Oracle but as a replacement for fopen()&lt;/p&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%2Fmyums0vm857lernqo1xv.jpg" 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%2Fmyums0vm857lernqo1xv.jpg" alt="Random coding blog" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why use Sqluite?&lt;/strong&gt;&lt;br&gt;
SQlite is used to develop embedded software for devices like televisions, cell phones, cameras, etc. It can manage low to medium-traffic HTTP requests. SQlite can change files into smaller size archives with lesser metadata. SQlite is used as a temporary dataset to get processed with some data within an application&lt;/p&gt;

&lt;p&gt;Supported by an international team of developers who work on SQlite full-time. The developers continue to expand the capabilities of SQlite and enhance its reliability and performance while maintaining backwards compatibility with the published interface spec, SQL syntax, and database file format. The source code is absolutely free to anybody who wants it, but professional support is also available.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How is SQlite vs MySQL?&lt;/strong&gt;&lt;br&gt;
Ultimately, SQlite is a lightweight solution designed for small projects that will only have one user, while MySQL works for projects of all sizes and supports multiple users. Due to these differences, MySQL has become the go-to for RDBMS solutions.&lt;/p&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%2Fr9j53tbxvym1w8rvzlp9.jpg" 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%2Fr9j53tbxvym1w8rvzlp9.jpg" alt="Image description" width="290" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The disadvantages of usiing SQlite?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Limited Scalability:&lt;/strong&gt;&lt;br&gt;
One of the major disadvantages of using SQlite is its limited scalability. It is designed to handle small to medium-sized databases, and its performance degrades when dealing with large amounts of data or multiple concurrent users.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No Built-in Security:&lt;/strong&gt;&lt;br&gt;
Another important limitation of SQlite is its lack of built-in security mechanisms. It does not offer any security features, such as encryption, user authentication, or access control. This leaves the database vulnerable to security threats, such as SQL injection attacks, which can compromise the integrity and confidentiality of the data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No stored procedures or triggers:&lt;/strong&gt;&lt;br&gt;
SQlite does not support stored procedures or triggers, which limits its functionality and increase the complexity of implementing certain features without an automatism on the database level.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Soruces&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://www.sqlite.org/about.html"&gt;https://www.sqlite.org/about.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.greengeeks.com/blog/sqlite-vs-mysql/#:%7E:text=Ultimately%2C%20SQLite%20is%20a%20lightweight,go%2Dto%20for%20RDBMS%20solutions"&gt;https://www.greengeeks.com/blog/sqlite-vs-mysql/#:~:text=Ultimately%2C%20SQLite%20is%20a%20lightweight,go%2Dto%20for%20RDBMS%20solutions&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Express</title>
      <dc:creator>Darius Cooper</dc:creator>
      <pubDate>Mon, 15 Apr 2024 13:56:14 +0000</pubDate>
      <link>https://dev.to/dariusc16/express-4ajd</link>
      <guid>https://dev.to/dariusc16/express-4ajd</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%2F2eupbozjrd8twpwn9nkw.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%2F2eupbozjrd8twpwn9nkw.png" alt="Art for Express.Js" width="800" height="465"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is an Express Server?&lt;/strong&gt;&lt;br&gt;
Express is a node js web application framework for building web and mobile applications. It is used to build a single page, multipage, and hybrid web application. It's a layer built on top of the Node js that helps manage servers and routes.&lt;/p&gt;

&lt;p&gt;It also provides a command-line interface tool (CLI) called Node Package Manager (NPM), where developers can source for developed packages. It also forces developers to follow the Don’t Repeat Yourself (DRY) principle.&lt;/p&gt;

&lt;p&gt;The DRY principle is aimed at reducing the repetition of software patterns, replacing it with abstractions, or using data normalizations to avoid redundancy.&lt;/p&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%2F4fvbur9o0bfjwrovo75e.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%2F4fvbur9o0bfjwrovo75e.png" alt="Art for Express" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why use Express Js?&lt;/strong&gt;&lt;br&gt;
Was created to make APIs and web applications with ease.&lt;br&gt;
It saves a lot of coding time almost by half and still makes web and mobile applications are efficient. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;High performance&lt;/li&gt;
&lt;li&gt;Fast&lt;/li&gt;
&lt;li&gt;Unopinionated&lt;/li&gt;
&lt;li&gt;Lightweight&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Middle Ware&lt;/strong&gt;&lt;br&gt;
Middleware is a request handler that has access to the application's request-response cycle.&lt;/p&gt;

&lt;p&gt;-Routing&lt;br&gt;
It refers to how an application's endpoint's URLs respond to client requests.&lt;/p&gt;

&lt;p&gt;Templating&lt;br&gt;
Creates a html template file with less code and render HTML Pages&lt;/p&gt;

&lt;p&gt;Debugging &lt;br&gt;
Express makes it easier as it identifies the exact part where bugs are &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Advantages of using Express with Node.js?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Express is Unopinionated, and we can customize it.&lt;/li&gt;
&lt;li&gt;For request handling, we can use Middleware.&lt;/li&gt;
&lt;li&gt;A single language is used for &lt;a href="https://www.simplilearn.com/full-stack-vs-front-end-vs-back-end-developers-article"&gt;frontend and backend development.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Express is fast to link it with databases like MySQL, MongoDB, etc.&lt;/li&gt;
&lt;li&gt;​​Express allows dynamic rendering of HTML Pages based on passing arguments to templates.
It is the backend part of something known as the MEVN stack.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The MEVN is a free and open-source JavaScript software stack for building dynamic websites and web applications that has the following components:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MongoDB:&lt;/strong&gt; MongoDB is the standard NoSQL database&lt;br&gt;
&lt;strong&gt;Express.js:&lt;/strong&gt; The default web applications framework for building web apps&lt;br&gt;
&lt;strong&gt;Vue.js:&lt;/strong&gt; The JavaScript progressive framework used for building front-end web applications&lt;br&gt;
&lt;strong&gt;Node.js:&lt;/strong&gt; JavaScript engine used for scalable server-side and networking applications.&lt;/p&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%2F54qygpd0d56dcejrkwrc.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%2F54qygpd0d56dcejrkwrc.png" alt="Art of servers" width="800" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What is it used for?&lt;/strong&gt;&lt;br&gt;
Express.js is used for a wide range of things in the JavaScript/Node.js ecosystem — you can develop applications, API endpoints, routing systems, and frameworks with it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Single-Page Applications&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Real-Time Collaboration Tools&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Streaming Applications&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;Fintech Applications&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Limitations of Express Js&lt;/strong&gt;&lt;br&gt;
Sometimes, there is no structural way to organize things, and the code becomes non-understandable.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There are so many issues with callbacks.&lt;/li&gt;
&lt;li&gt;The error messages that will come are challenging to understand.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Companies That Are Using Express JS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt; Netflix &lt;/li&gt;
&lt;li&gt; IBM &lt;/li&gt;
&lt;li&gt; ebay&lt;/li&gt;
&lt;li&gt; Uber&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://kinsta.com/knowledgebase/what-is-express-js/#fintech-applications"&gt;https://kinsta.com/knowledgebase/what-is-express-js/#fintech-applications&lt;/a&gt;&lt;br&gt;
&lt;a href="https://youtu.be/0QRFOsrBtXw?si=emIWngL4bcR7hVeD"&gt;https://youtu.be/0QRFOsrBtXw?si=emIWngL4bcR7hVeD&lt;/a&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>javascript</category>
      <category>postgres</category>
      <category>webdev</category>
    </item>
    <item>
      <title>PostgreSQL</title>
      <dc:creator>Darius Cooper</dc:creator>
      <pubDate>Mon, 08 Apr 2024 13:52:36 +0000</pubDate>
      <link>https://dev.to/dariusc16/postgresql-fi7</link>
      <guid>https://dev.to/dariusc16/postgresql-fi7</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%2Fmsamhnvc7dmv91172v5p.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%2Fmsamhnvc7dmv91172v5p.png" alt="Elephant Coding" width="800" height="514"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;What is PostgreSQL?&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;"A powerful, open source object-relational database system that uses and extends the SQUL language combined with many features that safely store and scale the most complicated data workloads. PostgreSQL runs on all major operating systems, has been ACID-compliant since 2011, and has powerful add-ons such as the popular PostGIS geospatial database extender."&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Why use PostgreSQL?&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;"Comes with many features aimed to help developers build fault-tolerant environments, and help you manage your data no matter how big or small the dataset." &lt;/li&gt;
&lt;li&gt;"You can define your own own data types, build custom functions, even write code from different programming languages without recompiling your database!"&lt;/li&gt;
&lt;li&gt;"Tries to confirm with the SQL standard where such conformance does not contradict traditional features or could lead to poor architectural decisions."&lt;/li&gt;
&lt;/ul&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%2F8c0jvo1nr4kr3jn13kzo.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%2F8c0jvo1nr4kr3jn13kzo.png" alt="Datatypes of PostgreSQL" width="694" height="511"&gt;&lt;/a&gt;&lt;/p&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%2F6ikl2xtfngsl0gdji81p.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%2F6ikl2xtfngsl0gdji81p.png" alt="Features for PostgreSQL" width="612" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Features Found in PostgreSQL&lt;/strong&gt;
&lt;/h4&gt;

&lt;h6&gt;
  
  
  - &lt;strong&gt;Data Types&lt;/strong&gt;
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;- Primitives: Integer, Numeric, String, Boolean&lt;/li&gt;
&lt;li&gt;Structured: Date/Time, Array, Range / Multirange, UUID&lt;/li&gt;
&lt;li&gt;Document: JSON/JSONB, XML, Key-value (Hstore)&lt;/li&gt;
&lt;li&gt;Geometry: Point, Line, Circle, Polygon&lt;/li&gt;
&lt;li&gt;Customizations: Composite, Custom Types&lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  - &lt;strong&gt;Data Integrity&lt;/strong&gt;
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;- UNIQUE, NOT NULL&lt;/li&gt;
&lt;li&gt;Primary Keys&lt;/li&gt;
&lt;li&gt;Foreign Keys&lt;/li&gt;
&lt;li&gt;Exclusion Constraints&lt;/li&gt;
&lt;li&gt;Explicit Locks, Advisory Locks&lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  - &lt;strong&gt;Concurrency, Performance&lt;/strong&gt;
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;- Indexing: B-tree, Multicolumn, Expressions, Partial&lt;/li&gt;
&lt;li&gt;Advanced Indexing: GiST, SP-Gist, KNN Gist, GIN, BRIN, Covering indexes, Bloom filters&lt;/li&gt;
&lt;li&gt;Sophisticated query planner / optimizer, index-only scans, multicolumn statistics&lt;/li&gt;
&lt;li&gt;Transactions, Nested Transactions (via savepoints)&lt;/li&gt;
&lt;li&gt;Multi-Version concurrency Control (MVCC)&lt;/li&gt;
&lt;li&gt;Parallelization of read queries and building B-tree indexes&lt;/li&gt;
&lt;li&gt;Table partitioning&lt;/li&gt;
&lt;li&gt;All transaction isolation levels defined in the SQL standard, including Serializable&lt;/li&gt;
&lt;li&gt;Just-in-time (JIT) compilation of expressions&lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  - &lt;strong&gt;Reliability, Disaster Recovery&lt;/strong&gt;
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;- - Write-ahead Logging (WAL)

&lt;ul&gt;
&lt;li&gt;Replication: Asynchronous, Synchronous, Logical&lt;/li&gt;
&lt;li&gt;Point-in-time-recovery (PITR), active standbys&lt;/li&gt;
&lt;li&gt;Tablespaces&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  - &lt;strong&gt;Security&lt;/strong&gt;
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;Authentication: GSSAPI, SSPI, LDAP, SCRAM-SHA-256, Certificate, and more

&lt;ul&gt;
&lt;li&gt;Robust access-control system&lt;/li&gt;
&lt;li&gt;Column and row-level security&lt;/li&gt;
&lt;li&gt;Multi-factor authentication with certificates and an additional method&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  - &lt;strong&gt;Extensibility&lt;/strong&gt;
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;- Stored functions and procedures&lt;/li&gt;
&lt;li&gt;Procedural Languages: PL/pgSQL, Perl, Python, and Tcl. There are other languages available through extensions, e.g. Java, JavaScript (V8), R, Lua, and Rust&lt;/li&gt;
&lt;li&gt;SQL/JSON constructors and path expressions&lt;/li&gt;
&lt;li&gt;Foreign data wrappers: connect to other databases or streams with a standard SQL interface&lt;/li&gt;
&lt;li&gt;Customizable storage interface for tables&lt;/li&gt;
&lt;li&gt;Many extensions that provide additional functionality, including PostGIS&lt;/li&gt;
&lt;/ul&gt;

&lt;h6&gt;
  
  
  - &lt;strong&gt;Internationalism, Text Search&lt;/strong&gt;
&lt;/h6&gt;

&lt;ul&gt;
&lt;li&gt;- Support for international character sets, e.g. through ICU collations&lt;/li&gt;
&lt;li&gt;Case-insensitive and accent-insensitive collations&lt;/li&gt;
&lt;li&gt;Full-text search&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;History&lt;/strong&gt;
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;"The origins of PostgreSQL date back to 1986 as part of the POSTGRES project at the University of California at Berkeley and has more than 35 years of active development on the core platform."&lt;/li&gt;
&lt;li&gt;"Derived from the POSTGRES package, with decades of development behind it, it's now the most advanced open-source database available anywhere."&lt;/li&gt;
&lt;li&gt;"The POSTGRES project was sponsored by the Defense Advanced Research Projects Agency(DARPA), the Army Research Office(ARO), the National Science Foundation (NSF), and ESL Federal Credit Union."
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;u&gt;&lt;strong&gt;Has been used to implement many different research and production applications.&lt;/strong&gt;&lt;/u&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Financial analysis system&lt;/li&gt;
&lt;li&gt;A jet engine**&lt;/li&gt;
&lt;li&gt;Performance monitoring package&lt;/li&gt;
&lt;li&gt;An asteroid tracking database&lt;/li&gt;
&lt;li&gt;Medical information database&lt;/li&gt;
&lt;li&gt;Several geographic information systems&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;General Outlook&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;"PostgreSQL has been proven to be highly scalable both in the sheer quantity of data it can manage and in the number of concurrent users it can accommodate."&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>database</category>
    </item>
    <item>
      <title>Higher Order Functions</title>
      <dc:creator>Darius Cooper</dc:creator>
      <pubDate>Fri, 01 Mar 2024 17:45:02 +0000</pubDate>
      <link>https://dev.to/dariusc16/higher-order-functions-1m48</link>
      <guid>https://dev.to/dariusc16/higher-order-functions-1m48</guid>
      <description>&lt;p&gt;&lt;strong&gt;&lt;u&gt;What is higher order functions? Why should you we use them? &lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A higher order function is a function that either takes in or returns a function. Shortening the time, it would take while keeping the code down to one 1 or two lines. The code becomes more flexible, and reusable. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Higher Order Functions in JavaScript&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://blog.javascripttoday.com/blog/higher-order-functions-in-javascript/"&gt;https://blog.javascripttoday.com/blog/higher-order-functions-in-javascript/&lt;/a&gt;&lt;br&gt;
Replit breakdown - &lt;a href="https://replit.com/@DariusC16/Building-map-reduce-filter-forEach-2#index.js"&gt;https://replit.com/@DariusC16/Building-map-reduce-filter-forEach-2#index.js&lt;/a&gt;&lt;/p&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%2F05jcg7miynoq4hy4mvdf.jpg" 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%2F05jcg7miynoq4hy4mvdf.jpg" alt="Picture showing all the functions with numbers" width="474" height="266"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Higher Order Function .map()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Map takes in 2 arguments, a collection and callback function. Collection will be tested to see if it's an array or object. Whichever the collection, will be iterated through, then invoke the callback function on each item, following with any condition placed for the callback function. Afterwards an array is returned with each iteration pushed inside.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var mapArr = [
  {
  name: 'Godzilla'
  },
  {
    name: 'Destroyah'
  }
]
 const mapExample = function(array) {
   // USING MAP FUNCTION
    var a = array.map(function(element) {
      // NOW LOOPING THROUGH ARRAY
       // IF OBJECT DOESN'T HAVE CREATURE SUMMARY
        if (!element["creatureSum"]) {
          // CREATE PROPERTY IN OBJECT
           element["creatureSum"] = 'Monster';
        }
      return element;
    })
   return a;
 }
console.log(mapExample(mapArr)); /* Output =&amp;gt; [
  { name: 'Godzilla', creatureSum: 'Monster' },
  { name: 'Destroyah', creatureSum: 'Monster' }
] */
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fa0kvlypve6dcadavfr8r.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%2Fa0kvlypve6dcadavfr8r.png" alt="Showing all three functions with fruits" width="800" height="400"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Higher Order Function .filter()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Filter takes in 2 arguments, an array, and callback function. Looping through the array, each item is passed into the callback function, producing a boolean value. Whatever the condition set, if the current element in the array passes true, it will be pushed into an array return value. Only those values that pass true will be returned in the array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var filterArr = [
  {
  name: 'Godzilla'
  },
  {
    name: 'Destroyah'
  }
]
 const filterExample = function(array) {
   // USING FILTER FUNCTION
    var a = array.filter(function(element) {
      // NOW LOOPING THROUGH ARRAY
       // IF OBJECT NAME IS GODZILLA
        if (element.name === 'Godzilla') {
          // RETURN OBJECT
           return element;
        }
    })
   return a;
 }
console.log(filterExample(filterArr)); /* Output =&amp;gt; [
  { name: 'Godzilla'}
] */
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fd08emdklbutje5wtddce.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%2Fd08emdklbutje5wtddce.png" alt="Showing all three functions with fast-food" width="800" height="602"&gt;&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Higher Order Function .reduce()&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Reduce takes 3 arguments, an array, callback function, and seed. Seed being optional, however can affect the code for specific problems. If no seed is defined, then a variable of result will be defined and automatically assign itself to the first element in the array. If a seed is assigned, it's the return value of the datatype desired to be returned. While iterating through the array, the result will be reassigned the invoked callback function. Taking 4 arguments, the result, the current array element, the index, and the array. The result will be the accumulation of all the elements in the array to pass the condition set.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;var reduceArr = [
  {
  name: 'Godzilla'
  },
  {
    name: 'Destroyah'
  }
]
 const reduceExample = function(array) {
   // USING REDUCE FUNCTION
    var a = array.reduce(function(acc, curr) {
      // NOW LOOPING THROUGH ARRAY
       // IF OBJECT NAME IS TRUTHY
        if (curr.name) {
          // PUSH ELEMENT NAME INTO ACCUMULATOR
           acc.push(curr.name);
        }
      // RETURNING ACCUMULATOR
       return acc;
    }, [])
   return a;
 }
console.log(reduceExample(reduceArr)); /* Output =&amp;gt; [ 'Godzilla', 'Destroyah' ] */
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;br&gt;
Using these higher order functions can make things easier in a more structured manner. Slightly complex than your standard loop variations, but get the job done much more efficiently.&lt;br&gt;
The filter function should be used when targeting specific values that meet the requirements for what you set. The map function should be used when creating code that affects all elements in the array and returning them. The reduce function can be used to do the same as filter, and map, just more effectively.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>learning</category>
    </item>
  </channel>
</rss>
