<?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: Shibu N</title>
    <description>The latest articles on DEV Community by Shibu N (@shibun).</description>
    <link>https://dev.to/shibun</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%2F651238%2F47b231c3-d3f4-4845-a10a-bc503e79951b.jpeg</url>
      <title>DEV Community: Shibu N</title>
      <link>https://dev.to/shibun</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shibun"/>
    <language>en</language>
    <item>
      <title>Next.js + MDX Blog | CodeSamples.dev</title>
      <dc:creator>Shibu N</dc:creator>
      <pubDate>Sun, 16 Apr 2023 05:40:58 +0000</pubDate>
      <link>https://dev.to/shibun/codesampesdev-nextjs-mdx-blog-2fcg</link>
      <guid>https://dev.to/shibun/codesampesdev-nextjs-mdx-blog-2fcg</guid>
      <description>&lt;p&gt;Hello Devs,&lt;/p&gt;

&lt;p&gt;I've developed a Next.js blog website using mdx and styled components. The site url: &lt;a href="https://codesamples.dev"&gt;https://codesamples.dev&lt;/a&gt;. Please visit the blog and give me suggestions. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Flutter vs React Native comparison</title>
      <dc:creator>Shibu N</dc:creator>
      <pubDate>Mon, 03 Apr 2023 16:26:47 +0000</pubDate>
      <link>https://dev.to/shibun/flutter-vs-react-native-comparison-8da</link>
      <guid>https://dev.to/shibun/flutter-vs-react-native-comparison-8da</guid>
      <description>&lt;p&gt;Flutter and React Native are two of the most popular frameworks for building mobile applications. While both of these frameworks share some similarities, they have their own unique features and functionalities. In this article, we will explore the key differences between Flutter and React Native to help you choose the right framework for your project.&lt;/p&gt;

&lt;p&gt;Flutter:&lt;/p&gt;

&lt;p&gt;Flutter is a relatively new mobile development framework developed by Google and released in 2017. It is based on the Dart programming language and uses a reactive programming model. Flutter comes with its own set of widgets, which provide a consistent user interface across different platforms. These widgets are optimized for performance and provide a seamless user experience. Additionally, Flutter has a hot reload feature, which allows developers to see changes in the app in real-time, making it easier to debug and develop.&lt;/p&gt;

&lt;p&gt;Flutter also offers a wide range of features and functionalities that make it an excellent choice for mobile app development. These include:&lt;/p&gt;

&lt;p&gt;High-performance: Flutter is optimized for performance and provides faster app development and execution.&lt;/p&gt;

&lt;p&gt;Customizable UI: Flutter's widgets are highly customizable, allowing developers to create unique and visually appealing user interfaces.&lt;/p&gt;

&lt;p&gt;Hot Reload: The hot reload feature in Flutter allows developers to see changes in real-time, which helps to save time and make the development process more efficient.&lt;/p&gt;

&lt;p&gt;Consistent UI: Flutter provides a consistent user interface across different platforms, making it easier for developers to build cross-platform applications.&lt;/p&gt;

&lt;p&gt;React Native:&lt;/p&gt;

&lt;p&gt;React Native is a popular mobile development framework developed by Facebook and released in 2015. It is based on the JavaScript programming language and uses a declarative programming model. React Native allows developers to build complex user interfaces using a set of pre-built components. These components are highly reusable and can be easily integrated into different projects.&lt;/p&gt;

&lt;p&gt;React Native also offers a wide range of features and functionalities that make it an excellent choice for mobile app development. These include:&lt;/p&gt;

&lt;p&gt;High-performance: React Native is optimized for performance and provides faster app development and execution.&lt;/p&gt;

&lt;p&gt;Customizable UI: React Native's components are highly customizable, allowing developers to create unique and visually appealing user interfaces.&lt;/p&gt;

&lt;p&gt;Large Community: React Native has a large and active community, which means there are plenty of resources and libraries available for developers to use.&lt;/p&gt;

&lt;p&gt;Easy Integration: React Native can be easily integrated with other platforms, making it an excellent choice for building cross-platform applications.&lt;/p&gt;

&lt;p&gt;Comparison:&lt;/p&gt;

&lt;p&gt;Language: Flutter uses the Dart programming language, while React Native uses the JavaScript programming language.&lt;/p&gt;

&lt;p&gt;Programming Model: Flutter uses a reactive programming model, while React Native uses a declarative programming model.&lt;/p&gt;

&lt;p&gt;UI: Flutter comes with its own set of widgets, while React Native uses a set of pre-built components.&lt;/p&gt;

&lt;p&gt;Performance: Both Flutter and React Native are highly performant, but Flutter is generally considered faster because it uses a compiled programming language and comes with its own set of optimized widgets.&lt;/p&gt;

&lt;p&gt;Conclusion:&lt;/p&gt;

&lt;p&gt;In conclusion, both Flutter and React Native are excellent choices for mobile app development. While Flutter is a newer framework with a smaller community, it offers a range of unique features and functionalities that make it an excellent choice for building cross-platform applications. On the other hand, React Native has a large and active community, making it an excellent choice for building complex mobile applications. Ultimately, the choice between these two frameworks will depend on the specific needs of your project and the expertise of your development team.&lt;/p&gt;

</description>
      <category>react</category>
      <category>flutter</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>Alpine.js Tutorial: Getting Started with Interactive Web Applications</title>
      <dc:creator>Shibu N</dc:creator>
      <pubDate>Fri, 24 Mar 2023 02:48:00 +0000</pubDate>
      <link>https://dev.to/shibun/alpinejs-tutorial-getting-started-with-interactive-web-applications-484c</link>
      <guid>https://dev.to/shibun/alpinejs-tutorial-getting-started-with-interactive-web-applications-484c</guid>
      <description>&lt;p&gt;Alpine.js is a JavaScript framework that helps you create interactive web applications with minimal code. It is lightweight and easy to use, making it a popular choice for developers who want to add dynamic functionality to their web pages.&lt;/p&gt;

&lt;p&gt;In this tutorial, we'll cover the basics of Alpine.js and provide some examples to help you get started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installation
&lt;/h2&gt;

&lt;p&gt;The easiest way to get started with Alpine.js is to include it in your HTML file using a CDN. You can do this by adding the following script tag to the head of your HTML file:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;script src="https://cdn.jsdelivr.net/npm/alpinejs"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Alternatively, you can install Alpine.js using npm or yarn:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install alpinejs&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;or&lt;/p&gt;

&lt;p&gt;&lt;code&gt;yarn add alpinejs&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;p&gt;To get started with Alpine.js, you need to define an element that will be used as the root element for your application. This is typically a div element with an x-data attribute that defines the data for your application.&lt;/p&gt;

&lt;p&gt;Here's an example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;div x-data="{ message: 'Hello, World!' }"&amp;gt;&lt;br&gt;
  &amp;lt;h1 x-text="message"&amp;gt;&amp;lt;/h1&amp;gt;&lt;br&gt;
&amp;lt;/div&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example, we've defined a div element with an x-data attribute that defines an object with a single property called "message". We've also added an h1 element with an x-text attribute that displays the value of the "message" property.&lt;/p&gt;

&lt;p&gt;When you load this page, you'll see the text "Hello, World!" displayed on the screen.&lt;/p&gt;

&lt;h2&gt;
  
  
  Directives
&lt;/h2&gt;

&lt;p&gt;Alpine.js provides a set of directives that you can use to add interactivity to your web pages. Directives are attributes that start with "x-" and define behavior for a particular element.&lt;/p&gt;

&lt;p&gt;Here are some of the most commonly used directives:&lt;/p&gt;

&lt;h3&gt;
  
  
  x-text
&lt;/h3&gt;

&lt;p&gt;The x-text directive sets the text content of an element to the value of a property.&lt;br&gt;
&lt;code&gt;&amp;lt;div x-data="{ message: 'Hello, World!' }"&amp;gt;&lt;br&gt;
  &amp;lt;h1 x-text="message"&amp;gt;&amp;lt;/h1&amp;gt;&lt;br&gt;
&amp;lt;/div&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  x-bind
&lt;/h3&gt;

&lt;p&gt;The x-bind directive sets an attribute or property of an element to the value of a property.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;div x-data="{ disabled: false }"&amp;gt;&lt;br&gt;
  &amp;lt;button x-bind:disabled="disabled"&amp;gt;Click me&amp;lt;/button&amp;gt;&lt;br&gt;
  &amp;lt;button x-on:click="disabled = true"&amp;gt;Disable button&amp;lt;/button&amp;gt;&lt;br&gt;
&amp;lt;/div&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;br&gt;
In this example, we've defined a div element with a "disabled" property that is initially set to false. We've also defined two buttons: one that is bound to the "disabled" property using the x-bind directive, and one that sets the "disabled" property to true when clicked using the x-on directive.&lt;/p&gt;

&lt;h3&gt;
  
  
  x-show
&lt;/h3&gt;

&lt;p&gt;The x-show directive shows or hides an element based on the value of a property.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;div x-data="{ visible: true }"&amp;gt;&lt;br&gt;
  &amp;lt;div x-show="visible"&amp;gt;This is visible&amp;lt;/div&amp;gt;&lt;br&gt;
  &amp;lt;button x-on:click="visible = !visible"&amp;gt;Toggle visibility&amp;lt;/button&amp;gt;&lt;br&gt;
&amp;lt;/div&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example, we've defined a div element with a "visible" property that is initially set to true. We've also defined a div element that is shown or hidden based on the value of the "visible" property using the x-show directive, and a button that toggles the value of the "visible" property when clicked using the x-on directive.&lt;/p&gt;

&lt;p&gt;x-model&lt;/p&gt;

&lt;p&gt;The x-model directive binds the value of a form element to a property.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;div x-data="{ name: '' }"&amp;gt;&lt;br&gt;
  &amp;lt;label&amp;gt;Name:&amp;lt;/label&amp;gt;&lt;br&gt;
  &amp;lt;input type="text" x-model="name"&amp;gt;&lt;br&gt;
  &amp;lt;p&amp;gt;Your name is &amp;lt;span x-text="name"&amp;gt;&amp;lt;/span&amp;gt;&amp;lt;/p&amp;gt;&lt;br&gt;
&amp;lt;/div&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example, we've defined a div element with a "name" property that is initially set to an empty string. We've also defined a label and an input element that are bound to the "name" property using the x-model directive. Finally, we've defined a p element that displays the value of the "name" property.&lt;/p&gt;

&lt;h3&gt;
  
  
  x-for
&lt;/h3&gt;

&lt;p&gt;The x-for directive generates a list of elements based on an array.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;div x-data="{ items: ['item1', 'item2', 'item3'] }"&amp;gt;&lt;br&gt;
  &amp;lt;ul&amp;gt;&lt;br&gt;
    &amp;lt;li x-for="item in items" x-text="item"&amp;gt;&amp;lt;/li&amp;gt;&lt;br&gt;
  &amp;lt;/ul&amp;gt;&lt;br&gt;
&amp;lt;/div&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example, we've defined a div element with an "items" property that is an array of strings. We've also defined a ul element with an li element inside it that is generated for each item in the "items" array using the x-for directive. The x-text directive is used to set the text content of each li element to the value of the current item.&lt;/p&gt;

&lt;h2&gt;
  
  
  Events
&lt;/h2&gt;

&lt;p&gt;Alpine.js provides a set of event modifiers that you can use to add behavior to your event listeners. Event modifiers are appended to the end of an event name and start with a dot.&lt;/p&gt;

&lt;p&gt;Here are some of the most commonly used event modifiers:&lt;/p&gt;

&lt;h3&gt;
  
  
  .prevent
&lt;/h3&gt;

&lt;p&gt;The .prevent modifier prevents the default behavior of an event.&lt;br&gt;
&lt;code&gt;&amp;lt;form x-data="{ message: '' }" x-on:submit.prevent="submitForm"&amp;gt;&lt;br&gt;
  &amp;lt;label&amp;gt;Message:&amp;lt;/label&amp;gt;&lt;br&gt;
  &amp;lt;input type="text" x-model="message"&amp;gt;&lt;br&gt;
  &amp;lt;button type="submit"&amp;gt;Submit&amp;lt;/button&amp;gt;&lt;br&gt;
&amp;lt;/form&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example, we've defined a form element with a "message" property that is bound to an input element using the x-model directive. We've also defined a button element that submits the form when clicked. The x-on directive is used to listen for the "submit" event on the form element and call the "submitForm" method, which prevents the default behavior of the event using the .prevent modifier.&lt;/p&gt;

&lt;h3&gt;
  
  
  .stop
&lt;/h3&gt;

&lt;p&gt;The .stop modifier stops the propagation of an event.&lt;br&gt;
&lt;code&gt;&amp;lt;div x-on:click.stop="clickHandler"&amp;gt;&lt;br&gt;
  &amp;lt;button&amp;gt;Click me&amp;lt;/button&amp;gt;&lt;br&gt;
&amp;lt;/div&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example, we've defined a div element with a click event listener that calls the "clickHandler" method. We've also defined a button element inside the div that would normally trigger the click event on the div element. However, the .stop modifier is used to stop the propagation of the event, so the click event is only triggered on the button element.&lt;/p&gt;

&lt;h3&gt;
  
  
  .self
&lt;/h3&gt;

&lt;p&gt;The .self modifier only triggers the event listener if the event was dispatched on the element itself, not on a descendant element.&lt;br&gt;
&lt;code&gt;&amp;lt;div x-on:click.self="clickHandler"&amp;gt;&lt;br&gt;
  &amp;lt;button&amp;gt;Click me&amp;lt;/button&amp;gt;&lt;br&gt;
&amp;lt;/div&amp;gt;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In this example, we've defined a div element with a click event listener that calls the "clickHandler" method. We've also defined a button element inside the div that would normally trigger the click event on the div element. However, the .self modifier is used to only trigger the event listener if the event was dispatched on the div element itself, not on the button element.&lt;/p&gt;

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

&lt;p&gt;Alpine.js is a powerful JavaScript framework that makes it easy to create interactive web applications with minimal code. In this tutorial, we covered the basics of Alpine.js and provided some examples to help you get started. With these tools in hand, you should be able to create your own dynamic web pages and applications using Alpine.js.&lt;/p&gt;

</description>
      <category>alpinejs</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>Create beautiful images of your code - imgsrc.shibu.dev</title>
      <dc:creator>Shibu N</dc:creator>
      <pubDate>Thu, 17 Nov 2022 16:41:52 +0000</pubDate>
      <link>https://dev.to/shibun/create-beautiful-images-of-your-code-imgsrcshibudev-1l5i</link>
      <guid>https://dev.to/shibun/create-beautiful-images-of-your-code-imgsrcshibudev-1l5i</guid>
      <description>&lt;p&gt;Hi Devs,&lt;/p&gt;

&lt;p&gt;I developed new website &lt;a href="https://imgsrc.shibu.dev/"&gt;imgsrc.shibu.dev&lt;/a&gt;. The main purpose is to create beautiful images from code. I did my best in the project. If you have any suggestions and feedbacks about the project, kindly let me know. Thanks.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>react</category>
    </item>
    <item>
      <title>GCP gcloud CLI command Structure Overview</title>
      <dc:creator>Shibu N</dc:creator>
      <pubDate>Wed, 24 Aug 2022 15:50:00 +0000</pubDate>
      <link>https://dev.to/shibun/gcp-gcloud-cli-command-structure-overview-1l28</link>
      <guid>https://dev.to/shibun/gcp-gcloud-cli-command-structure-overview-1l28</guid>
      <description>&lt;p&gt;The gcloud CLI is a set of tools used to create and manage Google Cloud Resources. By using the gcloud CLI, you can create Compute Engine Virtual Machines, VPC, Google Kubernetes Engine clusters, Dataproc clusters and jobs,Cloud SQL instances, App Engine Apps, etc.&lt;/p&gt;

&lt;h2&gt;
  
  
  Most gcloud commands follow the following format:
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;gcloud + release level(optional) + component + entity +&lt;br&gt;
operation + positional args + flags&lt;/code&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Example
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;gcloud compute instances create example-instance-1&lt;br&gt;
--zone=us-central-1&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;&lt;strong&gt;Release Level&lt;/strong&gt; refers to the command's release status. For example alpha, beta, GA. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Component&lt;/strong&gt; refers to different Google Cloud services.For example compute for compute engine, app for app engine.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Entity&lt;/strong&gt; refers to the plural form of an element or collection of elements under a component. For example instances, disks, images, zones, regions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Operation&lt;/strong&gt; refers to the imperative verb form of the operation to be performed on the entity. For example describe, list, create, update, delete, import, export, copy, run, add, remove.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Positional&lt;/strong&gt; args refer to the required, order-specific arguments needed to execute the command. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Flags&lt;/strong&gt; refer to the additional arguments, --flag-name(=value),&lt;br&gt;
passed in to the command after positional args. For example --machine type=MACHINE_TYPE and are --preemptible&lt;br&gt;
optional flags for gcloud compute instances create.&lt;/p&gt;

&lt;p&gt;For more info, visit &lt;a href="https://cloud.google.com/sdk/gcloud"&gt;https://cloud.google.com/sdk/gcloud&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gcp</category>
      <category>googlecloud</category>
      <category>appengine</category>
      <category>devops</category>
    </item>
  </channel>
</rss>
