<?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: Samana Mirza</title>
    <description>The latest articles on DEV Community by Samana Mirza (@samanamirza_dev).</description>
    <link>https://dev.to/samanamirza_dev</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%2F2556559%2Fc8aa47fd-91ed-483b-a4f1-8ebc89fd780d.png</url>
      <title>DEV Community: Samana Mirza</title>
      <link>https://dev.to/samanamirza_dev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/samanamirza_dev"/>
    <language>en</language>
    <item>
      <title>Mastering SQL: Optimizing Queries with Smarter Techniques</title>
      <dc:creator>Samana Mirza</dc:creator>
      <pubDate>Mon, 03 Mar 2025 10:20:04 +0000</pubDate>
      <link>https://dev.to/samanamirza_dev/mastering-sql-optimizing-queries-with-smarter-techniques-25m4</link>
      <guid>https://dev.to/samanamirza_dev/mastering-sql-optimizing-queries-with-smarter-techniques-25m4</guid>
      <description>&lt;p&gt;SQL is powerful, but writing &lt;strong&gt;efficient&lt;/strong&gt; and &lt;strong&gt;readable&lt;/strong&gt; queries makes all the difference. While working on various databases, I’ve discovered some underrated SQL concepts that improve both &lt;strong&gt;performance&lt;/strong&gt; and &lt;strong&gt;maintainability&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Let’s explore some key &lt;strong&gt;SQL best practices&lt;/strong&gt;, with practical examples to help you optimize your queries!&lt;/p&gt;

&lt;h2&gt;
  
  
  1️⃣ COALESCE vs. ISNULL – Handling NULLs the Right Way
&lt;/h2&gt;

&lt;p&gt;Both &lt;code&gt;COALESCE&lt;/code&gt; and &lt;code&gt;ISNULL&lt;/code&gt; handle &lt;code&gt;NULL&lt;/code&gt; values, but &lt;code&gt;COALESCE&lt;/code&gt; offers more flexibility.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;`SELECT ISNULL(NULL, 'Fallback');   -- Returns: 'Fallback'
SELECT COALESCE(NULL, NULL, 'Fallback', 'Another Value');  -- Returns: 'Fallback'`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Use &lt;code&gt;COALESCE&lt;/code&gt; when checking multiple values, as it returns the first non-null value.&lt;br&gt;
✔ &lt;code&gt;ISNULL&lt;/code&gt; is limited to two arguments and may cause unexpected type conversions.&lt;/p&gt;


&lt;h2&gt;
  
  
  2️⃣ Avoid IN – Use JOIN for Better Performance
&lt;/h2&gt;

&lt;p&gt;Using &lt;code&gt;IN&lt;/code&gt; in subqueries is often slower than a &lt;code&gt;JOIN&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Using IN (Slower)
SELECT name FROM Employees WHERE department_id IN (SELECT id FROM Departments WHERE location = 'NY');

-- Using JOIN (Faster)
SELECT e.name FROM Employees e JOIN Departments d ON e.department_id = d.id WHERE d.location = 'NY';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ &lt;code&gt;JOIN&lt;/code&gt; is optimized by the SQL engine and executes faster on large datasets.&lt;/p&gt;




&lt;h2&gt;
  
  
  3️⃣ Aliases – A Good Practice Even for Simple Queries
&lt;/h2&gt;

&lt;p&gt;Aliases (&lt;code&gt;AS&lt;/code&gt;) improve readability and make queries more maintainable.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT e.name AS EmployeeName, d.name AS DepartmentName 
FROM Employees e 
JOIN Departments d ON e.department_id = d.id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Even in small queries, aliasing enhances clarity and is extremely helpful in complex queries.&lt;/p&gt;




&lt;h2&gt;
  
  
  4️⃣ GROUP BY vs. PARTITION BY – Understanding the Difference
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;GROUP BY&lt;/code&gt; aggregates data into a single row per group, whereas &lt;code&gt;PARTITION BY&lt;/code&gt; preserves all rows and applies window functions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- GROUP BY (Collapses rows)
SELECT department_id, COUNT(*) AS EmployeeCount FROM Employees GROUP BY department_id;

-- PARTITION BY (Keeps all rows)
SELECT name, department_id, COUNT(*) OVER (PARTITION BY department_id) AS EmployeeCount FROM Employees;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Use &lt;code&gt;GROUP BY&lt;/code&gt; for summary data.&lt;br&gt;
✔ Use &lt;code&gt;PARTITION BY&lt;/code&gt; when you need group-based calculations without losing row-level details.&lt;/p&gt;


&lt;h2&gt;
  
  
  5️⃣ LAG &amp;amp; LEAD – Accessing Previous &amp;amp; Next Row Data
&lt;/h2&gt;

&lt;p&gt;When comparing current vs. previous/future records, &lt;code&gt;LAG&lt;/code&gt; &amp;amp; &lt;code&gt;LEAD&lt;/code&gt; eliminate the need for self-joins.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT name, salary, 
       LAG(salary) OVER (ORDER BY id) AS PreviousSalary,
       LEAD(salary) OVER (ORDER BY id) AS NextSalary
FROM Employees;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ &lt;code&gt;LAG()&lt;/code&gt; fetches the previous row’s value.&lt;br&gt;
✔ &lt;code&gt;LEAD()&lt;/code&gt; fetches the next row’s value.&lt;/p&gt;

&lt;p&gt;Ideal for trend analysis, financial reports, and comparative analytics.&lt;/p&gt;


&lt;h2&gt;
  
  
  6️⃣ RANK() vs. DENSE_RANK() – Choosing the Right Ranking
&lt;/h2&gt;

&lt;p&gt;Both assign ranks, but they handle duplicates differently.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT name, department, salary,
       RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS Rank,
       DENSE_RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS DenseRank
FROM Employees;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ &lt;code&gt;RANK()&lt;/code&gt; skips numbers after duplicates. (eg. Rank - 1, 2, 2, 4, 5)&lt;br&gt;
✔ &lt;code&gt;DENSE_RANK()&lt;/code&gt; assigns consecutive numbers. (eg. Rank - 1, 2, 2, 3, 4)&lt;/p&gt;

&lt;p&gt;Use &lt;code&gt;DENSE_RANK()&lt;/code&gt; when you don’t want ranking gaps.&lt;/p&gt;


&lt;h2&gt;
  
  
  7️⃣ JOIN vs. UNION – How They Differ
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;JOIN&lt;/code&gt; combines columns from multiple tables, while &lt;code&gt;UNION&lt;/code&gt; stacks rows.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- JOIN (Merging column data)
SELECT e.name, d.name FROM Employees e JOIN Departments d ON e.department_id = d.id;

-- UNION (Stacking results)
SELECT name FROM Employees UNION SELECT name FROM Contractors;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Use &lt;code&gt;JOIN&lt;/code&gt; when you need more details from related tables.&lt;br&gt;
✔ Use &lt;code&gt;UNION&lt;/code&gt; when you want to combine results from similar tables.&lt;/p&gt;


&lt;h2&gt;
  
  
  8️⃣ The Power of SUBSTRING() , STRING_AGG() , GROUP_CONCAT()
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;SUBSTRING()&lt;/code&gt; extracts parts of a string.&lt;/p&gt;

&lt;p&gt;Both &lt;code&gt;STRING_AGG&lt;/code&gt; and &lt;code&gt;GROUP_CONCAT&lt;/code&gt; are used to concatenate multiple row values into a single string with a specified separator. However, there are some differences in syntax and capabilities.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT SUBSTRING('Software Developer', 1, 8); -- Returns: 'Software'

SELECT 
    Class, 
    STRING_AGG(Name, ', ') WITHIN GROUP (ORDER BY Name ASC) AS StudentNames
FROM Students
GROUP BY Class;

SELECT 
    Class, 
    GROUP_CONCAT(Name ORDER BY Name ASC SEPARATOR ', ') AS StudentNames
FROM Students
GROUP BY Class;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Great for data cleaning and reporting.&lt;/p&gt;




&lt;h2&gt;
  
  
  9️⃣ The Benefit of CTEs &amp;amp; Aliasing Subqueries
&lt;/h2&gt;

&lt;p&gt;Common Table Expressions (CTEs) improve readability and avoid repeated subqueries.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;WITH DepartmentCount AS (
    SELECT department_id, COUNT(*) AS EmployeeCount FROM Employees GROUP BY department_id
)
SELECT e.name, d.EmployeeCount FROM Employees e JOIN DepartmentCount d ON e.department_id = d.department_id;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ CTEs enhance query structure and avoid nested complexity.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔟 Optimizing JOIN Conditions – AND vs. WHERE
&lt;/h2&gt;

&lt;p&gt;Instead of filtering in WHERE, apply conditions in &lt;code&gt;ON&lt;/code&gt; for better index usage.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Less efficient
SELECT e.name FROM Employees e JOIN Departments d ON e.department_id = d.id WHERE d.location = 'NY';

-- More efficient
SELECT e.name FROM Employees e JOIN Departments d ON e.department_id = d.id AND d.location = 'NY';
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ &lt;code&gt;ON&lt;/code&gt; filters before the join happens, improving performance.&lt;/p&gt;




&lt;h2&gt;
  
  
  1️⃣1️⃣ Avoid SELECT * – Specify Columns
&lt;/h2&gt;

&lt;p&gt;Fetching only required columns improves query speed.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;-- Avoid this
SELECT * FROM Employees;

-- Do this instead
SELECT name, salary FROM Employees;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Reduces memory usage &amp;amp; speeds up query execution.&lt;/p&gt;




&lt;p&gt;1️⃣2️⃣ SQL Execution Order –&lt;/p&gt;

&lt;p&gt;Understanding execution order helps write optimized queries. The order is -&lt;/p&gt;

&lt;p&gt;FROM → JOIN → WHERE → GROUP BY → HAVING → SELECT → ORDER BY → LIMIT&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SELECT department_id, COUNT(*)
FROM Employees
WHERE salary &amp;gt; 50000
GROUP BY department_id
HAVING COUNT(*) &amp;gt; 5;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✔ Queries execute in a different order than written. Hence, they should be written keeping in mind the execution order to improve performance. A useful mnemonic to remember SQL execution is:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;"Fresh Juices With Great Healthy Sweet Orange Lemon"&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;F&lt;/strong&gt;resh → &lt;strong&gt;FROM&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;J&lt;/strong&gt;uices → &lt;strong&gt;JOIN&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;W&lt;/strong&gt;ith → &lt;strong&gt;WHERE&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;G&lt;/strong&gt;reat → &lt;strong&gt;GROUP BY&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;H&lt;/strong&gt;ealthy → &lt;strong&gt;HAVING&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;S&lt;/strong&gt;weet → &lt;strong&gt;SELECT&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;O&lt;/strong&gt;range → &lt;strong&gt;ORDER BY&lt;/strong&gt;&lt;br&gt;
&lt;strong&gt;L&lt;/strong&gt;emon → &lt;strong&gt;LIMIT&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  1️⃣3️⃣ Using LEFT() &amp;amp; RIGHT() for String Manipulation
&lt;/h2&gt;

&lt;p&gt;SELECT LEFT('Developer', 3);  -- Returns 'Dev'&lt;br&gt;
SELECT RIGHT('Database', 4);  -- Returns 'base'&lt;/p&gt;

&lt;p&gt;✔ Great for handling text-based transformations.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Mastering these &lt;strong&gt;SQL techniques&lt;/strong&gt; can significantly &lt;strong&gt;optimize queries&lt;/strong&gt;, improve &lt;strong&gt;performance&lt;/strong&gt;, and make your &lt;strong&gt;code cleaner&lt;/strong&gt; and more &lt;strong&gt;maintainable&lt;/strong&gt;. However, it’s important to note that SQL functions and behaviors can &lt;strong&gt;vary across different database engines&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;GROUP_CONCAT&lt;/code&gt; is available in &lt;strong&gt;MySQL&lt;/strong&gt; but not in &lt;strong&gt;SQL Server&lt;/strong&gt; or &lt;strong&gt;PostgreSQL&lt;/strong&gt;. Instead, they use &lt;code&gt;STRING_AGG&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;ISNULL&lt;/code&gt; is specific to &lt;strong&gt;SQL Server&lt;/strong&gt;, whereas &lt;code&gt;COALESCE&lt;/code&gt; is &lt;strong&gt;ANSI SQL-compliant&lt;/strong&gt; and works across &lt;strong&gt;PostgreSQL&lt;/strong&gt;, &lt;strong&gt;MySQL&lt;/strong&gt;, and others.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;LAG&lt;/code&gt; and &lt;code&gt;LEAD&lt;/code&gt; are widely supported in modern databases but may have different implementations.&lt;/p&gt;

&lt;p&gt;When working with SQL, &lt;strong&gt;always check the documentation of the specific database engine&lt;/strong&gt; you’re using to ensure compatibility and take advantage of engine-specific optimizations.&lt;/p&gt;

&lt;p&gt;👉 Which of these techniques have you used before? What other underrated SQL tricks have helped you? Let’s discuss!&lt;/p&gt;

&lt;p&gt;Happy DevLogging! &amp;lt;3&lt;/p&gt;

</description>
      <category>sql</category>
      <category>dbms</category>
      <category>performance</category>
      <category>database</category>
    </item>
    <item>
      <title>Creating My Own Portfolio Website</title>
      <dc:creator>Samana Mirza</dc:creator>
      <pubDate>Thu, 20 Feb 2025 04:33:10 +0000</pubDate>
      <link>https://dev.to/samanamirza_dev/creating-my-own-portfolio-website-4mhd</link>
      <guid>https://dev.to/samanamirza_dev/creating-my-own-portfolio-website-4mhd</guid>
      <description>&lt;p&gt;A year into the software industry, I felt it was time to build my own &lt;strong&gt;developer portfolio&lt;/strong&gt;—a space that reflects my &lt;strong&gt;skills, experience, and personality&lt;/strong&gt;. With a clear goal in mind, I started this journey, and here's how I navigated through the process.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Laying the Foundation&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;The approach was simple: &lt;strong&gt;minimalistic yet eye-catching&lt;/strong&gt;. I scavenged through multiple developer portfolios, taking major inspiration from &lt;a href="https://brittanychiang.com/" rel="noopener noreferrer"&gt;Brittany Chiang’s portfolio&lt;/a&gt;. Since a portfolio is more about &lt;strong&gt;UI than logic&lt;/strong&gt;, my primary concern was &lt;strong&gt;CSS and design choices&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before writing a single line of code, I spent time choosing the &lt;strong&gt;right color theme and font&lt;/strong&gt;, deciding on &lt;strong&gt;relevant sections&lt;/strong&gt;, and mentally creating a &lt;strong&gt;basic foundation&lt;/strong&gt;. The most crucial part is getting the structure right:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Setting colors globally&lt;/li&gt;
&lt;li&gt;Maintaining consistent margins&lt;/li&gt;
&lt;li&gt;Dividing pages into structured sections&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2cdm3byk2dcx1vf7k8m.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj2cdm3byk2dcx1vf7k8m.JPG" alt="tailwind.config.js customization" width="800" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once this was done, adding new sections became easy, thanks to &lt;strong&gt;React’s modular approach&lt;/strong&gt;. With &lt;strong&gt;React and Tailwind CSS&lt;/strong&gt;, implementing designs became seamless, and &lt;strong&gt;responsiveness&lt;/strong&gt; was a priority. One key element was ensuring a smooth transition from a top navbar (for larger screens) to a toggle menu (for mobile screens) while adjusting the contact icons from fixed side placement to a bottom bar. These small details significantly improve &lt;strong&gt;user experience&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Keeping It Practical&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;One key learning: &lt;strong&gt;Your portfolio should reflect you&lt;/strong&gt;. There is no need for fancy elements or heavy 3D animations if they negatively impact performance. Initially, I spent a lot of time looking for the perfect 3D animations, only to later scrap them off completely.&lt;/p&gt;

&lt;p&gt;For &lt;strong&gt;beginners&lt;/strong&gt;, I recommend keeping things &lt;strong&gt;simple and minimal&lt;/strong&gt;. You can always &lt;strong&gt;revamp&lt;/strong&gt; and add advanced elements later. Focus on building a &lt;strong&gt;strong foundation&lt;/strong&gt; first:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start with a basic structure&lt;/li&gt;
&lt;li&gt;You don't need every single detail planned from the beginning&lt;/li&gt;
&lt;li&gt;Work on one section at a time, optimize, and then move forward&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5db4w0hf6djik3ox38nq.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5db4w0hf6djik3ox38nq.JPG" alt="Contact Section" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the &lt;strong&gt;contact section&lt;/strong&gt;, I integrated &lt;strong&gt;EmailJS&lt;/strong&gt;, making it easier for visitors to send me a direct message via email.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Essential Portfolio Sections&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;While portfolios are &lt;strong&gt;highly personal&lt;/strong&gt;, I feel these key sections are &lt;strong&gt;must-haves&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;About&lt;/strong&gt; – A brief introduction&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Skills&lt;/strong&gt; – Highlighting core expertise&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Experience&lt;/strong&gt; – Work history &amp;amp; contributions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Projects&lt;/strong&gt; – Showcasing past work&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contact&lt;/strong&gt; – Easy ways to reach out&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Additional&lt;/strong&gt; sections that can &lt;strong&gt;enhance&lt;/strong&gt; the portfolio:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Testimonials&lt;/strong&gt; – Feedback from peers/clients&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Blogs&lt;/strong&gt; – Personal or technical write-ups&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Certifications&lt;/strong&gt; – Showcasing achievements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Publications&lt;/strong&gt; – Any research or articles&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zmmhaq2htsjd4my9yu1.JPG" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1zmmhaq2htsjd4my9yu1.JPG" alt="React modularization of sections" width="800" height="374"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although my portfolio is &lt;strong&gt;complete&lt;/strong&gt;, there’s always &lt;strong&gt;room for improvement&lt;/strong&gt;. I am now working on &lt;strong&gt;Search Engine Optimization (SEO)&lt;/strong&gt; and adding &lt;strong&gt;page/element animations&lt;/strong&gt; using &lt;strong&gt;Framer Motion&lt;/strong&gt; to enhance the user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Share Your Portfolio Insights!&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Check out my portfolio&lt;/strong&gt;: &lt;a href="https://samana-mirza.vercel.app/" rel="noopener noreferrer"&gt;samana-mirza.vercel.app&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;GitHub Repository&lt;/strong&gt;: &lt;a href="https://github.com/samana-bm20/portfolio" rel="noopener noreferrer"&gt;github.com/samana-bm20/portfolio&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I hope this post helps anyone &lt;strong&gt;struggling&lt;/strong&gt; with laying the &lt;strong&gt;initial foundation&lt;/strong&gt; for their portfolio.&lt;/p&gt;

&lt;p&gt;Since I have just &lt;strong&gt;one year of experience&lt;/strong&gt;, I’d also love to hear from &lt;strong&gt;fellow developers&lt;/strong&gt; who have been in this position before about &lt;strong&gt;their portfolio building experience&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Questions&lt;/strong&gt; for you reading this post:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is there anything &lt;strong&gt;important missing&lt;/strong&gt; from my portfolio?&lt;/li&gt;
&lt;li&gt;Is it easy to &lt;strong&gt;navigate&lt;/strong&gt;?&lt;/li&gt;
&lt;li&gt;What are your &lt;strong&gt;overall thoughts&lt;/strong&gt; on the site?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ll be &lt;strong&gt;grateful&lt;/strong&gt; to anyone sharing their &lt;strong&gt;inputs&lt;/strong&gt;!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>portfolio</category>
      <category>react</category>
      <category>tailwindcss</category>
    </item>
    <item>
      <title>Conquering Node.js Hurdles</title>
      <dc:creator>Samana Mirza</dc:creator>
      <pubDate>Fri, 13 Dec 2024 04:30:43 +0000</pubDate>
      <link>https://dev.to/samanamirza_dev/conquering-nodejs-hurdles-2479</link>
      <guid>https://dev.to/samanamirza_dev/conquering-nodejs-hurdles-2479</guid>
      <description>&lt;p&gt;&lt;em&gt;Hey Readers!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Out of frontend, database, and backend development, backend has always been the most challenging part for me. This article delves into my early journey in backend development with &lt;strong&gt;Node.js&lt;/strong&gt; , sharing both &lt;em&gt;struggles&lt;/em&gt; and &lt;em&gt;insights&lt;/em&gt;. You'll learn about the common beginner pitfalls and practical ways to navigate through them, gaining clearer understanding of key backend concepts.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Backend Blues and Initial Challenges&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  The Initial Struggles
&lt;/h4&gt;

&lt;p&gt;Backend development has been a crucial part of the web development journey. For someone who finds joy in the creativity of frontend designs and the structured logic of databases, backend seemed like an &lt;em&gt;uncharted territory&lt;/em&gt; confusing and, honestly, not as exciting.&lt;/p&gt;

&lt;p&gt;Yet, I chose to explore Node.js, a runtime environment for JavaScript. &lt;em&gt;Why?&lt;/em&gt; Because it bridges the gap between frontend and backend using the same language, JavaScript. This promise of unification drove me to dive into the world of servers, APIs, and middleware.&lt;/p&gt;

&lt;p&gt;Starting with Node.js was like entering a &lt;em&gt;maze&lt;/em&gt; without a map. I had no clue how to run a program, what &lt;code&gt;cors&lt;/code&gt;, &lt;code&gt;express&lt;/code&gt;, or &lt;code&gt;body-parser&lt;/code&gt; meant, or why they were even necessary. My initial approach to setting up a backend was heavily reliant on seniors. But one day, they refused to help, encouraging me to learn through research and experimentation. It was a &lt;em&gt;tough-love&lt;/em&gt; moment, but it was also the turning point in my journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Understanding the Basics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That was when I began to slowly understand the "&lt;em&gt;why&lt;/em&gt;" behind all the confusing pieces of backend development. With persistence, I learned about tools like Express, CORS, and body-parser. These tools form the foundation of backend development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Express&lt;/strong&gt; : It is a Node.js framework that simplifies server creation by providing powerful tools to define routes, manage middleware, and handle requests and responses effectively.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CORS(Cross-Origin Resource Sharing)&lt;/strong&gt;: It is a mechanism that allows resources to be requested from a different domain. It is crucial for enabling communication between the frontend and backend hosted on separate servers (e.g., a frontend application hosted on one server to a backend API hosted on another are allowed, overcoming the "same-origin" policy limitations).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Body-Parser&lt;/strong&gt; : A middleware that parses incoming request bodies, converting them into usable data formats (e.g., JSON), which streamlines handling data sent from the frontend.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Each of these tools had its role in connecting the frontend to the database and facilitating seamless communication.&lt;/p&gt;

&lt;h4&gt;
  
  
  The Role of NPM
&lt;/h4&gt;

&lt;p&gt;&lt;code&gt;npm&lt;/code&gt; &lt;strong&gt;(Node Package Manager)&lt;/strong&gt; was a revelation. It simplified installing and managing dependencies. Initially, I made the rookie mistake of including &lt;code&gt;node_modules&lt;/code&gt; in my &lt;code&gt;.rar&lt;/code&gt; files when sharing projects. A senior pointed out that I could use &lt;code&gt;npm install&lt;/code&gt; to re-download dependencies and avoid bloating my project files. That day, I also learned about &lt;code&gt;.gitignore&lt;/code&gt; for excluding unnecessary files from GitHub repositories.&lt;/p&gt;




&lt;h3&gt;
  
  
  Breaking Down the API Calls
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Setting Up Your First Backend
&lt;/h4&gt;

&lt;p&gt;Starting with &lt;code&gt;npm init -y&lt;/code&gt; became my ritual. From there, I installed necessary packages like &lt;code&gt;express&lt;/code&gt; and &lt;code&gt;cors&lt;/code&gt;. Once the setup was ready, I &lt;em&gt;ventured&lt;/em&gt; into &lt;strong&gt;API calls&lt;/strong&gt;. This was a significant milestone as it involved connecting various components and making the application functional. I learned that &lt;code&gt;app.listen&lt;/code&gt; starts the server, and &lt;code&gt;.env&lt;/code&gt; variables help manage sensitive data like database credentials. Middleware, such as &lt;code&gt;body-parser&lt;/code&gt; and custom logic for authentication, became essential for preprocessing incoming requests before they reached the server logic.&lt;/p&gt;

&lt;h4&gt;
  
  
  Making API Calls: GET, POST, PUT, DELETE
&lt;/h4&gt;

&lt;p&gt;Understanding HTTP methods was a game-changer:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;GET&lt;/strong&gt; : Used to fetch data from the server. The parameters are typically passed via the URL, allowing the backend to retrieve and send the requested data.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;POST&lt;/strong&gt; : Designed for submitting data to the server, often sent in the request body for tasks like form submissions.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;PUT&lt;/strong&gt; : Helps update existing data on the server, ensuring that the data remains current.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DELETE&lt;/strong&gt; : Removes specified data from the server.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Might sound funny but it took me months to fully grasp the difference between GET and POST requests and to correctly structure API calls. I often used to pass parameters in the API URL for POST requests, which is actually the correct method for GET requests. In a POST request, parameters should only be passed in the request body. Debugging these calls was another learning curve, involving tools like &lt;strong&gt;Postman&lt;/strong&gt; for detailed testing.&lt;/p&gt;

&lt;h4&gt;
  
  
  Debugging APIs
&lt;/h4&gt;

&lt;p&gt;Debugging backend code felt more challenging than frontend debugging because, in the frontend, you can easily add a debugger or use inspect tools. However, I gradually discovered that tools like VS Code's debugging features made it possible. I learned to start debugging from the &lt;code&gt;server.js&lt;/code&gt; file, ensuring I could trace issues effectively.&lt;/p&gt;

&lt;h4&gt;
  
  
  Modularizing APIs
&lt;/h4&gt;

&lt;p&gt;Just as I &lt;em&gt;modularized&lt;/em&gt; React components to improve organization and reusability, I learned to apply the same principles to APIs by organizing them based on functionality. This process involved separating routes and controllers into distinct modules, which made the codebase much cleaner and more manageable. By categorizing APIs according to their specific functions, I was able to streamline the development process, making it easier to locate and modify code when needed.&lt;/p&gt;

&lt;h4&gt;
  
  
  Optimizing API Performance
&lt;/h4&gt;

&lt;p&gt;By analyzing response times in the network tab, I &lt;em&gt;optimized&lt;/em&gt; database queries to ensure they were as efficient as possible, reducing the time it took to retrieve and process data. Additionally, some API calls were redundant, which led to unnecessary delays. For instance, instead of separate calls for updating table data and specific attributes, I streamlined the process by refining the logic to handle all updates in one comprehensive call.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Advanced Learnings&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Authentication and Security with JWT
&lt;/h4&gt;

&lt;p&gt;Securing APIs became a priority. Using &lt;strong&gt;JWT (JSON Web Tokens)&lt;/strong&gt;, I implemented authentication systems that ensured only authorized users could access certain data. This was vital for preventing sensitive data exposure in browser developer tools. Later, I advanced by using &lt;strong&gt;JAuth&lt;/strong&gt; to authenticate users in an application and using &lt;em&gt;tokens&lt;/em&gt; to fetch API data. This method of securing data is essential because, without it, any API fetch or retrieval shows data in the inspect network tab, which is a significant vulnerability for a proper application.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;File Handling with Multer and File-Saver&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Using libraries like &lt;strong&gt;Multer&lt;/strong&gt; , I handled file uploads, while &lt;strong&gt;File-Saver&lt;/strong&gt; allowed dynamic file downloads. These tools made it easier to manage user data efficiently. Multer is middleware for handling &lt;code&gt;multipart/form-data&lt;/code&gt;, which is commonly used for uploading files in Node.js applications. With Multer, you can easily manage receiving, storing, and validating files on the server. File-Saver is a JavaScript library that enables dynamic file downloads directly from the browser, allowing users to save files without leaving the application. Together, these tools efficiently manage both file uploads and downloads, providing a smooth experience for users interacting with files in your app.&lt;/p&gt;

&lt;h4&gt;
  
  
  Real-Time Notifications with Socket.IO
&lt;/h4&gt;

&lt;p&gt;Implementing real-time features like notifications using Socket.IO was a &lt;em&gt;challenging&lt;/em&gt; yet &lt;em&gt;rewarding&lt;/em&gt; experience. I navigated concepts like &lt;code&gt;socket.on&lt;/code&gt;, &lt;code&gt;socket.emit&lt;/code&gt;, and room management. Deploying this on a live server was another hurdle, requiring specific configurations for seamless functionality. Using settings like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Polling&lt;/strong&gt; : It is a communication method where the client repeatedly sends &lt;strong&gt;HTTP&lt;/strong&gt; requests at regular intervals to the server to check for updates, rather than keeping a persistent connection open. This is typically used when WebSockets are not available or suitable.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reconnection&lt;/strong&gt; : Enables automatic reconnection in case of network interruptions or connection loss, ensuring better reliability for real-time communication.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These settings were part of the frontend, enabling a smooth connection with the backend logic on a &lt;em&gt;live server.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  Reflections and Growth
&lt;/h3&gt;

&lt;p&gt;Backend development was never my &lt;em&gt;comfort zone&lt;/em&gt;, but the journey transformed it into a valuable skill set. From struggling with basic setups to implementing advanced features, every challenge taught me &lt;em&gt;resilience&lt;/em&gt; and &lt;em&gt;problem-solving&lt;/em&gt;. Today, I see backend as a critical part of creating seamless, full-stack applications. The road wasn't easy, but the results were worth every effort. To all the budding developers out there, when you finally see the results of your hard work, combining both frontend and backend, it is all worth it. To sail through and reach your destination, you need to experience the &lt;em&gt;tides&lt;/em&gt; and &lt;em&gt;storms&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keep learning, keep growing, and remember: even the most confusing parts of coding eventually make sense with persistence and practice!&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy DevLogging! &amp;lt;3&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;~s.b.m.&lt;/p&gt;

&lt;h1&gt;
  
  
  WomenWhoTech#Backend#Development#NodeJS#API#ExpressJS
&lt;/h1&gt;

</description>
      <category>womenwhocode</category>
      <category>womenwhotech</category>
      <category>womenintech</category>
      <category>node</category>
    </item>
    <item>
      <title>Balancing the Art of CSS and UI Libraries</title>
      <dc:creator>Samana Mirza</dc:creator>
      <pubDate>Thu, 12 Dec 2024 04:30:37 +0000</pubDate>
      <link>https://dev.to/samanamirza_dev/balancing-the-art-of-css-and-ui-libraries-45io</link>
      <guid>https://dev.to/samanamirza_dev/balancing-the-art-of-css-and-ui-libraries-45io</guid>
      <description>&lt;p&gt;&lt;em&gt;Hello Developers!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;CSS and UI libraries often feel like a &lt;em&gt;tangled web of complexity&lt;/em&gt;, but they hold the power to create stunning user interfaces. In this article, I share my journey of mastering CSS and balancing it with UI libraries like &lt;strong&gt;Tailwind CSS&lt;/strong&gt; and &lt;strong&gt;Material-UI&lt;/strong&gt;. Along the way, you'll discover practical lessons, insights, and tips to help you navigate this intricate world.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;The Early Struggles with CSS&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;When I started with CSS, it felt like an &lt;em&gt;unsolvable puzzle&lt;/em&gt;. Simple things like setting margins or understanding the difference between &lt;code&gt;padding&lt;/code&gt; and &lt;code&gt;margin&lt;/code&gt; confused me, despite being familiar with the &lt;strong&gt;box model&lt;/strong&gt;. Id often find myself stuck on seemingly minor issues like_why a div wouldnt take up the full height of the screen?_only to realize I had written &lt;code&gt;height: full&lt;/code&gt; instead of &lt;code&gt;height: screen&lt;/code&gt;. Very dumb, right?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Positioning&lt;/strong&gt; was another hurdle. Terms like &lt;code&gt;absolute&lt;/code&gt; and &lt;code&gt;relative&lt;/code&gt; felt abstract, and I struggled to relate parent and child components effectively. Debugging CSS issues often consumed hours. Id wonder why &lt;code&gt;margin: 0&lt;/code&gt; was necessary, thinking it should be the defaultuntil I faced layouts where those extra margins appeared out of nowhere. Even now, getting the perfect layout can be challenging, but &lt;strong&gt;flexbox&lt;/strong&gt; remains my &lt;em&gt;go-to solution&lt;/em&gt; for most alignment issues.&lt;/p&gt;

&lt;p&gt;However, &lt;strong&gt;responsiveness&lt;/strong&gt; was the biggest challenge. Early on, inspecting my designs in mobile view was a &lt;em&gt;nightmare&lt;/em&gt;. The layout would break entirely, revealing a lack of foundational knowledge. Gradually, I learned the importance of relative units like &lt;code&gt;rem&lt;/code&gt;, &lt;code&gt;em&lt;/code&gt;, and &lt;code&gt;vh&lt;/code&gt; over fixed units like &lt;code&gt;px&lt;/code&gt;. Dividing elements into grids and leveraging media queries helped immensely, though I havent entirely mastered the latter.&lt;/p&gt;

&lt;p&gt;Yes, I did use Bootstrap, which by all means is a good tool for all developers starting out. However, it was short-lived for me as I switched to Tailwind CSS soon after. For anyone trying Bootstrap, its a solid choice to get familiar with structured UI design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Lesson:&lt;/strong&gt; &lt;em&gt;Use relative units and grid-based layouts for responsive designs. Media queries are essential but can often be simplified using modern frameworks like Tailwind.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Switching to Tailwind CSS: A Game-Changer&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Switching to Tailwind CSS felt counterintuitive at first. The long class names seemed &lt;em&gt;chaotic&lt;/em&gt;, and setting it up in React was a daunting task. But once I got the hang of it, Tailwind revolutionized how I approached styling. I could write styles directly in HTML without worrying about naming conflicts.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Time-Saving Features:&lt;/strong&gt; Predefined classes like &lt;code&gt;m-4&lt;/code&gt;, &lt;code&gt;p-2&lt;/code&gt;, and &lt;code&gt;shadow-md&lt;/code&gt; replaced repetitive CSS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Custom Configurations:&lt;/strong&gt; Tailwind's configuration file &lt;code&gt;tailwind.config.js&lt;/code&gt; allowed me to customize themes, fonts, and colors, making my workflow seamless.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Built-In Responsiveness:&lt;/strong&gt; Earlier, responsiveness felt like an afterthought. But Tailwind included intuitive breakpoints like &lt;code&gt;md:&lt;/code&gt; and &lt;code&gt;lg:&lt;/code&gt; which could be easily customized, allowing me to create adaptive designs without writing separate media queries.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key Lesson:&lt;/strong&gt; &lt;em&gt;Tailwind CSS simplifies styling and responsiveness, but mastering its utility-first approach takes practice.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;UI Libraries: The Magic of Pre-Designed Components&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;My first brush with a UI library was with &lt;strong&gt;Core UI&lt;/strong&gt;. It was a pre-designed template, and I struggled to make changes due to lack of understanding. This experience taught me the importance of reading documentation and experimenting to learn. However, working with Material-UI (MUI) was the turning point.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Customization Made Easy:&lt;/strong&gt; The &lt;code&gt;createTheme&lt;/code&gt; function allowed me to define theme colors and typography globally, making my designs consistent and professional.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Pre-Designed Components:&lt;/strong&gt; Elements like buttons, text fields, tabs, skeleton loaders, and progress bars saved me time and effort.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Finding the Balance:&lt;/strong&gt; The real challenge was learning when to use Tailwind and when to rely on a UI library. Initially, I used MUI for almost everything, from layouts to individual components. Over time, I realized that Tailwind excels in layout and responsiveness, while UI libraries shine in pre-designed elements. Combining the two unlocked new levels of efficiency and creativity.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Additionally, I also explored &lt;strong&gt;Aceternity UI&lt;/strong&gt; library when I needed visually pleasing elements. It offers pre-designed components with intricate animations, transitions, and backgrounds, simplifying what would otherwise be tedious to implement. Its ease of useinstalling the library and copying guided code for customizationmakes it attractive. However, tweaking styles or modifying its code can be complex due to its inherent structure. Still, it can be a great choice for someone who wishes to add visual flair to projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Key Lesson:&lt;/strong&gt; &lt;em&gt;Use UI libraries for pre-designed components and CSS frameworks like Tailwind for layout and alignment.&lt;/em&gt;&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Key Lessons for Developers&lt;/strong&gt;
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;CSS Fundamentals Are Crucial:&lt;/strong&gt; Despite the convenience of modern frameworks, understanding the basics of &lt;strong&gt;CSS&lt;/strong&gt; (e.g., specificity, box model, positioning) remains essential.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Combine Tools Effectively:&lt;/strong&gt; Use &lt;strong&gt;Tailwind&lt;/strong&gt; for layouts and responsiveness, and rely on &lt;strong&gt;UI libraries&lt;/strong&gt; for complex, pre-designed components, saving time on repetitive tasks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Debugging Is an Art:&lt;/strong&gt; Always check for overlapping class names and prioritize understanding your tools.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Efficiency Matters:&lt;/strong&gt; Customize Tailwind's config file and leverage UI library themes to speed up your workflow.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Its okay to feel &lt;em&gt;lost&lt;/em&gt; when starting with CSS or switching to a new library. The key is to keep experimenting, asking questions, and learning from mistakes. Over time, youll find your &lt;em&gt;rhythm&lt;/em&gt; and develop a &lt;em&gt;style&lt;/em&gt; that works for you.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;Conclusion: Embracing the Learning Curve&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Balancing CSS and UI libraries is both an &lt;em&gt;art&lt;/em&gt; and a &lt;em&gt;science&lt;/em&gt;. My journeyfrom struggling with CSS basics to mastering Tailwind and Material-UIhas taught me the importance of adaptability and continuous learning. By combining the strengths of these tools, you can create efficient, responsive, and visually appealing web interfaces without losing your &lt;em&gt;sanity&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;To all the developers out there: its perfectly normal to feel &lt;em&gt;dumb&lt;/em&gt; when things dont work as expected. Youll question everything, get stuck, and then find a solution that makes everything click. This process might be slow, but its worth the patience and persistence. One day, youll look back and realize youve created &lt;em&gt;beautiful wonders of UI.&lt;/em&gt; Keep goingthe journey is as rewarding as the destination.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy DevLogging! &amp;lt;3&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;~s.b.m.&lt;/p&gt;

&lt;h1&gt;
  
  
  WomenWhoTech#SerialBlogger#CSS#Frameworks#TailwindCSS#UI#Libraries#MaterialUI#MUI#CoreUI#Bootstrap#2Articles1Week#Hashnode#Tech#Enthusiast
&lt;/h1&gt;

&lt;p&gt;]]&amp;gt;&lt;/p&gt;

</description>
      <category>coreui</category>
      <category>css</category>
      <category>tailwindcss</category>
      <category>materialui</category>
    </item>
    <item>
      <title>Navigating Databases: From SQL to NoSQL</title>
      <dc:creator>Samana Mirza</dc:creator>
      <pubDate>Wed, 11 Dec 2024 04:30:39 +0000</pubDate>
      <link>https://dev.to/samanamirza_dev/navigating-databases-from-sql-to-nosql-k61</link>
      <guid>https://dev.to/samanamirza_dev/navigating-databases-from-sql-to-nosql-k61</guid>
      <description>&lt;p&gt;&lt;em&gt;Hey Folks!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the world of development, understanding which database system to use for a project can make a huge difference in performance, scalability, and flexibility. As a developer whos worked extensively with both &lt;strong&gt;SQL Server&lt;/strong&gt; and &lt;strong&gt;MongoDB&lt;/strong&gt; , Ive experienced firsthand how the right choice can vary depending on the project requirements.&lt;/p&gt;

&lt;p&gt;This article will take you on a journey through my experience with both database sstarting with the basics of SQL queries and optimization, followed by an introduction to MongoDB's schema-less flexibility. I'll highlight the strengths of each, help you understand when to use which, and share the lessons I've learned along the way. Whether you're new to databases or a seasoned developer, this article will provide useful insights to make better choices in your future projects.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;1. Road to SQL Server: From Basics to Advanced Queries&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Getting Started: Select, Insert, and Conditional Queries&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;When I first started working with SQL Server, I had the misconception that SQL queries were mostly about creating complex conditions. I remember my first encounters with &lt;code&gt;SELECT&lt;/code&gt;, &lt;code&gt;INSERT&lt;/code&gt;, and &lt;code&gt;WHERE&lt;/code&gt; conditions thinking that conditional queries were the hardest part. To be honest, I found them enjoyable, perhaps because they were straightforward and familiar. But, little did I know, that was just the &lt;em&gt;tip of the iceberg&lt;/em&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;The Pivot Point: Dynamic Tables and Complex Queries&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;My real learning began when I had to use &lt;strong&gt;&lt;em&gt;pivot queries&lt;/em&gt;&lt;/strong&gt; and generate &lt;strong&gt;dynamic tables&lt;/strong&gt;. This is when SQLs true complexity hit me. Without a line-by-line debugger, I was often stuck on syntax errors and struggled to find solutions. I spent countless hours researching, trying and retrying until I finally got it right. It was during this time I understood how SQLs power could really shine when dealing with large, complex datasets. Now, adding conditions, modifying queries, and fine-tuning results has become second nature.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;From Debugging Nightmares to Mastering Stored Procedures&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Another significant moment was realizing the value of &lt;strong&gt;&lt;em&gt;stored procedures&lt;/em&gt;&lt;/strong&gt;. Initially, I used to write long and complex queries directly in APIs, which required me to keep updating the code every time I needed to tweak a query. Then, I discovered stored procedures a real game-changer. Now, I can simply modify the procedure without needing to redeploy or rewrite the entire code. This made my workflow significantly more efficient.&lt;/p&gt;

&lt;p&gt;One of the most humbling yet funny experiences in my SQL journey was an interview where I failed to answer a simple question: &lt;em&gt;"How do you fetch the top 1000 entries from a database?"&lt;/em&gt; Today, however, the &lt;code&gt;SELECT TOP 1000&lt;/code&gt; query is something I use almost daily.&lt;/p&gt;

&lt;p&gt;While I've a good hold on &lt;strong&gt;Common Table Expressions (CTEs)&lt;/strong&gt;, &lt;strong&gt;CASE&lt;/strong&gt; statements, and &lt;strong&gt;nested queries&lt;/strong&gt; , I know there's still more to learn like working with &lt;strong&gt;views&lt;/strong&gt; and &lt;strong&gt;triggers&lt;/strong&gt; and handling &lt;strong&gt;SQL injections&lt;/strong&gt; which are crucial for advanced SQL management.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;2. Switching from SQL Server to MongoDB&lt;/strong&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;The Struggles of Transitioning to NoSQL&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;After spending so much time with SQL Server, switching to &lt;strong&gt;MongoDB&lt;/strong&gt; felt like a whole new world. The biggest challenge was adapting to the &lt;strong&gt;NoSQL&lt;/strong&gt; mindset, working with collections instead of tables, handling &lt;strong&gt;unstructured data&lt;/strong&gt; , and understanding how data could be inserted and updated without running SQL queries. At first, I felt lost and overwhelmed, especially when it came to importing and inserting data.&lt;/p&gt;

&lt;p&gt;However, as I began to get more comfortable, I started appreciating MongoDB's flexibility. Unlike SQL, you don't need to define a rigid schema upfront. You can insert documents of varying structures into a collection, which provides great flexibility especially when dealing with dynamic, changing data.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;MongoDB's Flexibility: Nesting Data and Collections&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;One of MongoDB's main advantages is how easily it allows &lt;strong&gt;nesting&lt;/strong&gt; of data. It was liberating to insert and retrieve complex data structures without worrying about foreign keys and joins. However, this flexibility also led to confusion when trying to model more complex relationships. Unlike SQL, where you can normalize data with foreign keys, MongoDB encourages &lt;strong&gt;denormalization&lt;/strong&gt; , meaning you sometimes need to embed entire documents within others.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;strong&gt;Aggregation and Pipelines: Cracking the Tough Nut&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;I was initially confused by MongoDB's &lt;strong&gt;aggregation framework&lt;/strong&gt;. While simple queries were easy to handle, performing complex filtering, grouping, and transformations using &lt;strong&gt;pipelines&lt;/strong&gt; took some time to grasp. But after much research, trial and error, I started to feel more confident in using &lt;strong&gt;aggregation&lt;/strong&gt; to perform complex operations. Despite my progress, I still have a lot to learn especially with advanced aggregation features and pipeline optimization.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;3. SQL Server vs MongoDB: When to Use What&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Now that I've worked with both SQL and MongoDB, I can confidently say that both have their own strengths and use cases. Here's a breakdown to help you decide when to use which:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Use SQL Server when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You need to handle &lt;strong&gt;structured data&lt;/strong&gt; with well-defined relationships.&lt;/li&gt;
&lt;li&gt;Your data requires &lt;strong&gt;complex queries&lt;/strong&gt;, such as joins, aggregations, and subqueries.&lt;/li&gt;
&lt;li&gt;You are building &lt;strong&gt;transactional systems&lt;/strong&gt; where ACID compliance is crucial. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Use MongoDB when:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your data is &lt;strong&gt;unstructured&lt;/strong&gt; or &lt;strong&gt;semi-structured&lt;/strong&gt; and you don’t need a rigid schema.&lt;/li&gt;
&lt;li&gt;You require &lt;strong&gt;scalability&lt;/strong&gt; and need to store large amounts of data across multiple servers.&lt;/li&gt;
&lt;li&gt;You want &lt;strong&gt;flexibility&lt;/strong&gt; in handling data with evolving or nested structures.&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;4. Final Thoughts: Embracing Both for Better Projects&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After working with both SQL Server and MongoDB, I've learned that the choice isn't about what's easier or what I prefer, it's about what the project requires. Each database excels in different areas:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;SQL Server&lt;/strong&gt; is powerful for relational data with complex relationships.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MongoDB&lt;/strong&gt; shines in handling large-scale, unstructured data with flexibility.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There's no &lt;em&gt;one-size-fits-all&lt;/em&gt; solution, and as developers, we must choose the right tool for the job. My advice to you is to &lt;strong&gt;learn both&lt;/strong&gt; mastering SQL will provide you with a strong foundation in data management, while MongoDB's flexibility will allow you to build scalable, modern applications.&lt;/p&gt;

&lt;p&gt;As I continue my journey, I know there's still more to explore in both worlds. But understanding the strengths of each database has helped me become a more adaptable developer. And I hope this article helps you make informed choices when working on your own projects.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy DevLogging! &amp;lt;3&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;~s.b.m.&lt;/p&gt;

&lt;h1&gt;
  
  
  WomenWhoTech#SerialBlogger#SQL#NoSQL#Journey#SQLServer#MongoDB#2Articles1Week#Hashnode#Tech#Enthusiast
&lt;/h1&gt;

&lt;p&gt;]]&amp;gt;&lt;/p&gt;

</description>
      <category>sql</category>
      <category>sqlserver</category>
      <category>nosql</category>
      <category>mongodb</category>
    </item>
    <item>
      <title>Into the React Web: From Chaos to Confidence</title>
      <dc:creator>Samana Mirza</dc:creator>
      <pubDate>Tue, 10 Dec 2024 09:48:44 +0000</pubDate>
      <link>https://dev.to/samanamirza_dev/into-the-react-web-from-chaos-to-confidence-4d5o</link>
      <guid>https://dev.to/samanamirza_dev/into-the-react-web-from-chaos-to-confidence-4d5o</guid>
      <description>&lt;p&gt;Greetings, fellow developers and enthusiasts!&lt;/p&gt;

&lt;p&gt;I know I'm late to the &lt;strong&gt;&lt;em&gt;developer blogosphere&lt;/em&gt;&lt;/strong&gt; party, but hey, better late than never, right? After almost a year of professional experience in the tech world, I finally decided to pen down my thoughts, challenges, and learnings. So, here I am, ready to share my journey in the ever-evolving world of development.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Chaotic Start
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;When I Didn't Know What I Didn't Know&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let me take you back to the beginning where all the confusion started.&lt;/p&gt;

&lt;p&gt;Like many budding developers, I procrastinated about starting projects and learning. The sheer number of tools and frameworks left me overwhelmed: &lt;strong&gt;Should I start with&lt;/strong&gt; &lt;code&gt;C++&lt;/code&gt; &lt;strong&gt;?&lt;/strong&gt; &lt;code&gt;Java&lt;/code&gt; &lt;strong&gt;? Or maybe&lt;/strong&gt; &lt;code&gt;JavaScript&lt;/code&gt; &lt;strong&gt;?&lt;/strong&gt; Even after I picked &lt;code&gt;React&lt;/code&gt;, uncertainty loomed.&lt;/p&gt;

&lt;p&gt;I was underconfident and unsure about how anything worked. &lt;code&gt;useEffect&lt;/code&gt; &lt;strong&gt;? Sounds cool, but do I even need it here?&lt;/strong&gt; &lt;em&gt;Debugging&lt;/em&gt; felt like a superpower I didn't possess. My approach was simple yet disastrous:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Google everything.&lt;/strong&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Copy-paste from ChatGPT&lt;/strong&gt; (Once, I even pleaded &lt;em&gt;please solve this; I cant do it myself&lt;/em&gt; 🤦- very dumb, right?).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Call seniors at the slightest hint of an error instead of debugging or understanding the issue.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you've been there, you know the pain. If you haven't, consider yourself lucky. But looking back, that chaotic phase was vital, it forced me to confront what I didn't know.&lt;/p&gt;




&lt;h3&gt;
  
  
  The Turning Point: From Chaos to Curiosity
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;When Everything Started Clicking&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Something shifted. Maybe it was hitting one error too many times or realizing my reliance on external help was slowing me down. I started &lt;em&gt;learning&lt;/em&gt; instead of just &lt;em&gt;doing&lt;/em&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;React Hooks&lt;/strong&gt; became less of a mystery. I figured out when to use &lt;code&gt;useEffect&lt;/code&gt; and when to let it sit this one out. Finally understanding the difference between &lt;code&gt;useCallback&lt;/code&gt; and &lt;code&gt;useMemo&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;I learned to &lt;strong&gt;modularize components&lt;/strong&gt; instead of creating massive, unmanageable files.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Debugging became my second nature thanks to the &lt;strong&gt;console&lt;/strong&gt; (and yes, some persistence).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first &lt;em&gt;aha!&lt;/em&gt; moment came when I solved a bug &lt;strong&gt;without copying a single line from ChatGPT&lt;/strong&gt;. It wasn't perfect, but it was mine.&lt;/p&gt;

&lt;p&gt;I also began to see patterns:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Single Responsibility Principle (SRP)&lt;/strong&gt; simplified my logic and code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Thinking in &lt;strong&gt;modular, reusable components&lt;/strong&gt; made my projects more manageable.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Every small success added confidence, and I realized that understanding the &lt;em&gt;why&lt;/em&gt; behind the &lt;em&gt;what&lt;/em&gt; is the true key to progress.&lt;/p&gt;




&lt;h3&gt;
  
  
  From React to Querying New Horizons
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;How Am I React-ing To Code Now'&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Today, I feel a sense of control over my development journey. React, which once felt intimidating, is now my comfort zone. My foundation in hooks, SRP, and modularization has grown strong, and I've started exploring &lt;strong&gt;React Query&lt;/strong&gt; to make state management a breeze.&lt;/p&gt;

&lt;p&gt;But the journey isn't over, its just evolving:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I'm now delving into &lt;strong&gt;optimizations&lt;/strong&gt; and exploring how to improve app performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Experimenting with &lt;strong&gt;design systems&lt;/strong&gt; to improve user interfaces.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Understanding &lt;strong&gt;context&lt;/strong&gt; beyond React, be it &lt;em&gt;Node.js, MongoDB, Tailwind&lt;/em&gt; or new tools on the horizon.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




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

&lt;p&gt;&lt;em&gt;Its Not The End&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;To anyone who feels overwhelmed, uncertain, or just plain stuck: &lt;em&gt;Its okay.&lt;/em&gt; We all start somewhere, and no one is born a developer. Mistakes, Googling, and asking for help &lt;em&gt;(as small as How to start VS Code?)&lt;/em&gt; are part of the process.&lt;/p&gt;

&lt;p&gt;The key is to stay curious, consistent, and open to learning. Embrace your failures, they're just stepping stones to success.&lt;/p&gt;

&lt;p&gt;If my journey resonates with you or if you've been on a similar path, Id love to hear your story. Lets grow together, &lt;em&gt;one line of code at a time&lt;/em&gt;.&lt;/p&gt;




&lt;h3&gt;
  
  
  What Next?
&lt;/h3&gt;

&lt;p&gt;&lt;em&gt;A Little About Me&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Currently, I am an aspiring full stack developer and my tech stack includes &lt;code&gt;React.js, MongoDB, Node.js, SQL Server, Express, Java, Tailwind&lt;/code&gt; and &lt;code&gt;ArcGIS&lt;/code&gt;, but I also have a passion for &lt;strong&gt;designing&lt;/strong&gt; with tools like &lt;em&gt;Canva&lt;/em&gt; and &lt;em&gt;Figma&lt;/em&gt;. I love exploring new technologies and concepts and have a lot of stories to tell about &lt;strong&gt;deployment&lt;/strong&gt; , &lt;strong&gt;documentation&lt;/strong&gt; , and &lt;strong&gt;designing&lt;/strong&gt; all of which I plan to share in future articles. Stay tuned for more insights, tips, and personal experiences as I continue my developer journey.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy DevLogging! &amp;lt;3&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;~s.b.m.&lt;/p&gt;

&lt;h1&gt;
  
  
  WomenWhoTech#React#Development#Journey#Reactjs#Developer#tech#enthusiast
&lt;/h1&gt;

&lt;p&gt;]]&amp;gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>journey</category>
      <category>womenwhotech</category>
    </item>
  </channel>
</rss>
