<?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: Shreyas Taware</title>
    <description>The latest articles on DEV Community by Shreyas Taware (@shreyastaware).</description>
    <link>https://dev.to/shreyastaware</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%2F495994%2F9ef0178b-5e97-4cea-9b05-ce91e5ff80c1.jpg</url>
      <title>DEV Community: Shreyas Taware</title>
      <link>https://dev.to/shreyastaware</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shreyastaware"/>
    <language>en</language>
    <item>
      <title>Email Marketing for Developers</title>
      <dc:creator>Shreyas Taware</dc:creator>
      <pubDate>Mon, 17 Aug 2026 10:03:19 +0000</pubDate>
      <link>https://dev.to/shreyastaware/email-marketing-for-developers-53ko</link>
      <guid>https://dev.to/shreyastaware/email-marketing-for-developers-53ko</guid>
      <description>&lt;p&gt;Email Marketing is really important in today's day and age. If you want to grow your business, you should know how to send good emails for outreach, as well as setup automations for marketing emails to get a good response.&lt;/p&gt;

&lt;p&gt;In this blog, I am going to introduce you important definitions that you'll stumble upon while learning about email marketing, which vendors to use, which metrics to track, and finally different ways to scale sending emails.&lt;/p&gt;

&lt;p&gt;I also have a bonus section at the end to help you put email marketing into practice!&lt;/p&gt;

&lt;h2&gt;
  
  
  Definitions
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;MX Records&lt;/strong&gt; or &lt;u&gt;Mail Exchanger Records&lt;/u&gt; specify the email servers which can receive emails that are sent to the custom email IDs (i.e. which are attached to your own domain name).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SPF Records&lt;/strong&gt; or &lt;u&gt;Sender Policy Framework Records&lt;/u&gt; are a type of DNS record that identifies the email servers that are permitted to send emails using your custom email IDs.&lt;/p&gt;

&lt;p&gt;The main purpose of SPF records is to help the recipient email server identify the spam emails, sent using your domain name by spoofing/ forging the "From" email addresses from external email servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DKIM&lt;/strong&gt; stands for &lt;u&gt;DomainKeys Identified Mail&lt;/u&gt; which is an authentication method, and it uses encryption with public/ private keys, to validate whether the emails are generated from the authorised servers, recognized and configured by the administrators of the sending domains.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DMARC&lt;/strong&gt; stands for &lt;u&gt;Domain-based Message Authentication, Reporting &amp;amp; Conformance&lt;/u&gt; and it is an email authentication protocol.&lt;/p&gt;

&lt;p&gt;It builds on the widely deployed SPF and DKIM protocols, also adds a reporting function that allows senders and receivers to improve and monitor protection of the domain from fraudulent email.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BIMI&lt;/strong&gt; stands for &lt;u&gt;Brand Indicators for Message Identification&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;It is an email standard that lets companies show their official brand logo next to incoming messages in supporting email inboxes like Gmail, Yahoo, and Apple Mail. It builds trust and stops spoofing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PTR record&lt;/strong&gt; or a DNS pointer record maps an IP address to a domain name.&lt;/p&gt;

&lt;h2&gt;
  
  
  Essential Tools for Email Marketing
&lt;/h2&gt;

&lt;p&gt;All the above definitions will be helpful, when you need to setup your own custom email on your custom domain.&lt;/p&gt;

&lt;p&gt;You can buy a domain on &lt;a href="http://namecheap.com/" rel="noopener noreferrer"&gt;NameCheap&lt;/a&gt; or &lt;a href="https://www.cloudflare.com/" rel="noopener noreferrer"&gt;CloudFlare&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;For setting up a custom email, popular Email API providers include &lt;a href="https://resend.com/" rel="noopener noreferrer"&gt;Resend&lt;/a&gt; and &lt;a href="https://brevo.com/" rel="noopener noreferrer"&gt;Brevo&lt;/a&gt; which have a generous free-tier. You can also use Gmail in combination with these if you want.&lt;/p&gt;

&lt;p&gt;It is also better to also setup particular inboxes for receiving email. If you send emails from multiple accounts, it can make reconciling data difficult for you and your team.&lt;/p&gt;

&lt;p&gt;One example of an Inbox is &lt;a href="https://www.zoho.com/mail/" rel="noopener noreferrer"&gt;Zoho Mail&lt;/a&gt; or you can add Reply-To email address as your Gmail.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tracking Tools
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://postmaster.google.com/" rel="noopener noreferrer"&gt;Google Postmaster Tools&lt;/a&gt;&lt;/strong&gt; is a free monitoring tool by Google that helps analyze the traffic sent to personal Gmail accounts. It tracks the following factors:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spam rate&lt;/li&gt;
&lt;li&gt;Domain reputation&lt;/li&gt;
&lt;li&gt;IP reputation&lt;/li&gt;
&lt;li&gt;Authentication Performance (SPF, DKIM, and DMARC)&lt;/li&gt;
&lt;li&gt;Deliverability errors&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://mail-tester.com/" rel="noopener noreferrer"&gt;Mail-Tester.com&lt;/a&gt;&lt;/strong&gt; is especially useful to test the spam rate of your emails.&lt;/p&gt;

&lt;p&gt;You can send an email to a Mail-tester email ID and it will check your email on several parameters such as having tracking links, having embedded image links, reputation that determine your domain's spam rate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://mxtoolbox.com/" rel="noopener noreferrer"&gt;MX ToolBox&lt;/a&gt;&lt;/strong&gt; It is a tool to detect BIMI, DMARC, DNS issues related to your domain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://check.spamhaus.org/" rel="noopener noreferrer"&gt;SpamHaus&lt;/a&gt;&lt;/strong&gt; is an IP Address and Domain Reputation tracker which also maintains widely used blocklists.&lt;/p&gt;

&lt;p&gt;So it helps to regularly check your domain name on this website in case you have low deliverability. &lt;/p&gt;

&lt;p&gt;If your website is listed on SpamHaus, you can be sure that you have been added to a blocklist.&lt;/p&gt;

&lt;h2&gt;
  
  
  Metrics
&lt;/h2&gt;

&lt;p&gt;This is the crux of the subject. Ideally, you want to be able to track these metrics so that you can scale your marketing from a few hundred emails per day to thousands of emails per month.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Delivery Rate&lt;/strong&gt;: Percentage of sent emails that were successfully delivered to recipients’ email address and were not returned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bounce Rate&lt;/strong&gt;: Percentage of sent emails that could not be delivered and were returned by the recipient’s email server.&lt;/p&gt;

&lt;p&gt;The reason for this could be because the email address or domain does not exist or cannot receive mail. This is called &lt;strong&gt;Hard Bounce&lt;/strong&gt; or a permanent delivery failure.&lt;/p&gt;

&lt;p&gt;Another reason for email bounce is when there is a full inbox, temporary server problem, or message-size limit. This is called &lt;strong&gt;Soft Bounce&lt;/strong&gt; or a temporary delivery failure. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reply Rate&lt;/strong&gt;: Percentage of delivered emails that received a reply from the recipient.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Rate&lt;/strong&gt;: Percentage of delivered emails that were detected as opened by recipients.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note - Open Rate metrics can be unreliable because privacy features such as Apple Mail Privacy Protection can make open tracking inaccurate.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Click rate&lt;/strong&gt;: Percentage of the contacts, who clicked on a call-to-action button, hyperlink or image in the emails you have sent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Complaint Rate&lt;/strong&gt;: Percentage of delivered emails that recipients marked as spam or junk.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unsubscribe Rate&lt;/strong&gt;: Percentage of delivered emails where recipients clicked the unsubscribe link and opted out of future emails.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of Email Marketing
&lt;/h2&gt;

&lt;p&gt;If you are using email API providers, you will encounter two types of emails:&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;Transactional&lt;/strong&gt;: These are emails that can be sent via an API for one-to-one emails at scale.&lt;/p&gt;

&lt;p&gt;2) &lt;strong&gt;Broadcast&lt;/strong&gt;: These are emails that are sent to a contact list to a large group of people at once.&lt;/p&gt;

&lt;p&gt;For sending emails for cold outreach or job search, send transactional emails because transactional emails feel personal and the email doesn't feel like it is coming out of a mailing list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Steps to scale Email Marketing
&lt;/h2&gt;

&lt;p&gt;1) Start slow. Send 20-30 emails per day per subdomain for a week, then increase the emails by 20-30% not more than that.&lt;/p&gt;

&lt;p&gt;2) Continue increasing the max emails sent per day on a weekly basis till you reach the max threshold.&lt;/p&gt;

&lt;p&gt;3) If Bounce rate is high, it means your IP reputation will get affected, so better to get verified Email Addresses.&lt;/p&gt;

&lt;p&gt;4) You can also do A/B testing on Subject and Body contents to track which combination generates the higher reply rate, so that you can double down using that combination.&lt;/p&gt;

&lt;p&gt;5) If your reply rate is low, it means your content is not appealing, so you need to make the content more personal and relatable for your audience to elicit a response.&lt;/p&gt;

&lt;h2&gt;
  
  
  [BONUS Section] Putting Email Marketing in Practice
&lt;/h2&gt;

&lt;p&gt;Now you have learnt all the basics of email marketing.&lt;/p&gt;

&lt;p&gt;But how to put into practice?&lt;/p&gt;

&lt;p&gt;Not to worry, 'cause I’ve created a ready-to-use N8N Automation Template that you can simply plug in with your email list and get started!&lt;/p&gt;

&lt;p&gt;You can use it to send emails at scale and track all the key metrics we’ve covered in this blog!&lt;/p&gt;

&lt;p&gt;Feel free to check it out: &lt;a href="https://checkout.dodopayments.com/buy/pdt_0Nla2fYMvuWPjqaKndEvz?quantity=1" rel="noopener noreferrer"&gt;Link&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;And that is it for this blog! If you came till the end, thank you so much. Feel free to let me know your thoughts in the comments, or visit my website to know more: &lt;a href="https://shreyastaware.me/" rel="noopener noreferrer"&gt;shreyastaware.me&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until next time,&lt;br&gt;
Shreyas&lt;/p&gt;

</description>
      <category>marketing</category>
      <category>email</category>
      <category>developers</category>
      <category>automation</category>
    </item>
    <item>
      <title>AI Engineering Explained</title>
      <dc:creator>Shreyas Taware</dc:creator>
      <pubDate>Tue, 13 Jan 2026 15:30:00 +0000</pubDate>
      <link>https://dev.to/shreyastaware/ai-engineering-explained-3036</link>
      <guid>https://dev.to/shreyastaware/ai-engineering-explained-3036</guid>
      <description>&lt;p&gt;"AI Engineer" is a new role that has emerged because of Artificial Intelligence platforms like ChatGPT, Gemini, and Claude.&lt;/p&gt;

&lt;p&gt;Therefore, it is essential that developers now master not only their core skills but also this emerging field called &lt;strong&gt;AI Engineering&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The aim of this blog is to cover essential basics of AI Engineering so that beginners have a guiding path to dive deeper into this field.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conventional AI vs Generative AI
&lt;/h3&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%2Fziql958r22lgy1zyzw3h.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%2Fziql958r22lgy1zyzw3h.jpeg" alt="Conventional AI vs Generative AI Infographic" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conventional AI&lt;/strong&gt; is mostly about making decisions or predictions from data.&lt;/p&gt;

&lt;p&gt;You give it an input, and it gives you a very specific kind of output — a label, a number, or a yes/no answer.&lt;/p&gt;

&lt;p&gt;For example, it might tell you whether an email is spam, whether a loan should be approved, or what the price of a house might be. It’s intelligent, but it’s not creative. It’s essentially learning patterns so it can make better decisions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generative AI&lt;/strong&gt; creates entirely new data based on learned patterns. So instead of just predicting an outcome, it actually creates new content.&lt;/p&gt;

&lt;p&gt;You give it a prompt, and it generates something that didn’t exist before — like text, images, code, or even audio.&lt;/p&gt;

&lt;p&gt;Models like ChatGPT don’t just choose from predefined options; they generate responses word by word based on the patterns they’ve learned from massive amounts of data.&lt;/p&gt;

&lt;p&gt;Another important difference is &lt;strong&gt;determinism&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Traditional AI&lt;/strong&gt; systems usually give you the same output for the same input. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generative AI&lt;/strong&gt; doesn’t — two prompts that look identical can still result in slightly different outputs, because the model is sampling from probabilities rather than following fixed rules.&lt;/p&gt;

&lt;h3&gt;
  
  
  Keyword Search vs Semantic Search vs AI Search
&lt;/h3&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%2F2cdxt1iwu5h1ndq0xkwq.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%2F2cdxt1iwu5h1ndq0xkwq.jpeg" alt="Keyword Search vs Semantic Search vs AI Search InfoGraphic" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Keyword Search&lt;/strong&gt; uses direct text matching, finding pages with the exact keywords you type.&lt;/p&gt;

&lt;p&gt;It is best for exact lookups, technical searches, or simple queries (e.g., "weather")&lt;/p&gt;

&lt;p&gt;Example: &lt;strong&gt;Twitter Search&lt;/strong&gt; (as of 2026) still uses traditional Keyword Search&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Semantic Search&lt;/strong&gt; understands the meaning, context, and intent behind your query (e.g., "Apple stock price" means the company, not the fruit). &lt;/p&gt;

&lt;p&gt;It uses AI, Natural Language Processing (NLP), and vector embeddings to grasp concepts and relationships.&lt;/p&gt;

&lt;p&gt;Example: &lt;strong&gt;Google Search Engine&lt;/strong&gt; uses Semantic Search at the core, although it is gearing towards AI Search.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI Search&lt;/strong&gt; interprets complex natural language, provides direct answers, and learns from interactions, often incorporating semantic understanding as its core.&lt;/p&gt;

&lt;p&gt;It delivers conversational, context-aware, and personalized results, often generating direct answers.&lt;/p&gt;

&lt;p&gt;It builds upon semantic search using advanced AI models (LLMs) and techniques like Retrieval-Augmented Generation (RAG).&lt;/p&gt;

&lt;p&gt;Example: &lt;strong&gt;OpenAI ChatGPT&lt;/strong&gt;, &lt;strong&gt;Google Gemini&lt;/strong&gt;, &lt;strong&gt;Anthropic Claude&lt;/strong&gt;, &lt;strong&gt;xAI Grok&lt;/strong&gt; are a few of the notable ones. &lt;/p&gt;

&lt;h3&gt;
  
  
  Context vs Memory
&lt;/h3&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%2Fy9wnw1h7qs92gau00rtg.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%2Fy9wnw1h7qs92gau00rtg.png" alt="Context vs Memory Infographic" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Context&lt;/strong&gt; is the immediate, temporary information within a session that an AI uses for real-time understanding, while&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Memory&lt;/strong&gt; is the broader, persistent system (like databases or user profiles) that stores long-term knowledge, past interactions, and facts, allowing for continuity and personalized actions beyond a single session, with context often being dynamically retrieved from memory to enrich the current interaction&lt;/p&gt;

&lt;h3&gt;
  
  
  LLM vs AI Agent
&lt;/h3&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%2Fx8d4lf1y0sgjksft8ysx.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%2Fx8d4lf1y0sgjksft8ysx.png" alt="LLM vs AI Agent Infographic" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;An &lt;strong&gt;LLM&lt;/strong&gt; (Large Language Model) is the "brain" that understands and generates text, while &lt;/p&gt;

&lt;p&gt;an &lt;strong&gt;AI Agent&lt;/strong&gt; is a system that uses an LLM as its core to take action, plan, use tools (APIs, code), and complete multi-step tasks autonomously, acting like an orchestrator with memory and decision-making loops, rather than just answering prompts. &lt;/p&gt;

&lt;p&gt;Think of an LLM as a smart assistant who can write a recipe (text output), and &lt;/p&gt;

&lt;p&gt;an Agent as a chef who reads the recipe, uses kitchen tools (APIs, software), and actually cooks the meal (completed task). &lt;/p&gt;

&lt;h3&gt;
  
  
  Vector Database
&lt;/h3&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%2Fq05egvxa9tvl4ieww7fl.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%2Fq05egvxa9tvl4ieww7fl.png" alt="Vector Database Examples" width="800" height="476"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A &lt;u&gt;vector database&lt;/u&gt; stores and manages data as vector embeddings, which are numerical representations of unstructured data like text, images, and audio.&lt;/p&gt;

&lt;p&gt;They are different from traditional databases in that&lt;/p&gt;

&lt;p&gt;A &lt;u&gt;Traditional Database (SQL/ NoSQL)&lt;/u&gt; is a system designed for the storage and retrieval of scalar data (text, numbers, booleans), optimized for &lt;strong&gt;deterministic&lt;/strong&gt; and &lt;strong&gt;exact-match queries&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Vector Databases&lt;/u&gt; are engineered for &lt;strong&gt;probabilistic retrieval&lt;/strong&gt; in high-dimensional vector space. They store unstructured data as dense vector embeddings generated by deep learning models (e.g., Transformers).&lt;/p&gt;

&lt;p&gt;Vector databases store and search high-dimensional data (like text, images, audio) using unstructured embeddings (vectors/arrays of floats).&lt;/p&gt;

&lt;p&gt;They are a critical component for modern AI applications, powering tools like recommendation engines, semantic search, and large language models (LLMs). &lt;/p&gt;

&lt;p&gt;Example Vector DBs include &lt;strong&gt;Pinecone, Chroma, Weaviate, Qdrant, pgvector&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&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%2Fb1mrrxjqzkd5kihjcob5.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%2Fb1mrrxjqzkd5kihjcob5.png" alt="Vector Database Infographic" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vector Embeddings:&lt;/strong&gt; Machine learning models convert data into high-dimensional vectors (arrays of numbers) where each dimension represents a feature of the data. For example, an image of a car could be represented by vectors for its color, number of doors, and size.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Indexing:&lt;/strong&gt; The vectors are organized into a special index within the database. This index groups similar vectors together, so items with similar characteristics are stored close to each other.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Similarity Search:&lt;/strong&gt; When a query is made (e.g., a user searches for a car image), the database converts the query (data received in the form of text, image, etc) into a numerical vector embedding. &lt;/p&gt;

&lt;p&gt;The index of that vector is used to quickly find the "nearest neighbors" – the most similar vectors to the query vector.&lt;/p&gt;

&lt;p&gt;The items with the closest vector embeddings are found out in a high-dimensional space using distance metrics (like &lt;strong&gt;Cosine Similarity&lt;/strong&gt; or &lt;strong&gt;Euclidean distance&lt;/strong&gt;) to identify similar items.&lt;/p&gt;

&lt;p&gt;To do this matching efficiently, libraries like &lt;a href="https://ai.meta.com/tools/faiss/" rel="noopener noreferrer"&gt;FAISS&lt;/a&gt; are used which allow efficient similarity search and clustering of dense vectors. &lt;/p&gt;

&lt;p&gt;Example Algorithms include &lt;strong&gt;k-Nearest Neighbors (k-NN)&lt;/strong&gt; and more efficient &lt;strong&gt;Approximate Nearest Neighbor (ANN)&lt;/strong&gt; methods like &lt;strong&gt;Hierarchical Navigable Small World (HNSW)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Result:&lt;/strong&gt; The database returns the most relevant results based on this similarity, rather than just matching keywords. &lt;/p&gt;

&lt;h3&gt;
  
  
  What is RAG?
&lt;/h3&gt;

&lt;p&gt;RAG stands for Retrieval Augmented Generation. There are four steps in a RAG:&lt;/p&gt;

&lt;p&gt;1) &lt;strong&gt;Indexing&lt;/strong&gt;: This foundational step involves preparing the external knowledge base for efficient search and retrieval&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Data Sourcing&lt;/em&gt;&lt;/strong&gt;: Raw data (e.g., documents, web pages, database records) is crawled and collected from various data sources and made to ready for data ingestion.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Chunking&lt;/em&gt;&lt;/strong&gt;: The data collected is then ingested, parsed, and broken down into smaller, manageable pieces called "chunks". &lt;/p&gt;

&lt;p&gt;This process is called &lt;u&gt;Chunking&lt;/u&gt;.&lt;/p&gt;

&lt;p&gt;This process is crucial because LLMs have limits on how much text they can process at once (context window), and smaller chunks allow for more precise information retrieval.&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%2F2tsdvdag45ksu9y3t7ky.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%2F2tsdvdag45ksu9y3t7ky.png" alt="Indexing Infographic" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Embedding Generation&lt;/strong&gt;&lt;/em&gt;: Each text chunk is converted into a numerical vectors called a vector embedding using an embedding model. These embeddings capture the semantic meaning of the text.&lt;/p&gt;

&lt;p&gt;Some example &lt;strong&gt;Embedding Models&lt;/strong&gt; are &lt;strong&gt;Word2Vec&lt;/strong&gt; for words, &lt;strong&gt;BERT&lt;/strong&gt; for context-aware text, and &lt;strong&gt;Sentence-BERT (SBERT)&lt;/strong&gt; for sentence similarity.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Vector Storage&lt;/strong&gt;&lt;/em&gt;: The resulting vector embeddings are stored in a specialized database, known as a vector database (or vector store), which is optimized for rapid similarity searches. &lt;/p&gt;

&lt;p&gt;2) &lt;strong&gt;Retrieval&lt;/strong&gt;: When a user submits a query, the RAG system searches the prepared knowledge base for relevant information. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Query Encoding&lt;/em&gt;&lt;/strong&gt;: The user's input query is also converted into a vector embedding using the same embedding model used during indexing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Similarity Search&lt;/em&gt;&lt;/strong&gt;: The query's vector is used to perform a similarity search within the vector database to find the top "k" most semantically similar data chunks. This process efficiently identifies the most pertinent information from the external source. &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%2Ftvksjnaftjnruz9wwp1h.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%2Ftvksjnaftjnruz9wwp1h.png" alt="Retrieval Augmented Generation Infographic" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;3) &lt;strong&gt;Augmentation&lt;/strong&gt;: The retrieved chunks of information are then used to create a more comprehensive prompt for the LLM. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Contextual Fusion&lt;/em&gt;&lt;/strong&gt;: The system takes the original user query and the retrieved documents and combines them into a single, structured prompt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Prompt Engineering&lt;/em&gt;&lt;/strong&gt;: The prompt is engineered to provide clear instructions to the LLM, effectively telling it to use the provided context to answer the question. &lt;/p&gt;

&lt;p&gt;For example, the prompt might be structured as: "Context: [Retrieved Documents]. User Question: [Original Query]. Please provide an answer based solely on the context provided." &lt;/p&gt;

&lt;p&gt;4) &lt;strong&gt;Generation&lt;/strong&gt;: In the final step, the augmented prompt is sent to the Large Language Model to generate the final output. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;LLM Processing&lt;/em&gt;&lt;/strong&gt;: The LLM uses its inherent knowledge combined with the specific, relevant context provided in the augmented prompt to formulate an accurate and grounded response.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Response Delivery&lt;/em&gt;&lt;/strong&gt;: The system returns the generated, factually accurate, and context-aware answer to the user. This process helps mitigate common issues with standard LLMs like generating incorrect information or "hallucinations". &lt;/p&gt;

&lt;h3&gt;
  
  
  What is an Agentic Workflow?
&lt;/h3&gt;

&lt;p&gt;An &lt;u&gt;agentic workflow&lt;/u&gt; is a dynamic, AI-driven process where autonomous agents plan, decide, and execute complex, multi-step tasks with minimal human intervention, adapting in real-time to achieve a goal.&lt;/p&gt;

&lt;p&gt;Unlike static workflows, they use AI's reasoning and tool-use capabilities to break down problems, select actions, and self-correct, enabling greater autonomy and efficiency in automated processes, from IT support to customer service&lt;/p&gt;

&lt;h3&gt;
  
  
  Langchain vs LangGraph vs LangSmith
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;LangChain&lt;/strong&gt;: The libraries (code) to build the app.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LangGraph&lt;/strong&gt;: The architecture (logic) to control complex agents and loops.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LangSmith&lt;/strong&gt;: The platform (dashboard) to test, debug, and monitor the app.&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%2Fpo5uuk0huum7kilfb45n.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%2Fpo5uuk0huum7kilfb45n.png" alt="Langchain versus LangGraph versus LangSmith Infographic" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LangChain&lt;/strong&gt; is a framework that simplifies building LLM applications by providing abstractions. It connects LLMs (like GPT-4) to other data sources and tools.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Core Concept&lt;/u&gt;: &lt;strong&gt;"Chains" (DAGs - Directed Acyclic Graphs)&lt;/strong&gt;. It is excellent for linear workflows where step A leads to step B, which leads to step C.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LangGraph&lt;/strong&gt; is a library built on top of LangChain specifically for building agents and stateful applications.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Core Concept&lt;/u&gt;: &lt;strong&gt;"Cyclic Graphs."&lt;/strong&gt; Unlike LangChain's linear chains, LangGraph allows loops. This enables an agent to try a task, fail, critique its own work, and try again (a loop) before finishing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;LangSmith&lt;/strong&gt; is a developer platform (cloud service) for observability, testing, and fine-tuning. It is not a code library you import to build logic; it is a dashboard you log into.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Core Concept&lt;/u&gt;: &lt;strong&gt;"Tracing and Evaluation."&lt;/strong&gt; LLMs are "black boxes"—it is hard to know why they failed. LangSmith records every step the AI took so you can inspect it.&lt;/p&gt;




&lt;p&gt;And that is it, these are all the concepts required for you to get started in the field of AI Engineering.&lt;/p&gt;

&lt;p&gt;To explore and take your knowledge further, feel free to explore libraries like LangGraph/ Langchain, FAISS, and Vector Databases like Pinecone, Weaviate.&lt;/p&gt;

&lt;p&gt;If you came till the end, thank you so much. Feel free to let me know your thoughts in the comments, or visit my website to know more: &lt;a href="https://shreyastaware.me/" rel="noopener noreferrer"&gt;shreyastaware.me&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until next time,&lt;br&gt;
Shreyas&lt;/p&gt;

</description>
      <category>programming</category>
      <category>ai</category>
      <category>software</category>
      <category>interview</category>
    </item>
    <item>
      <title>Everything about Docker – Basics, MCPs, and more...</title>
      <dc:creator>Shreyas Taware</dc:creator>
      <pubDate>Fri, 03 Oct 2025 15:42:18 +0000</pubDate>
      <link>https://dev.to/shreyastaware/everything-about-docker-560i</link>
      <guid>https://dev.to/shreyastaware/everything-about-docker-560i</guid>
      <description>&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%2Fguoqq4ioyxmethd4lrra.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%2Fguoqq4ioyxmethd4lrra.png" alt="An image which has Docker logo, along with the text " width="659" height="440"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you are new to Docker or to Docker's newly released agentic features, this is a guide to help you understand it in the most jargon-free language as possible.&lt;/p&gt;

&lt;p&gt;So, what is Docker?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker&lt;/strong&gt; is a platform for developing, shipping, and running applications.&lt;/p&gt;

&lt;p&gt;There are three main concepts in Docker:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Container&lt;/strong&gt; - Consider it as a smaller version of a computer but specific to the hardware it was created on. If you know what a Virtual Machine or VM is, a Container is just like that except its lightweight and shares resources with the computer while keeping the processes separate.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Image&lt;/strong&gt; - It is a set of instructions that when run create a container. You store those instructions in a file called as "Dockerfile".&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Registry&lt;/strong&gt; - It is a location for storing and sharing container images.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Examples include &lt;a href="https://hub.docker.com" rel="noopener noreferrer"&gt;Docker Hub&lt;/a&gt;, Amazon &lt;a href="https://aws.amazon.com/ecr/" rel="noopener noreferrer"&gt;ECR&lt;/a&gt;, Azure &lt;a href="https://azure.microsoft.com/en-in/products/container-registry" rel="noopener noreferrer"&gt;ACR&lt;/a&gt;, Google's &lt;a href="https://cloud.google.com/artifact-registry" rel="noopener noreferrer"&gt;GCR&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can also create your own registry locally or shared it within a specific network and thus keep it privy to only that network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Important Concept Alert&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Whenever you create a Docker Container and run it, it serves a specific purpose: it might run a database, or keep a backend server running, or run a cron job.&lt;/p&gt;

&lt;p&gt;But let's say we create our database in one container, and our backend server is in another.&lt;/p&gt;

&lt;p&gt;Then we'll have to manually figure out the port connections from the database container to the backend one, thus adding more work and slowing down our deployment timelines.&lt;/p&gt;

&lt;p&gt;This is when Docker Compose comes in.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker Compose&lt;/strong&gt;: It is a command using which you can define multiple docker containers and store their configurations in a single YAML file.&lt;/p&gt;

&lt;p&gt;This way all the containers get defined individually while "docker compose" takes care of the headache of connecting them.&lt;/p&gt;

&lt;p&gt;–––&lt;/p&gt;

&lt;p&gt;Before moving on to advanced concepts in Docker, here are few pre-requisites:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Model Context Protocol (MCP)&lt;/strong&gt;: It is a standardized open-source protocol for connecting AI applications to external systems and data sources.&lt;/p&gt;

&lt;p&gt;Examples - ChatGPT can access your Notion Chats using Notion MCP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ask Gordon&lt;/strong&gt; - It is the newly released AI-powered assistant specifically for Docker Desktop &amp;amp; Docker CLI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker Model Runner (DMR)&lt;/strong&gt;: It lets you run, manage, and deploy AI models using Docker.&lt;/p&gt;

&lt;p&gt;–––&lt;/p&gt;

&lt;p&gt;Agentic workflows are created when AI tools are connected to disparate tools - and those tools require MCPs to orchestrate the agents's tasks.&lt;/p&gt;

&lt;p&gt;To orchestrate MCPs, we need to understand about the MCP architecture.&lt;/p&gt;

&lt;p&gt;MCP follows a client-server architecture that enables a standardized communication between AI applications and external tools.&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%2Fvr46j2ecfub47jvqisak.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%2Fvr46j2ecfub47jvqisak.png" alt="MCP Client connecting MCP Server and in-turn to final data source (Github in this case)" width="578" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Servers&lt;/strong&gt; - These are specialized programs that provide specific tools and capabilities to AI models through the Model Context Protocol.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Clients&lt;/strong&gt; - These act as the bridge between AI applications and MCP servers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Gateway&lt;/strong&gt; - It is Docker's open-source solution which connects MCP servers to MCP clients.&lt;/p&gt;

&lt;p&gt;We can connect one MCP client with multiple MCP servers, and conversly one MCP server with multiple MCP clients.&lt;/p&gt;

&lt;p&gt;Thus, MCP clients and MCP servers have a many-to-many relationship, and MCP Gateway is what connects these two. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Catalog&lt;/strong&gt; - It is what hosts MCP servers.&lt;/p&gt;

&lt;p&gt;MCP Clients connect through MCP Gateway to access the cataloged servers.&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%2Fcnnafzla8d8eqr5vy9b9.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%2Fcnnafzla8d8eqr5vy9b9.png" alt="An image depicting how IDEs can connect to MCP Servers and how MCP servers are connected using the MCP catalog" width="594" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP Toolkit&lt;/strong&gt; - It is a gateway that lets you set up, manage, and run containerized MCP servers and connect them to AI agents.&lt;/p&gt;

&lt;p&gt;Depending on the MCP server, the tools it provides might run within the same container as the server or in dedicated containers:&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%2Fexubtmrtpw652d522tep.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%2Fexubtmrtpw652d522tep.png" alt="Single Container" width="548" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Below you can see, multiple servers being spawned depending upon the operation:&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%2Fcplbotnt6i7t1tk8132i.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%2Fcplbotnt6i7t1tk8132i.png" alt="Separate Containers" width="672" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docker Hub MCP server&lt;/strong&gt;: It is a MCP server that interfaces with Docker Hub APIs to make rich image metadata accessible to LLMs thus enabling intelligent parsing and discovery of your Docker containers.&lt;/p&gt;

&lt;p&gt;And that is it, these are all the the concepts of Docker you needed to know to get started to tinkering with MCPs using your favourite code editors and AI tools.&lt;/p&gt;

&lt;p&gt;So, what are you waiting for?&lt;/p&gt;

&lt;p&gt;–––&lt;/p&gt;

&lt;p&gt;If you came till the end, thank you! This is just my second blog on  the Dev platform!&lt;/p&gt;

&lt;p&gt;If you liked this blog, please let me know in the comments!&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%2Fivf72wfrgyemjnzlh2yb.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%2Fivf72wfrgyemjnzlh2yb.png" alt="Meme" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Until next time,&lt;br&gt;
Shreyas&lt;/p&gt;

</description>
      <category>docker</category>
      <category>mcp</category>
    </item>
    <item>
      <title>14 CS fundamental questions to prepare for your next interview &amp; not sound like a vibe-coder!</title>
      <dc:creator>Shreyas Taware</dc:creator>
      <pubDate>Thu, 04 Sep 2025 16:36:45 +0000</pubDate>
      <link>https://dev.to/shreyastaware/14-cs-fundamental-questions-to-prepare-for-your-next-interview-not-sound-like-a-vibe-coder-47ho</link>
      <guid>https://dev.to/shreyastaware/14-cs-fundamental-questions-to-prepare-for-your-next-interview-not-sound-like-a-vibe-coder-47ho</guid>
      <description>&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%2Fug1d6sw8vmdrv4a6p9hm.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%2Fug1d6sw8vmdrv4a6p9hm.png" alt="On the left, a broke vibe-coder is show. On the right, a successful CS engineer working at a big silicon valley firm is shown." width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Optimizing Program Performance
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Is a switch statement always more efficient than a sequence of if-else statements?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How much overhead is incurred by a function call?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Is a while loop more efficient than a for loop?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Are pointer references more efficient than array indexes?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why does our loop run so much faster if we sum into a local variable instead of an argument that is passed by reference?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;How can a function run faster when we simply rearrange the parentheses in an arithmetic expression?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Understanding link-time errors
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What does it mean when the linker reports that it cannot resolve a reference?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is the difference between a static variable and a global variable?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What happens if you define two global variables in different C files with the same name?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is the difference between a static library and a dynamic library?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Why does it matter what order we list libraries on the command line?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And scariest of all, why do some linker-related errors not appear until run time?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Avoiding security holes
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;What are &lt;em&gt;buffer overflow vulnerabilities&lt;/em&gt;?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;What is the program stack?&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>programming</category>
      <category>computerscience</category>
      <category>c</category>
    </item>
  </channel>
</rss>
