<?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: Dev Learning Tools</title>
    <description>The latest articles on DEV Community by Dev Learning Tools (@devlearningtools).</description>
    <link>https://dev.to/devlearningtools</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%2F4103123%2F53ba1908-d525-4843-bf04-4d51c280efb3.png</url>
      <title>DEV Community: Dev Learning Tools</title>
      <link>https://dev.to/devlearningtools</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devlearningtools"/>
    <language>en</language>
    <item>
      <title>My Docker Container Keeps Exiting. Here's the Checklist I Use</title>
      <dc:creator>Dev Learning Tools</dc:creator>
      <pubDate>Mon, 05 Oct 2026 08:48:13 +0000</pubDate>
      <link>https://dev.to/devlearningtools/my-docker-container-keeps-exiting-heres-the-checklist-i-use-1g67</link>
      <guid>https://dev.to/devlearningtools/my-docker-container-keeps-exiting-heres-the-checklist-i-use-1g67</guid>
      <description>&lt;p&gt;You ran &lt;code&gt;docker run&lt;/code&gt;, the container appeared for a second, and then it was gone. Or you ran &lt;code&gt;docker ps&lt;/code&gt; and nothing was there.&lt;/p&gt;

&lt;p&gt;This happens to almost everyone who starts with Docker. The good news is that the cause is almost always one of a few things, and you can find it in about two minutes with the same steps every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: Check the status
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker ps &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;docker ps&lt;/code&gt; only shows running containers. &lt;code&gt;docker ps -a&lt;/code&gt; shows stopped ones too. Look at the &lt;code&gt;STATUS&lt;/code&gt; column. If it says &lt;code&gt;Exited (1)&lt;/code&gt; or another non-zero number, the program inside crashed. If it says &lt;code&gt;Exited (0)&lt;/code&gt;, the program finished normally, which often means it wasn't meant to exit at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: Read the logs
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker logs &amp;lt;container-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This shows what the program printed before it stopped. The last few lines usually name the problem: a missing file, a wrong password, or a missing environment variable.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: Inspect the configuration
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker inspect &amp;lt;container-name&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This shows the command the container actually ran, its environment variables, and its mounts. Many problems come from a setting that didn't reach the container the way you expected.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: Fix one thing and try again
&lt;/h2&gt;

&lt;p&gt;Change one thing in your command or Dockerfile, remove the old container, and run it again:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker &lt;span class="nb"&gt;rm&lt;/span&gt; &amp;lt;container-name&amp;gt;
docker run &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="nt"&gt;--name&lt;/span&gt; myapp &lt;span class="nt"&gt;-p&lt;/span&gt; 8000:8000 my-python-app
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Changing one thing at a time makes it obvious which change fixed it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The usual suspects
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Symptom&lt;/th&gt;
&lt;th&gt;Likely cause&lt;/th&gt;
&lt;th&gt;What to try&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Exits immediately&lt;/td&gt;
&lt;td&gt;The main program finished or crashed&lt;/td&gt;
&lt;td&gt;Check the logs, and make sure the program runs in the foreground&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;"Port already in use"&lt;/td&gt;
&lt;td&gt;Another program uses the same port&lt;/td&gt;
&lt;td&gt;Use a different host port, like &lt;code&gt;-p 8081:8000&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Data disappears&lt;/td&gt;
&lt;td&gt;Data was written inside the container&lt;/td&gt;
&lt;td&gt;Mount a volume with &lt;code&gt;-v&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Can't reach another container by name&lt;/td&gt;
&lt;td&gt;Both are on the default network&lt;/td&gt;
&lt;td&gt;Create a network with &lt;code&gt;docker network create&lt;/code&gt; and attach both&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Code changes don't show up&lt;/td&gt;
&lt;td&gt;Old image or old container&lt;/td&gt;
&lt;td&gt;Rebuild with &lt;code&gt;docker build&lt;/code&gt;, then run a new container&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  One warning before you clean up
&lt;/h2&gt;

&lt;p&gt;When the disk fills up, it's tempting to run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;docker system prune &lt;span class="nt"&gt;-a&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This removes every unused image, not only the broken ones. Run &lt;code&gt;docker system df&lt;/code&gt; first to see what's using space, and read the prompt before you confirm.&lt;/p&gt;

&lt;h2&gt;
  
  
  Going deeper
&lt;/h2&gt;

&lt;p&gt;I covered this in more detail in a free beginner course on Docker, with a troubleshooting lesson and the commands in one place: &lt;strong&gt;&lt;a href="https://www.devlearningtools.com/learn/docker" rel="noopener noreferrer"&gt;https://www.devlearningtools.com/learn/docker&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;What error did you hit the first time your container exited? Share it in the comments and I'll help you read the logs.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>beginners</category>
      <category>devops</category>
      <category>debugging</category>
    </item>
    <item>
      <title>🔐 𝗛𝗧𝗧𝗣 𝘃𝘀 𝗛𝗧𝗧𝗣𝗦 — 𝗪𝗵𝗮𝘁’𝘀 𝘁𝗵𝗲 𝗥𝗲𝗮𝗹 𝗗𝗶𝗳𝗳𝗲𝗿𝗲𝗻𝗰𝗲?</title>
      <dc:creator>Dev Learning Tools</dc:creator>
      <pubDate>Wed, 30 Sep 2026 12:37:17 +0000</pubDate>
      <link>https://dev.to/devlearningtools/--157l</link>
      <guid>https://dev.to/devlearningtools/--157l</guid>
      <description>&lt;p&gt;Have you ever wondered what actually happens when you see the 🔒 padlock in your browser?&lt;/p&gt;

&lt;p&gt;𝗛𝗧𝗧𝗣 and 𝗛𝗧𝗧𝗣𝗦 may look similar, but there’s a major difference when it comes to security.&lt;/p&gt;

&lt;p&gt;𝗜𝗻 𝘁𝗵𝗶𝘀 𝗴𝘂𝗶𝗱𝗲, 𝘄𝗲 𝗯𝗿𝗲𝗮𝗸 𝗶𝘁 𝗱𝗼𝘄𝗻 𝘄𝗶𝘁𝗵 𝗿𝗲𝗮𝗹 𝗲𝘅𝗮𝗺𝗽𝗹𝗲𝘀:&lt;/p&gt;

&lt;p&gt;→ How HTTP sends data&lt;br&gt;
→ Why HTTP data can be exposed&lt;br&gt;
→ How HTTPS protects communication&lt;br&gt;
→ What TLS actually does&lt;br&gt;
→ How the TLS handshake works&lt;br&gt;
→ Encryption, Authentication &amp;amp; Integrity&lt;br&gt;
→ Real HTTP vs HTTPS examples&lt;br&gt;
→ Common HTTPS mistakes developers should avoid&lt;br&gt;
→ HTTP vs HTTPS interview questions&lt;/p&gt;

&lt;p&gt;💡 𝗞𝗲𝘆 𝘁𝗮𝗸𝗲𝗮𝘄𝗮𝘆:&lt;/p&gt;

&lt;p&gt;HTTPS protects the connection between the client and server, but HTTPS alone does NOT make an application completely secure.&lt;/p&gt;

&lt;p&gt;Issues such as SQL Injection, XSS, weak passwords, vulnerable dependencies, and insecure application logic are separate security concerns.&lt;/p&gt;

&lt;p&gt;🚀 𝗜𝗳 𝘆𝗼𝘂’𝗿𝗲 𝗮 𝗱𝗲𝘃𝗲𝗹𝗼𝗽𝗲𝗿, understanding what happens behind that 🔒 padlock is essential.&lt;/p&gt;

&lt;p&gt;📖 𝗥𝗲𝗮𝗱 𝘁𝗵𝗲 𝗳𝘂𝗹𝗹 𝗴𝘂𝗶𝗱𝗲:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.devlearningtools.com/blog/http-vs-https-explained" rel="noopener noreferrer"&gt;https://www.devlearningtools.com/blog/http-vs-https-explained&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;𝗗𝗲𝘃𝗟𝗲𝗮𝗿𝗻𝗶𝗻𝗴 𝗧𝗼𝗼𝗹𝘀&lt;br&gt;
Learn. Build. Grow. 🚀&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>development</category>
      <category>http</category>
    </item>
    <item>
      <title>10 Essential Programming Tools Every Developer Should Use</title>
      <dc:creator>Dev Learning Tools</dc:creator>
      <pubDate>Fri, 25 Sep 2026 17:40:02 +0000</pubDate>
      <link>https://dev.to/devlearningtools/10-essential-programming-tools-every-developer-should-use-1ln0</link>
      <guid>https://dev.to/devlearningtools/10-essential-programming-tools-every-developer-should-use-1ln0</guid>
      <description>&lt;h1&gt;
  
  
  10 Essential Programming Tools Every Developer Should Use
&lt;/h1&gt;

&lt;p&gt;Whether you're a beginner learning to code or an experienced developer building production applications, the right developer tools can save time, reduce errors, and make everyday programming tasks much easier.&lt;/p&gt;

&lt;p&gt;Here are 10 useful programming tools worth adding to your daily toolkit — what each one does, and a live example for each.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. JSON Formatter &amp;amp; Validator
&lt;/h2&gt;

&lt;p&gt;A formatter makes poorly formatted JSON readable; a validator flags syntax errors before they cause a confusing runtime bug.&lt;/p&gt;

&lt;p&gt;{"name":"John","age":30,"developer":true}&lt;br&gt;
↓&lt;br&gt;
{&lt;br&gt;
  "name": "John",&lt;br&gt;
  "age": 30,&lt;br&gt;
  "developer": true&lt;br&gt;
}&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Base64 Encoder &amp;amp; Decoder
&lt;/h2&gt;

&lt;p&gt;Base64 represents binary data as text. It doesn't encrypt anything — just re-encodes bytes into a text-safe form.&lt;/p&gt;

&lt;p&gt;Hello World&lt;br&gt;
↓ encode&lt;br&gt;
SGVsbG8gV29ybGQ=&lt;/p&gt;

&lt;h2&gt;
  
  
  3. JWT Decoder
&lt;/h2&gt;

&lt;p&gt;A JWT has three dot-separated parts: HEADER.PAYLOAD.SIGNATURE. Decoding reveals the payload:&lt;/p&gt;

&lt;p&gt;{ "sub": "12345", "name": "John", "role": "admin" }&lt;/p&gt;

&lt;p&gt;Never paste a real production token into any online tool — decoding only reveals the claims, it never verifies the signature.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. URL Encoder &amp;amp; Decoder
&lt;/h2&gt;

&lt;p&gt;hello world&lt;br&gt;
↓ encode&lt;br&gt;
hello%20world&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Regular Expression Tester
&lt;/h2&gt;

&lt;p&gt;Pattern:  ^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+.[A-Za-z]{2,}$&lt;br&gt;
Test:     &lt;a href="mailto:developer@example.com"&gt;developer@example.com&lt;/a&gt;  →  match&lt;/p&gt;

&lt;h2&gt;
  
  
  6. UUID Generator
&lt;/h2&gt;

&lt;p&gt;550e8400-e29b-41d4-a716-446655440000&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Hash Generator
&lt;/h2&gt;

&lt;p&gt;"Hello World" through three algorithms:&lt;/p&gt;

&lt;p&gt;MD5:     b10a8db164e0754105b7a99be72e3fe5&lt;br&gt;
SHA-1:   0a4d55a8d778e5022fab701977c5d840bbc486d0&lt;br&gt;
SHA-256: a591a6d40bf420404a011733cfb7b190d62c65bf0bcda32b57b277d9ad9f146e&lt;/p&gt;

&lt;p&gt;Hashing ≠ encryption. MD5/SHA-1 are broken for password storage — fine for checksums only.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Unix Timestamp Converter
&lt;/h2&gt;

&lt;p&gt;Converts numbers like 1780000000 to a real date, and back — useful for API responses, logs, and tokens.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. SQL Formatter
&lt;/h2&gt;

&lt;p&gt;SELECT u.name,o.id,o.total FROM users u JOIN orders o ON u.id=o.user_id WHERE o.total&amp;gt;100 ORDER BY o.total DESC;&lt;br&gt;
↓&lt;br&gt;
SELECT&lt;br&gt;
    u.name,&lt;br&gt;
    o.id,&lt;br&gt;
    o.total&lt;br&gt;
FROM users u&lt;br&gt;
JOIN orders o&lt;br&gt;
    ON u.id = o.user_id&lt;br&gt;
WHERE o.total &amp;gt; 100&lt;br&gt;
ORDER BY o.total DESC;&lt;/p&gt;

&lt;h2&gt;
  
  
  10. HTML, CSS &amp;amp; JavaScript Minifier
&lt;/h2&gt;

&lt;p&gt;function hello() {&lt;br&gt;
    console.log("Hello World");&lt;br&gt;
}&lt;br&gt;
↓&lt;br&gt;
function hello(){console.log("Hello World")}&lt;/p&gt;

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

&lt;p&gt;A meaningful chunk of real development time goes into debugging data, inspecting API responses, converting formats, and generating identifiers. Small utilities eliminate that repetitive work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try Them All
&lt;/h2&gt;

&lt;p&gt;Free, browser-based versions of all 10 (plus more) at &lt;a href="https://www.devlearningtools.com/tools" rel="noopener noreferrer"&gt;Dev Learning Tools&lt;/a&gt; — no signup, no upload, everything runs client-side. Full write-up &lt;a href="https://www.devlearningtools.com/blog/essential-programming-tools-developers" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;What's in your daily toolkit that I missed?&lt;/p&gt;

</description>
      <category>programmingtools</category>
      <category>developertools</category>
      <category>tools</category>
      <category>webdev</category>
    </item>
    <item>
      <title>ColdFusion 2023 Update 25 is out (Sept 23) — no CVEs this time, but real fixes worth knowing about</title>
      <dc:creator>Dev Learning Tools</dc:creator>
      <pubDate>Thu, 24 Sep 2026 08:26:42 +0000</pubDate>
      <link>https://dev.to/devlearningtools/coldfusion-2023-update-25-is-out-sept-23-no-cves-this-time-but-real-fixes-worth-knowing-about-5719</link>
      <guid>https://dev.to/devlearningtools/coldfusion-2023-update-25-is-out-sept-23-no-cves-this-time-but-real-fixes-worth-knowing-about-5719</guid>
      <description>&lt;p&gt;Adobe shipped Update 25 for the 2023 release yesterday. Unlike Update 24 (which was a coordinated security patch across both supported versions), this one's classified as a general maintenance release, no CVEs listed.&lt;/p&gt;

&lt;p&gt;What's actually in it, for anyone who wants the short version before digging into the full release notes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;40+ OEM library upgrades: Log4j 2.25.4, Jetty 9.4.58, Apache Maven 3.9.16, several Apache Commons libs&lt;/li&gt;
&lt;li&gt;Query-of-Queries fixes: better datatype handling and more consistent null-value behavior for varchar columns, plus improved column type metadata preservation&lt;/li&gt;
&lt;li&gt;SFTP cipher negotiation fixes: if you're connecting to an older SFTP server and hitting cipher failures, this is relevant&lt;/li&gt;
&lt;li&gt;27 bug fixes total across the Administrator (mail server connection persistence, LDAP/AD group auth), core runtime, database, Solr, and cfschedule ("Last Run" tracking accuracy)&lt;/li&gt;
&lt;li&gt;Spread operator fix for nested struct references&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Nothing urgent since there's no CVE attached, but the library upgrades and Query-of-Queries fixes are worth not sitting on indefinitely.&lt;/p&gt;

&lt;p&gt;Full release notes: &lt;a href="https://guides.adobe.com/coldfusion/en/docs/install-and-configure-coldfusion/coldfusion-2023-release-update-25.html" rel="noopener noreferrer"&gt;https://guides.adobe.com/coldfusion/en/docs/install-and-configure-coldfusion/coldfusion-2023-release-update-25.html&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I wrote up a slightly more detailed breakdown here if useful: &lt;a href="https://www.devlearningtools.com/blog/coldfusion-2023-release-update-25" rel="noopener noreferrer"&gt;https://www.devlearningtools.com/blog/coldfusion-2023-release-update-25&lt;/a&gt; — full disclosure, that's my own site, a free CFML course + tools, not trying to hide that.&lt;/p&gt;

</description>
      <category>coldfusion</category>
      <category>programming</category>
      <category>cf2023</category>
      <category>productivity</category>
    </item>
    <item>
      <title>AI Coding Agents Explained (With a Real Example)</title>
      <dc:creator>Dev Learning Tools</dc:creator>
      <pubDate>Wed, 09 Sep 2026 17:48:16 +0000</pubDate>
      <link>https://dev.to/devlearningtools/ai-coding-agents-explained-with-a-real-example-12k2</link>
      <guid>https://dev.to/devlearningtools/ai-coding-agents-explained-with-a-real-example-12k2</guid>
      <description>&lt;p&gt;AI coding agents have moved past autocomplete: they can read an entire codebase, plan a multi-file change, write it, verify it, and ship it, mostly without step-by-step approval.&lt;/p&gt;

&lt;p&gt;I wrote up how that actually looks day to day, since this exact site (devlearningtools.com) is built entirely through a terminal agent (Claude Code): request comes in as plain language, agent reads the existing code first, plans the change, writes it, verifies with a real build, then commits and confirms it's live.&lt;/p&gt;

&lt;p&gt;Also compares Claude Code, Codex CLI, Gemini CLI, Cursor, Copilot, and Windsurf, plus a Common Mistakes section from real experience.&lt;/p&gt;

&lt;p&gt;Full writeup: &lt;a href="https://www.devlearningtools.com/blog/ai-coding-agents-explained" rel="noopener noreferrer"&gt;https://www.devlearningtools.com/blog/ai-coding-agents-explained&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Curious what everyone else's actual workflow looks like.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agentskills</category>
      <category>programming</category>
      <category>claude</category>
    </item>
    <item>
      <title>ColdFusion's September 2026 Security Update: What 2025 Update 13 and 2023 Update 24 Actually Fix</title>
      <dc:creator>Dev Learning Tools</dc:creator>
      <pubDate>Wed, 09 Sep 2026 12:55:36 +0000</pubDate>
      <link>https://dev.to/devlearningtools/coldfusions-september-2026-security-update-what-2025-update-13-and-2023-update-24-actually-fix-3730</link>
      <guid>https://dev.to/devlearningtools/coldfusions-september-2026-security-update-what-2025-update-13-and-2023-update-24-actually-fix-3730</guid>
      <description>&lt;p&gt;Adobe recently released ColdFusion (2025 release) Update 13 (build 2025.0.13.331960) and ColdFusion (2023 release) Update 24 (build 2023.0.24.330957) as a coordinated security update across both currently supported versions.&lt;/p&gt;

&lt;p&gt;According to the release notes, this update resolves critical, important, and moderate vulnerabilities that could lead to arbitrary code execution, arbitrary file system read, privilege escalation, security feature bypass, and memory exposure, tracked under security bulletin APSB26-119.&lt;/p&gt;

&lt;p&gt;Key changes include:&lt;/p&gt;

&lt;p&gt;SQL injection prevention —  and  now validate that table and procedure names are plain SQL identifiers before use.&lt;br&gt;
XSLT security hardening — XmlTransform() now blocks the collection() and uri-collection() functions, in addition to the existing restrictions on doc() and document().&lt;br&gt;
Stricter AJAX widget sanitization — dynamic content now requires GetSafeHTML() before rendering.&lt;br&gt;
Configurable deserialization limits — cfserialfilter.txt now supports settings for maximum array length, nesting depth, and total element count.&lt;br&gt;
If cfgridupdate or cfstoredproc build any part of a query from user-controllable input, or an app runs XmlTransform() against untrusted XSLT, those are the two areas worth checking first.&lt;/p&gt;

&lt;p&gt;Full writeup with version numbers and sources: &lt;a href="https://www.devlearningtools.com/blog/coldfusion-security-update-september-2026" rel="noopener noreferrer"&gt;https://www.devlearningtools.com/blog/coldfusion-security-update-september-2026&lt;/a&gt;&lt;/p&gt;

</description>
      <category>coldfusion</category>
      <category>cfml</category>
      <category>security</category>
      <category>webdev</category>
    </item>
    <item>
      <title>MCP vs RAG Explained (Complete Beginner Guide with Architecture)</title>
      <dc:creator>Dev Learning Tools</dc:creator>
      <pubDate>Wed, 02 Sep 2026 18:56:33 +0000</pubDate>
      <link>https://dev.to/devlearningtools/mcp-vs-rag-explained-complete-beginner-guide-with-architecture-3hgd</link>
      <guid>https://dev.to/devlearningtools/mcp-vs-rag-explained-complete-beginner-guide-with-architecture-3hgd</guid>
      <description>&lt;p&gt;Two terms you'll keep hearing around modern AI assistants — RAG and MCP. Beginners often assume they're two versions of the same thing. They're not.&lt;/p&gt;

&lt;p&gt;The short version: RAG helps AI find information. MCP helps AI use tools.&lt;/p&gt;

&lt;p&gt;Think of AI as a new hire at your company. They're smart, but hit two walls immediately:&lt;/p&gt;

&lt;p&gt;They don't know your documents (HR policy, product manuals, customer records) — that's the gap RAG fills, by searching your actual current data before answering instead of guessing from stale training data.&lt;br&gt;
Even once they know the answer, they can't send an email or query a database on their own — that's the gap MCP fills, giving AI a standard way to call real tools (Gmail, a database, GitHub, a calendar) instead of a custom integration per app.&lt;br&gt;
RAG's pipeline: your question → an embedding model turns it into a vector → a vector database (Pinecone, Weaviate, pgvector) finds the closest-matching documents → the language model reads them and answers.&lt;/p&gt;

&lt;p&gt;MCP's pipeline: the AI client → an MCP client → an MCP server exposing a tool (filesystem, database, calendar) → the real software doing the work, with the result routed back.&lt;/p&gt;

&lt;p&gt;The best AI systems use both — RAG to know things, MCP to do things.&lt;/p&gt;

&lt;p&gt;I wrote up the full version with architecture diagrams for each: &lt;a href="https://www.devlearningtools.com/blog/mcp-vs-rag-explained" rel="noopener noreferrer"&gt;MCP vs RAG Explained&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>A Free ColdFusion Course With Something Most Tutorials Skip: Interview Questions</title>
      <dc:creator>Dev Learning Tools</dc:creator>
      <pubDate>Wed, 02 Sep 2026 18:15:59 +0000</pubDate>
      <link>https://dev.to/devlearningtools/a-free-coldfusion-course-with-something-most-tutorials-skip-interview-questions-3cil</link>
      <guid>https://dev.to/devlearningtools/a-free-coldfusion-course-with-something-most-tutorials-skip-interview-questions-3cil</guid>
      <description>&lt;p&gt;I've been building a free, structured ColdFusion course: &lt;a href="https://www.devlearningtools.com/learn/coldfusion" rel="noopener noreferrer"&gt;Learn ColdFusion&lt;/a&gt; — no signup, no paywall.&lt;/p&gt;

&lt;p&gt;It covers the basics (variables, loops, conditionals), collections (arrays, structs, queries, JSON), a full OOP module (CFCs, inheritance, polymorphism, interfaces), Application.cfc and scopes, and reusable code (custom tags, cfmodule, cfinclude).&lt;/p&gt;

&lt;p&gt;What makes it different from other CFML tutorials: every single lesson ends with interview questions on that topic — real questions, phrased the way they actually come up in interviews, not generic recap quizzes. There's even a dedicated Scopes Interview Questions page. I haven't found this depth of interview prep anywhere else in ColdFusion learning content online.&lt;/p&gt;

&lt;p&gt;If you've worked with ColdFusion, I'd love to know what topics you got asked about in interviews — happy to add them to the course.&lt;/p&gt;

</description>
      <category>coldfusion</category>
      <category>cfml</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>Is ColdFusion Ready for AI in 2026? (Honest Take)</title>
      <dc:creator>Dev Learning Tools</dc:creator>
      <pubDate>Mon, 31 Aug 2026 18:00:06 +0000</pubDate>
      <link>https://dev.to/devlearningtools/is-coldfusion-ready-for-ai-in-2026-honest-take-284h</link>
      <guid>https://dev.to/devlearningtools/is-coldfusion-ready-for-ai-in-2026-honest-take-284h</guid>
      <description>&lt;p&gt;AI is changing how developers build software, but what does that mean for developers still maintaining ColdFusion/CFML applications? Is the language excluded from AI development, or just harder to search for?&lt;/p&gt;

&lt;p&gt;Short version: ColdFusion doesn't need its own AI model. It just needs to talk to one over an API, the same way it already talks to any other third-party service. That architecture works the same whether you're calling OpenAI, Gemini, or Anthropic.&lt;/p&gt;

&lt;p&gt;I wrote up the full breakdown covering document processing use cases, why the API call is actually the easy part (retrieval quality and evaluation matter way more), how the developer skillset is shifting, and where Lucee fits in.&lt;/p&gt;

&lt;p&gt;Full post here: &lt;a href="https://www.devlearningtools.com/blog/coldfusion-2025-ai-integration" rel="noopener noreferrer"&gt;https://www.devlearningtools.com/blog/coldfusion-2025-ai-integration&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Curious what others think, especially anyone who's actually tried wiring an LLM into a legacy CFML app.&lt;/p&gt;

</description>
      <category>coldfusion</category>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
