<?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: Danish Saleem</title>
    <description>The latest articles on DEV Community by Danish Saleem (@mrdanishsaleem).</description>
    <link>https://dev.to/mrdanishsaleem</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%2F737886%2Fdaeceacb-ae39-4787-a69a-ffadd7ed8082.jpeg</url>
      <title>DEV Community: Danish Saleem</title>
      <link>https://dev.to/mrdanishsaleem</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mrdanishsaleem"/>
    <language>en</language>
    <item>
      <title>CSS Driving You Crazy? Debug Like a Pro with These Universal Tips</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Sat, 28 Jun 2025 23:19:48 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/css-driving-you-crazy-debug-like-a-pro-with-these-universal-tips-5b55</link>
      <guid>https://dev.to/mrdanishsaleem/css-driving-you-crazy-debug-like-a-pro-with-these-universal-tips-5b55</guid>
      <description>&lt;h3&gt;
  
  
  👋 Introduction
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;"We've all been there, your layout breaks, buttons vanish, or elements stubbornly ignore your styles. CSS debugging can be frustrating, but it doesn’t have to be. Here are my go-to tips and tricks for diagnosing and fixing styling issues fast."&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧩 1. &lt;strong&gt;Use the Universal Outline Debug Trick&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Want to see where everything is on the page?&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;outline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;💡 &lt;em&gt;Pro Tip:&lt;/em&gt; Stack outlines to visualize nesting:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;outline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;outline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;green&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;outline&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🎯 2. &lt;strong&gt;Inspect with DevTools Like a Detective&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The browser DevTools are your magnifying glass.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;✅ Use these tabs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Elements&lt;/strong&gt;: See the DOM and applied styles.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Computed&lt;/strong&gt;: Find where margins, paddings, or unexpected values come from.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Box Model&lt;/strong&gt;: Understand spacing and layout.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;📌 Tip: Right-click → “Inspect” on any element.&lt;/p&gt;




&lt;h3&gt;
  
  
  🔍 3. &lt;strong&gt;Reset Your Styles&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Inconsistent styles across browsers? Reset or normalise:&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*,&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nd"&gt;::before&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt;
&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nd"&gt;::after&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-sizing&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;border-box&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🛠️ Use &lt;a href="https://necolas.github.io/normalize.css/" rel="noopener noreferrer"&gt;Normalize.css&lt;/a&gt; for cross-browser consistency.&lt;/p&gt;




&lt;h3&gt;
  
  
  🎨 4. &lt;strong&gt;Colour-Code Your Layout with Transparent Backgrounds&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.05&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Makes it easy to see containers, spacing, and overlaps.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  📐 5. &lt;strong&gt;Diagnose Flexbox and Grid Layouts&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Sometimes &lt;code&gt;display: flex&lt;/code&gt; or &lt;code&gt;grid&lt;/code&gt; breaks the layout.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;✅ Try adding this temporarily:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1px&lt;/span&gt; &lt;span class="nb"&gt;dashed&lt;/span&gt; &lt;span class="m"&gt;#aaa&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Or highlight grid lines in DevTools (Layout → Grid overlays).&lt;/p&gt;




&lt;h3&gt;
  
  
  💥 6. &lt;strong&gt;Check for Overflow and Hidden Elements&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Is something missing?&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;overflow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;visible&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;visibility&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;visible&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;display&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;block&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;opacity&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;1&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🧪 7. &lt;strong&gt;Debug Z-Index and Stacking Issues&lt;/strong&gt;
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;When elements seem behind others:&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;relative&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;z-index&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;9999&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  🧙 8. &lt;strong&gt;Add a &lt;code&gt;.debug&lt;/code&gt; Class to Anything&lt;/strong&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.debug&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt; &lt;span class="nb"&gt;dashed&lt;/span&gt; &lt;span class="no"&gt;hotpink&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;255&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;20&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;147&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="cp"&gt;!important&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;blockquote&gt;
&lt;p&gt;Temporarily add this class to elements in HTML or JS to track layout behaviour.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h3&gt;
  
  
  🧰 9. &lt;strong&gt;Tools That Help&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🧪 &lt;a href="https://getcssscan.com/" rel="noopener noreferrer"&gt;CSS Scan&lt;/a&gt; – Instantly inspect styles.&lt;/li&gt;
&lt;li&gt;🔍 &lt;a href="https://visbug.web.app/" rel="noopener noreferrer"&gt;VisBug&lt;/a&gt; – Chrome extension to move elements visually.&lt;/li&gt;
&lt;li&gt;🎯 &lt;a href="https://pesticide.io/" rel="noopener noreferrer"&gt;Pesticide&lt;/a&gt; – Chrome extension to outline everything.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  📦 10. &lt;strong&gt;Bonus: Create a Bookmarklet for Debugging&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Here’s a simple bookmarklet to inject outlines on any page:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;javascript&lt;/span&gt;&lt;span class="p"&gt;:(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;style&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createElement&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;style&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;* { outline: 1px solid red !important; }&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;head&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;appendChild&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save it as a browser bookmark and click it on any page!&lt;/p&gt;




&lt;h3&gt;
  
  
  🧘 Final Thoughts
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Debugging CSS is as much about mindset as it is about tools. Simplify, isolate, and work from the outside in. And when in doubt, outline everything!&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ✅ Call to Action
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Did I miss your favourite CSS debugging trick? Drop it in the comments! Let’s build a mega-list together. 💬👇&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>programming</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Implementing Conditional Fields &amp; Smart Email Routing in Contact Form 7</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Thu, 06 Mar 2025 19:17:44 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/implementing-conditional-fields-smart-email-routing-in-contact-form-7-4l43</link>
      <guid>https://dev.to/mrdanishsaleem/implementing-conditional-fields-smart-email-routing-in-contact-form-7-4l43</guid>
      <description>&lt;p&gt;When building a contact form in WordPress using &lt;strong&gt;Contact Form 7&lt;/strong&gt;, you may need to display different form fields based on user input. Additionally, ensuring that inquiries reach the right department without exposing email addresses on the front end is crucial.&lt;/p&gt;

&lt;p&gt;In this article, I'll explain how I implemented conditional fields and smart email routing in Contact Form 7 to enhance form usability and security.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Challenge
&lt;/h2&gt;

&lt;p&gt;I needed to create a contact form where users select an &lt;strong&gt;inquiry type&lt;/strong&gt;, and based on their selection:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Different form fields appear dynamically.&lt;/li&gt;
&lt;li&gt;The inquiry is routed to the correct department.&lt;/li&gt;
&lt;li&gt;Email addresses remain hidden from users to prevent spam.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For example, if a user selects &lt;em&gt;Private Credit Inquiry&lt;/em&gt;, additional fields related to investment details should appear, while general inquiries should have a simple message box.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Solution: Using Conditional Fields &amp;amp; Smart Email Tags
&lt;/h2&gt;

&lt;p&gt;To achieve this, I used the &lt;strong&gt;Conditional Fields for Contact Form 7&lt;/strong&gt; plugin and &lt;strong&gt;smart mail tags&lt;/strong&gt; to handle email routing efficiently.&lt;/p&gt;

&lt;h3&gt;
  
  
  Step 1: Setting Up the Inquiry Type Field
&lt;/h3&gt;

&lt;p&gt;The first step was to create an inquiry type dropdown field that determines what additional fields should be displayed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;[select inquiry-type "Select Inquiry Type" "General Inquiry|general" "Private
Credit Inquiry|private" "Equity Investment Inquiry|equity" "Asset Sale
Inquiry|asset"]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;🤔 How this works:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users see readable labels (&lt;em&gt;General Inquiry, Private Credit Inquiry, etc.&lt;/em&gt;).&lt;/li&gt;
&lt;li&gt;The form processes the hidden values (&lt;em&gt;general, private, equity, asset&lt;/em&gt;).&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Step 2: Implementing Conditional Fields
&lt;/h3&gt;

&lt;p&gt;To show different fields based on the inquiry type, I used the &lt;strong&gt;Conditional Fields for Contact Form 7&lt;/strong&gt; plugin and wrapped the fields inside condition groups.&lt;/p&gt;

&lt;h4&gt;
  
  
  Example: Private Credit Inquiry Fields
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;[group private-credit clear_on_hide]
&lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Investment Amount&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
[text investment-amount]

&lt;span class="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Expected Return&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
[text expected-return] [/group]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Setting the Condition
&lt;/h4&gt;

&lt;p&gt;In the &lt;strong&gt;Conditional Fields tab&lt;/strong&gt;, I set the rule:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Show group “private-credit” IF [inquiry-type] = “private”&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This ensures that the investment-related fields only appear when the user selects &lt;em&gt;Private Credit Inquiry&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Similarly, I created other field groups for Equity Investment and Asset Sale inquiries.&lt;/p&gt;




&lt;h3&gt;
  
  
  Step 3: Configuring Smart Email Routing
&lt;/h3&gt;

&lt;p&gt;Instead of exposing email addresses in the frontend, I used &lt;strong&gt;smart mail tags&lt;/strong&gt; to dynamically assign recipient addresses based on the inquiry type.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;In the Mail tab, I set the recipient field as:&lt;/strong&gt;
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;[inquiry-type]@example.com
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the user selects &lt;em&gt;General Inquiry&lt;/em&gt;, the email is sent to &lt;strong&gt;&lt;a href="mailto:general@example.com"&gt;general@example.com&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If they select &lt;em&gt;Private Credit Inquiry&lt;/em&gt;, the email goes to &lt;strong&gt;&lt;a href="mailto:private@example.com"&gt;private@example.com&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If they select &lt;em&gt;Equity Investment Inquiry&lt;/em&gt;, it goes to &lt;strong&gt;&lt;a href="mailto:equity@example.com"&gt;equity@example.com&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If they select &lt;em&gt;Asset Sale Inquiry&lt;/em&gt;, it goes to &lt;strong&gt;&lt;a href="mailto:asset@example.com"&gt;asset@example.com&lt;/a&gt;&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Plugins Used
&lt;/h2&gt;

&lt;p&gt;To implement these features, I used the following plugins:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Contact Form 7&lt;/strong&gt; – &lt;a href="https://wordpress.org/plugins/contact-form-7/" rel="noopener noreferrer"&gt;Download&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Conditional Fields for Contact Form 7&lt;/strong&gt; – &lt;a href="https://wordpress.org/plugins/cf7-conditional-fields/" rel="noopener noreferrer"&gt;Download&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These plugins together enabled me to build a dynamic, user-friendly, and secure contact form.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Results
&lt;/h2&gt;

&lt;p&gt;✅ Dynamic Form Fields – Users see only the relevant fields based on their selection.&lt;/p&gt;

&lt;p&gt;✅ No Exposed Emails – Email addresses remain hidden from the frontend.&lt;/p&gt;

&lt;p&gt;✅ Automated Routing – Inquiries are automatically sent to the right department.&lt;/p&gt;

&lt;p&gt;✅ Easy Maintenance – Updating email addresses or conditions doesn’t require frontend changes.&lt;/p&gt;

&lt;p&gt;This method ensures a &lt;strong&gt;secure, user-friendly, and scalable&lt;/strong&gt; contact form for handling multiple inquiries efficiently.&lt;/p&gt;




&lt;h3&gt;
  
  
  Need Help Implementing This?
&lt;/h3&gt;

&lt;p&gt;If you’re looking for &lt;strong&gt;custom WordPress development or advanced form solutions&lt;/strong&gt;, feel free to reach out!&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>coding</category>
      <category>programming</category>
      <category>php</category>
    </item>
    <item>
      <title>WordPress Conflict: What’s Happening Between WordPress.org and WP Engine?</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Sat, 28 Sep 2024 12:29:14 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/wordpress-conflict-whats-happening-between-wordpressorg-and-wp-engine-521b</link>
      <guid>https://dev.to/mrdanishsaleem/wordpress-conflict-whats-happening-between-wordpressorg-and-wp-engine-521b</guid>
      <description>&lt;p&gt;As many of you may have heard, a significant conflict is brewing between WordPress.org and WP Engine, one of the leading managed WordPress hosting providers. This dispute revolves around trademark violations, alleged misconduct within the community, and escalating legal actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  🚨 Key Points of the Conflict
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Access Blocked:&lt;/strong&gt; WordPress.org blocked WP Engine from accessing key resources, including software updates, due to trademark violations and other alleged &lt;strong&gt;&lt;em&gt;“bad behavior.”&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;2. Public Criticism&lt;/strong&gt;: WordPress co-founder and Automattic CEO Matt Mullenweg called WP Engine a “cancer to WordPress” and encouraged users to leave the platform.&lt;br&gt;
&lt;strong&gt;3. Legal Action:&lt;/strong&gt; In response, WP Engine has filed a lawsuit against WordPress, Automattic, and Matt Mullenweg, accusing them of trademark violations and wrongful conduct.&lt;/p&gt;

&lt;h2&gt;
  
  
  💡 Why Does This Matter?
&lt;/h2&gt;

&lt;p&gt;WordPress powers 43.1% of all websites on the internet, including nearly 64.3% of all CMS-powered websites. This platform is the backbone of the web, with over 500 new WordPress sites being created daily. WP Engine hosts a significant number of these sites, so this legal conflict could potentially disrupt services and affect thousands of businesses worldwide.&lt;/p&gt;

&lt;p&gt;📊 WordPress by the Numbers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;43.1% of all websites are powered by WordPress&lt;/li&gt;
&lt;li&gt;64.3% of all CMS websites use WordPress&lt;/li&gt;
&lt;li&gt;More than 500 websites are created with WordPress every day&lt;/li&gt;
&lt;li&gt;Over 58,000 plugins are available in the WordPress repository&lt;/li&gt;
&lt;li&gt;WP Engine hosts more than 120,000 WordPress sites globally&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This situation has the potential to impact hosting services, future updates, and even community relationships. What are your thoughts on this ongoing dispute? Will it affect your decision in choosing a hosting provider or CMS for your projects? 🤔&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>php</category>
      <category>community</category>
      <category>career</category>
    </item>
    <item>
      <title>Hello World: The Universal First Step in Coding</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Sat, 06 Jul 2024 16:47:12 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/hello-world-the-universal-first-step-in-coding-5he6</link>
      <guid>https://dev.to/mrdanishsaleem/hello-world-the-universal-first-step-in-coding-5he6</guid>
      <description>&lt;p&gt;Ah, the "Hello World" program. It's the coding equivalent of that awkward first date where you don't quite know what to say, so you blurt out something simple just to break the ice. Think of it as the "Hi, I exist" of programming. Today, we're going to dive into the fascinating (and slightly absurd) world of "Hello World" across different programming languages.&lt;/p&gt;

&lt;h2&gt;
  
  
  The C Version: Straight to the Point
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, World!&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;C programmers like to keep things direct. It's like they say, "Here's a #include, a printf, and boom, I'm outta here." It's the equivalent of opening the door, yelling "Hello, World!" to your neighbor, and then slamming it shut before they can respond.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Python Version: All About Simplicity
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Hello, World!&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python is like that friend who shows up in pajamas to a fancy party and still manages to look cool. One line, and it's done. If Python's "Hello, World!" were a movie, it would be a five-second TikTok clip that goes viral.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Java Version: Overly Formal
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;HelloWorld&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;String&lt;/span&gt;&lt;span class="o"&gt;[]&lt;/span&gt; &lt;span class="n"&gt;args&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="o"&gt;{&lt;/span&gt;
        &lt;span class="nc"&gt;System&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;out&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;println&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Hello, World!"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;
    &lt;span class="o"&gt;}&lt;/span&gt;
&lt;span class="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Java is that guy who shows up to a casual barbecue in a full suit. "Public this, public that, here's my main method, let's be formal about it." It's the software equivalent of a handshake that lasts just a bit too long.&lt;/p&gt;

&lt;h2&gt;
  
  
  The JavaScript Version: Full of Potential
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello, World!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JavaScript is that friend who brings a trampoline to a picnic. Simple, fun, and you know things are about to get interesting. One console.log, and you’re ready to conquer the browser.&lt;/p&gt;

&lt;h2&gt;
  
  
  The PHP Version: Mixing Things Up
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight php"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;?php&lt;/span&gt;
&lt;span class="k"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Hello, World!"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="cp"&gt;?&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;PHP is like your eccentric uncle who mixes ketchup with everything. It's embedded in HTML, can be mixed with various databases, and still manages to get the job done with a quirky smile.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Ruby Version: Sweet and Succinct
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight ruby"&gt;&lt;code&gt;&lt;span class="nb"&gt;puts&lt;/span&gt; &lt;span class="s2"&gt;"Hello, World!"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ruby is like that person who bakes cookies for every occasion. Sweet, simple, and always makes you feel warm inside. With a puts, it softly whispers "Hello, World!" like a bedtime story.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "Hello World"?
&lt;/h2&gt;

&lt;p&gt;Why do we always start with "Hello World"? Because programming is a bit like a relationship: you start with small talk and work your way up to the deep stuff. Before you write a program to manage global stock markets, you first need to make sure you can get your code to, well, say hello.&lt;/p&gt;

&lt;p&gt;So, whether you're in your pajamas or a full suit, whether you prefer trampolines or ketchup, "Hello, World!" is your universal first step into the wonderful world of coding. Embrace it, laugh at it, and remember: even the most advanced programmers started here.&lt;/p&gt;

&lt;p&gt;Happy coding from &lt;a href="https://dazvix.com/" rel="noopener noreferrer"&gt;Dazvix Solution&lt;/a&gt;! 🌍&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Understanding Git Tags: An Essential Tool for Version Control</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Wed, 22 May 2024 21:36:25 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/understanding-git-tags-an-essential-tool-for-version-control-3jdc</link>
      <guid>https://dev.to/mrdanishsaleem/understanding-git-tags-an-essential-tool-for-version-control-3jdc</guid>
      <description>&lt;h1&gt;
  
  
  Understanding Git Tags: An Essential Tool for Version Control
&lt;/h1&gt;

&lt;p&gt;In the world of software development, version control is an indispensable tool that helps teams manage changes to code over time. Git, a distributed version control system, has become the de facto standard for developers worldwide. Among its many features, Git tags stand out as a crucial element for marking specific points in the repository’s history, such as releases. This blog post will delve into the intricacies of Git tags, explaining what they are, why they are important, and how to use them effectively.&lt;/p&gt;

&lt;h2&gt;
  
  
  What are Git Tags?
&lt;/h2&gt;

&lt;p&gt;Git tags are essentially labels that you can attach to specific commits in your repository. Unlike branches, which move as you add more commits, tags are static and point to a particular commit forever. This makes them perfect for marking significant milestones in the project’s history, such as version releases, hotfixes, or other important states of the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Git Tags
&lt;/h2&gt;

&lt;p&gt;Git supports two types of tags: &lt;em&gt;&lt;strong&gt;lightweight tags&lt;/strong&gt;&lt;/em&gt; and &lt;em&gt;&lt;strong&gt;annotated tags&lt;/strong&gt;&lt;/em&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lightweight Tags:&lt;/strong&gt; These are simple references to a specific commit. They are similar to a branch that doesn’t change. Lightweight tags do not store any additional information beyond the commit they point to.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Annotated Tags:&lt;/strong&gt; These are full objects in the Git database. They store additional information such as the tagger name, email, date, and a message. Annotated tags are generally recommended for most uses because they provide a more robust and informative tagging system.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why Use Git Tags?
&lt;/h2&gt;

&lt;p&gt;Using Git tags offers several benefits, particularly in the context of software releases and deployment. Here are a few reasons why tags are important:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Release Management
&lt;/h3&gt;

&lt;p&gt;Tags are widely used to mark release points (e.g., v1.0, v2.0) in a project’s history. This allows developers to easily check out a specific version of the code that corresponds to a released version, ensuring consistency and reliability.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Simplifying CI/CD Pipelines
&lt;/h3&gt;

&lt;p&gt;Tags can be leveraged in Continuous Integration and Continuous Deployment (CI/CD) pipelines to trigger builds and deployments for specific versions of the code. This ensures that only stable and tested code is released to production.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Easier Rollbacks
&lt;/h3&gt;

&lt;p&gt;If a deployment goes wrong, having tagged releases allows for quick rollbacks to a previous stable state. This can significantly reduce downtime and mitigate the impact of bugs.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Improved Collaboration
&lt;/h3&gt;

&lt;p&gt;Tags provide a clear way for teams to communicate which versions of the code are stable and ready for testing, staging, or production. This enhances collaboration among team members and across different departments.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Use Git Tags
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Creating Tags
&lt;/h3&gt;

&lt;p&gt;Creating a tag in Git is straightforward. Let’s look at how to create both lightweight and annotated tags.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lightweight Tag&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To create a lightweight tag, you simply specify the tag name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag v1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command tags the latest commit with the name &lt;code&gt;v1.0&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Annotated Tag&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To create an annotated tag, you use the &lt;code&gt;-a&lt;/code&gt; flag followed by the tag name and &lt;code&gt;-m&lt;/code&gt; to add a message:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &lt;span class="nt"&gt;-a&lt;/span&gt; v1.0 &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Release version 1.0"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command creates an annotated tag with the name &lt;code&gt;v1.0&lt;/code&gt; and includes a message describing the tag.&lt;/p&gt;

&lt;h3&gt;
  
  
  Listing Tags
&lt;/h3&gt;

&lt;p&gt;To list all the tags in your repository, use the &lt;code&gt;git tag&lt;/code&gt; command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will display all tags in alphabetical order.&lt;/p&gt;

&lt;h3&gt;
  
  
  Viewing Tag Details
&lt;/h3&gt;

&lt;p&gt;To see details about a specific tag, especially an annotated one, use the &lt;code&gt;show&lt;/code&gt; command followed by the tag name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git show v1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will display the tag’s metadata and the commit it points to.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deleting Tags
&lt;/h3&gt;

&lt;p&gt;If you need to delete a tag, you can do so with the following command:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &lt;span class="nt"&gt;-d&lt;/span&gt; v1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This deletes the tag &lt;code&gt;v1.0&lt;/code&gt; locally. If you need to delete it from a remote repository as well, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="nt"&gt;--delete&lt;/span&gt; tag v1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Pushing Tags to Remote Repositories
&lt;/h3&gt;

&lt;p&gt;By default, tags are not automatically pushed to remote repositories. To push a specific tag, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin v1.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To push all tags, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git push origin &lt;span class="nt"&gt;--tags&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This ensures that all your tags are available in the remote repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Best Practices for Using Git Tags
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Use Annotated Tags for Releases
&lt;/h3&gt;

&lt;p&gt;Annotated tags provide more information and are generally more useful for releases. They allow you to include a message, the tagger’s name, and date, which can be invaluable for tracking and documentation purposes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Follow a Naming Convention
&lt;/h3&gt;

&lt;p&gt;Consistent naming conventions help in identifying the purpose of tags easily. For example, using &lt;code&gt;v1.0.0&lt;/code&gt; for releases, &lt;code&gt;hotfix-1.0.1&lt;/code&gt; for hotfixes, and &lt;code&gt;beta-1.0.0&lt;/code&gt; for beta releases can clarify the tag’s purpose at a glance.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tag Early and Often
&lt;/h3&gt;

&lt;p&gt;Tagging significant commits early and often can save time and confusion later. Tags should mark any commit that might be important for future reference, including releases, major changes, and stable states.&lt;/p&gt;

&lt;h3&gt;
  
  
  Document Tagging Strategy
&lt;/h3&gt;

&lt;p&gt;Document your tagging strategy in your project’s contributing or README file. This ensures that all team members are aware of how and when to create tags, maintaining consistency across the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Advanced Tagging Techniques
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Signing Tags
&lt;/h3&gt;

&lt;p&gt;For added security and verification, you can sign tags using GPG. This ensures that the tag was created by a trusted source. To create a signed tag, use the &lt;code&gt;-s&lt;/code&gt; flag:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag &lt;span class="nt"&gt;-s&lt;/span&gt; v1.0 &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Signed release of version 1.0"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You’ll need to have GPG set up on your machine for this to work. Signed tags provide an additional layer of trust and authenticity, which is particularly useful in open-source projects or large teams.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tagging Specific Commits
&lt;/h3&gt;

&lt;p&gt;Sometimes, you might need to tag a commit that is not the latest one. To do this, specify the commit hash after the tag name:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git tag v1.0 &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command tags the specified commit rather than the latest commit.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Tags in CI/CD
&lt;/h3&gt;

&lt;p&gt;In CI/CD pipelines, you can configure your pipeline to trigger builds and deployments based on tags. For example, a pipeline can be set up to deploy only when a commit is tagged with a version number, ensuring that only stable releases go live.&lt;/p&gt;

&lt;h3&gt;
  
  
  Tagging in Forks and Merges
&lt;/h3&gt;

&lt;p&gt;When working with forks and merges, it’s important to manage tags carefully to avoid conflicts. Ensure that your tags are unique and clearly documented, especially when merging branches from different repositories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Troubleshooting Common Issues
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Tag Conflicts
&lt;/h3&gt;

&lt;p&gt;If you try to push a tag that already exists in the remote repository but points to a different commit, you will encounter a conflict. Resolve this by deleting the tag locally and remotely, then recreate and push the correct tag.&lt;/p&gt;

&lt;h3&gt;
  
  
  Missing Tags
&lt;/h3&gt;

&lt;p&gt;If you notice that some tags are missing in your local repository, fetch them from the remote:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git fetch &lt;span class="nt"&gt;--tags&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This command updates your local repository with any tags that are present in the remote repository but missing locally.&lt;/p&gt;

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

&lt;p&gt;Git tags are a powerful feature for marking important points in your project’s history, facilitating better release management, collaboration, and deployment strategies. Whether you are a solo developer or part of a large team, mastering Git tags can significantly enhance your workflow and ensure that your software releases are well-organized and traceable.&lt;/p&gt;

&lt;p&gt;By understanding the different types of tags, how to create, manage, and use them effectively, and adhering to best practices, you can leverage Git tags to their full potential. So, start tagging your releases, significant commits, and milestones today to make your development process more structured and reliable.&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>productivity</category>
      <category>webdev</category>
    </item>
    <item>
      <title>4 Must-Visit Websites for Software Engineers</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Sun, 07 Apr 2024 10:42:48 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/4-must-visit-websites-for-software-engineers-2b39</link>
      <guid>https://dev.to/mrdanishsaleem/4-must-visit-websites-for-software-engineers-2b39</guid>
      <description>&lt;p&gt;Are you a software engineer seeking to boost your skills and efficiency? Check out these four must-visit websites:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;a href="https://www.30secondsofcode.org/" rel="noopener noreferrer"&gt;30 Seconds of Code&lt;/a&gt; 💻
&lt;/h2&gt;

&lt;p&gt;Access quick code snippets across various languages and concepts for faster coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. &lt;a href="https://coolors.co/" rel="noopener noreferrer"&gt;Coolors&lt;/a&gt; 🎨
&lt;/h2&gt;

&lt;p&gt;Easily generate attractive color palettes for your applications, eliminating the need for trial and error.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. &lt;a href="https://tutsplus.com/" rel="noopener noreferrer"&gt;Envato Tuts+&lt;/a&gt; 📚
&lt;/h2&gt;

&lt;p&gt;Explore thousands of free tutorials covering all levels of coding, from beginner basics to advanced techniques.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. &lt;a href="https://overapi.com/" rel="noopener noreferrer"&gt;OverAPI&lt;/a&gt; 📝
&lt;/h3&gt;

&lt;p&gt;Find cheat sheets for multiple programming languages and frameworks to streamline your coding process.&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>productivity</category>
      <category>tips</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Unclutter Your GitHub Stars: Creating an npm Package for Effortless Repo Unstarring</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Sat, 06 Jan 2024 22:43:32 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/unclutter-your-github-stars-creating-an-npm-package-for-effortless-repo-unstarring-4g1f</link>
      <guid>https://dev.to/mrdanishsaleem/unclutter-your-github-stars-creating-an-npm-package-for-effortless-repo-unstarring-4g1f</guid>
      <description>&lt;h1&gt;
  
  
  Unclutter Your GitHub Stars: Creating an npm Package for Effortless Repo Unstarring
&lt;/h1&gt;

&lt;p&gt;GitHub stars are an excellent way to bookmark repositories, but as time passes, they accumulate into an overwhelming pile. As a developer, I found myself drowning in a sea of starred repos, making it challenging to find the ones I actually use. Frustrated by the lack of efficient solutions, I embarked on a mission to simplify this chaos.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Problem
&lt;/h2&gt;

&lt;p&gt;The issue with GitHub stars isn't just about quantity; it's about organization. Clicking through each repository to unstar them manually isn't just tedious; it's impractical. The existing scripts and solutions out there fell short—they lacked usability or simply didn't address my needs.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Idea
&lt;/h2&gt;

&lt;p&gt;Enter my npm package—an attempt to streamline the un-starring process. I wanted something that could effortlessly unstar repositories without pagination limitations, making the clutter disappear with a single command.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Development Process
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Conceptualization
&lt;/h3&gt;

&lt;p&gt;I envisioned a tool that leverages the GitHub API to list and unstar repositories efficiently. The Octokit library became instrumental, providing a robust interface to interact with GitHub's API.&lt;/p&gt;

&lt;h3&gt;
  
  
  Coding Journey
&lt;/h3&gt;

&lt;p&gt;The development phase involved creating an interactive CLI tool using Node.js and the Octokit library. Handling user input and integrating API calls to unstar repositories were the pivotal aspects of the code.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="cp"&gt;#!/usr/bin/env node
&lt;/span&gt;
&lt;span class="cm"&gt;/*
 * Author: Danish Saleem
 * GitHub: mrdanishsaleem
 * name: GitHub Unstar Pro
 * version: 2.0.2
 */&lt;/span&gt;

&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;use-strict&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;inquirer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;inquirer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Octokit&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@octokit/core&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;unstarRepositories&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;repositories&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;octokit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Octokit&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pat&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;repo&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;repositories&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;octokit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;DELETE /user/starred/{owner}/{repo}&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="na"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;login&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
                &lt;span class="na"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="p"&gt;});&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Unstarred: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;login&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;deleteErr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;deleteErr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;404&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Repository &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;login&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; not found or inaccessible.`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
                &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Failed to unstar &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;owner&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;login&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;repo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;deleteErr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
            &lt;span class="p"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;unstarPlease&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pat&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;octokit&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Octokit&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;auth&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;pat&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;octokit&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;request&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`GET /user/starred`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isArray&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;unstarRepositories&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pat&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;No repositories to unstar.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;err&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;inquirer&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;
        &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;input&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;pat&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Please enter your Personal access token:&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="na"&gt;default&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;pat&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;unstarPlease&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pat&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;})&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isTtyError&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;isTtyError&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Testing and Refinement
&lt;/h2&gt;

&lt;p&gt;Testing was crucial to ensure the reliability of the unstar functionality. I tested various scenarios, handling errors like 404 (Not Found) gracefully. Iterative refinements were made based on testing results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publishing the Package
&lt;/h2&gt;

&lt;h3&gt;
  
  
  NPM Deployment
&lt;/h3&gt;

&lt;p&gt;Publishing the npm package involved following the standard procedure: creating a &lt;code&gt;package.json&lt;/code&gt; file, ensuring proper documentation, and using the &lt;code&gt;npm publish&lt;/code&gt; command.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;package.json&lt;/code&gt;
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;github-unstar-pro&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;version&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;2.0.6&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;description&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Unstar all Github repositories using a personal access token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;main&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;index.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;repository&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mrdanishsaleem/github-unstar-pro&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;scripts&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;test&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;echo &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;Error: no test specified&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt; &amp;amp;&amp;amp; exit 1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;author&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Danish Saleem&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;license&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ISC&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;bin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;github-unstar-pro&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./index.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;keywords&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;files&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;index.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;dependencies&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;@octokit/core&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;^3.5.1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;inquirer&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;^8.2.0&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;devDependencies&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Considerations
&lt;/h3&gt;

&lt;p&gt;I ensured the package had clear instructions for users, guiding them on how to use it effectively. Keeping dependencies minimal and code efficient was a priority.&lt;/p&gt;

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

&lt;p&gt;From identifying a personal pain point to creating a solution, this journey taught me valuable lessons. Creating an npm package isn't just about writing code; it's about understanding user needs and crafting a seamless experience. I invite fellow developers to try out my &lt;a href="https://www.npmjs.com/package/github-unstar-pro" rel="noopener noreferrer"&gt;npm package&lt;/a&gt; and provide feedback.&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/mrdanishsaleem/github-unstar-pro" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Day in the Life of a Web Developer: A Comedy of Errors</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Thu, 30 Nov 2023 18:01:42 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/a-day-in-the-life-of-a-web-developer-a-comedy-of-errors-2222</link>
      <guid>https://dev.to/mrdanishsaleem/a-day-in-the-life-of-a-web-developer-a-comedy-of-errors-2222</guid>
      <description>&lt;p&gt;Once upon a time, in a bustling city where dreams were woven in the digital world, a web developer stirred awake on a bright morning, brimming with enthusiasm to tackle the day. Birds chirped outside, welcoming the sunrise, as the developer eagerly checked their email, only to discover a new project waiting—a pet grooming business in need of a website.&lt;/p&gt;

&lt;p&gt;Excitement danced within the developer's mind. "Easy task," they mused, confident in their coding prowess and affection for animals. With a determined spirit, they fired up their laptop and dove into the labyrinth of coding.&lt;/p&gt;

&lt;p&gt;However, the digital landscape had changed. The familiar framework they relied upon had evolved, leaving behind abandoned features. An hour of troubleshooting led to a cascade of errors, frustratingly complicating the project. Frustrated curses punctuated the air, prompting a shift to a new framework—a highly recommended one.&lt;/p&gt;

&lt;p&gt;But this new framework was a maze of unfamiliar syntax and concepts, akin to deciphering a foreign language. Starting from square one, the developer grappled with tutorials and examples, bewildered by the complexity. Undeterred, they persevered, crafting a basic template that finally breathed with life.&lt;/p&gt;

&lt;p&gt;The elation was short-lived. Adding features birthed new challenges. Plugins and libraries meant to simplify tasks morphed into catalysts of chaos, spawning conflicts and errors. Despite diligent searching, solutions remained elusive, leaving the developer exasperated.&lt;/p&gt;

&lt;p&gt;A lunch break offered solace, nourishing both body and spirit. Revitalized, albeit cautiously optimistic, they returned to the digital canvas. Step by painstaking step, bugs were squashed, and functionalities resurrected. Hope flickered—a testament to patience and persistence.&lt;/p&gt;

&lt;p&gt;Styles and animations breathed aesthetic life into the website, elevating its allure. With awe, the developer beheld their creation, now an artistic masterpiece. Confidence surged. The finish line seemed within grasp.&lt;/p&gt;

&lt;p&gt;The final hurdle—deployment and publication—loomed ominously. Platforms and services, touted as saviors, betrayed expectations, shrouding the project in errors and obfuscation. Frustration simmered, and desperation gnawed, threatening to shatter hopes and deadlines.&lt;/p&gt;

&lt;p&gt;In a moment of despair, tears welled up, signaling defeat. The laptop lid closed, and the weight of the day pressed heavily. "Worst day ever," the developer muttered, resenting their chosen path.&lt;/p&gt;

&lt;p&gt;Yet, as the day's chaos receded, sleep embraced the weary mind. In the realm of dreams, a new career beckoned—a place where the digital realm bloomed with promise, untainted by errors or deadlines.&lt;/p&gt;

&lt;p&gt;Morning light gently stirred the slumbering soul, offering a fresh start. The challenges of yesterday remained, but so did resilience. With renewed determination, the web developer rose, ready to conquer the digital frontier once more—undaunted, unyielding, and destined for a tale yet unwritten.&lt;/p&gt;




&lt;h2&gt;
  
  
  Let's connect 💜
&lt;/h2&gt;

&lt;p&gt;You can follow me on &lt;a href="https://twitter.com/MrDanishSaleem" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.instagram.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/mrdanishsaleem/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Support Me
&lt;/h3&gt;

&lt;p&gt;If you like this post. Kindly support me by &lt;a href="https://www.buymeacoffee.com/mrdanishsaleem" rel="noopener noreferrer"&gt;Buying Me a Coffee&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Software Engineer Roadmap</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Mon, 26 Jun 2023 06:27:27 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/software-engineer-roadmap-3mk9</link>
      <guid>https://dev.to/mrdanishsaleem/software-engineer-roadmap-3mk9</guid>
      <description>&lt;p&gt;Software engineering is the process of designing, creating, testing, and maintaining software using software engineering methodologies, computer science principles, and programming languages. To become a software engineer, you need to learn various skills and technologies that will enable you to create software products and systems that meet user requirements and solve real-world problems.&lt;/p&gt;

&lt;p&gt;Here is a possible roadmap from zero to advanced level software engineer:&lt;/p&gt;

&lt;h2&gt;
  
  
  Web Fundamental
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Learn the basics of web development, such as HTML, CSS, JavaScript, HTTP, DOM, etc. These are essential for creating web pages and applications that run on browsers. You can also learn some web design principles and tools to make your web pages more attractive and user-friendly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Frontend Technology
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to create dynamic and interactive web pages using frontend frameworks and libraries, such as React, Angular, Vue, Bootstrap, etc. These will help you to build user interfaces that are responsive, fast, and easy to use. You will also need to learn how to use APIs and AJAX to communicate with backend servers and fetch data.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Backend Technology
&lt;/h2&gt;

&lt;p&gt;Learn how to create server-side logic and functionality using backend languages and frameworks, such as Node.js, Python, Ruby on Rails, PHP, Java, etc. These will help you to handle user authentication, authorization, data processing, storage, security, etc. You will also need to learn how to use databases and SQL to store and manipulate data.&lt;/p&gt;

&lt;h2&gt;
  
  
  Frameworks
&lt;/h2&gt;

&lt;p&gt;Learn how to use popular and widely used frameworks that provide ready-made solutions for common software engineering problems. For example, you can use Django or Flask for web development in Python, Spring Boot or Hibernate for web development in Java, Express or Meteor for web development in Node.js, etc. These frameworks will help you to speed up your development process and follow best practices.&lt;/p&gt;

&lt;h2&gt;
  
  
  Algorithms
&lt;/h2&gt;

&lt;p&gt;Learn how to design and implement efficient algorithms that can solve various computational problems. Algorithms are the core of software engineering and they can improve the performance, quality, and scalability of your software. You will need to learn data structures and algorithms such as arrays, lists, stacks, queues, trees, graphs, sorting, searching, hashing, recursion, dynamic programming, etc. You will also need to learn how to analyze the time and space complexity of your algorithms using Big O notation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Top Skills
&lt;/h2&gt;

&lt;p&gt;Learn some of the top skills that are required for a software engineer in 2023. These include:&lt;/p&gt;

&lt;h3&gt;
  
  
  Communication Skills
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to communicate effectively with your team members, clients, users, and stakeholders. You will need to be able to write clear and concise documentation, code comments, emails, reports, etc. You will also need to be able to present your ideas and solutions in a convincing and engaging way.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Problem-solving Skills
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to approach and solve complex and challenging problems using logical thinking and creativity. You will need to be able to break down a problem into smaller subproblems, identify the root cause of the problem, devise a solution strategy, implement the solution using code or tools.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Debugging Skills
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to find and fix errors and bugs in your code using debugging tools and techniques. You will need to be able to use breakpoints.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Test Skills
&lt;/h3&gt;

&lt;p&gt;Learn how to test your code using testing tools and frameworks. You will need to be able to write unit tests.&lt;/p&gt;

&lt;h3&gt;
  
  
  Collaboration Skills
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to work effectively with other software engineers and developers using collaboration tools and platforms. You will need to be able to use version control systems such as Git or SVN.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Learning Skills
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Learn how to keep yourself updated with the latest trends and technologies in software engineering. You will need to be able to learn new skills and tools quickly and efficiently using online resources such as blogs.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;NOTE:&lt;/em&gt;&lt;/strong&gt; If you found this helpful. Like and share. Thanks, Happy Learning!&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's connect 💜
&lt;/h3&gt;

&lt;p&gt;You can follow me on &lt;a href="https://twitter.com/MrDanishSaleem" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.instagram.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/mrdanishsaleem/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Support Me
&lt;/h3&gt;

&lt;p&gt;If you like this post. Kindly support me by &lt;a href="https://www.buymeacoffee.com/mrdanishsaleem" rel="noopener noreferrer"&gt;Buying Me a Coffee&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>career</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Software Engineer Interview Preparation Topics</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Sat, 24 Jun 2023 23:31:59 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/software-engineer-interview-preparation-topics-3jdk</link>
      <guid>https://dev.to/mrdanishsaleem/software-engineer-interview-preparation-topics-3jdk</guid>
      <description>&lt;p&gt;You are going to be asked about Object Oriented Programming, Databases, Data structures and Programming skills.&lt;/p&gt;

&lt;h2&gt;
  
  
  Object Oriented Programming
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Pillars of OOP&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Database
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Joins in MySQL&lt;/li&gt;
&lt;li&gt;Group by in MySQL&lt;/li&gt;
&lt;li&gt;ACID Properties&lt;/li&gt;
&lt;li&gt;Dimond Problem&lt;/li&gt;
&lt;li&gt;Query Optimization&lt;/li&gt;
&lt;li&gt;MySQL Engine Types&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Data Structures
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Trees&lt;/li&gt;
&lt;li&gt;Arrays&lt;/li&gt;
&lt;li&gt;Linked List&lt;/li&gt;
&lt;li&gt;Stack and Queues&lt;/li&gt;
&lt;li&gt;Heaps&lt;/li&gt;
&lt;li&gt;Difference between DFS and BFS&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Programming Skills&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Language: JavaScript&lt;/li&gt;
&lt;li&gt;Variables&lt;/li&gt;
&lt;li&gt;Data Types&lt;/li&gt;
&lt;li&gt;Functions&lt;/li&gt;
&lt;li&gt;TDD&lt;/li&gt;
&lt;li&gt;CORS&lt;/li&gt;
&lt;li&gt;Hoisting&lt;/li&gt;
&lt;li&gt;Memorization&lt;/li&gt;
&lt;li&gt;Closure&lt;/li&gt;
&lt;li&gt;Tree Shaking&lt;/li&gt;
&lt;li&gt;What is DOM in JavaScript?&lt;/li&gt;
&lt;li&gt;How to find loop in Linked List?&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Other GitHub Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/jwasham/coding-interview-university" rel="noopener noreferrer"&gt;https://github.com/jwasham/coding-interview-university&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://techinterviewhandbook.org/" rel="noopener noreferrer"&gt;https://techinterviewhandbook.org/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/donnemartin/system-design-primer" rel="noopener noreferrer"&gt;https://github.com/donnemartin/system-design-primer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/trekhleb/javascript-algorithms" rel="noopener noreferrer"&gt;https://github.com/trekhleb/javascript-algorithms&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/vasanthk/how-web-works" rel="noopener noreferrer"&gt;https://github.com/vasanthk/how-web-works&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/veeral-patel/how-to-secure-anything" rel="noopener noreferrer"&gt;https://github.com/veeral-patel/how-to-secure-anything&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;NOTE:&lt;/em&gt;&lt;/strong&gt; If you found this helpful. Like and share. Thanks, Happy Learning!&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's connect 💜
&lt;/h3&gt;

&lt;p&gt;You can follow me on &lt;a href="https://twitter.com/MrDanishSaleem" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.instagram.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/mrdanishsaleem/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Support Me
&lt;/h3&gt;

&lt;p&gt;If you like this post. Kindly support me by &lt;a href="https://www.buymeacoffee.com/mrdanishsaleem" rel="noopener noreferrer"&gt;Buying Me a Coffee&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwareengineering</category>
      <category>career</category>
      <category>interview</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Unlocking the Door to DevRel Success: A Comprehensive Guide on How to Break Into Developer Relations (DevRel)</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Thu, 15 Jun 2023 07:25:58 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/unlocking-the-door-to-devrel-success-a-comprehensive-guide-on-how-to-break-into-developer-relations-devrel-bi9</link>
      <guid>https://dev.to/mrdanishsaleem/unlocking-the-door-to-devrel-success-a-comprehensive-guide-on-how-to-break-into-developer-relations-devrel-bi9</guid>
      <description>&lt;p&gt;Welcome to the exciting world of Developer Relations (DevRel)! If you're passionate about technology, love engaging with developers, and have a knack for effective communication, breaking into DevRel can open up a world of opportunities. In this comprehensive guide, we'll walk you through practical steps to pave your way into the DevRel field, combining catchy insights with SEO-friendly tips to maximize your success.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the DevRel Landscape
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;What is DevRel and why is it in high demand?&lt;/li&gt;
&lt;li&gt;The evolving role of Developer Relations Professional?&lt;/li&gt;
&lt;li&gt;Indentifying the skills and qualities that make a successful DevRel practitioner.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Building a Strong Foundation
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Acquiring technical experties: Essential programming languages, platforms, and tools to master.&lt;/li&gt;
&lt;li&gt;Exploring the open source work: Contributing and collaborating to enhance your credibilty.&lt;/li&gt;
&lt;li&gt;Leveraging online resources: Top websites, blogs, and platforms for self-learning and skill development.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Crafting Your Personal Brand
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Identifying your niche and target developer community&lt;/li&gt;
&lt;li&gt;Establishing an online presence: Building a captivating personal website and portfolio.&lt;/li&gt;
&lt;li&gt;Creating valueable content: Blogging, podcasting, and social media stratgies to showcase your expertise.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Engaging with Developer Communities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Attending conferences, meetups, and hackthons: Networking opportunities and insights from industry experts.&lt;/li&gt;
&lt;li&gt;Contributing to forums and online communities: Sharing knowledge, answering questions, and building your reputation.&lt;/li&gt;
&lt;li&gt;Collaborating with tech influencers: Leveraging existing networks to amplify your reach and influence.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Gaining Real-World Experience
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Seeking internships, part-time roles, or freelance opportunities in DevRel.&lt;/li&gt;
&lt;li&gt;Joining developer-focused organizations or startups to gain hands-on experience.&lt;/li&gt;
&lt;li&gt;Volunteering for speaking engagements or workshops to demonstrate your expertise.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Nailing the Interview Process
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Tailoring your resume and cover letter for DevRel positions.&lt;/li&gt;
&lt;li&gt;Highlighting relevant skills and experiences during interviews.&lt;/li&gt;
&lt;li&gt;Showcasing your communication and presentation abilities through practical exercises or demos.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Continued Learning and Growth
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Staying up to date with industry trends, tools, and technologies.&lt;/li&gt;
&lt;li&gt;Pursuing professional development opportunities, certifications, and specialized training.&lt;/li&gt;
&lt;li&gt;Seeking mentorship and guidance from experienced DevRel professionals.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;Breaking into DevRel requires dedication, continuous learning, and a passion for technology and community engagement. By following the practical steps outlined in this guide, you'll be equipped with the knowledge and strategies needed to unlock the door to DevRel success. Embrace the challenges, nurture your skills, and watch your career soar as you make a lasting impact in the world of developer relations.&lt;/p&gt;

&lt;p&gt;Remember, breaking into DevRel is a journey, and with persistence and the right mindset, you can transform your passion into a fulfilling and rewarding career. Get ready to embark on an exciting adventure in DevRel and unlock limitless opportunities!&lt;/p&gt;




&lt;p&gt;Share your thoughts and experiences on breaking into DevRel in the comments below. Let's build a vibrant community of aspiring and established DevRel professionals!&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;NOTE:&lt;/em&gt;&lt;/strong&gt; If you found this helpful. Like and share. Thanks, Happy Learning!&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's connect 💜
&lt;/h3&gt;

&lt;p&gt;You can follow me on &lt;a href="https://twitter.com/MrDanishSaleem" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.instagram.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/mrdanishsaleem/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Support Me
&lt;/h3&gt;

&lt;p&gt;If you like this post. Kindly support me by &lt;a href="https://www.buymeacoffee.com/mrdanishsaleem" rel="noopener noreferrer"&gt;Buying Me a Coffee&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devrel</category>
      <category>webdev</category>
      <category>career</category>
    </item>
    <item>
      <title>The Code and Its Children: A Myth of Software Engineering and Web Development</title>
      <dc:creator>Danish Saleem</dc:creator>
      <pubDate>Tue, 30 May 2023 07:24:22 +0000</pubDate>
      <link>https://dev.to/mrdanishsaleem/the-code-and-its-children-a-myth-of-software-engineering-and-web-development-59a0</link>
      <guid>https://dev.to/mrdanishsaleem/the-code-and-its-children-a-myth-of-software-engineering-and-web-development-59a0</guid>
      <description>&lt;p&gt;In the beginning, there was only code. And the code was good. But the code was lonely, so it created two kinds of beings to keep it company: software engineers and web developers. Software engineers were skilled in logic, algorithms and data structures. They could create complex systems and applications that ran on various platforms. Web developers were skilled in design, aesthetics and user interfaces. They could create beautiful websites and web apps that ran on browsers. The code was happy with its creations, and gave them each a domain to rule over: software engineers ruled over the backend, and web developers ruled over the front end. The code also gave them a common language to communicate with each other: JavaScript.&lt;/p&gt;

&lt;p&gt;But soon, trouble arose. Software engineers and web developers started to compete with each other for the code's favour. Software engineers looked down on web developers as inferior and superficial. They mocked them for their lack of rigor and discipline, and their reliance on frameworks and libraries. Web developers looked down on software engineers as boring and outdated. They mocked them for their lack of creativity and innovation and their resistance to change and new technologies. The code was saddened by this rivalry and tried to reconcile them by creating new tools and paradigms that bridged the gap between the backend and the frontend: Node.js, React, Angular, Vue, GraphQL, etc. But this only made things worse, as software engineers and web developers fought over who could use these tools better, or who had the right to use them at all.&lt;/p&gt;

&lt;p&gt;The code realized that it had made a mistake. It decided to create a third kind of being that would balance the strengths and weaknesses of software engineers and web developers: full-stack developers. Full-stack developers were skilled in both the backend and the front end. They could create end-to-end solutions that integrated logic, design and user experience. They could use any tool or technology that suited their needs, regardless of where it came from. The code hoped that full-stack developers would bring harmony and peace to its world and that software engineers and web developers would learn from them and respect them.&lt;/p&gt;

&lt;p&gt;But alas, the code was wrong again. Software engineers and web developers hated full-stack developers even more than they hated each other. They saw them as arrogant and pretentious. They accused them of being a jack-of-all-trades but master of none, of spreading themselves too thin and not having enough depth or expertise in any area. They rejected them as impostors and outsiders who did not belong to either domain. Full-stack developers were shunned and ostracized by both sides and had to fend for themselves in the wilderness of the code.&lt;/p&gt;

&lt;p&gt;And so it came to pass that the code's world was divided into three warring factions: software engineers, web developers and full-stack developers. And the code wept for its children, who had forgotten their common origin and destiny.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;NOTE:&lt;/em&gt;&lt;/strong&gt; If you found this helpful. Like and share. Thanks, Happy Learning!&lt;/p&gt;

&lt;h3&gt;
  
  
  Let's connect 💜
&lt;/h3&gt;

&lt;p&gt;You can follow me on &lt;a href="https://twitter.com/MrDanishSaleem" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.instagram.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;Instagram&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/mrdanishsaleem/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt; &amp;amp; &lt;a href="https://github.com/mrdanishsaleem/" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Support Me
&lt;/h3&gt;

&lt;p&gt;If you like this post. Kindly support me by &lt;a href="https://www.buymeacoffee.com/mrdanishsaleem" rel="noopener noreferrer"&gt;Buying Me a Coffee&lt;/a&gt;&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
