<?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: lassiecoder</title>
    <description>The latest articles on DEV Community by lassiecoder (@lassiecoder).</description>
    <link>https://dev.to/lassiecoder</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%2F303130%2F2d939dc8-9605-4714-a629-5c5a42427a5b.jpg</url>
      <title>DEV Community: lassiecoder</title>
      <link>https://dev.to/lassiecoder</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lassiecoder"/>
    <language>en</language>
    <item>
      <title>How Claude Code’s creator ships 50–100 PR’s per week</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Mon, 16 Feb 2026 15:20:46 +0000</pubDate>
      <link>https://dev.to/lassiecoder/how-claude-codes-creator-ships-50-100-prs-per-week-4oeo</link>
      <guid>https://dev.to/lassiecoder/how-claude-codes-creator-ships-50-100-prs-per-week-4oeo</guid>
      <description>&lt;p&gt;When Boris Cherny, the creator of Claude Code, shared his daily workflow on X, the development community took notice. Not because of some revolutionary technique or complex setup, but for the opposite reason: his approach is remarkably straightforward. And that’s precisely why it works.&lt;/p&gt;

&lt;p&gt;If you’re looking to supercharge your development workflow with AI, here’s how one of the people building these tools actually uses them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The core philosophy: Parallelism over speed
&lt;/h2&gt;

&lt;p&gt;Boris runs approximately 10 Claude sessions in parallel at any given time. Instead of babysitting each one, he relies on system notifications to alert him when human input is needed. This approach transforms AI from a back-and-forth conversation tool into something more akin to having a team of junior developers working simultaneously on different tasks.&lt;/p&gt;

&lt;p&gt;The key insight here is understanding that AI assistance doesn’t have to be sequential. You’re not limited to one task at a time. By spinning up multiple sessions, you’re essentially multiplying your capacity to tackle problems.&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%2Fkuupxgpg6dey5ipad0sr.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%2Fkuupxgpg6dey5ipad0sr.png" alt="img1" width="800" height="524"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Opus 4.5 with thinking: Slower tokens, faster results
&lt;/h2&gt;

&lt;p&gt;While many developers gravitate toward faster models for quick iterations, Boris exclusively uses Claude Opus 4.5 with thinking enabled. Yes, it’s slower per token. But here’s the counterintuitive truth: it’s faster overall.&lt;/p&gt;

&lt;p&gt;Why? Because it requires far less human steering. When you use a more capable model that can reason through problems, you spend less time course-correcting, clarifying, and re-explaining. The AI gets it right more often on the first try, which means you’re not stuck in revision loops.&lt;/p&gt;

&lt;p&gt;Think of it like hiring: you might pay more per hour for a senior developer, but they’ll complete the project in a fraction of the time a junior would need.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 2,500-token secret weapon
&lt;/h2&gt;

&lt;p&gt;The Claude Code team maintains a single shared Claude.md file, checked directly into their Git repository. Whenever Claude behaves incorrectly or misunderstands something, they add a new instruction to this file.&lt;/p&gt;

&lt;p&gt;The surprising part? After continuous refinement, this file sits at just around 2,500 tokens. That’s remarkably concise for a document that encodes the team’s entire workflow, conventions, and common pitfalls.&lt;/p&gt;

&lt;p&gt;This approach is brilliant in its simplicity. Instead of re-explaining your coding standards, architectural decisions, and preferences in every new conversation, you build up a knowledge base that travels with your code. It’s version-controlled, it’s collaborative, and it evolves with your project.&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%2Fe1adoxur5glatbgqodlm.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%2Fe1adoxur5glatbgqodlm.png" alt="Img2" width="800" height="622"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Plan first, execute once
&lt;/h2&gt;

&lt;p&gt;Boris starts most sessions in plan mode. He iterates on the plan until it feels solid and well-thought-out. Only then does he switch to autonomous mode.&lt;/p&gt;

&lt;p&gt;The result? The task usually gets done in one shot.&lt;/p&gt;

&lt;p&gt;This two-phase approach mirrors how experienced developers naturally work. You don’t just start coding immediately. You think through the problem, consider edge cases, map out the architecture, and only then do you write code. By forcing this separation with AI, you ensure the execution phase has clear direction.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sub-agents for specialized tasks
&lt;/h2&gt;

&lt;p&gt;Rather than using Claude as a monolithic tool, Boris employs specialized sub-agents for specific purposes:&lt;/p&gt;

&lt;p&gt;Code Simplifier handles post-generation cleanup, refactoring verbose code into something more maintainable.&lt;/p&gt;

&lt;p&gt;Verify App runs end-to-end testing to ensure the generated code actually works in practice.&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%2F6n0wxde6793x7al6j3ec.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%2F6n0wxde6793x7al6j3ec.png" alt="Img3" width="462" height="318"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This division of labor is another stroke of genius. Different tasks require different contexts and goals. By creating specialized agents, you’re optimizing each one for its specific role rather than trying to make a single prompt do everything.&lt;/p&gt;

&lt;h2&gt;
  
  
  Let Claude verify its own work
&lt;/h2&gt;

&lt;p&gt;Perhaps the most interesting aspect of Boris’s workflow is his strong belief in letting Claude verify its own work. He allows it to use a Chrome extension to open a browser, test the UI, and iterate until the code actually functions correctly.&lt;/p&gt;

&lt;p&gt;This creates a feedback loop that’s incredibly powerful. Instead of you manually testing and reporting back what’s broken, the AI can see the results of its work and self-correct. It’s the difference between giving someone directions and letting them use GPS.&lt;/p&gt;

&lt;h2&gt;
  
  
  The output: 50–100 pull requests per week
&lt;/h2&gt;

&lt;p&gt;With this setup, Boris completes approximately 50 to 100 pull requests per week. Let that sink in. That’s anywhere from 10 to 20 PRs per day.&lt;/p&gt;

&lt;p&gt;For context, many developers consider 5–10 meaningful PRs per week to be highly productive. Boris is operating at roughly 10x that rate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why vanilla workflow works?
&lt;/h2&gt;

&lt;p&gt;In the comments on his original post, many people pointed out that his workflow is pretty vanilla and straightforward. There’s no exotic prompting technique, no complex orchestration system, no proprietary tooling.&lt;/p&gt;

&lt;p&gt;And that’s exactly why it works so well.&lt;/p&gt;

&lt;p&gt;The most sustainable, scalable workflows aren’t built on clever hacks or cutting-edge techniques that might break with the next model update. They’re built on solid principles: parallelism, proper planning, specialization, and verification.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key takeaways for your workflow
&lt;/h2&gt;

&lt;p&gt;If you want to adopt Boris’s approach, here are the core principles to implement:&lt;/p&gt;

&lt;p&gt;Run multiple sessions in parallel. Don’t wait for one task to complete before starting another. Let the AI work on several things simultaneously while you focus on high-level orchestration.&lt;/p&gt;

&lt;p&gt;Invest in better models upfront. The most capable model with extended reasoning might seem slower, but it saves time by getting things right the first time.&lt;/p&gt;

&lt;p&gt;Build and maintain a project-specific instruction file. Create your own Claude.md that captures your conventions, common issues, and preferences. Keep it concise and version-controlled.&lt;/p&gt;

&lt;p&gt;Separate planning from execution. Get the plan right before switching to autonomous mode. A solid plan executed once beats a vague idea iterated ten times.&lt;/p&gt;

&lt;p&gt;Create specialized agents. Instead of one general-purpose prompt, build focused sub-agents for cleanup, testing, and other recurring tasks.&lt;/p&gt;

&lt;p&gt;Enable self-verification. Give your AI the tools to check its own work and iterate without constant human intervention.&lt;/p&gt;

&lt;h2&gt;
  
  
  The future is already here
&lt;/h2&gt;

&lt;p&gt;What’s remarkable about Boris’s workflow isn’t that it’s revolutionary. It’s that it’s achievable today, with tools that are publicly available. You don’t need to wait for the next model release or some breakthrough in AI capabilities.&lt;/p&gt;

&lt;p&gt;The gap between where most developers are and where they could be isn’t technological. It’s methodological. Boris has simply figured out how to structure his work to leverage AI’s strengths while minimizing its weaknesses.&lt;/p&gt;

&lt;p&gt;The best part? His approach isn’t proprietary or complex. It’s vanilla. It’s straightforward. And that means you can start using it today.&lt;/p&gt;




&lt;p&gt;&lt;em&gt;What aspects of this workflow are you most excited to try?&lt;br&gt;
Have you experimented with running multiple AI sessions in parallel?&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Share your thoughts and experiences in the comments.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>automation</category>
      <category>productivity</category>
      <category>tooling</category>
    </item>
    <item>
      <title>I Never Planned on Becoming a Google Developer Expert</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Sun, 27 Apr 2025 19:43:17 +0000</pubDate>
      <link>https://dev.to/lassiecoder/i-never-planned-on-becoming-a-google-developer-expert-ec5</link>
      <guid>https://dev.to/lassiecoder/i-never-planned-on-becoming-a-google-developer-expert-ec5</guid>
      <description>&lt;p&gt;But the Path Is Starting to Make Sense&lt;/p&gt;

&lt;p&gt;Becoming a Google Developer Expert (GDE) was never on my radar, at least not in the beginning. I didn’t start contributing to the community with a title or badge in mind. I was just building things, breaking things, and sharing whatever I learned along the way. That’s still the core of what I do, but now I’ve realized something important: the things I’m already doing, and the things I want to do more intentionally, are exactly the steps that lead toward becoming a GDE.&lt;/p&gt;

&lt;p&gt;I’m not a GDE yet. But I’ve taken the time to understand what the program is really about, and what kind of contributions it values. So if you’re like me, someone who’s active in the community and curious about leveling up, here’s what I’ve learned so far about how to get on the path.&lt;/p&gt;

&lt;h2&gt;
  
  
  Share What You Know – Consistently and Publicly
&lt;/h2&gt;

&lt;p&gt;One of the biggest realizations I had was this: you don’t need to know everything, but you do need to share what you do know.&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%2Fynuvothiirq4c51ylaoy.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%2Fynuvothiirq4c51ylaoy.png" alt=" " width="612" height="390"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;That can take a lot of forms:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing blog posts or tutorials&lt;/li&gt;
&lt;li&gt;Making YouTube videos or live streams&lt;/li&gt;
&lt;li&gt;Posting technical threads on X (Twitter) or LinkedIn&lt;/li&gt;
&lt;li&gt;Creating code samples or open-source libraries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The key isn’t perfection, it’s consistency and authenticity. People want to hear how you solved something, even if you’re not the “official” expert on it. I’ve started putting more time into documenting what I learn and pushing it out publicly. Even short posts or small demos can go a long way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Contribute to Open Source (Even in Small Ways)
&lt;/h2&gt;

&lt;p&gt;Contributing to open source isn’t just about building massive libraries. It could be fixing a bug, improving documentation, creating example apps, or reviewing pull requests.&lt;/p&gt;

&lt;p&gt;It shows that you’re engaged with the community and care about making tools better for everyone. I’ve made it a point to pick projects I actually use and contribute wherever I can, even if it’s just improving the README or opening helpful issues.&lt;/p&gt;

&lt;h2&gt;
  
  
  Speak at Events — Online or Offline
&lt;/h2&gt;

&lt;p&gt;Public speaking used to scare the hell out of me. But it’s one of the most effective ways to share knowledge, especially when you can break down complex topics in a way that clicks for others.&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%2Fyywtjzr8jb350xyixi8d.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%2Fyywtjzr8jb350xyixi8d.png" alt=" " width="740" height="493"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You don’t need to start with a massive conference. Local meetups, developer groups, and virtual events are all great starting points. I’ve been slowly getting more comfortable with this, giving talks, joining panels, or even doing short webinars or Q&amp;amp;As. Every session is a chance to grow and give back.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be Active in Developer Communities
&lt;/h2&gt;

&lt;p&gt;This can be as simple as answering questions on Stack Overflow, Reddit, or Discord servers. Or offering help in Slack groups, GitHub Discussions, or even in the YouTube comments under your favorite tech channels.&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%2Fqcr5g0z436e9cka21i8o.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%2Fqcr5g0z436e9cka21i8o.png" alt=" " width="800" height="464"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When someone gets stuck, and you help unblock them, that’s real impact. It doesn’t have to be flashy to be meaningful.&lt;/p&gt;

&lt;h2&gt;
  
  
  Focus on a Niche or Technology You Genuinely Love
&lt;/h2&gt;

&lt;p&gt;GDE’s are recognized for their expertise in a specific domain. Whether that’s Firebase, Android, Web, TensorFlow, Google Cloud, or something else, find what you’re excited about and go deep.&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%2Fe2490dnfu6z5hzgxd34a.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%2Fe2490dnfu6z5hzgxd34a.png" alt=" " width="800" height="398"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For me, that’s [insert your tech focus here — e.g., Firebase or Web Performance]. I try to stay up to date, build real-world projects with it, and share what I learn. Not because I have to, because I genuinely enjoy it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Be Visible, But Stay Genuine
&lt;/h2&gt;

&lt;p&gt;This is where intention matters. Visibility helps, writing, speaking, building in public, but it only works when it’s rooted in real curiosity and a desire to help others.&lt;/p&gt;

&lt;p&gt;You can’t fake this stuff for long. And frankly, you don’t need to. If you’re solving real problems and being open about your journey, the right people will notice. That’s how most GDE’s I’ve talked to got discovered, someone noticed their consistent work and nominated them.&lt;/p&gt;

&lt;h2&gt;
  
  
  You Need to Be Nominated — So Build Relationships
&lt;/h2&gt;

&lt;p&gt;You can’t just apply to be a GDE, someone in the program (or at Google) has to nominate you. That’s why it helps to engage with existing GDE’s, Google Developer Groups (GDGs), or Googlers themselves.&lt;/p&gt;

&lt;p&gt;But don’t network just to “get in.” Build genuine connections. Learn from others, ask questions, collaborate, show up. I’ve found that just being part of the ecosystem naturally opens these doors over time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where I’m At Now
&lt;/h2&gt;

&lt;p&gt;I’m still on this journey. I’m putting more effort into sharing what I know, being involved in the community, and leveling up my public contributions. Not for the title, but because I know the process itself will make me a better developer, speaker, teacher, and teammate.&lt;/p&gt;

&lt;p&gt;If the GDE nomination comes one day, great. If not, I’ll still be doing the work that matters to me, and that’s what really counts.&lt;/p&gt;

&lt;p&gt;If you’re thinking about aiming for GDE too, my advice is simple: start contributing in the way that feels most natural to you. Build, share, teach, connect. Keep showing up. That’s the real path, and it starts right where you are.&lt;/p&gt;

</description>
      <category>google</category>
      <category>googledeveloperexpert</category>
      <category>gde</category>
      <category>developer</category>
    </item>
    <item>
      <title>Project IDX + Gemini: Transforming How You Write Code</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Sun, 06 Apr 2025 11:52:36 +0000</pubDate>
      <link>https://dev.to/lassiecoder/project-idx-gemini-transforming-how-you-write-code-4bk</link>
      <guid>https://dev.to/lassiecoder/project-idx-gemini-transforming-how-you-write-code-4bk</guid>
      <description>&lt;p&gt;&lt;strong&gt;Project IDX&lt;/strong&gt; boosts your productivity with AI-assisted code suggestions from &lt;strong&gt;Gemini&lt;/strong&gt; in IDX. Before you use any of the inline assistance from Gemini in IDX, make sure you add Gemini to your workspace.&lt;/p&gt;

&lt;p&gt;Use suggested code with caution. Gemini in IDX is in preview and might give inaccurate responses. Validate all AI-assisted code and adapt it to your needs before using it in a real project.&lt;br&gt;
Additionally, if you don't want your prompts used as training data to improve Gemini in IDX, don't use the chat assistant and turn off code completion in your workspace Settings.&lt;/p&gt;
&lt;h2&gt;
  
  
  Get code suggestions from Gemini in IDX
&lt;/h2&gt;

&lt;p&gt;Gemini in IDX generates complete blocks of possible code inline. To use the Gemini inline code assistance, follow these steps:&lt;/p&gt;

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

&lt;p&gt;Open your IDX workspace. If you haven't already, add Gemini to your workspace.&lt;/p&gt;

&lt;p&gt;Go to the file or line of code you want help with and press &lt;code&gt;Cmd + I&lt;/code&gt; (on MacOS) or &lt;code&gt;Ctrl + I&lt;/code&gt; (on Windows/ChromeOS/Linux).&lt;/p&gt;

&lt;p&gt;Enter a description of what you want and Gemini in IDX generates a suggestion. You can also use actions as shortcuts to guide the suggestions. For example, enter /fixError for help fixing errors in inline code.&lt;/p&gt;

&lt;p&gt;To keep the generated code, click Accept. To paste the suggestion somewhere else or move it to a new file, select the corresponding option from the drop-down menu on the Discard button. To generate a new suggestion, click the Regenerate icon. To remove the suggestion completely, click Discard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; &lt;em&gt;You can also use Interactive Chat with Gemini to instruct Gemini in natural language to perform actions directly in your workspace on your behalf, like updating code and running commands.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  View Gemini commands inline
&lt;/h2&gt;

&lt;p&gt;To view Gemini in IDX commands inline, for specific code, select and right-click the code you want help with.&lt;/p&gt;

&lt;p&gt;Select Gemini from the menu and then select the action you want to perform.&lt;/p&gt;

&lt;h2&gt;
  
  
  Use Gemini suggested code completion
&lt;/h2&gt;

&lt;p&gt;To help you write code, IDX provides AI-enabled suggested code completion that predicts and autofills code in any open file as soon as you begin to type. Suggested code completion is turned on by default.&lt;/p&gt;

&lt;p&gt;To accept a code suggestion, press Tab. To ignore the suggestion, just keep typing.&lt;/p&gt;

&lt;p&gt;To toggle code completion on or off, adjust your code completion settings.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open the Settings window by clicking the gear icon or pressing Ctrl + , (on Windows/Linux/ChromeOS) or Cmd + , (on MacOS).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Search for the IDX &amp;gt; AI &amp;gt; Enable Inline Completion setting in the Workspace settings.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;To turn off code completion, deselect the Enable inline code completion as you type option. You have to update code completion settings for each of your workspaces.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you use a &lt;code&gt;settings.json&lt;/code&gt; file, set &lt;code&gt;"IDX.aI.enableInlineCompletion": false&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;You can adjust this option under both the Workspace and User settings, but adjusting it in the Workspace settings ensures that the setting persists if the VM your workspace is connected to restarts. In IDX, User settings don't apply across your workspaces.&lt;/p&gt;

&lt;p&gt;Once you've turned suggested code completion on, Gemini provides AI-assisted code suggestions. To accept a code suggestion, press Tab. To ignore the suggestion, just keep typing.&lt;/p&gt;

&lt;h2&gt;
  
  
  Exclude files from Gemini .aiexclude files
&lt;/h2&gt;

&lt;p&gt;You can control which files from your codebase should be kept hidden from Gemini in IDX by including &lt;code&gt;.aiexclude&lt;/code&gt; files in your project. This lets you granularly control the project context you share with Gemini.&lt;/p&gt;

&lt;p&gt;Much like a &lt;code&gt;.gitignore&lt;/code&gt; file, an &lt;code&gt;.aiexclude&lt;/code&gt; file tracks files that shouldn't be shared with Gemini in IDX, including the chat experience as well as AI features that operate in the editor. An &lt;code&gt;.aiexclude&lt;/code&gt; file operates on files at or below the directory that contains it.&lt;/p&gt;

&lt;p&gt;Note: Files ignored by &lt;code&gt;.gitignore&lt;/code&gt; files in your repository are automatically excluded, even if they're not listed in &lt;code&gt;.aiexclude&lt;/code&gt; file.&lt;/p&gt;

&lt;p&gt;Files covered by &lt;code&gt;.aiexclude&lt;/code&gt; won't be indexed by Gemini when Codebase Indexing is enabled. Additionally, &lt;code&gt;.aiexclude&lt;/code&gt; will affect inline assistance for covered files in the following ways:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chat assistance: Gemini won't be able to answer questions or offer suggestions about files covered by &lt;code&gt;.aiexclude&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Code completion: Suggested code completions will not be available when editing covered files.&lt;/li&gt;
&lt;li&gt;Inline assistance: You'll be able to generate new code, but not modify existing code when editing covered files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Other development environments such as Android Studio may also honor &lt;code&gt;.aiexclude&lt;/code&gt; files.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to write .aiexclude files
&lt;/h2&gt;

&lt;p&gt;An &lt;code&gt;.aiexclude&lt;/code&gt; file follows the same syntax as a &lt;code&gt;.gitignore&lt;/code&gt; file, with the following differences:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An empty &lt;code&gt;.aiexclude&lt;/code&gt; file blocks all files in its directory and all sub-directories. This is the same as a file that contains &lt;code&gt;**/*&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;.aiexclude&lt;/code&gt; files don't support negation (prefixing patterns with &lt;code&gt;!&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Examples
&lt;/h2&gt;

&lt;p&gt;Here are example &lt;code&gt;.aiexclude&lt;/code&gt; file configurations:&lt;/p&gt;

&lt;p&gt;Block all files named &lt;code&gt;apikeys.txt&lt;/code&gt; at or below the directory that contains the &lt;code&gt;.aiexclude&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;apikeys.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Block all files with the &lt;code&gt;.key&lt;/code&gt; file extension at or below the directory that contains the &lt;code&gt;.aiexclude&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;*.key
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Block only the &lt;code&gt;apikeys.txt&lt;/code&gt; file at the in the same directory as the &lt;code&gt;.aiexclude&lt;/code&gt;, but not any subdirectories:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/apikeys.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Block all files in the directory &lt;code&gt;my/sensitive/dir&lt;/code&gt; and all subdirectories. The path should be relative to the directory that contains the &lt;code&gt;.aiexclude&lt;/code&gt; file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;my/sensitive/dir/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Wrapping Up
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gemini&lt;/strong&gt; in &lt;strong&gt;Project IDX&lt;/strong&gt; represents a significant advancement in AI-assisted development. By integrating its inline code suggestions, command access, and smart completion features into your workflow, you can dramatically reduce development time while maintaining control over which parts of your codebase the AI can access.&lt;/p&gt;

&lt;p&gt;As you explore these capabilities, remember that Gemini is still in preview — always review its suggestions carefully and adapt them to your specific project needs. The power of combining your expertise with &lt;strong&gt;AI assistance&lt;/strong&gt; creates a development experience that's both efficient and flexible.&lt;/p&gt;

&lt;p&gt;Try implementing these features in your next &lt;strong&gt;Project IDX&lt;/strong&gt; session and see how they transform your coding process!&lt;/p&gt;

&lt;p&gt;Until next time,&lt;br&gt;
&lt;strong&gt;lassiecoder&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;PS: If you found this article helpful, don't forget to share it with your dev friends and hit that follow button!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If you found my work helpful, please consider supporting it through &lt;a href="https://github.com/sponsors/lassiecoder" rel="noopener noreferrer"&gt;sponsorship&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>projectidx</category>
      <category>geminiai</category>
      <category>devtools</category>
      <category>aitools</category>
    </item>
    <item>
      <title>Gemini AI in Chrome DevTools</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Wed, 02 Apr 2025 07:38:24 +0000</pubDate>
      <link>https://dev.to/lassiecoder/gemini-ai-in-chrome-devtools-54go</link>
      <guid>https://dev.to/lassiecoder/gemini-ai-in-chrome-devtools-54go</guid>
      <description>&lt;p&gt;Hey devCommunity! 👋&lt;/p&gt;

&lt;p&gt;I've got something incredible to share with you today that's completely changing the game for web developers. Google has integrated Gemini AI right into Chrome DevTools, and let me tell you – it's absolutely mind-blowing!&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Is a Big Deal?
&lt;/h2&gt;

&lt;p&gt;Remember those days when we'd spend hours debugging code or searching Stack Overflow for answers? Those days might be behind us. Imagine having an AI assistant right inside your development environment, helping you debug, optimize, and understand code in real-time. That's exactly what Google has delivered!&lt;/p&gt;

&lt;h3&gt;
  
  
  Here's a glimpse of some game-changing features!
&lt;/h3&gt;

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

&lt;h2&gt;
  
  
  Exclusive: Hidden Gems I've Discovered
&lt;/h2&gt;

&lt;p&gt;Here are some lesser-known features I've found while exploring:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code Refactoring Suggestions&lt;/strong&gt;: Gemini can analyze your entire JavaScript file and suggest modern patterns and best practices. It's like having an automated code review!&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Accessibility Insights&lt;/strong&gt;: It can analyze your DOM structure and recommend accessibility improvements – something I haven't seen mentioned much but is incredibly useful.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security Vulnerability Detection&lt;/strong&gt;: While testing API calls, Gemini flagged potential security issues in my authentication logic. Talk about having your back!&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Follow the official setup guide &lt;a href="https://developer.chrome.com/docs/devtools/console/understand-messages#requirements" rel="noopener noreferrer"&gt;here&lt;/a&gt; to get started!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pro Tips From My Experience
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Use the &lt;strong&gt;“Ask AI”&lt;/strong&gt; feature in the Sources panel when dealing with complex debugging scenarios. It's surprisingly good at understanding the context of your entire application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;When optimizing performance, run your code through Gemini's analysis before hitting the Performance tab. It often catches optimization opportunities that aren't visible in performance profiles.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Take advantage of the AI-powered autocomplete – it's not just for basic code completion; it understands your project's context and suggests relevant patterns.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;I'm hearing rumors about upcoming features including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;AI-powered test generation&lt;/li&gt;
&lt;li&gt;Automated documentation writing&lt;/li&gt;
&lt;li&gt;Real-time code quality scoring&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  My Take
&lt;/h3&gt;

&lt;p&gt;As someone who's been developing for years, I can say this is a genuine game-changer. It's not just another IDE feature – it's like having a senior developer, performance expert, and documentation specialist all rolled into one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Let's Connect!&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Have you tried Gemini AI in Chrome DevTools?&lt;/p&gt;

&lt;p&gt;I'd love to hear your experiences! Drop me a line in the comments or reach out on 𝕏 &lt;a href="https://x.com/lassiecoder" rel="noopener noreferrer"&gt;@lassiecoder&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Keep coding and exploring! 🚀&lt;/p&gt;




&lt;p&gt;PS: If you find it valuable, consider sharing it with your fellow developers.&lt;/p&gt;

&lt;p&gt;Your support means a lot, and if you'd like to contribute further, you can also &lt;a href="https://github.com/sponsors/lassiecoder" rel="noopener noreferrer"&gt;sponsor&lt;/a&gt; my work!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Simplifying Software Architecture: Understanding MVC, MVP, and MVVM</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Sun, 02 Feb 2025 21:08:43 +0000</pubDate>
      <link>https://dev.to/lassiecoder/simplifying-software-architecture-a-guide-to-mvc-mvp-and-mvvm-87n</link>
      <guid>https://dev.to/lassiecoder/simplifying-software-architecture-a-guide-to-mvc-mvp-and-mvvm-87n</guid>
      <description>&lt;p&gt;Understanding software architecture patterns is very important as applications grow more complex.&lt;/p&gt;

&lt;p&gt;All patterns share two core components: the Model (handling data and business logic) and the View (managing user interface).&lt;/p&gt;

&lt;p&gt;MVC uses a Controller as a traffic coordinator, allowing direct Model-View communication. MVP employs a Presenter as a strict mediator, ensuring all communication flows through it. MVVM introduces data binding through a ViewModel, automatically syncing data changes with the View.&lt;/p&gt;

&lt;p&gt;Choose MVC for simpler web applications, MVP for highly testable systems, and MVVM for data-heavy applications with complex UIs. Companies like Stack Overflow, Google, and Apple use these patterns based on their specific needs.&lt;/p&gt;

&lt;p&gt;In order to understand it in simplistic terms, I've covered it briefly in my newsletter scoop.&lt;/p&gt;

&lt;p&gt;Do subscribe to my newsletter!&lt;br&gt;
🔗 &lt;a href="https://techscoop.hashnode.dev/simplifying-software-architecture-a-guide-to-mvc-mvp-and-mvvm" rel="noopener noreferrer"&gt;https://techscoop.hashnode.dev/simplifying-software-architecture-a-guide-to-mvc-mvp-and-mvvm&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>architecture</category>
      <category>mvc</category>
      <category>mvp</category>
    </item>
    <item>
      <title>NPM package – community-health-files</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Thu, 26 Sep 2024 22:09:01 +0000</pubDate>
      <link>https://dev.to/lassiecoder/npm-package-community-health-files-18l1</link>
      <guid>https://dev.to/lassiecoder/npm-package-community-health-files-18l1</guid>
      <description>&lt;p&gt;I've just built a NPM package: &lt;a href="https://www.npmjs.com/package/community-health-files" rel="noopener noreferrer"&gt;community-health-files&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;This package automates the creation and management of key files like CODE_OF_CONDUCT.md, BUG_REPORT.yml, and SECURITY.md for open-source projects. It simplifies the process of maintaining project guidelines, security policies, and codes of conduct, providing a more efficient and organized workflow.&lt;/p&gt;

&lt;p&gt;This package helps open-source projects stay organized and compliant, saving you time and effort by handling the setup for you.&lt;/p&gt;

&lt;p&gt;I'm always looking for feedback and contributions from the community—whether it's through improving the code, enhancing the documentation, or sharing your ideas.&lt;/p&gt;

&lt;p&gt;🌟 Check it out, and if you find it helpful, consider adding a star on GitHub!&lt;/p&gt;

&lt;p&gt;🔗 Link to the package on npm: &lt;a href="https://www.npmjs.com/package/community-health-files" rel="noopener noreferrer"&gt;https://www.npmjs.com/package/community-health-files&lt;/a&gt;&lt;br&gt;
🔗 Link to the repo on GitHub: &lt;a href="https://github.com/lassiecoder/community-health-files" rel="noopener noreferrer"&gt;https://github.com/lassiecoder/community-health-files&lt;/a&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>npm</category>
      <category>contributorswanted</category>
    </item>
    <item>
      <title>GitHub profile README</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Thu, 26 Sep 2024 22:04:06 +0000</pubDate>
      <link>https://dev.to/lassiecoder/github-profile-readme-16ie</link>
      <guid>https://dev.to/lassiecoder/github-profile-readme-16ie</guid>
      <description>&lt;p&gt;🚀 Exciting news!&lt;/p&gt;

&lt;p&gt;I've just refreshed my GitHub profile README with my latest projects and skills! 🔥&lt;/p&gt;

&lt;p&gt;Take a peek to see what I've been up to and witness my expertise in action:&lt;br&gt;
&lt;a href="https://github.com/lassiecoder/lassiecoder" rel="noopener noreferrer"&gt;GitHub Profile&lt;/a&gt;&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%2Fw9a3umchxuczkbetzsz1.gif" 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%2Fw9a3umchxuczkbetzsz1.gif" alt="My GitHub README v2 preview" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What's its significance?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Your GitHub README functions as a dynamic portfolio, spotlighting your talents and projects for potential collaborators and connections.&lt;/p&gt;

&lt;p&gt;Seize this chance to leave a lasting impression! 🙂 &lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>GitHub profile README</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Thu, 28 Mar 2024 13:53:42 +0000</pubDate>
      <link>https://dev.to/lassiecoder/github-profile-readme-2377</link>
      <guid>https://dev.to/lassiecoder/github-profile-readme-2377</guid>
      <description>&lt;p&gt;🚀 Exciting news!&lt;/p&gt;

&lt;p&gt;I've just refreshed my GitHub profile README with my latest projects and skills! 🔥&lt;/p&gt;

&lt;p&gt;Take a peek to see what I've been up to and witness my expertise in action:&lt;br&gt;
&lt;a href="https://github.com/lassiecoder/lassiecoder" rel="noopener noreferrer"&gt;GitHub Profile&lt;/a&gt;&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%2Fw9a3umchxuczkbetzsz1.gif" 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%2Fw9a3umchxuczkbetzsz1.gif" alt="My Gitub README v2 preview" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;What's its significance?&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
Your GitHub README functions as a dynamic portfolio, spotlighting your talents and projects for potential collaborators and connections.&lt;/p&gt;

&lt;p&gt;Seize this chance to leave a lasting impression! 🙂 &lt;/p&gt;

</description>
      <category>github</category>
      <category>opensource</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>npx lassiecoder – in your terminal?</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Tue, 12 Mar 2024 17:25:59 +0000</pubDate>
      <link>https://dev.to/lassiecoder/npx-lassiecoder-in-your-terminal-282e</link>
      <guid>https://dev.to/lassiecoder/npx-lassiecoder-in-your-terminal-282e</guid>
      <description>&lt;p&gt;&lt;strong&gt;Preview&lt;/strong&gt;&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%2F5pxom6nxmgpsql0czbwe.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%2F5pxom6nxmgpsql0czbwe.png" alt="Image description" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create your personalized NPX introduction card
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Step 1: Select a Unique Package Name&lt;/strong&gt;&lt;br&gt;
Choose a distinctive name for your package, as it will be the identifier for invoking your introduction command using &lt;code&gt;npx&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2: Establish a New Directory&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Create a fresh directory for your package, naming it after the chosen package name.&lt;br&gt;
&lt;code&gt;mkdir npx-username&lt;br&gt;
cd npx-username&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3: Initialize Your Package&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Initialize your project as a Node.js package using the command:&lt;br&gt;
&lt;code&gt;npm init -y&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4: Develop an Executable Script&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Within your project directory, create a JavaScript file named index.js and store it in a folder named bin. This file will function as the executable script for your npx command.&lt;/p&gt;

&lt;p&gt;Ensure to specify the bin field in &lt;code&gt;package.json&lt;/code&gt;:&lt;br&gt;
&lt;code&gt;"bin": {&lt;br&gt;
  "username": "./bin/index.js"&lt;br&gt;
}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ensuring Script Execution Capability:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To enable script execution, follow these steps:&lt;/p&gt;

&lt;p&gt;For Mac/Linux:&lt;br&gt;
&lt;code&gt;chmod +x bin/index.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For Windows:&lt;br&gt;
&lt;code&gt;git update-index --chmod=+x bin/index.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5: Add your script to execute and display in terminal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Execute your script with the following command:&lt;br&gt;
&lt;code&gt;node bin/index.js&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6: Publish the package&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once your script runs successfully, publish the package:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Log in to npm:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;npm adduser&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. After logging in, return to the terminal and run:&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;npm publish&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7: Execute Your NPX Command&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Once the package is published, run your npx command:&lt;br&gt;
&lt;code&gt;npx username&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Follow these steps to create your personalized NPX introduction command and share it with others!&lt;/p&gt;

&lt;p&gt;Link to the codebase – &lt;a href="https://github.com/lassiecoder/npx-lassiecoder" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy coding! 🚀&lt;/p&gt;

</description>
      <category>npxcard</category>
      <category>javascript</category>
      <category>terminal</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Embarking on a 100-Day Journey with JavaScript! 🚀</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Sat, 24 Feb 2024 13:13:23 +0000</pubDate>
      <link>https://dev.to/lassiecoder/embarking-on-a-100-day-journey-with-javascript-47aj</link>
      <guid>https://dev.to/lassiecoder/embarking-on-a-100-day-journey-with-javascript-47aj</guid>
      <description>&lt;p&gt;Hey everyone! 👋&lt;/p&gt;

&lt;p&gt;I'm diving headfirst into a 100-day JavaScript adventure, and I couldn't be more thrilled to share it with you all! 🎉&lt;/p&gt;

&lt;p&gt;Over the next three months, I'll be immersing myself in everything JavaScript has to offer, from the very basics to some seriously advanced concepts. Here's a sneak peek into what's in store:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Exploring JavaScript Fundamentals:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/code-structure-and-modern-mode" rel="noopener noreferrer"&gt;Code structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/code-structure-and-modern-mode" rel="noopener noreferrer"&gt;Modern mode: "use strict"&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/variables-and-data-types" rel="noopener noreferrer"&gt;Variables &amp;amp; Data types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/interaction-and-type-conversions" rel="noopener noreferrer"&gt;Interaction methods: alert, prompt, confirm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/interaction-and-type-conversions" rel="noopener noreferrer"&gt;Type Conversions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/basic-operators-and-math" rel="noopener noreferrer"&gt;Basic operators &amp;amp; Math&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/comparisons-and-conditional-branching" rel="noopener noreferrer"&gt;Comparisons &amp;amp; Conditional branching: if, '?'&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//ttps://github.com/lassiecoder/100daysofjs/tree/logical-operators-and-nullish-coalescing"&gt;Logical operators &amp;amp; Nullish coalescing '??'&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/loops" rel="noopener noreferrer"&gt;Loops: while, for&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/switch-statement" rel="noopener noreferrer"&gt;"switch" statement&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/functions-and-expressions" rel="noopener noreferrer"&gt;Functions &amp;amp; Expressions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/arrow-functions" rel="noopener noreferrer"&gt;Arrow functions basics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Mastering Objects in JavaScript:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/basics-of-objects" rel="noopener noreferrer"&gt;Basics of Objects&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/object-references-and-copying" rel="noopener noreferrer"&gt;Object references and copying&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/garbage-collection" rel="noopener noreferrer"&gt;Garbage collection&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/object-methods-and-this-keyword" rel="noopener noreferrer"&gt;Object methods and "this" keyword&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/constructors-and-the-new-operator" rel="noopener noreferrer"&gt;Constructors and the "new" operator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/optional-chaining" rel="noopener noreferrer"&gt;Optional chaining with '?.'&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/symbol-type" rel="noopener noreferrer"&gt;Symbol type&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/object-to-primitive-conversion" rel="noopener noreferrer"&gt;Object to primitive conversion&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;JavaScript Data Types &amp;amp; Operations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/data-types-and-methods-of-primitives" rel="noopener noreferrer"&gt;Understanding Data types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/data-types-and-methods-of-primitives" rel="noopener noreferrer"&gt;Methods of primitives&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/numbers" rel="noopener noreferrer"&gt;Working with Numbers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/manipulating-strings" rel="noopener noreferrer"&gt;Manipulating Strings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/handling-arrays-and-array-methods" rel="noopener noreferrer"&gt;Handling Arrays &amp;amp; Array methods&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/exploring-iterables" rel="noopener noreferrer"&gt;Exploring Iterables&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/map-and-set-data-structures" rel="noopener noreferrer"&gt;Map and Set data structures&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/weakmap-and-weakset" rel="noopener noreferrer"&gt;WeakMap and WeakSet for memory management&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/lassiecoder/100daysofjs/tree/object-manipulation-keys-values-entries" rel="noopener noreferrer"&gt;Object manipulation: keys, values, entries&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Destructuring assignment for efficient coding&lt;/li&gt;
&lt;li&gt;Working with Date and time&lt;/li&gt;
&lt;li&gt;JSON methods and toJSON for data serialization&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advanced Function Techniques in JavaScript:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recursion and managing the stack&lt;/li&gt;
&lt;li&gt;Leveraging Rest parameters and spread syntax&lt;/li&gt;
&lt;li&gt;Understanding Variable scope and closure&lt;/li&gt;
&lt;li&gt;Considerations with the old "var" keyword&lt;/li&gt;
&lt;li&gt;Exploring the Global object&lt;/li&gt;
&lt;li&gt;Function objects and Named Function Expressions (NFE)&lt;/li&gt;
&lt;li&gt;Utilizing the "new Function" syntax&lt;/li&gt;
&lt;li&gt;Scheduling tasks with setTimeout and setInterval&lt;/li&gt;
&lt;li&gt;Applying Decorators and forwarding with call/apply&lt;/li&gt;
&lt;li&gt;Function binding for managing context&lt;/li&gt;
&lt;li&gt;Revisiting Arrow functions and their nuances&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Advanced Object Property Configuration &amp;amp; Prototypal Inheritance:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding Property flags and descriptors&lt;/li&gt;
&lt;li&gt;Implementing Property getters and setters for controlled access&lt;/li&gt;
&lt;li&gt;Delving into Prototypal inheritance and its mechanisms&lt;/li&gt;
&lt;li&gt;Exploring F.prototype and its role in inheritance chains&lt;/li&gt;
&lt;li&gt;Native prototypes and their usage in JavaScript&lt;/li&gt;
&lt;li&gt;Prototype methods and handling objects without &lt;strong&gt;proto&lt;/strong&gt; references&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Exploring JavaScript Classes:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction to Class basic syntax&lt;/li&gt;
&lt;li&gt;Implementing Class inheritance&lt;/li&gt;
&lt;li&gt;Defining Static properties and methods within classes&lt;/li&gt;
&lt;li&gt;Understanding Private and protected properties and methods&lt;/li&gt;
&lt;li&gt;Extending built-in classes for custom functionality&lt;/li&gt;
&lt;li&gt;Class checking using "instanceof"&lt;/li&gt;
&lt;li&gt;Utilizing Mixins for flexible composition of behavior&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Handling Errors in JavaScript:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Implementing basic error handling with "try...catch"&lt;/li&gt;
&lt;li&gt;Creating Custom errors by extending the Error object&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Promises, async/await JavaScript Operations:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Introduction to callbacks&lt;/li&gt;
&lt;li&gt;Understanding Promises and their usage&lt;/li&gt;
&lt;li&gt;Chaining Promises for sequential operations&lt;/li&gt;
&lt;li&gt;Error handling with Promises&lt;/li&gt;
&lt;li&gt;Exploring the Promise API for additional functionality&lt;/li&gt;
&lt;li&gt;Promisification for converting callback-based functions to Promise-based&lt;/li&gt;
&lt;li&gt;Managing microtasks&lt;/li&gt;
&lt;li&gt;Utilizing async/await for asynchronous code readability and simplicity&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Generators, advanced iteration &amp;amp; Modules Features:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understanding Generators for advanced iteration&lt;/li&gt;
&lt;li&gt;Exploring async iteration and generators for asynchronous operations&lt;/li&gt;
&lt;li&gt;Introduction to Modules and their benefits&lt;/li&gt;
&lt;li&gt;Exporting and Importing modules for code organization and reusability&lt;/li&gt;
&lt;li&gt;Dynamically importing modules for efficient loading and dependency management&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Miscellaneous JavaScript Topics:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Utilizing Proxy and Reflect for meta-programming and interception&lt;/li&gt;
&lt;li&gt;Running code strings dynamically with eval (caution advised)&lt;/li&gt;
&lt;li&gt;Implementing Currying for functional programming&lt;/li&gt;
&lt;li&gt;Understanding Reference Type in JavaScript&lt;/li&gt;
&lt;li&gt;Working with BigInt for handling large integer values&lt;/li&gt;
&lt;li&gt;Exploring Unicode and String internals for character encoding&lt;/li&gt;
&lt;li&gt;Utilizing WeakRef and FinalizationRegistry for memory management and cleanup duties&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Stay tuned for daily updates, challenges, and plenty of code snippets! Let's make these 100 days count! 💻✨&lt;/p&gt;

&lt;p&gt;Feel free to share this post with fellow coders and enthusiasts. Let's spread the JavaScript love far and wide! 🚀 #100DaysOfJavaScript #CodeNewbie #JavaScriptJourney&lt;/p&gt;

&lt;p&gt;See you in the code! 😉&lt;/p&gt;

&lt;p&gt;Here's the &lt;a href="https://github.com/lassiecoder/100daysofjs" rel="noopener noreferrer"&gt;link to my GitHub repository&lt;/a&gt; where you can find all the latest updates and progress reports.&lt;/p&gt;

</description>
      <category>100daysofcode</category>
      <category>javascript</category>
      <category>learning</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Git &lt;&gt; Common Developer Pitfalls and Solutions</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Sat, 24 Feb 2024 12:38:57 +0000</pubDate>
      <link>https://dev.to/lassiecoder/git-common-developer-pitfalls-and-solutions-5aim</link>
      <guid>https://dev.to/lassiecoder/git-common-developer-pitfalls-and-solutions-5aim</guid>
      <description>&lt;p&gt;Git, essential for version control, poses challenges for developers. Let's explore some common issues and their fixes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;“error: failed to push some refs to '&lt;a href="mailto:git@github.com"&gt;git@github.com&lt;/a&gt;:USERNAME/REPOSITORY.git'” 
Occurs when pushing changes to a remote repository, indicating local and remote repositories differ&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solution: Pull latest changes from remote with &lt;code&gt;git pull&lt;/code&gt;, resolve conflicts, then push changes with &lt;code&gt;git push&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;“error: pathspec 'file.txt' did not match any file(s) known to git” 
Triggered when referencing a non-existent file in the repository&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solution: If encountering a Git error for a non-existent file, ensure correct filename spelling; create a new file using &lt;code&gt;touch file.txt&lt;/code&gt; if needed. If accidentally deleted, restore from backup or use a recovery tool, then add to the repository with &lt;code&gt;git add file.txt&lt;/code&gt; and commit changes via &lt;code&gt;git commit -m "Restored file.txt"&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;“error: failed to clone some remote refs” 
Occurs during cloning due to issues with the remote repository&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solution: Confirm remote repository existence, verify access permissions. Seek collaborator status for private repos.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;“fatal: not a git repository (or any of the parent directories): .git” 
Occurs outside a repository. Results from not initializing or misplacing .git directory&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solution: Ensure within Git repo. If not, navigate to directory, initialize repository with &lt;code&gt;git init&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;“error: Your local changes to the following files would be overwritten by merge” 
Arises when pulling changes clashes with local modifications&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Solution: Resolve conflicts with merge tool, save changes, commit, then retry pulling&lt;/p&gt;

&lt;p&gt;Understanding and addressing these Git challenges is important for effective version control. Utilize Git documentation, forums, and Stack Overflow for assistance. Master Git to streamline collaboration and code management.&lt;/p&gt;

&lt;p&gt;Happy coding! 🙌🏼&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Error handling in React 18</title>
      <dc:creator>lassiecoder</dc:creator>
      <pubDate>Sat, 24 Feb 2024 12:34:16 +0000</pubDate>
      <link>https://dev.to/lassiecoder/error-handling-in-react-18-ll5</link>
      <guid>https://dev.to/lassiecoder/error-handling-in-react-18-ll5</guid>
      <description>&lt;p&gt;React 18 enhances error handling, preventing app crashes by catching and managing errors in child components.&lt;br&gt;
An error boundary component captures errors from its children, updating the state on error using getDerivedStateFromError and componentDidCatch logs the errors.&lt;/p&gt;

&lt;p&gt;Here are 10 key improvements: &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Concurrent Mode: The latest version of React introduces Concurrent Mode, streamlining UI responsiveness by breaking large updates into smaller, prioritized pieces, with the ability to pause and resume updates, preventing main thread blockage.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Suspense: It's awesome because it lets your components hold off on rendering until they've fetched all the data they need. This means you can make your app look way better while it's loading stuff, instead of just showing a boring blank screen or a spinner.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Server Components: They're a special kind of component that you can render on the server and then send over to the client as HTML. It's like giving your app a speed boost, especially for folks visiting for the first time without a cached version of your site.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Automatic Batching: In older versions of the library, you had to manually group updates together to keep your app running smoothly. But in this latest release, this grouping happens automatically. That means you can update multiple things at once without having to do any extra work to optimize performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved Profiling: This version of React has better profiling tools, making it simpler to analyze and optimize your app's performance. These new tools let you track how long each component takes to render, helping you spot any performance issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved Accessibility: In this iteration, there are updates that enhance accessibility, catering better to users with disabilities. One notable addition is the focus-visible attribute, aiding keyboard users in identifying which element is currently in focus.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;New APIs: For instance, the useTransition hook enables creating animations based on user actions. Similarly, the useDeferredValue hook helps delay processing costly computations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved Hydration: The latest version boosts hydration, the method of rendering server-generated HTML on the client. The updated process is quicker and more effective, enhancing your app's performance.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved Error Handling: This release enhances error handling, simplifying debugging and issue resolution. The updated error boundary API enables you to capture and manage errors within individual components, preventing them from causing app-wide crashes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved Developer Experience: This version boosts developer experience with features like “startTransition” API for deferred rendering after state updates, easing asynchronous code writing. Also, the “component stack traces” offer detailed error information, aiding quick issue identification and resolution.&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%2Fnr8jn9i1qmzy6m0389zn.jpeg" 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%2Fnr8jn9i1qmzy6m0389zn.jpeg" alt="Image description" width="800" height="874"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>reactnative</category>
      <category>errors</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
