<?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: Naji Louis</title>
    <description>The latest articles on DEV Community by Naji Louis (@najilouis).</description>
    <link>https://dev.to/najilouis</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F379140%2F8e435760-6f7d-4e8c-bed7-c06d9b82eaa1.jpeg</url>
      <title>DEV Community: Naji Louis</title>
      <link>https://dev.to/najilouis</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/najilouis"/>
    <language>en</language>
    <item>
      <title>AI Made Me Faster. But Did It Also Make Me Lazy?</title>
      <dc:creator>Naji Louis</dc:creator>
      <pubDate>Fri, 25 Sep 2026 15:25:44 +0000</pubDate>
      <link>https://dev.to/najilouis/ai-made-me-faster-but-did-it-also-make-me-lazy-224f</link>
      <guid>https://dev.to/najilouis/ai-made-me-faster-but-did-it-also-make-me-lazy-224f</guid>
      <description>&lt;p&gt;I use AI almost every day.&lt;/p&gt;

&lt;p&gt;ChatGPT, Gemini, Claude, Copilot, and other AI tools have become part of how I work, learn, research, and sometimes even make decisions. As a software engineer, I obviously use AI for coding, debugging, architecture, and system design. But that's actually only a small part of it.&lt;/p&gt;

&lt;p&gt;I also use AI when I'm working on a business idea, researching something for my home, comparing products, estimating the cost of a project, learning something new, or simply trying to understand something that came to mind.&lt;/p&gt;

&lt;p&gt;And that's when I started noticing something.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI made me much faster.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But it may have also made me a little lazy.&lt;/p&gt;

&lt;p&gt;Not lazy in the traditional sense. Lazy at &lt;strong&gt;searching, reading, comparing, and thinking things through myself&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  Before AI, getting an answer took effort
&lt;/h2&gt;

&lt;p&gt;Think about what happened when you had a question a few years ago.&lt;/p&gt;

&lt;p&gt;You'd probably search Google, open a few websites, maybe read a Reddit discussion, watch a YouTube video, look at the official documentation, compare several opinions, and perhaps realize that the first answer wasn't actually very good. Then you'd search again using different words.&lt;/p&gt;

&lt;p&gt;Eventually, after all that, you'd form your own conclusion.&lt;/p&gt;

&lt;p&gt;It wasn't always convenient. But there was something valuable hidden inside all that friction.&lt;/p&gt;

&lt;p&gt;You were exposed to information from different sources.&lt;/p&gt;

&lt;p&gt;You had to compare it. You had to decide which source seemed credible. You had to notice contradictions. You had to think.&lt;/p&gt;

&lt;p&gt;Today, the process can be dramatically shorter, I can open an AI assistant and simply ask: What's the best way to do this? And a few seconds later, I have an answer.&lt;/p&gt;

&lt;p&gt;That's incredibly powerful. And incredibly convenient. Maybe too convenient.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI isn't just my coding assistant anymore
&lt;/h2&gt;

&lt;p&gt;If this were only about programming, it wouldn't be particularly interesting. But AI has expanded far beyond that.&lt;/p&gt;

&lt;p&gt;I'll give it questions about software architecture. I'll ask it to help me understand a business idea, structure a business plan, or estimate the costs involved in building something. I'll ask about materials I might need for a backyard project, different products before buying something, a financial concept, or the pros and cons of two approaches. I'll ask it to summarize something complicated.&lt;/p&gt;

&lt;p&gt;Sometimes I don't even have a specific question. I just have an idea, and AI helps me explore it. That's where things become interesting, because AI isn't only helping me find information anymore, but it's increasingly helping me process information and make decisions.&lt;/p&gt;




&lt;h2&gt;
  
  
  Just ask AI
&lt;/h2&gt;

&lt;p&gt;This has become a habit.&lt;/p&gt;

&lt;p&gt;I don't know something? &lt;strong&gt;Ask AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'm planning something? &lt;strong&gt;Ask AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'm comparing two products? &lt;strong&gt;Ask AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'm trying to estimate a cost? &lt;strong&gt;Ask AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'm stuck? &lt;strong&gt;Ask AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's almost like having a very knowledgeable person sitting next to you who is willing to discuss almost anything. That's amazing, but there's a subtle problem: sometimes I don't even realize that I've stopped doing the research myself.&lt;/p&gt;




&lt;h2&gt;
  
  
  The shortcut can become the default
&lt;/h2&gt;

&lt;p&gt;Imagine I'm planning to build a patio in my backyard. Before AI, I might have searched for patio construction guides, looked at different materials, visited Home Depot or another supplier, checked prices, watched installation videos, looked at local requirements, compared different approaches, and calculated quantities myself.&lt;/p&gt;

&lt;p&gt;Now I can ask: &lt;strong&gt;I want to build a 15 × 12 ft backyard patio. What materials do I need, how much should they cost, and what are the main steps?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Within seconds, I might get a beautifully organized answer: materials, quantities, estimated prices, tools, steps, and potential problems.&lt;/p&gt;

&lt;p&gt;It feels like I just saved myself hours and maybe I did. But here's the important question: &lt;strong&gt;Did I get the correct answer?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Maybe the material prices are outdated. Maybe the quantity calculation doesn't account for waste. Maybe local requirements are different. Maybe the recommended material isn't suitable for my situation. Maybe there are drainage or grading considerations that weren't mentioned. Maybe the AI made an assumption about the soil, slope, or existing surface.&lt;/p&gt;

&lt;p&gt;The answer can look incredibly complete while still being incomplete.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The same thing happens with business&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Suppose I have a business idea. I can ask AI: &lt;strong&gt;Create a business plan for this idea.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;And within minutes I can have market analysis, target customers, pricing, competitors, revenue projections, operating costs, marketing strategy, risks, and growth opportunities.&lt;/p&gt;

&lt;p&gt;A few years ago, creating something like this required significantly more research.&lt;/p&gt;

&lt;p&gt;Today, the first draft is practically free. That's fantastic, but there's a huge difference between: &lt;strong&gt;AI-generated business plan **and **validated business opportunity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;AI can help me organize my thinking. It doesn't automatically prove that customers actually want the product. It doesn't know what my competitors are doing today unless I provide current information or it has access to reliable current sources. It doesn't magically know whether customers will pay my proposed price.&lt;/p&gt;

&lt;p&gt;A beautiful spreadsheet doesn't make the numbers true and a convincing business plan doesn't make the business viable.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Product comparisons can be even trickier&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here's another example. Suppose I'm looking for a new product, I ask AI: &lt;strong&gt;Compare Product A and Product B&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The response might give me a nice table: price, performance, features, pros, cons, reviews, recommendation.&lt;/p&gt;

&lt;p&gt;It feels incredibly objective but then I realize something: &lt;strong&gt;The way I ask the question can influence the answer.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If I ask: &lt;strong&gt;Why is Product A better than Product B?&lt;/strong&gt; I'm already pushing the conversation in one direction.&lt;/p&gt;

&lt;p&gt;If I ask: &lt;strong&gt;Why is Product B better than Product A?&lt;/strong&gt; I'll probably get a completely different perspective.&lt;/p&gt;

&lt;p&gt;And even if I simply ask: &lt;strong&gt;Which one should I buy?&lt;/strong&gt; I'm asking AI to make a decision based on the criteria I gave it — and the assumptions it makes about what matters to me.&lt;/p&gt;

&lt;p&gt;That's something we need to remember, AI doesn't necessarily remove our biases but sometimes it can amplify them.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;What about investing?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This becomes even more important when money is involved.&lt;/p&gt;

&lt;p&gt;I can ask AI: S*&lt;em&gt;hould I buy this stock?&lt;/em&gt;&lt;em&gt;, or: **Compare these two ETFs&lt;/em&gt;&lt;em&gt;, or: **What are the risks of this investment?&lt;/em&gt;*&lt;/p&gt;

&lt;p&gt;And I can receive a detailed answer almost instantly. But an investment decision isn't simply an information-retrieval problem.&lt;/p&gt;

&lt;p&gt;There are assumptions about risk tolerance, time horizon, valuation, diversification, taxes, liquidity, personal circumstances, and future expectations.&lt;/p&gt;

&lt;p&gt;AI can help me understand these concepts. It can help me organize information. It can help me ask better questions.&lt;/p&gt;

&lt;p&gt;But that doesn't mean the answer should become: &lt;strong&gt;AI said buy it, so I'll buy it&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's not research. That's outsourcing the decision.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The dangerous part isn't when AI is obviously wrong&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We already know AI can make mistakes. That's not particularly surprising anymore.&lt;/p&gt;

&lt;p&gt;The more dangerous situation is when the answer is plausible.&lt;/p&gt;

&lt;p&gt;Imagine AI gives you an answer that is 95% correct, beautifully written, confidently explained, logically structured, and full of examples.&lt;/p&gt;

&lt;p&gt;You might never question the remaining 5% and that 5% could be the part that actually matters.&lt;/p&gt;

&lt;p&gt;Maybe it's a wrong assumption. Maybe it's an outdated price. Maybe it's an incorrect technical detail. Maybe it's a missing regulation. Maybe it's a product specification that changed. Maybe it's an overlooked risk. Maybe it's simply not applicable to your particular situation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The better AI gets at producing convincing answers, the more important our ability to evaluate those answers becomes.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Sometimes the best answer is still a few clicks away&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is probably the biggest change I've noticed in myself. &lt;/p&gt;

&lt;p&gt;Before AI, I was willing to spend time searching, now I sometimes think: &lt;strong&gt;Why would I search for this when I can just ask AI?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But sometimes the answer really is sitting one or two clicks away; The official documentation. The manufacturer's specification sheet. The government website. The actual product manual. The current price on the retailer's website. The company's financial report. The original research paper. The terms and conditions. The actual source behind the claim.&lt;/p&gt;

&lt;p&gt;Sometimes the best answer isn't hidden, it's just less convenient to reach and maybe that's okay.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not everything needs to be instant.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;We are outsourcing more than answers&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where I think the real issue lies.&lt;/p&gt;

&lt;p&gt;We're not just outsourcing &lt;strong&gt;search&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We're increasingly outsourcing: &lt;strong&gt;research, comparison, summarization, analysis, brainstorming, planning and sometimes even judgment&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's where I think we need to be careful because the more of these steps AI performs for us, the easier it becomes to skip the thinking that used to happen between the question and the decision.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;AI can make us feel smarter than we are&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;There's another interesting side effect.&lt;/p&gt;

&lt;p&gt;AI can explain almost anything in a very understandable way.&lt;/p&gt;

&lt;p&gt;You ask a question. You get an answer.&lt;/p&gt;

&lt;p&gt;It makes sense. You think: &lt;strong&gt;Okay, I understand&lt;/strong&gt;. But do you? &lt;/p&gt;

&lt;p&gt;Understanding an explanation is not necessarily the same as understanding the subject.&lt;/p&gt;

&lt;p&gt;If AI explains a business model to me, can I explain it without AI?&lt;/p&gt;

&lt;p&gt;If AI designs an architecture for me, can I explain why that architecture is appropriate?&lt;/p&gt;

&lt;p&gt;If AI compares two products, do I understand the trade-offs?&lt;/p&gt;

&lt;p&gt;If AI gives me a cost estimate, do I understand the assumptions behind it?&lt;/p&gt;

&lt;p&gt;If AI explains an investment, do I understand the risks?&lt;/p&gt;

&lt;p&gt;There is a difference between &lt;strong&gt;receiving knowledge&lt;/strong&gt; and &lt;strong&gt;developing understanding&lt;/strong&gt;.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;I'm not going back&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;None of this means I want to stop using AI. Quite the opposite.&lt;/p&gt;

&lt;p&gt;AI has genuinely improved the way I work. It lets me explore ideas much faster, helps me get unstuck, gives me perspectives I might not have considered, helps me learn, saves time, handles repetitive work, and lets me go from an idea to a rough implementation much faster.&lt;/p&gt;

&lt;p&gt;I don't want to go back to a world where every question requires opening ten browser tabs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The answer isn't to use AI less. The answer is to use it better.&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;AI made me faster. It also made me lazy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I don't think being "lazy" is necessarily a bad thing.&lt;/p&gt;

&lt;p&gt;If AI can save me two hours of repetitive work, I'll happily take those two hours.&lt;/p&gt;

&lt;p&gt;If it can help me find an answer in 30 seconds instead of 30 minutes, that's progress.&lt;/p&gt;

&lt;p&gt;If it can help me explore an idea that I otherwise wouldn't have had time to explore, that's valuable.&lt;/p&gt;

&lt;p&gt;The problem starts when &lt;strong&gt;convenience replaces curiosity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;When we stop checking, when we stop reading, when we stop comparing, when we stop asking why, when we stop challenging the answer, and when we start believing that a detailed answer must be a correct answer.&lt;/p&gt;

&lt;p&gt;AI has made information incredibly cheap but &lt;strong&gt;judgment is still expensive&lt;/strong&gt; and I don't think we should outsource that part.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;The goal isn't to think without AI&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Maybe the future isn't about choosing between: &lt;strong&gt;Thinking&lt;/strong&gt; or &lt;strong&gt;AI&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It's about learning how to think with AI.&lt;/p&gt;

&lt;p&gt;Let AI do the things it's good at. Let it generate, summarize, brainstorm, explain, and challenge us. Let it help us explore ten possibilities in the time it used to take us to explore two.&lt;/p&gt;

&lt;p&gt;But keep one person in the loop: &lt;strong&gt;Us&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Because AI can give us a shortcut. It can give us an explanation. It can give us ten possible solutions. It can even give us a very convincing answer.&lt;/p&gt;

&lt;p&gt;But ultimately, someone still needs to ask: &lt;strong&gt;Does this actually make sense?&lt;/strong&gt; And maybe that question is becoming more important, not less.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;AI made me faster. It also made me lazy.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I'm okay with the first part but I'm just trying not to let the second part become permanent.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Building a Local RAG AI Agent for Airline Reviews with Ollama</title>
      <dc:creator>Naji Louis</dc:creator>
      <pubDate>Fri, 16 Jan 2026 16:51:24 +0000</pubDate>
      <link>https://dev.to/najilouis/building-a-local-rag-ai-agent-for-airline-reviews-with-ollama-2ik5</link>
      <guid>https://dev.to/najilouis/building-a-local-rag-ai-agent-for-airline-reviews-with-ollama-2ik5</guid>
      <description>&lt;p&gt;I wanted to explore how far I could go with a fully &lt;strong&gt;local AI agent&lt;/strong&gt; using Retrieval-Augmented Generation (&lt;strong&gt;RAG&lt;/strong&gt;). As a small curiosity-driven evening project, I decided to build an agent that can answer questions about airline reviews — entirely offline, fast, and inexpensive.&lt;/p&gt;

&lt;p&gt;This article walks through the idea, tools, and architecture behind the project, with minimal but practical Python code.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tech Stack Overview
&lt;/h2&gt;

&lt;p&gt;Here’s what I used:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Language&lt;/strong&gt;: Python&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LLM runtime&lt;/strong&gt;: Ollama&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;llama3.2&lt;/strong&gt; for question answering&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;mxbai-embed-large&lt;/strong&gt; for embeddings&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Vector store&lt;/strong&gt;: Chroma&lt;/p&gt;

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

&lt;ul&gt;
&lt;li&gt;langchain&lt;/li&gt;
&lt;li&gt;langchain-ollama&lt;/li&gt;
&lt;li&gt;langchain-chroma&lt;/li&gt;
&lt;li&gt;pandas&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Dataset&lt;/strong&gt;: Airline Reviews (CSV) from Kaggle&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Ollama?
&lt;/h2&gt;

&lt;p&gt;I installed &lt;a href="https://ollama.com/download" rel="noopener noreferrer"&gt;Ollama&lt;/a&gt; on a Linux cloud server, but one of the nicest things about it is that it also runs smoothly on &lt;strong&gt;most modern PC and Laptops&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Ollama made this project:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Easy to run locally&lt;/li&gt;
&lt;li&gt;Cheap (no API costs)&lt;/li&gt;
&lt;li&gt;Fast enough for experimentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Perfect for side projects and learning.&lt;/p&gt;

&lt;h2&gt;
  
  
  Dataset Preparation
&lt;/h2&gt;

&lt;p&gt;The dataset comes from Kaggle and contains airline reviews in CSV format.&lt;/p&gt;

&lt;p&gt;To make vector ingestion faster and lighter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I created a &lt;strong&gt;&lt;u&gt;reduced CSV version&lt;/u&gt;&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Kept only the columns relevant for semantic search (review text, airline name, rating, etc.)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This significantly improved:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Embedding generation time&lt;/li&gt;
&lt;li&gt;Vector store loading speed&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  High-Level Architecture
&lt;/h2&gt;

&lt;p&gt;The flow is straightforward:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Load airline reviews from CSV using &lt;strong&gt;pandas&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Generate embeddings using &lt;strong&gt;mxbai-embed-large&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Store vectors in &lt;strong&gt;Chroma&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Retrieve relevant reviews for a user question&lt;/li&gt;
&lt;li&gt;Pass retrieved reviews + question to &lt;strong&gt;llama3.2&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Generate an answer &lt;strong&gt;strictly based on retrieved content&lt;/strong&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is classic RAG but fully local.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prompt Design
&lt;/h2&gt;

&lt;p&gt;I kept the prompt explicit and restrictive to avoid incorrect information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;You are an expert in answering questions about airline reviews.
Use the provided reviews to answer the question as accurately as possible.

Here are some relevant reviews: {reviews}

Here is the question to answer: {question}

IMPORTANT: Base your answer ONLY on the reviews provided above. If no reviews are provided, say "No reviews were found."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This single instruction already improved answer reliability a lot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minimal Python Setup (Conceptual)
&lt;/h2&gt;

&lt;p&gt;The code is intentionally basic and readable:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Load CSV with &lt;strong&gt;Pandas&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Create embeddings with &lt;strong&gt;Ollama&lt;/strong&gt; embeddings&lt;/li&gt;
&lt;li&gt;Store &amp;amp; query vectors with &lt;strong&gt;Chroma&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Chain retrieval + LLM with &lt;strong&gt;LangChain&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I avoided over-engineering — the goal was clarity, not abstraction layers.&lt;/p&gt;

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

&lt;p&gt;I tested the agent with different types of questions.&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;Example 1: Valid Question&lt;/strong&gt;&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;How do passengers generally feel about Emirates ?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; The agent retrieved multiple relevant reviews and summarized them correctly.&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%2Flywwg80wcrpo3ge8i7il.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%2Flywwg80wcrpo3ge8i7il.png" alt="Valid Answer" width="800" height="142"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;❌ &lt;strong&gt;Example 2: No Relevant Data&lt;/strong&gt;&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Is Honda CRA a good SUV car ?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; Since no relevant reviews were retrieved, the agent responded:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;No reviews were found...&lt;/p&gt;
&lt;/blockquote&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%2Fujys34yebplj36aesaoj.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%2Fujys34yebplj36aesaoj.png" alt="No Relevant Data" width="800" height="133"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Correct fallback when no data exists&lt;br&gt;
This behavior is exactly what I wanted — no incorrect information.&lt;/p&gt;

&lt;h2&gt;
  
  
  GitHub Repository
&lt;/h2&gt;

&lt;p&gt;The full source code is available here:&lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;GitHub Repo:&lt;/strong&gt; &lt;a href="https://github.com/najilouis/local-AI-agent-RAG/" rel="noopener noreferrer"&gt;local-AI-agent-RAG&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also check it out and run it on your own machine by following the instructions provided in the README file.&lt;/p&gt;

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

&lt;p&gt;This project was mainly built out of curiosity and for fun — a way to experiment with local RAG systems without overcomplicating things.&lt;/p&gt;

&lt;p&gt;That said, the same approach can scale much further. With a &lt;strong&gt;larger dataset&lt;/strong&gt; and &lt;strong&gt;more performant hardware&lt;/strong&gt;, you can build something significantly faster, more accurate, and production-ready.&lt;/p&gt;

&lt;p&gt;For now, it serves as a solid proof of concept and a reminder that meaningful AI projects don’t always need massive infrastructure to get started 🚀&lt;/p&gt;

</description>
      <category>ai</category>
      <category>rag</category>
      <category>llm</category>
      <category>learning</category>
    </item>
    <item>
      <title>Why Prompts Matter: How AI Answers Change Based on What You Ask</title>
      <dc:creator>Naji Louis</dc:creator>
      <pubDate>Thu, 13 Nov 2025 15:38:54 +0000</pubDate>
      <link>https://dev.to/najilouis/why-prompts-matter-how-ai-answers-change-based-on-what-you-ask-5778</link>
      <guid>https://dev.to/najilouis/why-prompts-matter-how-ai-answers-change-based-on-what-you-ask-5778</guid>
      <description>&lt;p&gt;In today’s world of AI tools like ChatGPT, Gemini, and Microsoft Copilot, one thing stands out:&lt;br&gt;
👉 &lt;strong&gt;The way you ask a question completely changes the answer you get.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That’s what we call &lt;strong&gt;prompting&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Even when asking the same thing, tiny changes in how you phrase it can shift the tone, depth, or even the accuracy of the answer.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is Prompting?
&lt;/h2&gt;

&lt;p&gt;Prompting is how you communicate with an AI tool — basically, the instructions you give.&lt;/p&gt;

&lt;p&gt;If you think of AI as a new teammate, your &lt;strong&gt;prompt is your task description&lt;/strong&gt;. The clearer you are, the better the results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example 1 – ChatGPT
&lt;/h2&gt;

&lt;p&gt;Let’s say you ask ChatGPT about JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt 1:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Explain JavaScript.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;JavaScript is a programming language used to add interactivity to websites.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Now, let’s make it more specific.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt 2:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Explain JavaScript in a fun, beginner-friendly way.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Think of a website as a body. HTML is the skeleton, CSS is the style, and JavaScript is the brain that makes it move and respond.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Just adding a few words (“fun” and “beginner-friendly”) completely changes the tone and structure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example 2 – Gemini
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Prompt 1:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;What is React?&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Gemini might respond:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;React is a JavaScript library developed by Meta for building user interfaces.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Prompt 2:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What is React? Explain it as if I’m new to web development.&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;React helps developers build reusable pieces of a web page called components — like small blocks you can combine to build modern, fast websites.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Again, the difference is in the prompt clarity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Example 3 – Microsoft Copilot
&lt;/h2&gt;

&lt;p&gt;Microsoft Copilot also shows how the way you ask a question affects the quality of the response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prompt 1:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Explain the benefits of TypeScript.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Copilot might respond:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;TypeScript adds static typing to JavaScript, helping developers find errors earlier and write more reliable code.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Prompt 2:&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Explain the benefits of TypeScript for a junior web developer who is learning JavaScript.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;TypeScript helps you write cleaner JavaScript by catching mistakes before you run the code. It’s great for beginners because it provides hints and suggestions that make learning easier and projects more manageable.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The difference is clear, adding context (“for a junior web developer”) completely changes how Copilot frames the explanation.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters
&lt;/h2&gt;

&lt;p&gt;Whether you’re coding, writing, or brainstorming, &lt;strong&gt;prompting is the key to getting better results.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Good prompts save time, reduce back-and-forth, and help you get answers that fit your exact needs.&lt;/p&gt;

&lt;p&gt;Here are a few things I’ve learned:&lt;br&gt;
✅ Be clear about your goal.&lt;br&gt;
✅ Add context or examples.&lt;br&gt;
✅ Define the tone (formal, friendly, technical, etc.).&lt;br&gt;
✅ Tell the AI who it should act as (“You are a senior developer reviewing code…”).&lt;/p&gt;

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

&lt;p&gt;AI isn’t magic — it’s responsive to how you talk to it.&lt;br&gt;
When you write better prompts, you train yourself to think clearly and communicate effectively.&lt;/p&gt;

&lt;p&gt;So next time you use ChatGPT, Gemini, or Microsoft Copilot, remember:&lt;br&gt;
🗣️ The better your prompt, the smarter your result.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>chatgpt</category>
      <category>gemini</category>
      <category>promptengineering</category>
    </item>
    <item>
      <title>AI is changing the way we review code, it's faster, smarter, and more consistent. Here’s how tools like Copilot and CodeRabbit are shaping the future of code reviews.</title>
      <dc:creator>Naji Louis</dc:creator>
      <pubDate>Fri, 31 Oct 2025 16:45:02 +0000</pubDate>
      <link>https://dev.to/najilouis/ai-is-changing-the-way-we-review-code-its-faster-smarter-and-more-consistent-heres-how-tools-3j3i</link>
      <guid>https://dev.to/najilouis/ai-is-changing-the-way-we-review-code-its-faster-smarter-and-more-consistent-heres-how-tools-3j3i</guid>
      <description>&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/najilouis/how-ai-tools-are-changing-code-reviews-3d6m" class="crayons-story__hidden-navigation-link"&gt;How AI Tools Are Changing Code Reviews&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/najilouis" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F379140%2F8e435760-6f7d-4e8c-bed7-c06d9b82eaa1.jpeg" alt="najilouis profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/najilouis" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Naji Louis
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Naji Louis
                
              
              &lt;div id="story-author-preview-content-2979450" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/najilouis" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F379140%2F8e435760-6f7d-4e8c-bed7-c06d9b82eaa1.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Naji Louis&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/najilouis/how-ai-tools-are-changing-code-reviews-3d6m" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 31 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/najilouis/how-ai-tools-are-changing-code-reviews-3d6m" id="article-link-2979450"&gt;
          How AI Tools Are Changing Code Reviews
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/codereview"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;codereview&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/githubcopilot"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;githubcopilot&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/softwaredevelopment"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;softwaredevelopment&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/najilouis/how-ai-tools-are-changing-code-reviews-3d6m" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;1&lt;span class="hidden s:inline"&gt;&amp;nbsp;reaction&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/najilouis/how-ai-tools-are-changing-code-reviews-3d6m#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              1&lt;span class="hidden s:inline"&gt;&amp;nbsp;comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            3 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;




</description>
      <category>codereview</category>
      <category>ai</category>
      <category>githubcopilot</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>How AI Tools Are Changing Code Reviews</title>
      <dc:creator>Naji Louis</dc:creator>
      <pubDate>Fri, 31 Oct 2025 16:34:00 +0000</pubDate>
      <link>https://dev.to/najilouis/how-ai-tools-are-changing-code-reviews-3d6m</link>
      <guid>https://dev.to/najilouis/how-ai-tools-are-changing-code-reviews-3d6m</guid>
      <description>&lt;p&gt;Code review has always been one of the most important parts of software development.&lt;br&gt;
It’s where bugs are caught, quality improves, and developers learn from each other.&lt;/p&gt;

&lt;p&gt;But let’s be honest — code reviews can also be time-consuming and repetitive.&lt;br&gt;
Sometimes, reviewers spend hours pointing out the same small issues: missing semicolons, unclear variable names, or unused imports.&lt;br&gt;
That’s where AI-powered tools like GitHub Copilot and CodeRabbit start to shine.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Old Way of Reviewing Code
&lt;/h2&gt;

&lt;p&gt;Traditionally, a developer submits a pull request (PR), and another developer manually reviews it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check for syntax or formatting issues&lt;/li&gt;
&lt;li&gt;Ensure naming and structure are consistent&lt;/li&gt;
&lt;li&gt;Verify logic and potential edge cases&lt;/li&gt;
&lt;li&gt;Suggest improvements or simplifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s an important process, but it often slows things down — especially in teams where everyone is busy coding.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter AI Code Review Assistants
&lt;/h2&gt;

&lt;p&gt;AI tools like Copilot (by GitHub) and CodeRabbit are helping automate parts of this process.&lt;br&gt;
They don’t replace humans — but they make the review smarter and faster.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GitHub Copilot&lt;/strong&gt;&lt;br&gt;
Most developers know Copilot as a coding assistant that helps write code.&lt;br&gt;
But GitHub introduced Copilot for Pull Requests, which adds AI to your review process.&lt;/p&gt;

&lt;p&gt;It can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Generate summaries of code changes&lt;/li&gt;
&lt;li&gt;Suggest possible issues or improvements&lt;/li&gt;
&lt;li&gt;Even write comments automatically on pull requests&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So instead of spending time writing “You forgot to handle null values here,” you can focus on higher-level discussions — like architecture or performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CodeRabbit&lt;/strong&gt;&lt;br&gt;
CodeRabbit takes AI reviews one step further.&lt;br&gt;
It acts as a virtual reviewer that analyzes your pull requests automatically and leaves comments just like a human reviewer would.&lt;/p&gt;

&lt;p&gt;What’s nice about it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It integrates with GitHub, GitLab, and Bitbucket&lt;/li&gt;
&lt;li&gt;It highlights potential bugs, smells, or style issues&lt;/li&gt;
&lt;li&gt;It learns over time from your codebase and review patterns&lt;/li&gt;
&lt;li&gt;It can be customized to match your team’s coding standards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In short, it’s like having another experienced teammate who never gets tired of reviewing.&lt;/p&gt;

&lt;h2&gt;
  
  
  How These Tools Help in Real Projects
&lt;/h2&gt;

&lt;p&gt;Here’s what I personally found useful when trying them:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Faster feedback — small issues get caught immediately.&lt;/li&gt;
&lt;li&gt;Cleaner PRs — reviewers see the important stuff, not style fixes.&lt;/li&gt;
&lt;li&gt;Consistent quality — AI follows the same rules every time.&lt;/li&gt;
&lt;li&gt;Knowledge sharing — less experienced developers learn good practices through AI suggestions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And since tools like CodeRabbit or Copilot integrate directly into GitHub workflows, they fit naturally into existing pipelines.&lt;/p&gt;

&lt;h2&gt;
  
  
  What AI Can’t Replace
&lt;/h2&gt;

&lt;p&gt;AI tools are great at identifying surface-level issues and patterns, but they can’t replace human judgment.&lt;/p&gt;

&lt;p&gt;You still need humans to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Understand business logic&lt;/li&gt;
&lt;li&gt;Evaluate performance trade-offs&lt;/li&gt;
&lt;li&gt;Discuss naming and readability in context&lt;/li&gt;
&lt;li&gt;Make final merge decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So, think of AI as a helper — not a reviewer that replaces you, but one that frees you up for deeper discussions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Future of Code Reviews
&lt;/h2&gt;

&lt;p&gt;The combination of human expertise + AI assistance is where the real power lies.&lt;br&gt;
Developers will spend less time on repetitive tasks and more on meaningful feedback, architecture, and learning.&lt;/p&gt;

&lt;p&gt;In the near future, we might see AI that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Suggests unit tests automatically for new code&lt;/li&gt;
&lt;li&gt;Detects security risks in real-time&lt;/li&gt;
&lt;li&gt;Explains complex logic in natural language during review&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s not about removing humans from the process — it’s about making humans more effective reviewers.&lt;/p&gt;

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

&lt;p&gt;Since trying these tools, I’ve noticed my code reviews are faster, and my pull requests are cleaner before anyone even looks at them.&lt;br&gt;
AI doesn’t replace communication or collaboration — it just removes friction.&lt;/p&gt;

&lt;p&gt;If your team hasn’t tried tools like Copilot for PRs or CodeRabbit, give them a shot.&lt;br&gt;
You’ll still need human insight, but you’ll spend less time chasing small issues and more time building better software&lt;/p&gt;

</description>
      <category>codereview</category>
      <category>ai</category>
      <category>githubcopilot</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Why I Stopped Using ngIf and ngFor in Angular</title>
      <dc:creator>Naji Louis</dc:creator>
      <pubDate>Mon, 27 Oct 2025 00:28:56 +0000</pubDate>
      <link>https://dev.to/najilouis/why-i-stopped-using-ngif-and-ngfor-in-angular-3m9m</link>
      <guid>https://dev.to/najilouis/why-i-stopped-using-ngif-and-ngfor-in-angular-3m9m</guid>
      <description>&lt;p&gt;I’ve been using Angular for quite some time, and like many developers, I got used to writing &lt;code&gt;*ngIf&lt;/code&gt;, &lt;code&gt;*ngFor&lt;/code&gt;, and &lt;code&gt;ngSwitch&lt;/code&gt; in almost every component. They worked fine until Angular introduced a new syntax that completely changed how I write templates.&lt;/p&gt;

&lt;p&gt;I’m talking about the new control flow syntax:&lt;br&gt;
&lt;code&gt;@if&lt;/code&gt;, &lt;code&gt;@else&lt;/code&gt;, &lt;code&gt;@for&lt;/code&gt;, &lt;code&gt;@let&lt;/code&gt;, &lt;code&gt;@switch&lt;/code&gt;, &lt;code&gt;@case&lt;/code&gt;, and &lt;code&gt;@default&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;At first, I didn’t pay much attention. But after giving them a try, I quickly realized how much cleaner, simpler, and more natural my templates became.&lt;br&gt;
Here’s why I stopped using the old syntax and why you might want to as well.&lt;/p&gt;
&lt;h2&gt;
  
  
  The Problem with the Old Syntax
&lt;/h2&gt;

&lt;p&gt;The old &lt;code&gt;*ngIf&lt;/code&gt;, &lt;code&gt;*ngFor&lt;/code&gt;, and &lt;code&gt;ngSwitch&lt;/code&gt; directives worked well, but they had a few downsides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The asterisks &lt;code&gt;*&lt;/code&gt; looked strange to new developers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You often needed extra &lt;code&gt;&amp;lt;ng-container&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;ng-template&amp;gt;&lt;/code&gt; tags.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Nested conditions and loops were harder to read.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Angular’s new syntax fixes all of that. It’s built directly into the template engine, meaning no more directives — just clean, readable control flow.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@if&lt;/code&gt; and &lt;code&gt;@else&lt;/code&gt;&lt;br&gt;
The new &lt;code&gt;@if&lt;/code&gt; syntax replaces &lt;code&gt;*ngIf&lt;/code&gt; and feels much closer to regular JavaScript logic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div *ngIf="isLoggedIn; else guestPart"&amp;gt;
  Welcome back!
&amp;lt;/div&amp;gt;

&amp;lt;ng-template #guestPart&amp;gt;
  Please log in.
&amp;lt;/ng-template&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Now:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@if (isLoggedIn) {
  &amp;lt;div&amp;gt;Welcome back!&amp;lt;/div&amp;gt;
} @else {
  &amp;lt;div&amp;gt;Please log in.&amp;lt;/div&amp;gt;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Easier to read&lt;br&gt;
✅ No  blocks or template references&lt;br&gt;
✅ Perfect for nesting conditions&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@for&lt;/code&gt;&lt;br&gt;
The classic &lt;code&gt;*ngFor&lt;/code&gt; still works, but &lt;code&gt;@for&lt;/code&gt; feels cleaner and reads more like plain JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  &amp;lt;li *ngFor="let user of users; trackBy: trackById"&amp;gt;
    {{ user.name }}
  &amp;lt;/li&amp;gt;
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Now:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ul&amp;gt;
  @for (user of users; track user.id) {
    &amp;lt;li&amp;gt;{{ user.name }}&amp;lt;/li&amp;gt;
  }
&amp;lt;/ul&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Simpler syntax (track instead of trackBy)&lt;br&gt;
✅ No asterisk confusion&lt;br&gt;
✅ Easier to reason about&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@let&lt;/code&gt;&lt;br&gt;
Sometimes you need to store a local variable in your template.&lt;br&gt;
&lt;code&gt;@let&lt;/code&gt; makes that super easy.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;ng-container *ngIf="user as u"&amp;gt;
  &amp;lt;p&amp;gt;Hello {{ u.name }}&amp;lt;/p&amp;gt;
&amp;lt;/ng-container&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Now:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@let u = user;
&amp;lt;p&amp;gt;Hello {{ u.name }}&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ Cleaner variable handling&lt;br&gt;
✅ Works outside &lt;code&gt;@if&lt;/code&gt; blocks&lt;br&gt;
✅ Makes templates easier to follow&lt;/p&gt;

&lt;p&gt;&lt;code&gt;@switch&lt;/code&gt;, &lt;code&gt;@case&lt;/code&gt;, and &lt;code&gt;@default&lt;/code&gt;&lt;br&gt;
The new &lt;code&gt;@switch&lt;/code&gt; syntax replaces &lt;code&gt;ngSwitch&lt;/code&gt; and feels just like a real switch statement in JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;div [ngSwitch]="status"&amp;gt;
  &amp;lt;p *ngSwitchCase="'active'"&amp;gt;Active&amp;lt;/p&amp;gt;
  &amp;lt;p *ngSwitchCase="'inactive'"&amp;gt;Inactive&amp;lt;/p&amp;gt;
  &amp;lt;p *ngSwitchDefault&amp;gt;Unknown&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Now:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@switch (status) {
  @case ('active') {
    &amp;lt;p&amp;gt;Active&amp;lt;/p&amp;gt;
  }
  @case ('inactive') {
    &amp;lt;p&amp;gt;Inactive&amp;lt;/p&amp;gt;
  }
  @default {
    &amp;lt;p&amp;gt;Unknown&amp;lt;/p&amp;gt;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;✅ More readable&lt;br&gt;
✅ No extra attributes&lt;br&gt;
✅ Matches JavaScript logic perfectly&lt;/p&gt;
&lt;h2&gt;
  
  
  How to Start Using It
&lt;/h2&gt;

&lt;p&gt;You’ll need Angular 17 or newer to use this new syntax.&lt;br&gt;
If you’re upgrading, just run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;ng update @angular/core@latest @angular/cli@latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No extra setup or imports needed — it’s ready out of the box.&lt;/p&gt;

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

&lt;p&gt;After switching to the new syntax, my templates feel much cleaner and easier to maintain.&lt;br&gt;
I don’t need to wrap everything in containers or remember special &lt;code&gt;*&lt;/code&gt; rules anymore.&lt;/p&gt;

&lt;p&gt;If you’ve been using Angular for a while, try replacing a few &lt;code&gt;*ngIf&lt;/code&gt; or &lt;code&gt;*ngFor&lt;/code&gt; blocks with the new syntax and you’ll instantly see the difference.&lt;/p&gt;

&lt;p&gt;Sometimes small changes make a big impact and this one definitely does.&lt;/p&gt;

</description>
      <category>angular</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
  </channel>
</rss>
