<?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: Saurabh Mhatre</title>
    <description>The latest articles on DEV Community by Saurabh Mhatre (@saurabhnative).</description>
    <link>https://dev.to/saurabhnative</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%2F274041%2F79efe18b-5d16-47fa-84fb-319837414189.png</url>
      <title>DEV Community: Saurabh Mhatre</title>
      <link>https://dev.to/saurabhnative</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/saurabhnative"/>
    <language>en</language>
    <item>
      <title>I Built a 7-Level Valentine Week Game Using GitHub Copilot CLI</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Sat, 14 Feb 2026 12:46:37 +0000</pubDate>
      <link>https://dev.to/saurabhnative/i-built-a-7-level-valentine-week-game-using-github-copilot-cli-3od6</link>
      <guid>https://dev.to/saurabhnative/i-built-a-7-level-valentine-week-game-using-github-copilot-cli-3od6</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-01-21"&gt;GitHub Copilot CLI Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;I have built &lt;strong&gt;“Valentine Week Love Quest”&lt;/strong&gt;, a browser-based 2D mini-game created with the help of GitHub Copilot CLI and the Claude 4.5 Haiku model. The game turns the 7 days of Valentine’s Week into a fun, interactive journey where the player helps a character reach their partner by completing themed challenges for each day.&lt;/p&gt;

&lt;p&gt;The experience starts by asking for both partners’ names, which makes the entire journey feel personal. The player then progresses through seven unique levels, each inspired by a day from Valentine’s Week:&lt;/p&gt;

&lt;p&gt;🌹 &lt;strong&gt;Rose Day:&lt;/strong&gt; Collect roses within a time limit&lt;br&gt;
 💍 &lt;strong&gt;Propose Day:&lt;/strong&gt; Reach the partner while avoiding moving obstacles&lt;br&gt;
 🍫 &lt;strong&gt;Chocolate Day:&lt;/strong&gt; Collect disappearing chocolates before they respawn&lt;br&gt;
 🧸 &lt;strong&gt;Teddy Day:&lt;/strong&gt; Carry a teddy while movement becomes slower&lt;br&gt;
 🤝 &lt;strong&gt;Promise Day:&lt;/strong&gt; Choose and collect meaningful promise tokens&lt;br&gt;
 🤗 &lt;strong&gt;Hug Day:&lt;/strong&gt; Navigate through a small maze to reunite&lt;br&gt;
 ❤️ &lt;strong&gt;Valentine’s Day:&lt;/strong&gt; Final challenge with obstacles leading to the proposal scene&lt;/p&gt;

&lt;p&gt;To make the gameplay engaging, I added:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A lives system and score tracking&lt;/li&gt;
&lt;li&gt;Increasing difficulty across levels&lt;/li&gt;
&lt;li&gt;Timers, moving obstacles, and small strategic elements&lt;/li&gt;
&lt;li&gt;Smooth transitions and visual feedback on level completion&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After completing all seven levels, the final moment is unlocked: a personalized proposal message based on the names entered at the beginning. This creates an emotional payoff and turns a simple game into a story-driven experience.&lt;/p&gt;

&lt;p&gt;The project was built using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTML Canvas for rendering&lt;/li&gt;
&lt;li&gt;Vanilla JavaScript for game logic&lt;/li&gt;
&lt;li&gt;GitHub Copilot CLI to generate and refine gameplay mechanics&lt;/li&gt;
&lt;li&gt;Claude 4.5 Haiku from Github Copilot CLI interface&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal was to create something light, fun, and relatable that combines gameplay, storytelling, and AI-generated content into a single interactive Valentine’s experience.&lt;/p&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;



&lt;p&gt;Demo Link:-&lt;br&gt;
&lt;a href="https://valentinesgithubcli.vercel.app/" rel="noopener noreferrer"&gt;Valentines Week Quest&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This game is designed as a 7-day love journey. Each level represents a day from Valentine’s Week, where the player moves one step closer to reaching their partner. Below is a walkthrough of the experience through each stage.&lt;/p&gt;

&lt;p&gt;Video demo:-&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/a1jvwhyTfyc"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;We first ask for players' and their partner's name for personalisation:-&lt;/p&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%2F8jygamn4icb5i2u6tg31.png" 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%2F8jygamn4icb5i2u6tg31.png" alt="Intro screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🌹 Level 1 — Rose Day&lt;/p&gt;

&lt;p&gt;The journey begins with a simple mission: collect roses scattered across the map within a limited time. This level introduces the player to movement, collection mechanics, and the core objective is moving forward with small gestures:&lt;/p&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%2F313hxa3e5eiikgkxg6bi.png" 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%2F313hxa3e5eiikgkxg6bi.png" alt="Rose day"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;💍 Level 2 — Propose Day&lt;/p&gt;

&lt;p&gt;Now the challenge increases. The player must reach their partner while avoiding moving obstacles. One wrong move can cost a life, making timing and positioning important:&lt;/p&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%2Fzf05wrhpcf8t9aaaklvz.png" 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%2Fzf05wrhpcf8t9aaaklvz.png" alt="Propose Day"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🍫 Level 3 — Chocolate Day&lt;/p&gt;

&lt;p&gt;Chocolates appear and disappear across the map, adding urgency. The player must quickly collect them before they respawn elsewhere.&lt;/p&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%2Fbpa9lcrnulwdy09dhepp.png" 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%2Fbpa9lcrnulwdy09dhepp.png" alt="Chocolate Daya"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🧸 Level 4 — Teddy Day&lt;/p&gt;

&lt;p&gt;The objective is to carry a teddy to the partner. Movement slows down while carrying it, which makes planning the path more important.&lt;/p&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%2Fovszd8pd17yzg9lqe6cq.png" 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%2Fovszd8pd17yzg9lqe6cq.png" alt="Teddy Day"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤝 Level 5 — Promise Day&lt;/p&gt;

&lt;p&gt;This level introduces choice. The player collects meaningful promise tokens for their partner.&lt;/p&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%2Fxy9kspxtfaa5bekayokp.png" 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%2Fxy9kspxtfaa5bekayokp.png" alt="Promise Day"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🤗 Level 6 — Hug Day&lt;/p&gt;

&lt;p&gt;A maze-like layout adds a navigation challenge. The player must find the correct path to reach their partner while avoiding moving blockers.&lt;/p&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%2F2h6kmfvnlyvrxs9kdu3w.png" 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%2F2h6kmfvnlyvrxs9kdu3w.png" alt="Hug Day"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;❤️ Level 7 — Valentine’s Day (Finale)&lt;/p&gt;

&lt;p&gt;The final level brings everything together. The player must survive obstacles and reach their partner with at least one life remaining.&lt;/p&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%2F5ecgdkp2v4ao4pqcj2yj.png" 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%2F5ecgdkp2v4ao4pqcj2yj.png" alt="Valentine’s Day"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once completed, a personalized proposal message is generated using the names entered at the beginning, creating a heartfelt ending to the 7-day journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  My Experience with GitHub Copilot CLI
&lt;/h2&gt;

&lt;p&gt;This project was built almost entirely through an iterative workflow using GitHub Copilot CLI, and it genuinely changed how quickly I could move from an idea to a working prototype.&lt;/p&gt;

&lt;p&gt;Instead of starting with a fixed game design, I began with a single step: a small Valentine-themed browser game. From there, I used Copilot CLI as a thinking partner to gradually expand the idea into a 7-level experience representing each day of Valentine’s Week.&lt;/p&gt;

&lt;p&gt;What worked really well was the ability to describe features in plain language and let Copilot generate structured starting points. I used it to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Scaffold the initial HTML Canvas game setup&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add player movement and collision detection&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Introduce collectible items and scoring&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Evolve the game from a single level into a multi-level system&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Add timers, lives, and increasing difficulty&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The biggest productivity boost came from making small, focused prompts. Instead of asking for everything at once, I extended the game step by step, first building the core mechanic, then layering in challenges, transitions, and polish. This made the development feel fast and iterative rather than overwhelming.&lt;/p&gt;

&lt;p&gt;Copilot CLI was especially helpful when:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Converting a prompt to a multi-level game which mainly uses emojis&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adding gameplay enhancements like obstacles and timers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Refining UI elements and transitions&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I mainly used Claude 4.5 Haiku in GitHub Copilot CLI. Overall, Copilot CLI felt less like a code generator and more like a rapid prototyping companion. It allowed me to focus on the fun parts like gameplay ideas, level design, and storytelling, while speeding up the repetitive parts of implementation.&lt;/p&gt;

&lt;p&gt;This project started as a simple Valentine's Day idea and grew into a complete 7-level interactive journey, and Copilot CLI played a central role in making that evolution smooth and fast.&lt;/p&gt;

&lt;p&gt;That was it from my end for today. If you liked the concept, then some appreciation for the article. See you all in the next post 👋&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
      <category>cli</category>
      <category>githubcopilot</category>
    </item>
    <item>
      <title>Security, Cloud Costs, and Bugs: How I solved the Developer's Three Biggest Nightmares in a single app</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Sun, 08 Feb 2026 14:11:04 +0000</pubDate>
      <link>https://dev.to/saurabhnative/security-cloud-costs-and-bugs-how-i-solved-the-developers-three-biggest-nightmares-in-a-single-40hk</link>
      <guid>https://dev.to/saurabhnative/security-cloud-costs-and-bugs-how-i-solved-the-developers-three-biggest-nightmares-in-a-single-40hk</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/algolia"&gt;Algolia Agent Studio Challenge&lt;/a&gt;: Consumer-Facing Non-Conversational Experiences&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&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%2F02nn3qicr0t98v6aukfm.png" 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%2F02nn3qicr0t98v6aukfm.png" alt="DevSolve Preview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Introducing DevSolve&lt;/strong&gt;&lt;br&gt;
DevSolve is a "Smart Helper" for software developers. It works like a specialised search engine that scans our project files and instantly gives us the answers we need to keep our app safe by checking vulnerabilities in npm packages, cheap by checking for cloud costs, and bug-free by giving solutions to common console errors.&lt;/p&gt;

&lt;p&gt;Instead of forcing us to chat with an AI or look through endless pages of documentation, DevSolve looks at our work and proactively tells us three things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Is our code safe? &lt;br&gt;
It looks at the npm packages our app uses and compares them against a global list of known security threats. If an npm package we’re using is "broken" or dangerous, DevSolve flags it and tells us exactly which version we can use to fix it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How much will app deployment cost? &lt;br&gt;
Building in the "cloud" (like AWS) can get expensive fast. DevSolve reads our infrastructure plans(Terraform IaC snippet) and instantly estimates our monthly bill. It’s like having a price tag appear on our code before we buy it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why is the app broken? &lt;br&gt;
When our code crashes, it usually leaves a messy "error log." DevSolve cleans up that mess by checking console log errors, finding the specific error code, and showing us the official fix from the documentation so we can get back to work faster.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How healthy is my entire project? (Stack Health Advisor) &lt;br&gt;
This is the "Control Room" of the app. By selecting our framework and infrastructure, we get a bird’s-eye view of our project's health. It provides a letter grade (like an A+) based on security, tells us our total estimated cost, and gives us a stability score based on common error patterns.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;



&lt;p&gt;We can find the app demo here:- &lt;a href="https://devsolvedebug.netlify.app/" rel="noopener noreferrer"&gt;DevSolve Link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also, here's a video demonstration of app's features:-&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/6SQHdFhO3y8"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;DevSolve is divided into four sections:-&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Vulnerabilities check&lt;/strong&gt;&lt;br&gt;
Most developers only check for vulnerabilities when a build fails or an automated email arrives. The Vulnerabilities section is the "security guard" of our app, which instantly highlights if an npm package used in our app is compromised by instantly checking the  package.json.&lt;/p&gt;

&lt;p&gt;When users visits the vulnerabilities section, we show them the option to either paste package.json from their app into the app or search for vulnerabilities from the search bar. A list of common vulnerabilities is shown in list view below search as well:-&lt;/p&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%2F1allf1hapixff4klcbgx.png" 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%2F1allf1hapixff4klcbgx.png" alt="Vulnerabilities first screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the user pastes package.json, we show compromised packages if there are any, along with a solution to fix the package on the right side panel:-&lt;/p&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%2Fjkguojjcgw9pco0o0prj.png" 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%2Fjkguojjcgw9pco0o0prj.png" alt="Vulnerability solution"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Smart Error Analysis&lt;/strong&gt;&lt;br&gt;
Documentation is often thousands of pages long. When our app crashes, we don't have time to read; we need to fix it. DevSolve turns messy error logs into instant solutions.&lt;/p&gt;

&lt;p&gt;What it does:&lt;br&gt;
The Error Analysis tool acts as an intelligent bridge between our broken code and the official fix. It allows us to:&lt;/p&gt;

&lt;p&gt;Paste Raw Logs: We can simply paste console error output or a cryptic error message directly into the analyser.&lt;/p&gt;

&lt;p&gt;Automatic Extraction: The app instantly "scans" the text to identify specific error codes (like 401 Unauthorised or 500 Internal Server Error).&lt;/p&gt;

&lt;p&gt;Proactive Diagnostics: Once an error is found, the Auto-Diagnostic sidebar immediately pulls the "Truth Layer" solution from the documentation.&lt;/p&gt;

&lt;p&gt;We can directly paste the error log or search for specific error codes when we open this section. Also list of common errors are shown in the list below:-&lt;/p&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%2Fuzksfmf75jm7j72yq13u.png" 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%2Fuzksfmf75jm7j72yq13u.png" alt="Error Analysis section"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When the user pastes a console error in the search section, the app automatically shows the error caused and the solution to fix the error:-&lt;/p&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%2Fvl3ii7kr83k6fbldn6q5.png" 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%2Fvl3ii7kr83k6fbldn6q5.png" alt="Console error"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Cloud Cost Estimation &amp;amp; Risk&lt;/strong&gt;&lt;br&gt;
Cloud pricing is notoriously complex and often leads to 'bill shock' at the end of the month. DevSolve brings financial transparency directly into our code editor.&lt;/p&gt;

&lt;p&gt;What it does:&lt;br&gt;
The Cloud Cost tool acts as a real-time financial auditor for our infrastructure. Instead of manually checking provider pricing pages, we can:&lt;/p&gt;

&lt;p&gt;Analyse IaC Snippets: User can paste Terraform or CloudFormation code directly into the analyser or search for current prices of components using search.&lt;/p&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%2Fkm1ua8lomcbp74nywf65.png" 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%2Fkm1ua8lomcbp74nywf65.png" alt="Analyse IaC first screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the user pastes the Terraform IAC snippet, we get smart analysis as shown below:-&lt;/p&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%2Fyhj2r89krniboqv0x8ey.png" 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%2Fyhj2r89krniboqv0x8ey.png" alt="IAC snippet"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Automatic Resource Detection: The app identifies specific resources, such as an aws_instance of type t3.medium, and instantly matches it to its current market price.&lt;/p&gt;

&lt;p&gt;Visual Cost Estimates: As seen in the screenshots, the app generates a clean report showing the provider, region, and exact monthly cost for each resource.&lt;/p&gt;

&lt;p&gt;Key Feature: Risk Prevention&lt;br&gt;
DevSolve doesn't just show us prices, it helps us avoid expensive mistakes before they happen.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4.Stack Health Advisor&lt;/strong&gt;&lt;br&gt;
Choosing the right technology is only half the battle; knowing how that stack performs in the real world is the other. The Stack Health Advisor gives us an instant 'Pulse Check' on our architectural choices.&lt;/p&gt;

&lt;p&gt;The Stack Health Advisor acts as a strategic consultant for our project. By selecting our primary components, we get an immediate breakdown of three critical factors:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Security Risk: It assigns a letter grade (like an A+) to our stack. It proactively checks if our specific framework version has any known vulnerabilities that haven't been patched yet.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Monthly Cost: It calculates our estimated infrastructure spend based on the components we have selected (e.g., AWS EC2 vs. ElastiCache). This helps us see the financial impact of our technical choices in real-time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Stability Index: It provides a percentage-based stability score by cross-referencing our stack against common error patterns in the app's knowledge base. A high score means the user's chosen tools are historically reliable and well-documented.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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%2F1iqn3fkrosfsbr0ihzdi.png" 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%2F1iqn3fkrosfsbr0ihzdi.png" alt="Stack advisor"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, the Stack Health Advisor is evaluating a Vue.js frontend running on an AWS t3.medium instance. We can see an 'A+' security rating, a $30 monthly cost estimate, and a 98% stability index. This bird's-eye view allows leads and architects to validate their stack's health in seconds, ensuring the project remains secure and within budget.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Algolia AI Agent Studio integration&lt;/strong&gt;&lt;br&gt;
I was also able to integrate Algolia AI Agent Studio filter suggestions API locally in the app to show filters in error analysis section, as shown in below screenshot:-&lt;/p&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%2Fsohsshkyvsorg2iims3y.png" 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%2Fsohsshkyvsorg2iims3y.png" alt="Agent Studio Integration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For this, I created an AI agent in Algolia Agents studio section using a  modified instructions prompt to filter data from error codes related Algolia index based on search query(error code) inserted by the user.&lt;/p&gt;

&lt;p&gt;This allowed me to test the agent capabilities in agent studio sandbox as shown below:-&lt;/p&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%2Ffd0rh10kepezdgimfl5s.png" 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%2Ffd0rh10kepezdgimfl5s.png" alt="Test Sandbox"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then &lt;code&gt;filterSuggestions&lt;/code&gt; option was added in widgets code section to show filter suggestions to the end user.&lt;/p&gt;

&lt;p&gt;The filter suggestions can be used by the users for intelligent, deeper search of error codes and similar filter suggestions can be also added in other three sections of the app as well.&lt;/p&gt;

&lt;p&gt;Due to a rate limit issue on the free-tier provided by AI API providers, I did not deploy it on netlify app link mentioned earlier in the article. &lt;/p&gt;

&lt;h2&gt;
  
  
  How I Used Algolia Agent Studio
&lt;/h2&gt;

&lt;p&gt;In the Vulnerabilities section, Algolia's Custom Search acts as the high-speed "lookup engine" that connects your project dependencies to the sample data pulled from &lt;a href="https://github.com/advisories" rel="noopener noreferrer"&gt;GitHub Advisory Database&lt;/a&gt;. It transforms a simple list of packages into a live security report by handling the complex matching logic behind the scenes. For the sample app, I inserted a few vulnerabilities in Algolia's index, which can be later populated with more comprehensive database entries for in depth vulnerabilities search.&lt;/p&gt;

&lt;p&gt;In the error analysis section, I used Algolia's Custom Search Function to intercept every keystroke in the Error Analysis bar. If the input matches a known error pattern, we use Optional Filters to boost troubleshooting guides to the top, ensuring the most helpful 'Fix' is always what the user sees first.&lt;/p&gt;

&lt;p&gt;For the Cloud Cost section, I used Algolia to index some sample cloud pricing tiers. I implemented a custom HCL/YAML parser that extracts resource types and regions from pasted snippets. These are then sent as search queries to Algolia, which retrieves the most accurate, region-specific pricing data.&lt;/p&gt;

&lt;p&gt;In the stack health advisor section, I used Algolia’s multipleQueries feature to fire off three simultaneous searches every time a user changes their stack. One query checks the security index for framework risks, another hits the pricing index for cost, and the third searches the error base for stability issues. We then aggregate these results into a single, easy-to-read dashboard.&lt;/p&gt;

&lt;p&gt;To fit the hackathon category, I used Agent Studio to create proactive filter suggestions: &lt;br&gt;
For example, when a user searches for an error like "401," the Agent doesn't just show the error results; it proactively retrieves additional filters and displays them as the primary filters below the search input.&lt;/p&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%2F2fmiba44ogw2rw8e9pjv.png" 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%2F2fmiba44ogw2rw8e9pjv.png" alt="Agent Studio Integration"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Fast Retrieval Matters
&lt;/h2&gt;

&lt;p&gt;In a developer tool like DevSolve, fast retrieval isn't just a "nice-to-have" feature; it is the core engine that enables a Non-Conversational experience.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Maintaining "Flow State"&lt;/strong&gt;&lt;br&gt;
Developers work in a high-concentration "flow state." Every second spent waiting for a spinner or a slow AI response is a moment where that focus can break and flow state goes away.&lt;/p&gt;

&lt;p&gt;Instant Feedback: Algolia provides search results in milliseconds, meaning the moment a developer pastes an error log, the fix is already there.&lt;/p&gt;

&lt;p&gt;Zero Latency: Unlike LLMs that "stream" text slowly, fast retrieval allows the UI to update as fast as the users can blink.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Enabling "Proactive" Intelligence&lt;/strong&gt;&lt;br&gt;
For a tool to be proactive, it must be faster than the user's next thought.&lt;/p&gt;

&lt;p&gt;Real-Time Auditing: In our Security section, the "Agent" must cross-reference lot of vulnerabilities instantly to flag a risk before the developer moves to the next file.&lt;/p&gt;

&lt;p&gt;Dynamic Costing: As seen in your Cloud Costs section, fast retrieval allows the "price tag" to update instantly as soon as the user pastes the IAC snippet, making financial impact immediate and visible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Accuracy Over Hallucination&lt;/strong&gt;&lt;br&gt;
Fast retrieval allows us to query a Verified Source of Truth (like the GitHub Advisory Database) rather than relying on a generative model's memory.&lt;/p&gt;

&lt;p&gt;Precision: Speed allows us to perform multiple "behind-the-scenes" searches simultaneously, checking security, cost, and stability all at once, without slowing down the user interface.&lt;/p&gt;

&lt;p&gt;Reliability: When the fix appears instantly from a trusted index, the developer trusts the tool more than an AI assistant that might guess the answer or give incorrect or outdated solutions.&lt;/p&gt;

&lt;p&gt;I chose Algolia because, in development, speed is a feature. By reducing retrieval time, DevSolve disappears into the background of the workflow. It doesn't feel like a separate 'search step'; it feels like our code is simply telling us what it needs to be safe and cost-effective.&lt;/p&gt;

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

&lt;p&gt;DevSolve is built on a simple premise: developer tools should be proactive. By focusing on high-speed retrieval over conversation, we’ve created a "Truth Layer" that respects a developer's most valuable asset: their time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Algolia Advantage&lt;/strong&gt;&lt;br&gt;
Using Algolia allowed us to turn complex datasets like the GitHub Advisory Database and Cloud Pricing Lists into instant, actionable insights.&lt;/p&gt;

&lt;p&gt;Speed as a Feature: By delivering results in milliseconds, we ensure that security and cost checks happen during the workflow, not after.&lt;/p&gt;

&lt;p&gt;Precision over Hallucinations: Because we query a verified index, the "Fixes" provided are always accurate and backed by documentation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Beyond the Hackathon&lt;/strong&gt;&lt;br&gt;
While DevSolve solves the "Three Nightmares" of security, costs, and bugs today, the architecture is ready for more. The next steps for this project include:&lt;/p&gt;

&lt;p&gt;Multi-Cloud Support: Expanding the pricing index to include Google Cloud and Azure for cross-provider comparisons.&lt;/p&gt;

&lt;p&gt;Collaborative Health Reports: Allowing teams to share Stack Health Advisor scores to standardize best practices across an organization.&lt;/p&gt;

&lt;p&gt;Thank you for exploring DevSolve. I hope this project inspires you as a reader to build such tools that prioritize the "Source of Truth" and empower developers to build with more confidence and less friction.&lt;/p&gt;

&lt;p&gt;That's it from my end for today. See you all in the next article 👋&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>algoliachallenge</category>
      <category>ai</category>
      <category>agents</category>
    </item>
    <item>
      <title>I Built a 3D Game-Style Interactive Developer Portfolio with Three.js, Gemini &amp; AntiGravity</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Sun, 25 Jan 2026 12:50:22 +0000</pubDate>
      <link>https://dev.to/saurabhnative/i-built-a-3d-game-style-interactive-developer-portfolio-with-threejs-gemini-antigravity-3ie9</link>
      <guid>https://dev.to/saurabhnative/i-built-a-3d-game-style-interactive-developer-portfolio-with-threejs-gemini-antigravity-3ie9</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/new-year-new-you-google-ai-2025-12-31"&gt;New Year, New You Portfolio Challenge Presented by Google AI&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  About Me
&lt;/h2&gt;

&lt;p&gt;Hello, I am Saurabh Mhatre, a Senior Frontend Developer with 10 years of experience in frontend development. For the past few months, I have been focusing on AI-driven frontend engineering, mainly using the Gemini Canvas feature and Google Antigravity.&lt;br&gt;
My goal with this portfolio was to create a 3d interactive digital home that feels alive and closely resembles my daily developer life. I wanted to showcase not just my career achievements but also my developer contributions outside of work and technical content creation, which I do side by side.&lt;/p&gt;
&lt;h2&gt;
  
  
  Portfolio
&lt;/h2&gt;



&lt;p&gt;This 3d portfolio is created to resemble a game-like experience where the user can roam around the 4 rooms of the house, each covering a part of my personal and professional life.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;First is the office where my career and skills are covered&lt;/li&gt;
&lt;li&gt;Second is the studio where my GitHub side projects and YouTube channel are added&lt;/li&gt;
&lt;li&gt;Third is a hobby room where you can play a 3d interactive game called Debug Hero. In this game, the main goal is to squash bugs using code projectiles and power-ups. You can also find my social media channels which I post tech jokes and AI art for fun.&lt;/li&gt;
&lt;li&gt;Fourth is the library, where my Medium blog profile and favourite books are covered.&lt;/li&gt;
&lt;li&gt;If you walk towards the backside of the garden, you can play a special "Your Name in Galaxy" game where your name appears among stars and you can move your name with hand movements.&lt;/li&gt;
&lt;li&gt;There's also a cute little cat mode to roam around as a cat. Also, night mode shows a spectacular view of the house with indoor lighting.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Video demonstration:-&lt;/p&gt;

&lt;p&gt;

  &lt;iframe src="https://www.youtube.com/embed/Fg6LSEkZ-zs"&gt;
  &lt;/iframe&gt;


&lt;/p&gt;

&lt;p&gt;Link for viewing portfolio:- &lt;a href="https://saurabhmhatreportfolio.netlify.app/" rel="noopener noreferrer"&gt;3dPortfolio&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;I first created an image of porfolio using Gemini Nano Banana Pro as shown below:-&lt;/p&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%2Fw05gp7fkp4gdqglru6uk.png" 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%2Fw05gp7fkp4gdqglru6uk.png" alt="Initial design"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then I created a prompt to generate this portfolio and create an initial prototype using the Gemini canvas feature:-&lt;/p&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%2Fgnuqdpvbur1vkbjj9ssm.png" 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%2Fgnuqdpvbur1vkbjj9ssm.png" alt="Gemini Canvas Screenshot"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this prototype, I implemented main character movement, basic home structure and where all interactive items would be in the house. I also added popups, which open when an interactive item is clicked.&lt;/p&gt;

&lt;p&gt;Next, I created 3d animated images of items created using Gemini Nano Banana Pro and uploaded them to Sam3d for converting them into 3d models:-&lt;/p&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%2Fkgorscs41or99ncglqj8.png" 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%2Fkgorscs41or99ncglqj8.png" alt="Sam3d Workflow"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, I integrated the 3d models into the portfolio using Google AntiGravity and made lots of customisations using Agent mode in the editor.&lt;/p&gt;

&lt;p&gt;Also for character walking animated movement, I used Adobe Mixamo with some character editing done in Blender.&lt;/p&gt;

&lt;p&gt;Tech Stack and tools used:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Three.js for real-time 3D rendering&lt;/li&gt;
&lt;li&gt;Gemini for AI-assisted workflows using the canvas feature&lt;/li&gt;
&lt;li&gt;Meta SAM 3D for turning images into 3D models&lt;/li&gt;
&lt;li&gt;Adobe Mixamo for animated character movement&lt;/li&gt;
&lt;li&gt;Google Antigravity to orchestrate the full experience&lt;/li&gt;
&lt;li&gt;Dockerized and hosted on Google Cloud Run.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  What I'm Most Proud Of
&lt;/h2&gt;

&lt;p&gt;All four sections in the portfolio showcase my professional achievements, personal projects and social channels. I also added previously created Debug Hero 3d game access in the same app as well. Also, there is an easter egg to generate your name in the galaxy and interact with it using hand gestures, which you will surely enjoy.&lt;/p&gt;

&lt;p&gt;What makes it fun to explore:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fully animated 3D scenes with smooth interactions&lt;/li&gt;
&lt;li&gt;Performance-focused frontend decisions&lt;/li&gt;
&lt;li&gt;Creative use of AI and 3D tooling&lt;/li&gt;
&lt;li&gt;Interactive moments that reward curiosity, including playful surprises as you roam&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This portfolio is a great reminder that standing out doesn’t mean being louder; it means being more intentional and creative with the tools we have.&lt;/p&gt;

&lt;p&gt;That's it from my end for today. See you all in the next post 👋&lt;/p&gt;

</description>
      <category>devchallenge</category>
      <category>googleaichallenge</category>
      <category>portfolio</category>
      <category>gemini</category>
    </item>
    <item>
      <title>Purpose of @SpringBootApplication Annotation in Spring Boot</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Thu, 26 Oct 2023 16:09:56 +0000</pubDate>
      <link>https://dev.to/saurabhnative/purpose-of-springbootapplication-annotation-in-spring-boot-29j9</link>
      <guid>https://dev.to/saurabhnative/purpose-of-springbootapplication-annotation-in-spring-boot-29j9</guid>
      <description>&lt;p&gt;The &lt;code&gt;@SpringBootApplication&lt;/code&gt; annotation is a powerful and fundamental annotation in the Spring Boot framework. It encapsulates several other annotations and serves as the entry point for your Spring Boot application.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is @SpringBootApplication?
&lt;/h2&gt;

&lt;p&gt;The &lt;code&gt;@SpringBootApplication&lt;/code&gt; annotation is a combination of three annotations:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;@SpringBootConfiguration&lt;/code&gt;: Denoting that this class provides configuration for the application.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@EnableAutoConfiguration&lt;/code&gt;: Enabling Spring Boot's auto-configuration mechanism, which automatically configures the application based on the libraries on the classpath.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@ComponentScan&lt;/code&gt;: Instructing Spring to scan the specified package (and sub-packages) for annotated components.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Why Use @SpringBootApplication?
&lt;/h2&gt;

&lt;p&gt;This annotation simplifies the setup of a Spring Boot application. By placing it on your main class, you declare it as the starting point of your application. Spring Boot then handles much of the configuration and bootstrapping for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example Usage:
&lt;/h2&gt;

&lt;p&gt;Let's consider a basic Spring Boot application with the &lt;code&gt;@SpringBootApplication&lt;/code&gt; annotation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="nd"&gt;@SpringBootApplication&lt;/span&gt;
&lt;span class="kd"&gt;public&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;MyApplication&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;SpringApplication&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nc"&gt;MyApplication&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;class&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="o"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In this example, &lt;code&gt;MyApplication&lt;/code&gt; is marked with &lt;code&gt;@SpringBootApplication&lt;/code&gt;. The &lt;code&gt;main&lt;/code&gt; method then uses &lt;code&gt;SpringApplication.run(...)&lt;/code&gt; to bootstrap the application.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits:
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simplified Setup&lt;/strong&gt;: The annotation-driven approach reduces the need for manual configuration, allowing you to focus more on writing application logic.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Auto-Configuration&lt;/strong&gt;: Spring Boot's auto-configuration feature sets up your application with sensible defaults based on the libraries you have in your classpath.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Component Scanning&lt;/strong&gt;: The application will automatically scan for annotated components like &lt;code&gt;@Component&lt;/code&gt;, &lt;code&gt;@Service&lt;/code&gt;, &lt;code&gt;@Repository&lt;/code&gt;, etc., making it easy to wire dependencies.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Readability and Maintainability&lt;/strong&gt;: By using &lt;code&gt;@SpringBootApplication&lt;/code&gt;, you clearly indicate the entry point of your application, making it easier for other developers to understand your code.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;The &lt;code&gt;@SpringBootApplication&lt;/code&gt; annotation is a cornerstone of Spring Boot development. By using it, you leverage the power of auto-configuration and component scanning, simplifying the setup and development process of your application. This annotation-driven approach encourages best practices and accelerates your development workflow.&lt;/p&gt;

&lt;p&gt;Check out my Youtube channel for more content:-&lt;br&gt;
&lt;a href="https://www.youtube.com/@SaurabhNative/featured" rel="noopener noreferrer"&gt;SaurabhNative Youtube&lt;/a&gt;&lt;/p&gt;

</description>
      <category>springboot</category>
      <category>java</category>
      <category>backend</category>
    </item>
    <item>
      <title>Understanding the POM File in Spring: A Comprehensive Guide</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Wed, 25 Oct 2023 14:48:22 +0000</pubDate>
      <link>https://dev.to/saurabhnative/understanding-the-pom-file-in-spring-a-comprehensive-guide-4gnl</link>
      <guid>https://dev.to/saurabhnative/understanding-the-pom-file-in-spring-a-comprehensive-guide-4gnl</guid>
      <description>&lt;h2&gt;
  
  
  1. Introduction to POM File
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1.1 What is a POM File?
&lt;/h3&gt;

&lt;p&gt;A &lt;strong&gt;POM&lt;/strong&gt; (Project Object Model) file is an XML file that serves as the fundamental building block of a Maven project. It contains information about the project and configuration details to manage dependencies, plugins, build settings, and more.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 Importance of the POM File
&lt;/h3&gt;

&lt;p&gt;The POM file is pivotal in Maven-based projects for various reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Dependency Management&lt;/strong&gt;: It defines project dependencies and their versions, ensuring that the required libraries are available during compilation and runtime.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Lifecycle Management&lt;/strong&gt;: It defines the build lifecycle phases and their associated goals, allowing developers to execute tasks such as compilation, testing, packaging, etc.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Plugin Configuration&lt;/strong&gt;: It specifies which plugins should be used in the build process and how they should be configured.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  2. Structure of a POM File
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2.1 Project Information
&lt;/h3&gt;

&lt;p&gt;This section includes details like &lt;code&gt;groupId&lt;/code&gt;, &lt;code&gt;artifactId&lt;/code&gt;, &lt;code&gt;version&lt;/code&gt;, &lt;code&gt;packaging&lt;/code&gt;, and &lt;code&gt;name&lt;/code&gt; that uniquely identify the project.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 Dependencies
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;dependencies&lt;/code&gt; section lists the external libraries and frameworks that the project relies on.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 Plugins
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;build&lt;/code&gt; section includes information about plugins and their configurations. Plugins can perform various tasks like compiling code, generating documentation, or packaging the project.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.4 Build Settings
&lt;/h3&gt;

&lt;p&gt;This section includes properties like &lt;code&gt;sourceDirectory&lt;/code&gt;, &lt;code&gt;testSourceDirectory&lt;/code&gt;, and others, which customize the build process.&lt;/p&gt;




&lt;h2&gt;
  
  
  3. Managing Dependencies with POM
&lt;/h2&gt;

&lt;h3&gt;
  
  
  3.1 Dependency Coordinates
&lt;/h3&gt;

&lt;p&gt;Dependencies are defined with coordinates like &lt;code&gt;groupId&lt;/code&gt;, &lt;code&gt;artifactId&lt;/code&gt;, and &lt;code&gt;version&lt;/code&gt;. These coordinates are used by Maven to fetch the required libraries from repositories.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Transitive Dependencies
&lt;/h3&gt;

&lt;p&gt;Maven automatically resolves dependencies transitively, meaning if a library A depends on library B, Maven will also fetch B.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.3 Version Management
&lt;/h3&gt;

&lt;p&gt;Using properties for versions allows for centralized version management. This is particularly useful when multiple modules share dependencies.&lt;/p&gt;




&lt;h2&gt;
  
  
  4. Lifecycle and Build Phases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  4.1 Clean Phase
&lt;/h3&gt;

&lt;p&gt;This phase removes files generated by the previous build.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 Default Phase
&lt;/h3&gt;

&lt;p&gt;This phase includes goals like compiling source code, running tests, and packaging the project.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.3 Site Phase
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;site&lt;/code&gt; phase generates project documentation, reports, and other resources.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.4 Deploy Phase
&lt;/h3&gt;

&lt;p&gt;The &lt;code&gt;deploy&lt;/code&gt; phase involves copying the final package to a remote repository for sharing.&lt;/p&gt;




&lt;h2&gt;
  
  
  5. Profiles in POM
&lt;/h2&gt;

&lt;h3&gt;
  
  
  5.1 What are Profiles?
&lt;/h3&gt;

&lt;p&gt;Profiles in Maven allow for customizing builds based on different environments or specific requirements.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2 Using Profiles for Build Customization
&lt;/h3&gt;

&lt;p&gt;Profiles can be used to define different sets of dependencies, plugins, or build configurations for specific scenarios, such as development, testing, or production.&lt;/p&gt;




&lt;h2&gt;
  
  
  6. Inheritance and Parent POMs
&lt;/h2&gt;

&lt;h3&gt;
  
  
  6.1 Defining Parent POMs
&lt;/h3&gt;

&lt;p&gt;A parent POM is a way to share common configurations across multiple projects. It helps in standardizing settings and dependencies.&lt;/p&gt;

&lt;h3&gt;
  
  
  6.2 Inheriting from Parent POMs
&lt;/h3&gt;

&lt;p&gt;A project can inherit configurations from a parent POM by specifying the parent's &lt;code&gt;groupId&lt;/code&gt;, &lt;code&gt;artifactId&lt;/code&gt;, and &lt;code&gt;version&lt;/code&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  7. Plugin Configuration in POM
&lt;/h2&gt;

&lt;h3&gt;
  
  
  7.1 What are Plugins in Maven?
&lt;/h3&gt;

&lt;p&gt;Plugins are extensions to Maven that provide additional functionality. They can be used for tasks like compiling code, running tests, generating documentation, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  7.2 Configuring Plugins in POM
&lt;/h3&gt;

&lt;p&gt;Plugin configurations are specified in the &lt;code&gt;build&lt;/code&gt; section of the POM file. This includes details like the plugin's &lt;code&gt;groupId&lt;/code&gt;, &lt;code&gt;artifactId&lt;/code&gt;, &lt;code&gt;version&lt;/code&gt;, and specific settings.&lt;/p&gt;




&lt;h2&gt;
  
  
  8. Best Practices for Managing POM Files
&lt;/h2&gt;

&lt;h3&gt;
  
  
  8.1 Keep Versions Updated
&lt;/h3&gt;

&lt;p&gt;Regularly update dependency versions to benefit from bug fixes, performance improvements, and new features.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.2 Use Bill of Materials (BOM)
&lt;/h3&gt;

&lt;p&gt;A BOM is a POM file that defines a set of default dependencies and their versions. It helps in managing versions across multiple modules.&lt;/p&gt;

&lt;h3&gt;
  
  
  8.3 Avoid Dependency Scope Ambiguity
&lt;/h3&gt;

&lt;p&gt;Use appropriate dependency scopes (&lt;code&gt;compile&lt;/code&gt;, &lt;code&gt;runtime&lt;/code&gt;, etc.) to avoid conflicts and ensure that dependencies are used in the correct context.&lt;/p&gt;




&lt;h2&gt;
  
  
  9. Conclusion
&lt;/h2&gt;

&lt;p&gt;Understanding and effectively managing the POM file is crucial for successful Maven-based project development. It not only ensures proper dependency management but also streamlines the build process, making development more efficient and maintainable.&lt;/p&gt;

&lt;p&gt;Check out my Youtube channel for more content:-&lt;br&gt;
&lt;a href="https://www.youtube.com/@SaurabhNative/featured" rel="noopener noreferrer"&gt;SaurabhNative Youtube Channel&lt;/a&gt;&lt;/p&gt;

</description>
      <category>springboot</category>
      <category>java</category>
      <category>backend</category>
    </item>
    <item>
      <title>Tech update - Major tech companies catching upto chatGPT’s popularity</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Thu, 02 Mar 2023 15:26:33 +0000</pubDate>
      <link>https://dev.to/saurabhnative/tech-update-major-tech-companies-catching-upto-chatgpts-popularity-11ej</link>
      <guid>https://dev.to/saurabhnative/tech-update-major-tech-companies-catching-upto-chatgpts-popularity-11ej</guid>
      <description>&lt;p&gt;As OpenAI’s ChatGPT surges in popularity, more companies, including Microsoft, Google,Meta and even Snapchat, are exploring opportunities in the generative AI space.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;ChatGPT will now be available to Snapchat users in the form of AI based friend with which users can have daily conversations. Named “My AI,” Snapchat’s chatGPT based bot will be pinned to the app’s chat tab above conversations with friends and will be available only to Snapchat plus subscribers. The idea behind this is that in addition to talking to friends and family every day, users are going to talk to AI every day.&lt;/li&gt;
&lt;li&gt;Microsoft is bringing AI powered search experience to taskbar in windows 11. This is first step towards Microsoft’s plans of AI powered windows. The search box is used by over half a billion people on a regular basis.&lt;/li&gt;
&lt;li&gt;Meta is now dedicating a team towards building AI powered chat experiences and personas designed to help people in various ways. They are planning to use this tools within each of their apps.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In conclusion, the rise of AI language models and their popularity among major tech companies is a positive development for the field of natural language processing, and it will be exciting to see how these technologies continue to evolve and improve in the future.&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>ai</category>
    </item>
    <item>
      <title>Advantages and disadvantages of server side rendering in react.js -Frontend Interview Question</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Wed, 01 Mar 2023 16:52:11 +0000</pubDate>
      <link>https://dev.to/saurabhnative/advantages-and-disadvantages-of-server-side-rendering-in-reactjs-frontend-interview-question-55b3</link>
      <guid>https://dev.to/saurabhnative/advantages-and-disadvantages-of-server-side-rendering-in-reactjs-frontend-interview-question-55b3</guid>
      <description>&lt;p&gt;Server-side rendering (SSR) in React.js is the process of rendering a web page on the server-side and sending the fully rendered HTML to the client browser. This is in contrast to the traditional client-side rendering (CSR) approach, where the HTML is generated by JavaScript running in the browser.&lt;/p&gt;

&lt;p&gt;Server-side rendering (SSR) in React.js has several advantages and disadvantages, which are discussed below:&lt;br&gt;
Advantages of Server-side Rendering in React.js:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Faster Initial Load Time: With server-side rendering, the initial HTML, CSS, and JavaScript files are preloaded on the server and sent to the browser as a complete HTML page, which results in a faster initial load time, especially for slow network connections. This can improve the user experience and reduce the bounce rate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved SEO: Server-side rendering is beneficial for search engine optimization (SEO) as search engines can easily crawl the content of the pages, which can lead to better search engine rankings. SSR generates static HTML pages, which can be easily indexed by search engines, and provide better metadata for search engines to crawl.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Better Accessibility: Server-side rendering provides better accessibility as it ensures that content is available to users who might not have JavaScript enabled or are using a screen reader.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved Performance: Server-side rendering can improve the performance of your application as it reduces the time taken to download, parse and execute JavaScript files in the browser. This can lead to faster page loads and better user experience.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Disadvantages of Server-side Rendering in React.js:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Increased server load: Server-side rendering can increase the load on the server as the server needs to generate HTML pages for every request. This can result in increased server costs and decreased performance, especially for high-traffic websites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;More complex setup: Setting up server-side rendering can be more complex compared to client-side rendering as it requires additional infrastructure and configuration.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Delayed Interactivity: Server-side rendering can delay interactivity as the client-side JavaScript must be downloaded and parsed before user interaction can take place. This can result in a slower user experience, especially for complex applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Increased bandwidth usage: Server-side rendering can increase the amount of data transferred over the network, as the server needs to send the complete HTML, CSS, and JavaScript files to the browser. This can result in increased bandwidth usage, which can be a problem for users with limited data plans or slow internet connections.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Concepts explained in video tutorial:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/c8qO2W3lsMc"&gt;
&lt;/iframe&gt;
 &lt;/p&gt;

&lt;p&gt;In summary, server-side rendering in React.js has several advantages, such as faster initial load time, improved SEO, and better accessibility, but it also has some disadvantages, such as increased server load, more complex setup, delayed interactivity, and increased bandwidth usage. The choice to use server-side rendering or not depends on the specific needs and requirements of your application.&lt;/p&gt;

</description>
      <category>java</category>
      <category>security</category>
      <category>monitoring</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Bringing back informal communication in remote work</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Sun, 30 Jan 2022 12:43:01 +0000</pubDate>
      <link>https://dev.to/saurabhnative/bringing-back-informal-communication-in-remote-work-eog</link>
      <guid>https://dev.to/saurabhnative/bringing-back-informal-communication-in-remote-work-eog</guid>
      <description>&lt;h2&gt;
  
  
  Overview
&lt;/h2&gt;

&lt;p&gt;Hell everyone,&lt;br&gt;&lt;br&gt;
Since the past few years, most of the software engineers and engineering teams across the world have started working from home and are slowly adjusting to remote working culture. Remote engineering has brought in its own set of advantages and challenges as well. Even companies across the world are trying to adapt to these new changes. &lt;br&gt;
One thing which we all surely might miss is having casual conversations with colleagues, discussing random side-project ideas with them or hobbies and even favourite web series/movies we watched last weekend.&lt;/p&gt;

&lt;p&gt;I recently came across an interesting &lt;a href="https://about.gitlab.com/company/culture/all-remote/informal-communication/" rel="noopener noreferrer"&gt;article&lt;/a&gt; about informal communication in a remote environment from Gitlab's remote working &lt;a href="https://about.gitlab.com/handbook/" rel="noopener noreferrer"&gt;handbook&lt;/a&gt; which is a massive 2000+ pages resource for learning about good remote working practices. Shared below are a few key points that I personally found interesting from the article:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Reasons for having informal communication at the workplace
&lt;/h2&gt;

&lt;p&gt;Remote workers who are all-work all the time can risk facing burnout or loneliness. One of the best ways to combat loneliness and burnout is through relationship-building by prioritizing regular social interactions via informal communication throughout the workday, week, and month.&lt;br&gt;
Informal communication is important, as it enables friendships to form at work related to matters other than work. Those who feel they have genuine friends at work are more likely to enjoy their job, perform at a high level, feel invested in the company, and serve others within the organization.&lt;/p&gt;

&lt;p&gt;For all-remote companies, leaders should not expect informal communication to happen naturally. There are no hallways for team members to cross paths in, no carpools to the office, etc.&lt;/p&gt;

&lt;p&gt;At the same time we should also keep in mind that while some people thrive on spending time to get to know others, others are annoyed by non-work-related texts and messages. Informal communication among diverse team members requires a high level of empathy.&lt;/p&gt;

&lt;p&gt;It's helpful to be transparent and considerate about communication preferences from the employee's end so that managers and teammates can know and respect everyone's boundaries.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Ways to foster informal communication in a remote environment
&lt;/h2&gt;

&lt;p&gt;Below are a few of the ways we can create to foster informal communication referenced from Gitlab's handbook. All-remote companies and employees can iterate on these and implement them as desired.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Social call&lt;/strong&gt;: A series of optional calls once a month on a Tuesday, to which everyone in the organization is invited. Have no set agenda, but items can be added to the linked document. This is just a time set aside for everyone to talk openly and where everyone is a moderator.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Contribute Unconference&lt;/strong&gt;: An in-person, annual week-long event where we can bring the entire company together in one location to get to know each other better.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Group conversations&lt;/strong&gt;: Few times a week the company can get together virtually to discuss an area of the business. Slides can be provided for context but not presented.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Coffee chats&lt;/strong&gt;: Working remotely leads to mostly work-related conversations with fellow team members, so everyone at all remote companies can be encouraged to dedicate a few hours a week to having social calls with anyone in the company. &lt;br&gt;
It's a great chance to get to know who you work with, talk about everyday things and share a coffee, tea, or your favourite beverage. Most of us surely want to make friends and build relationships with the people we work with to create a more comfortable, well-rounded environment.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Coworking calls&lt;/strong&gt;: These video calls are scheduled working sessions on Zoom where team members can work through challenging tasks with a coworker, or simply hang out while each person works on their own tasks. This recreates a productive working session we might have in-person in a traditional office setting but from the comfort of our own desk.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Social hours&lt;/strong&gt;: Informal social calls can be organized within immediate teams to get to know each other on a more personal level.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Local meetups&lt;/strong&gt;: Co-located team members can be encouraged to organize their own meetups, whether it's a coworking space or getting dinner together.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Channels for informal activities&lt;/strong&gt;: Slack/Discord channels for informal communications can be added throughout the company, whether it's a team-specific channel or a channel dedicated to sharing vacation photos with other team members.&lt;br&gt;&lt;br&gt;
Companies can have a &lt;code&gt;#gaming&lt;/code&gt; Slack channel where fans of video games and digital board games can connect. Coordinating shared gaming sessions is a great way to informally connect with team members and collaborate toward goals outside of work.&lt;br&gt;&lt;br&gt;
&lt;code&gt;#music_making&lt;/code&gt; channel can be a place where artists can come together and collaborate synchronously or asynchronously to make music together.&lt;br&gt;&lt;br&gt;
&lt;em&gt;Personal Addition:&lt;/em&gt; We can even have a  #jokes/memes channel where people can share jokes or memes with others.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Zoom calls&lt;/strong&gt;: Not only do we get to know our coworkers better by seeing them in real-time during video calls, but we also get to know their pets and families too. This visual engagement helps us relate to each other on a more personal level, so when we meet in person, we already know each other. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Collaborative virtual quizzes&lt;/strong&gt;: A collaborative quiz tool like Kahoot can be used for virtual team-building activities. Employees can split into smaller breakout groups on Zoom to get to know each other and answer the questions. Employers can incorporate some friendly competition by offering a prize for the winners.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  3. Leading with empathy
&lt;/h2&gt;

&lt;p&gt;Each work-related call can begin with an earnest, genuine "How are you?", or a similar and appropriate introduction. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It's important to remember that everyone is facing a battle that we know nothing about, and in a remote setting we should actively listen.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The above point is my personal favourite from the handbook 😁&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Using emojis to convey emotion 😄
&lt;/h2&gt;

&lt;p&gt;Though emojis have commonly been reserved for personal conversations that occur outside of the workplace, all-remote employees can feel comfortable using them in everyday discourse with team members.&lt;/p&gt;

&lt;p&gt;Perception has shifted on using emojis in professional settings. In Slack alone, north of 26 million custom emojis has been created since the feature was introduced. In all-remote settings, where you may never meet a colleague in person, leveraging visual tools to convey nuance in tone, emphasis, and emotion can lead to more empathy and a tighter human connection.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Celebrations and holidays
&lt;/h2&gt;

&lt;p&gt;A team that is distributed across the globe creates opportunities for many celebrations. Different countries and cultures celebrate in their own way, enabling team members to gain an understanding of key dates and events that matter to colleagues. A culture that encourages a team to thoughtfully express their celebrations on company calls is a healthy, inclusive one.&lt;/p&gt;

&lt;p&gt;There are a lot more things to share but I want this article to be just a summary and not the exact replica of the original &lt;a href="https://about.gitlab.com/company/culture/all-remote/informal-communication/" rel="noopener noreferrer"&gt;resource&lt;/a&gt;. If you would like to add a few more informal activities which your organisation undertakes, then please add them in the comments so that others can learn about them as well.&lt;/p&gt;

&lt;p&gt;That's it from my end for today. See you all in the next article.&lt;/p&gt;

</description>
      <category>remote</category>
    </item>
    <item>
      <title>Improving your Github repos presentation using projects feature</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Sat, 29 Jan 2022 04:03:43 +0000</pubDate>
      <link>https://dev.to/saurabhnative/improving-your-github-repos-presentation-using-projects-feature-2ih6</link>
      <guid>https://dev.to/saurabhnative/improving-your-github-repos-presentation-using-projects-feature-2ih6</guid>
      <description>&lt;p&gt;So today we are going to understand how to use the projects tab on Github for improving the presentation of your GitHub repos. Now one of the problems which it solved for me is lying in front of you. When publishing a full-stack project on Github, we usually create multiple repos for different purposes.&lt;/p&gt;

&lt;p&gt;For example, in the below case, a video game sales prediction project, which contained a front end repo written in React.js, the backend repo written in Python flask and the ML notebook repo written in Python again, and I wanted to club these three repos together.&lt;/p&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%2F5e83o1o5m63zzllvoegm.png" 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%2F5e83o1o5m63zzllvoegm.png" alt="Github repos for sales project" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If we come to the projects section, here you can see that we have the same project presented in a different manner in which we have the three repos linked and we have a general description. &lt;/p&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%2F1uzvo0r6rbmw0ccfzliy.png" 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%2F1uzvo0r6rbmw0ccfzliy.png" alt="Github project for sales project" width="800" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So when you are like explaining your code in front of an interviewer or showcasing your projects to someone, this tab might be a better way to showcase your projects, because you can have a basic title than a description and details about the project.&lt;/p&gt;

&lt;p&gt;More importantly, if you click on the project inside, then you can showcase some resources related to the project. &lt;br&gt;
In this case, I have added the technical stack used to create the project, the links to each individual repo and the article written after finishing the project in different tabs. Now you can customise this as per your requirements as well.&lt;/p&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%2F9kqrjwuax90oaqhj4vsh.png" 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%2F9kqrjwuax90oaqhj4vsh.png" alt="Project cards for sales project" width="800" height="259"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s deep dive into the process of creation of this project next. &lt;br&gt;
First, in the repos tab, filter out the repos that you need for creating the project. Once done we can start off with the project creation part.&lt;/p&gt;

&lt;p&gt;Go to the projects tab on your GitHub profile and click on new project as shown below:-&lt;/p&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%2Fwsjo6opt1fpyz60n2l0l.png" 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%2Fwsjo6opt1fpyz60n2l0l.png" alt="New Project Button" width="800" height="428"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then add a title, description and repositories you want to link for a project in the next step:-&lt;/p&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%2Fgc55a0yaahsie0skazus.png" 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%2Fgc55a0yaahsie0skazus.png" alt="Project creation steps" width="800" height="767"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Before proceeding ahead, keep in mind that the projects section is built mainly for task management. But this is an alternative way, in which I thought of using this section since the columns can be renamed and after we are done with the project, the task management section becomes redundant to use.&lt;/p&gt;

&lt;p&gt;You can then add cards and column names within the project as per your requirements:-&lt;/p&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%2F455qva5ne9k1u8aq8mvj.png" 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%2F455qva5ne9k1u8aq8mvj.png" alt="Cards and columns for project" width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once done, change the project privacy settings from private to public to showcase your project with the rest of the world. &lt;/p&gt;

&lt;p&gt;You can also go through this process visually by going through the video tutorial shared below:-&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/0UVPWoAVzO8"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;That's it from my end for today. See you all in the next article 👋&lt;/p&gt;

</description>
      <category>github</category>
      <category>repos</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Visualising the simplest Math problem no one can solve using React.js</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Sun, 19 Sep 2021 08:03:08 +0000</pubDate>
      <link>https://dev.to/saurabhnative/visualising-the-simplest-math-problem-no-one-can-solve-using-react-js-e3f</link>
      <guid>https://dev.to/saurabhnative/visualising-the-simplest-math-problem-no-one-can-solve-using-react-js-e3f</guid>
      <description>&lt;p&gt;Hello, amazing reader,&lt;br&gt;&lt;br&gt;
Hope you are doing fine in your life. I wanted to share some interesting insights I had after watching the 3x+1 problem on Veritasium last week:-&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/094y1Z2wpJg"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  Series Explanation
&lt;/h2&gt;

&lt;p&gt;The rules of the series are as follows:-&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Start with any positive integer n.    &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Then each term is obtained from the previous term as follows: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the previous term is even, the next term is one half of the previous term. &lt;/li&gt;
&lt;li&gt;If the previous term is odd, the next term is 3 times the previous term plus 1.

&lt;ul&gt;
&lt;li&gt;The conjecture is that, no matter what value of n, the sequence will always reach 1.
&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&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%2Fnfnjec3v8x8t4j2lx86f.png" 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%2Fnfnjec3v8x8t4j2lx86f.png" alt="Example.png" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Although the explanation is surprisingly easy to follow from the Youtube video above, no one has been able to prove the series yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Visualisation using react.js
&lt;/h2&gt;

&lt;p&gt;The problem in itself is really interesting to watch, but I personally found the practical examples and visualisations used in explaining the problem quite fascinating. &lt;/p&gt;

&lt;p&gt;Therefore I wanted to see if I can replicate a few of the visualisations of the series which is popularly known as collatz conjecture using react.js this week. I was successful in building a basic graph of the first 10 numbers in the series as shown below:&lt;/p&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%2Fvopa9arkfsemailu646l.png" 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%2Fvopa9arkfsemailu646l.png" alt="Screenshot 2021-09-17 at 7.51.14 PM.png" width="800" height="388"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can directly check out the code for this graph here on Codesandbox:-&lt;br&gt;
&lt;a href="https://codesandbox.io/s/3x-1-problem-yvd7s?file=/src/components/seriesGeneration.js" rel="noopener noreferrer"&gt;3x+1 in React.js&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://codesandbox.io/embed/3x-1-problem-yvd7s"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;There is a utility function in the code to generate the series for a particular number:-&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;generateSeries&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&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;series&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="mi"&gt;1&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;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;2&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="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&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;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="nx"&gt;series&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;series&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;We then use this function in &lt;code&gt;seriesGeneration&lt;/code&gt; component to create series for the first 10 numbers. The numbers are then visualised using  &lt;a href="https://recharts.org/" rel="noopener noreferrer"&gt;recharts&lt;/a&gt; library.&lt;/p&gt;

&lt;p&gt;I am planning to build a few more visualisations on the same number series, so stay tuned for upcoming articles.&lt;/p&gt;

&lt;p&gt;Connect with me on:&lt;br&gt;
&lt;a href="https://twitter.com/saurabhnative" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>webdev</category>
      <category>visualisation</category>
      <category>programming</category>
    </item>
    <item>
      <title>10 useful sections to improve your Github README files</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Thu, 16 Sep 2021 15:41:16 +0000</pubDate>
      <link>https://dev.to/saurabhnative/10-useful-sections-to-improve-your-github-readme-files-3hgj</link>
      <guid>https://dev.to/saurabhnative/10-useful-sections-to-improve-your-github-readme-files-3hgj</guid>
      <description>&lt;h2&gt;
  
  
  Hello everyone
&lt;/h2&gt;

&lt;p&gt;Today we are going to cover a list of 10 important sections you can add to your GitHub projects for improving your README files.&lt;/p&gt;

&lt;p&gt;So let's begin...&lt;/p&gt;

&lt;h3&gt;
  
  
  Section 1: Add title, description and socialify image(optional)
&lt;/h3&gt;

&lt;p&gt;The title and description for a Github project can provide the user with basic information about the project.&lt;br&gt;
Additionally, we can create a project info image using  &lt;a href="https://socialify.git.ci/" rel="noopener noreferrer"&gt;socialify&lt;/a&gt;  service to improve project presentation.&lt;br&gt;&lt;br&gt;
Example:-&lt;br&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%2Fcbx16b3bq3pxpmi04h03.png" 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%2Fcbx16b3bq3pxpmi04h03.png" alt="Screenshot 2021-08-28 at 11.46.29 AM.png" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://socialify.git.ci/" rel="noopener noreferrer"&gt;Socialify&lt;/a&gt;  helps you showcase your project to the world by generating a beautiful project image that can be used in Github README&lt;/p&gt;
&lt;h3&gt;
  
  
  Section 2: Add shields io badges
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://shields.io/" rel="noopener noreferrer"&gt;Shields.io&lt;/a&gt; is a service for creating legible badges in SVG format, which can easily be included in GitHub readmes or any other web page.&lt;br&gt;
This will help to provide project information in a condensed manner:-&lt;br&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%2F7rlistk447gdi9nx0z6u.png" 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%2F7rlistk447gdi9nx0z6u.png" alt="Screenshot 2021-08-28 at 11.48.42 AM.png" width="800" height="97"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Section 3: Project Demo
&lt;/h3&gt;

&lt;p&gt;Project demo URL helps the viewer to see live projects easily. We can also use this to show live previews to prospective interviewers quickly during interviews.&lt;br&gt;&lt;br&gt;
Example:- &lt;br&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%2Fohfjj5b87dbajud3zc7b.png" 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%2Fohfjj5b87dbajud3zc7b.png" alt="Screenshot 2021-08-28 at 11.50.58 AM.png" width="800" height="108"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Section 4: Project Screenshots
&lt;/h3&gt;

&lt;p&gt;Project screenshots help users to see the product even before opening the live demo link. For frontend/full-stack projects this is a must-have section.&lt;br&gt;&lt;br&gt;
Example:-&lt;br&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%2F6p2ys1f297mdo31i4jse.png" 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%2F6p2ys1f297mdo31i4jse.png" alt="Screenshot 2021-08-28 at 11.52.01 AM.png" width="800" height="447"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Section 5: Features
&lt;/h3&gt;

&lt;p&gt;Features section can be used to list down all the advantages end users will have while using our project as well as some technical plus points for dev interviews.&lt;br&gt;&lt;br&gt;
Example:-&lt;br&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%2Fafuzt07ofp9zslzv97ux.png" 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%2Fafuzt07ofp9zslzv97ux.png" alt="Screenshot 2021-08-28 at 11.53.45 AM.png" width="800" height="163"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Section 6: Installation Steps
&lt;/h3&gt;

&lt;p&gt;If someone wants to use our project for their own software development purposes, then installation instructions can help them in setting up the project correctly.&lt;br&gt;&lt;br&gt;
Example:-&lt;/p&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%2F5i1woz095cypit41q6pl.png" 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%2F5i1woz095cypit41q6pl.png" alt="Screenshot 2021-08-28 at 11.55.16 AM.png" width="800" height="530"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Section 7: Contribution Guidelines(Optional)
&lt;/h3&gt;

&lt;p&gt;If someone wants to contribute to our project in some way via pull requests or feature recommendations they will first go through contribution guidelines listed in the project.&lt;br&gt;&lt;br&gt;
Example:-&lt;/p&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%2Fep5jnd35ueqdh1xo24kx.png" 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%2Fep5jnd35ueqdh1xo24kx.png" alt="Screenshot 2021-08-28 at 11.56.36 AM.png" width="800" height="99"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Section 8: Technologies used(Optional)
&lt;/h3&gt;

&lt;p&gt;In this section, we can list down technologies or modules which we used while building the project to help others understand the creation components in a better manner.&lt;br&gt;&lt;br&gt;
Example:-&lt;/p&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%2Feypsgcgqwoku6u3wke8d.png" 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%2Feypsgcgqwoku6u3wke8d.png" alt="Screenshot 2021-08-28 at 11.58.14 AM.png" width="800" height="164"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Section 9: License Information(Optional)
&lt;/h3&gt;

&lt;p&gt;Here we can provide information about the licenses used in the project for others to know the usage guidelines.&lt;br&gt;&lt;br&gt;
Example:-&lt;/p&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%2Ffqah7utajuhb6f8pjg8c.png" 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%2Ffqah7utajuhb6f8pjg8c.png" alt="Screenshot 2021-08-28 at 11.59.13 AM.png" width="800" height="105"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Section 10: Enter Support Information(Optional)
&lt;/h3&gt;

&lt;p&gt;Here we can add links for asking people to star the project or support our efforts via donations.&lt;br&gt;
Example:-&lt;/p&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%2F8zyry8nv1y51jl1g5jnp.png" 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%2F8zyry8nv1y51jl1g5jnp.png" alt="Screenshot 2021-08-28 at 12.00.31 PM.png" width="800" height="215"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can a sample repo with all this sections added here:-  &lt;a href="https://github.com/saurabhnative/storiesfeedapp" rel="noopener noreferrer"&gt;Stories Feed Github&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Also I have recently created a tool which you all can use to add this sections easily in your Github README files using form based input:-&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/An6bmCHy7Q0"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Project Demo:- &lt;a href="https://readme-gen.vercel.app/" rel="noopener noreferrer"&gt;README Gen&lt;/a&gt;&lt;br&gt;
Github Source Code:- &lt;a href="https://github.com/saurabhnative/create-frontend-readme" rel="noopener noreferrer"&gt;README Gen Github&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Hope this article was helpful to you all. Follow me for more such articles in future.&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Learnings from daily dev job - Part 1</title>
      <dc:creator>Saurabh Mhatre</dc:creator>
      <pubDate>Thu, 05 Aug 2021 09:08:24 +0000</pubDate>
      <link>https://dev.to/saurabhnative/learnings-from-daily-dev-job-part-1-2cj0</link>
      <guid>https://dev.to/saurabhnative/learnings-from-daily-dev-job-part-1-2cj0</guid>
      <description>&lt;p&gt;Hello everyone, so today I'm starting a new series in which I'm going to share a few programming tips which I learn from my day to day job on my own and with my colleagues. So let's begin with the first tip...&lt;/p&gt;

&lt;h3&gt;
  
  
  Which side to choose when a bug can be fixed from both backend and frontend?
&lt;/h3&gt;

&lt;p&gt;When a bug can be fixed from let's say backend as well as the front end side then which side should we choose from?&lt;/p&gt;

&lt;p&gt;The first thing which we can consider in this case is whether our application is cross-platform and whether a back end fix will fix the bug both on the website as well as a mobile application. In that case, it makes sense to fix the bug from the backend.&lt;/p&gt;

&lt;p&gt;The other scenario is when the bug is specific to a single platform like let's say web or mobile and backend fix might not fix it for both platforms at once. In that case, it makes sense for the frontend developers to take initiative to fix the bug from his/her own side instead of waiting for the backend developer to take the initiative and fix it from their end. &lt;br&gt;
If it is not fixable from our own end at all or if it is easier to fix it from the other end then picking up the other side for a bug fix makes sense.&lt;/p&gt;

&lt;h3&gt;
  
  
  Smaller PRs makes life easier for reviewers as well as future project maintainers
&lt;/h3&gt;

&lt;p&gt;Let's just say you have a big feature in which you need to make a lot of changes in your code. In that case my advice is to break that feature into smaller modules and create pull request in smaller chunks, because the thing that happens is, if your commit is huge with lots of files into your committed code for a particular pull request, then the person who is going to review your pull request might feel like it's a headache for him/her to review all those file changes at once. &lt;br&gt;
That is why it is advisable to break down your changes into smaller modules and create smaller PRs. Then send them to your reviewer, so that he or she is able to review them properly and tell you where the actual issues or corrections might be required. &lt;/p&gt;

&lt;p&gt;There is a popular saying he goes by if your PR is 500 lines of code there won't be any single review comment and if you have committed just 10 lines of code, you might have 5 to 10 corrections in that.&lt;/p&gt;

&lt;p&gt;That's actually true because larger files or code changes, tend to get ignored and smaller ones are easy to review. So my tip for the day is to make sure to divide your entire module of code changes into smaller chunks and get smaller PRs reviewed daily so that the code reviewers don't have to review through a large quantity of code at once missing useful fixes and bugs. It is generally good practice for us to create smaller PRs also because future maintainers of the project are able to see changelog or history easily and make sense of what happened in the project when a particular pull request was merged into the project. I have personally made the mistake of committing huge chunks of code in a single PR a lot of times in the past. But currently, I try my best to make sure there are not a lot of code changes in a single PR for review.&lt;/p&gt;

&lt;p&gt;That's it from for this article. If you found this article useful hit the like button and follow me to learn more about such small but useful tips in future. Also if you have any different opinions on the topic than my own then feel free to share them in the comments. I am not a subject expert in these things and would love to learn from your opinions, perspectives or points as well.  &lt;/p&gt;

&lt;p&gt;Have a nice day ahead 👋🏽&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>productivity</category>
      <category>learnings</category>
    </item>
  </channel>
</rss>
