<?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: kamasuPaul</title>
    <description>The latest articles on DEV Community by kamasuPaul (@kamasupaul).</description>
    <link>https://dev.to/kamasupaul</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%2F663133%2F2b832824-7901-4ac3-bc0b-3c4480340616.jpeg</url>
      <title>DEV Community: kamasuPaul</title>
      <link>https://dev.to/kamasupaul</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kamasupaul"/>
    <language>en</language>
    <item>
      <title>WSO2 Key Manager types</title>
      <dc:creator>kamasuPaul</dc:creator>
      <pubDate>Thu, 11 May 2023 09:41:17 +0000</pubDate>
      <link>https://dev.to/kamasupaul/wso2-key-manager-types-36ao</link>
      <guid>https://dev.to/kamasupaul/wso2-key-manager-types-36ao</guid>
      <description>&lt;p&gt;This is a list of key manager types that can be used as identity providers in the the wso2 api manager. Am listing them here incase anyone is looking for them.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AuthO&lt;/li&gt;
&lt;li&gt;Azure AD&lt;/li&gt;
&lt;li&gt;Wso2 Identity Server&lt;/li&gt;
&lt;li&gt;Forgerock&lt;/li&gt;
&lt;li&gt;KeyCloak&lt;/li&gt;
&lt;li&gt;PingFederate&lt;/li&gt;
&lt;li&gt;Okta&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>wso2</category>
      <category>keymanager</category>
    </item>
    <item>
      <title>Nginx cheatcheat. List of mostly commonly used nginx commands</title>
      <dc:creator>kamasuPaul</dc:creator>
      <pubDate>Fri, 21 Oct 2022 10:20:53 +0000</pubDate>
      <link>https://dev.to/kamasupaul/nginx-cheatcheat-list-of-mostly-commonly-used-nginx-commands-2ond</link>
      <guid>https://dev.to/kamasupaul/nginx-cheatcheat-list-of-mostly-commonly-used-nginx-commands-2ond</guid>
      <description>&lt;p&gt;&lt;strong&gt;Nginx&lt;/strong&gt; is known for its use as a web server and a reverse proxy.&lt;br&gt;
It has several commands that can be useful when deploying new sites.&lt;/p&gt;

&lt;p&gt;I have written the most commonly used nginx commands list sucthat i or any other person can easily look them up whenever needed.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Install nginx command:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;sudo apt update&lt;br&gt;
sudo apt install nginx&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Check if nginx is running:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;systemctl status nginx&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Check for syntax errors in nginx files:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;nginx -t&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  4. Restart nginx:
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;sudo systemctl restart nginx&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  5. Create a symlink from sites-available to sites-enabled
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;sudo ln -s /etc/nginx/sites-available/**your_domain** /etc/nginx/sites-enabled/&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  6. Start Nginx :
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;sudo systemctl stop nginx&lt;/code&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  7. Stop nginx :
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;sudo systemctl start nginx&lt;/code&gt;&lt;/p&gt;

</description>
      <category>nginx</category>
    </item>
    <item>
      <title>"Connecting to emulator" taking long in android studio solution</title>
      <dc:creator>kamasuPaul</dc:creator>
      <pubDate>Tue, 27 Sep 2022 04:20:01 +0000</pubDate>
      <link>https://dev.to/kamasupaul/connecting-to-emulator-taking-long-in-android-studio-solution-pd1</link>
      <guid>https://dev.to/kamasupaul/connecting-to-emulator-taking-long-in-android-studio-solution-pd1</guid>
      <description>&lt;p&gt;You have probably installed a new version of android studio, and then all of a sudden the emulator is not opening . It keeps displaying the message &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Connecting to emulator.&lt;br&gt;
and this is probably taking longer than usual.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I faced this same issue after installing anew version of android studio. I tried the following solutions from stack overflow&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Creating a new emulator&lt;/li&gt;
&lt;li&gt;Cold booting the emulator&lt;/li&gt;
&lt;li&gt;Wiping the emulator data&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;All these solutions did not work.&lt;/p&gt;

&lt;h2&gt;
  
  
  The solution.
&lt;/h2&gt;

&lt;p&gt;So how did i solve this problem of emulator taking long and most importantly how can you solve it as well.&lt;/p&gt;

&lt;p&gt;The emulator is taking long to connect mostly probably because your android emulator sdk is out of date.&lt;br&gt;
So the solution to uninstall it or update. &lt;br&gt;
To do this, head over to android studio&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;From the toolbar of android studio open &lt;code&gt;Tools&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Then select &lt;code&gt;Sdk manager&lt;/code&gt; from the dropdown menu&lt;/li&gt;
&lt;li&gt;The android sdk section should appear.&lt;/li&gt;
&lt;li&gt;Under the 'Android sdk' section, select SDK tools tab.&lt;/li&gt;
&lt;li&gt;Under the &lt;code&gt;SDK tools&lt;/code&gt; tab look for the android emulator&lt;/li&gt;
&lt;li&gt;Uncheck the box appearing besides the android emulator and &lt;code&gt;click apply button&lt;/code&gt; to unistall the emulator&lt;/li&gt;
&lt;li&gt;After uninstalling, it should now display as not installed. &lt;code&gt;check the box again&lt;/code&gt; to &lt;code&gt;install&lt;/code&gt; the emulator again. After installation it should appear as installed. Close android studio and open it again&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;And now when you click &lt;code&gt;run&lt;/code&gt; the emulator should open as expected.&lt;br&gt;
Hopefully this solves your problem as it solved mine.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to add default sort to q-table in quasar framework</title>
      <dc:creator>kamasuPaul</dc:creator>
      <pubDate>Thu, 08 Sep 2022 12:00:57 +0000</pubDate>
      <link>https://dev.to/kamasupaul/how-to-add-default-sort-to-q-table-in-quasar-framework-1e51</link>
      <guid>https://dev.to/kamasupaul/how-to-add-default-sort-to-q-table-in-quasar-framework-1e51</guid>
      <description>&lt;p&gt;Hi, my name is kamasu paul. Today am going to share with you about the &lt;strong&gt;default sort of q-table&lt;/strong&gt; in the &lt;a href="https://quasar.dev/"&gt;quasar framework&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;Of recent, I found out I needed to have the quasar table sorted using a specific column on my table. My goal was to sort the table &lt;br&gt;
 and have the most recent items appear on top. Looking at the documentation I couldn't easily figure out how to achieve it.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Solution.
&lt;/h2&gt;

&lt;p&gt;After several searches, it turns out&lt;br&gt;
The solution is to use the &lt;code&gt;pagination&lt;/code&gt; attribute and add it to the table using &lt;code&gt;v-model:pagination="pagination"&lt;/code&gt;&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;q-table 
row-key="id" 
:rows="transactionsList" 
:columns="columns"
v-model:pagination="pagination"
&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then in the pagination object, you specify the &lt;code&gt;sortBy&lt;/code&gt; attribute&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;  data() {
    return {
      //... 
      pagination: {
        rowsPerPage: 25,
        sortBy: 'updated_at',
        descending: true,
      }
      //... other properties
    }
  },
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For my case, the column is named &lt;code&gt;updated_at&lt;/code&gt; and it keeps a javascript date timestamp. &lt;br&gt;
To use a custom sort function add the &lt;code&gt;sort&lt;/code&gt; function to the column you want to sort in the columns array, for my case &lt;code&gt;updated_at&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const columns = [
  {
    name: "updated_at", label: "Date Updated",
    field: "updated_at", sortable: true,
    sort: (a, b) =&amp;gt; a - b
  },
  // ... other columns
];
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For my case it's an inline function &lt;code&gt;sort: (a, b) =&amp;gt; a - b&lt;/code&gt; that compares two timestamps from two rows to sort them.&lt;/p&gt;

&lt;p&gt;That's all. Hope it helps&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to solve: Too many redirects website error after adding SSL(lets encrypt) to nginx server?</title>
      <dc:creator>kamasuPaul</dc:creator>
      <pubDate>Sat, 27 Aug 2022 09:56:27 +0000</pubDate>
      <link>https://dev.to/kamasupaul/how-to-solve-too-many-redirects-website-error-after-adding-ssllets-encrypt-to-nginx-server-31l7</link>
      <guid>https://dev.to/kamasupaul/how-to-solve-too-many-redirects-website-error-after-adding-ssllets-encrypt-to-nginx-server-31l7</guid>
      <description>&lt;p&gt;So after adding lets encrypt on my server using certbot, i was asked if all HTTP traffic should be redirected to HTTPS. I gladly said yes and i was happy about my decision. Unfortunately When i checked the website again, it wasn't working, displaying a &lt;code&gt;too many redirects error&lt;/code&gt;. What had i done wrong? and What's the solution?&lt;/p&gt;

&lt;p&gt;Turns out the solution is to change the SSL/TSL to full(strict) in the cloudflare dashboard and that did the trick. Also if no ssl is setup on the server, its can only work if the SSL/TLS mode is set to flexible.&lt;br&gt;
That's it. Hope it helped&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--BHlotiO0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r40zi9hcpywfwt2wrkew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--BHlotiO0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r40zi9hcpywfwt2wrkew.png" alt="Image description" width="880" height="438"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>nginx</category>
      <category>cloudflare</category>
      <category>ssl</category>
      <category>letsencrypt</category>
    </item>
    <item>
      <title>How to connect to a web socket server 🔥 in Javascript using laravel echo </title>
      <dc:creator>kamasuPaul</dc:creator>
      <pubDate>Thu, 09 Dec 2021 07:28:17 +0000</pubDate>
      <link>https://dev.to/kamasupaul/how-to-connect-to-a-web-socket-server-in-javascript-using-laravel-echo-5429</link>
      <guid>https://dev.to/kamasupaul/how-to-connect-to-a-web-socket-server-in-javascript-using-laravel-echo-5429</guid>
      <description>&lt;h2&gt;
  
  
  Web sockets?
&lt;/h2&gt;

&lt;p&gt;Web sockets help a client application to receive events from a server application without asking the server for new information every few seconds, rather the server sends the client new information whenever it happens.&lt;/p&gt;

&lt;h3&gt;
  
  
  How do web sockets worker.
&lt;/h3&gt;

&lt;p&gt;In simple terms, the following sequence of events happens,&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The server creates a channel, which can either be public, private or a presence channel.
&lt;code&gt;Public&lt;/code&gt; channels can be connected to by anyone, &lt;code&gt;private&lt;/code&gt; and &lt;code&gt;presence&lt;/code&gt; channels require authentication to connect but presence channels allow channel members to see other members of the channel.&lt;/li&gt;
&lt;li&gt;After a channel has been created, a client application wishing to receive events, connects to that channel using the channel name. The client can be any application, android, ios or web app that can implement the &lt;code&gt;ws&lt;/code&gt; protocol.&lt;/li&gt;
&lt;li&gt;The client application then listens to a particular event from a connected channel, using the event name.&lt;/li&gt;
&lt;li&gt;Then whenever a server has new information to publish, it publishes an event with a particular name over a specified channel.&lt;/li&gt;
&lt;li&gt;In turn the client application will receive this information without having to query the server for that information.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  How do i connect to a web-socket server?
&lt;/h3&gt;

&lt;p&gt;In order to receive events from a particular server, client applications usually connects to a third party server , which publishes messages on behalf of the original server. All the original server application has to do is to create channels on the third party server, the just publish event messages to that server, which frees the original server from the budden of dealing with web socket connections from clients.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Two of the most common third party servers for dealing with websockets are &lt;code&gt;pusher&lt;/code&gt; and &lt;code&gt;ably&lt;/code&gt;. All demostrations in this guide will use ably, but its the same thing for pusher and other custom websocket implementations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So the client application connects to a channel on the ably or pusher websocket server, and the listens to events.&lt;/p&gt;

&lt;h3&gt;
  
  
  How to connect to ably from a javascript application. Vannilla js, Vue js or React Js
&lt;/h3&gt;

&lt;p&gt;Connections to websocket servers is usually done using the &lt;code&gt;ws&lt;/code&gt; protocol implemented by most browsers, but it would be in my opinion somehow complex to do a websocket implementation from scratch using the protcol. An approach i like to use is to &lt;strong&gt;"Donot reinvent the wheel"&lt;/strong&gt; by using a websockets library.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Which library ?&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The Laravel echo js library is a good option for most applications. So i will show sample code of how to connect to both public and private channels in a javascript application using the laravel echo library.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  How to use laravel echo library?
&lt;/h3&gt;

&lt;p&gt;For laravel echo to work, you will need to use the &lt;code&gt;pusher-js&lt;/code&gt; library. There for you will have to install both echo and pusher js. Here are the steps for setting up the echo library to use web sockets.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Step 1: Initiate a js application. The js app can be vanilla, vue or react. Here i will destrate using vue.js.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Step 2: Install the laravel-echo and pusher-js libraries.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;install pusher-js and laravel echo
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    npm install pusher-js
    npm install laravel-echo
&lt;/code&gt;&lt;/pre&gt;

&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Step 3: Create an instance of laravel echo. In your entry js file ie &lt;code&gt;main.js&lt;/code&gt;, create an instance of echo an attach it to the window. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Import laravel echo&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;import Echo from 'laravel-echo';&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Import pusher-js and attach it to the window.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;window.Pusher = require('pusher-js');&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create an instance of laravel echo and attach it to the window.&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;window.Echo = new Echo({
broadcaster: 'pusher',
key: "Kp8mUw.DDCTHQ",//app public key: format='APP_KEY.APP_ID'
wsHost: 'realtime-pusher.ably.io',
wsPort: 443,
disableStats: true,
encrypted: true,`
})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Meaning of params:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;broadcaster: the broadcaster is the protocol used to broadcast the messages which is pusher in this case.&lt;/li&gt;
&lt;li&gt;key: for websockets as service servers such as ably, you will need to provide the public key of the app from which you will receive events. the format of the key is &lt;code&gt;APP_KEY:APP_ID&lt;/code&gt;, both are available in the ably dashboard.&lt;/li&gt;
&lt;li&gt;wsHost: the ip address or hostname of the web sockets server. &lt;/li&gt;
&lt;li&gt;wsPort: the port on which to connect to the web socket server. &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;For public channels, the above code is enough to initiate a connection to a web socket server. However for private channels, the original application server will need to provide some form of authentication to those channels. Therefore when intiating laravel echo, you need to provide an &lt;code&gt;authEndpoint&lt;/code&gt; or an &lt;code&gt;authorizer&lt;/code&gt; function incase of a custom authentication setup.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Sample of laravel echo intialization code for private channels.&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const baseUrl = 'http://localhost:8000/api';
const token = "Bearer eyJ0eXAiOiJ..."; // app bearer login token for apis 
const apiKey = "application key"; // api key,for apis that require api keys

window.Echo = new Echo({
broadcaster: 'pusher',
key: "Kp8mUw.DDCTHQ",//app public key: format='APP_KEY.APP_ID'
wsHost: 'realtime-pusher.ably.io',
wsPort: 443,
disableStats: true,
encrypted: true,
// authEndpoint: `${baseUrl}/broadcasting/auth`,
authorizer: (channel) =&amp;gt; {
    return {
        authorize: (socketId, callback) =&amp;gt; {
            axios.post(`${baseUrl}/broadcasting/auth`, {
                socket_id: socketId,
                channel_name: channel.name
            },
            {
                headers: {
                'Authorization': token,
                'key': apiKey, 
                }
            }
            )
            .then(response =&amp;gt; {
                callback(false, response.data);
            })
            .catch(error =&amp;gt; {
                callback(true, error);
            });
        }
    };
},
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;The authEndpoint on the application server needs to return authenticated or unauthenticated depending on wether the user is authorized or not.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Step 4: Connect to a channel. After initiating a web socket connection, the client application has connect to a specific channel.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;public channel: Using echo, here is how you connect to a public channel.&lt;/p&gt;

&lt;blockquote&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;window.Echo.channel('status-updated')
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here &lt;code&gt;status-updated&lt;/code&gt; is the name of the channel,&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Private channel: To connect a private channel, use &lt;code&gt;private&lt;/code&gt; instead of &lt;code&gt;channel&lt;/code&gt;.&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;window.Echo.private(`bulk-upload-channel.${this.batch.id}`) 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;${this.batch.id}&lt;/code&gt;represents avariable part of the channel name.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Step 5: Listen to events. Using laravel echo, both public and private use the same method to listen to events. the &lt;code&gt;listen&lt;/code&gt; method.&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.listen('.updated', (e) =&amp;gt; {
    console.log("event received")
    console.log(e)
})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;updated&lt;/code&gt; is the name of the event, but it should be writen as &lt;code&gt;.updated&lt;/code&gt;. Note the dot &lt;code&gt;.&lt;/code&gt; infront of the word updated , it is required when using custom channel names.&lt;/p&gt;

&lt;p&gt;So to to connect to a channel and to listen to events, here is the full snippet.&lt;/p&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;window.Echo.channel('status-updated')
.listen('.updated', (e) =&amp;gt; {
    console.log("event received")
    console.log(e)
})
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;e&lt;/code&gt; param, contains all information and data about the event.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note :&lt;/strong&gt; &lt;br&gt;
Though i have only tested it with a vue js app, i believe the above steps, should work for all javascript implementations.&lt;br&gt;&lt;br&gt;
Also, i have only tested using a laravel powered server that uses ably , but the same should work even for pusher or the community pusher replacement.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Github repository&lt;/strong&gt;. All the code can be found in the github repository here. &lt;a href="https://github.com/kamasuPaul/websockets-client-demo"&gt;Web sockets client demo repository&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>websockets</category>
      <category>laravel</category>
      <category>laravelecho</category>
    </item>
    <item>
      <title>Alternatives 🔥😊 to the abandoned tymondesigns / jwt-auth 😠 laravel auth package</title>
      <dc:creator>kamasuPaul</dc:creator>
      <pubDate>Tue, 30 Nov 2021 16:25:58 +0000</pubDate>
      <link>https://dev.to/kamasupaul/alternatives-to-the-abandoned-tymondesigns-jwt-auth-laravel-auth-package-1gkl</link>
      <guid>https://dev.to/kamasupaul/alternatives-to-the-abandoned-tymondesigns-jwt-auth-laravel-auth-package-1gkl</guid>
      <description>&lt;p&gt;&lt;strong&gt;S&lt;/strong&gt;o the most popular and most widely used &lt;code&gt;jwt-auth&lt;/code&gt; package appears to be abandoned by the owner.&lt;br&gt;
 Despite &lt;code&gt;several issues&lt;/code&gt;, and pull requests by the community, the maintainer appears to be silent. The most common issue, described &lt;a href="https://github.com/tymondesigns/jwt-auth/pull/2117#issuecomment-878287790"&gt;here&lt;/a&gt; makes the library unsuable with &lt;code&gt;php 8&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Due to inactivity by the maintainer, this has forced laravel developers that use php 8, to look for alternatives.&lt;br&gt;
 Here is a list of alternatives to the &lt;a href="https://github.com/tymondesigns/jwt-auth"&gt;tymondesigns/jwt-auth&lt;/a&gt; package, that i have managed to find, in my quest to find alternative packages.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://github.com/PHP-Open-Source-Saver/jwt-auth"&gt; PHP-Open-Source-Saver /
jwt-auth &lt;/a&gt;.
This package has &lt;code&gt;52 github stars&lt;/code&gt; , at the time of writing and has its documented &lt;a href="https://laravel-jwt-auth.readthedocs.io/en/latest/"&gt;at readthedocks&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/rcerljenko/laravel-jwt"&gt; rcerljenko /
laravel-jwt &lt;/a&gt; Another alternative that also rose out of the same need is this package by Ricardo Čerljenko . It has &lt;code&gt;26 github stars&lt;/code&gt;and appears to be less documented that the php-open source saver package.&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;PS: I will keep adding more great packages as i find them&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>laravel</category>
      <category>jwt</category>
      <category>php</category>
    </item>
    <item>
      <title>Free tailwind templates for your next project</title>
      <dc:creator>kamasuPaul</dc:creator>
      <pubDate>Sun, 24 Oct 2021 06:08:21 +0000</pubDate>
      <link>https://dev.to/kamasupaul/free-tailwind-templates-for-your-next-project-5ce8</link>
      <guid>https://dev.to/kamasupaul/free-tailwind-templates-for-your-next-project-5ce8</guid>
      <description>&lt;h3&gt;
  
  
  Problem: Cant find tailwind templates
&lt;/h3&gt;

&lt;p&gt;In-case your looking to start a new front-end project using tailwind css , a popular utility first CSS framework, but looking for a starter template. Here is a list of starter templates i have discovered.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why this list
&lt;/h3&gt;

&lt;p&gt;So every time i am starting a new project, i prefer to use tailwind but most of the times, there is no good template that i can use to get started pretty fast. &lt;br&gt;
I therefore decided to compile a list of free tailwind templates out there than can enable you and I get started quickly.&lt;br&gt;
&lt;code&gt;Ps:&lt;/code&gt; This is not a complete list, i will keep adding new items as i discover them. if you know of good templates please comment with its github link&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://github.com/moesaid/cleopatra"&gt;Cleopatra&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--QXZ251e4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/moesaid/cleopatra/raw/master/dist/img/index.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QXZ251e4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/moesaid/cleopatra/raw/master/dist/img/index.png" alt="cleopatra dashboard preview"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
