<?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: Jonathan Sherpa</title>
    <description>The latest articles on DEV Community by Jonathan Sherpa (@jonathancodes365).</description>
    <link>https://dev.to/jonathancodes365</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%2F3960382%2F5c315e75-1663-441e-ae54-c70a3ed101b0.jpg</url>
      <title>DEV Community: Jonathan Sherpa</title>
      <link>https://dev.to/jonathancodes365</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/jonathancodes365"/>
    <language>en</language>
    <item>
      <title>I don't want to be a ML engineer who trains models.</title>
      <dc:creator>Jonathan Sherpa</dc:creator>
      <pubDate>Sat, 05 Sep 2026 16:01:07 +0000</pubDate>
      <link>https://dev.to/jonathancodes365/i-dont-want-to-be-a-ml-engineer-who-trains-models-7dg</link>
      <guid>https://dev.to/jonathancodes365/i-dont-want-to-be-a-ml-engineer-who-trains-models-7dg</guid>
      <description>&lt;p&gt;I don’t just want to train a model in a Jupyter notebook and call it an ML project.&lt;/p&gt;

&lt;p&gt;I want to understand how to take that model and turn it into something people can actually use.&lt;/p&gt;

&lt;p&gt;Data → Model → API → Backend → Database → Deployment → Production&lt;/p&gt;

&lt;p&gt;I want to understand every step.&lt;/p&gt;

&lt;p&gt;And this is where I’ve started thinking about AI-assisted development.&lt;/p&gt;

&lt;p&gt;Vibe-coding has become incredibly popular, and what I’d call “AI brain-rot” can become a form of cognitive offloading — where we stop solving problems ourselves because a tool can solve them for us.&lt;/p&gt;

&lt;p&gt;And I don’t think cognitive offloading itself is necessarily bad.&lt;/p&gt;

&lt;p&gt;The problem starts when we stop trying to understand what we’re building.&lt;/p&gt;

&lt;p&gt;Because, in my perspective, something fundamental about engineering disappears when a project becomes:&lt;/p&gt;

&lt;p&gt;Ctrl+C → Ctrl+V → It runs → Deploy.&lt;/p&gt;

&lt;p&gt;But where is the joy?&lt;/p&gt;

&lt;p&gt;Where is the satisfaction of figuring out why something works?&lt;/p&gt;

&lt;p&gt;For me, software engineering is about taking something that exists in my head and turning it into something that exists in the real world — something useful, something people can interact with, something I can look at and say:&lt;/p&gt;

&lt;p&gt;“I built this.”&lt;/p&gt;

&lt;p&gt;And thinking about what ML can eventually do honestly gives me goosebumps.&lt;/p&gt;

&lt;p&gt;I’ve always been a romanticist and a huge sci-fi movie fan.&lt;/p&gt;

&lt;p&gt;TARS from Interstellar and JARVIS from Iron Man have probably influenced my interest in AI more than I realized.&lt;/p&gt;

&lt;p&gt;Because they represent something fascinating to me:&lt;/p&gt;

&lt;p&gt;Technology that doesn’t just execute commands, but understands context, assists its human, makes decisions, and interacts with the world around it.&lt;/p&gt;

&lt;p&gt;Now imagine combining that kind of intelligence with modern AI, robotics, and increasingly capable autonomous systems.&lt;/p&gt;

&lt;p&gt;Maybe one day we’ll build systems that feel much closer to those fictional assistants.&lt;/p&gt;

&lt;p&gt;Maybe they’ll become AI companions, assistants, or something we haven’t even imagined yet.&lt;/p&gt;

&lt;p&gt;I don’t know exactly what the future will look like.&lt;/p&gt;

&lt;p&gt;But I know I want to understand how these systems are built.&lt;/p&gt;

&lt;p&gt;I don’t want AI to think instead of me.&lt;/p&gt;

&lt;p&gt;I want AI to make me a better engineer.&lt;/p&gt;

&lt;p&gt;And I don’t want to merely use the AI revolution.&lt;/p&gt;

&lt;p&gt;I want to understand it — and eventually build a part of it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Are We Forgetting Software Engineering in the Race Toward AI/ML?</title>
      <dc:creator>Jonathan Sherpa</dc:creator>
      <pubDate>Mon, 31 Aug 2026 03:18:10 +0000</pubDate>
      <link>https://dev.to/jonathancodes365/are-we-forgetting-software-engineering-in-the-race-toward-aiml-jpp</link>
      <guid>https://dev.to/jonathancodes365/are-we-forgetting-software-engineering-in-the-race-toward-aiml-jpp</guid>
      <description>&lt;p&gt;First of all, I warmly welcome everyone out there in the DEV Community.&lt;br&gt;
[Completely open for discussion — drop your thoughts below.]&lt;/p&gt;

&lt;p&gt;From my perspective, it feels like everyone is racing towards AI/ML.&lt;/p&gt;

&lt;p&gt;The moment someone says they want to become an AI/ML Engineer, the conversation immediately shifts towards:&lt;/p&gt;

&lt;p&gt;Python → ML → Deep Learning → LLMs → Latest AI Tools&lt;/p&gt;

&lt;p&gt;And thinking about it, well, it’s quite understandable too. &lt;br&gt;
AI is one of the most exciting areas in technology right now.&lt;/p&gt;

&lt;p&gt;BUT, I have a question…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why are we starting to treat AI/ML Engineering as something completely different from Software Engineering?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I often see people following an extremely narrow path towards AI/ML while completely skipping the fundamentals of Software Engineering.&lt;/p&gt;

&lt;p&gt;Backend development gets ignored.&lt;br&gt;
Databases, networking, operating systems, system design — all of them get ignored.&lt;/p&gt;

&lt;p&gt;And afterwards:&lt;br&gt;
APIs, deployment, testing, distributed systems…&lt;br&gt;
All of these seem quite trivial, right?&lt;/p&gt;

&lt;p&gt;Because the end goal is simply to create or automate something with AI.&lt;br&gt;
But it’s quite clear to me that AI can’t possibly live by itself.&lt;/p&gt;

&lt;p&gt;For any AI model to thrive, we need data.&lt;br&gt;
That data needs storage and pipelines.&lt;br&gt;
A model needs an application around it.&lt;br&gt;
That application needs APIs.&lt;br&gt;
Those APIs need backend infrastructure.&lt;/p&gt;

&lt;p&gt;And now we have an actual system.&lt;br&gt;
That system needs to be monitored for bugs, optimized for CPU and memory efficiency, refactored when necessary, maintained over time, and tested against new use cases.&lt;/p&gt;

&lt;p&gt;So thinking about all of this:&lt;/p&gt;

&lt;p&gt;How does one even fathom becoming an AI/ML “Engineer” without understanding what they are actually engineering into and working on?&lt;/p&gt;

&lt;p&gt;Maybe AI/ML Engineering and Software Engineering aren’t two completely different entities.&lt;/p&gt;

&lt;p&gt;Maybe they are different components of the same system.&lt;/p&gt;

&lt;p&gt;Now, I’m not saying:&lt;br&gt;
“You should become an expert in everything.”&lt;br&gt;
Specialization is indeed important.&lt;/p&gt;

&lt;p&gt;But specialization doesn’t necessarily mean abandoning the fundamentals that the specialization is built upon.&lt;/p&gt;

&lt;p&gt;This reminds me of a parable a friend once told me.&lt;/p&gt;

&lt;p&gt;Consider these two paths:&lt;/p&gt;

&lt;p&gt;Python → ML → Deep Learning → AI&lt;/p&gt;

&lt;p&gt;It’s like building a strong house specialized in ML on top of a foundation built on sand.&lt;/p&gt;

&lt;p&gt;Eventually, the system encounters real-world problems — unexpected failures, scaling issues, security vulnerabilities, inefficient infrastructure, broken data pipelines — and suddenly that beautiful house starts falling apart.&lt;/p&gt;

&lt;p&gt;But consider this path:&lt;/p&gt;

&lt;p&gt;Programming → CS Fundamentals → Software Engineering → Backend/Systems → Data → ML → AI&lt;/p&gt;

&lt;p&gt;Now you’re building that same house on a strong foundation.&lt;/p&gt;

&lt;p&gt;The house can still specialize in ML.&lt;br&gt;
But when the environment changes, the foundation doesn’t collapse.&lt;/p&gt;

&lt;p&gt;And perhaps that’s the part we’re forgetting.&lt;br&gt;
AI/ML isn’t happening in isolation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;We’re still building software.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;So I’ll end with the same recurring question:&lt;/p&gt;

&lt;p&gt;Are we specializing too early in AI/ML and forgetting that, underneath all of it, we’re still building software?&lt;/p&gt;

&lt;p&gt;I’d genuinely love to hear what other developers think about this.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>python</category>
      <category>softwareengineering</category>
    </item>
    <item>
      <title>Deploying Lovable to Vercel — Cracked"</title>
      <dc:creator>Jonathan Sherpa</dc:creator>
      <pubDate>Sat, 30 May 2026 19:32:31 +0000</pubDate>
      <link>https://dev.to/jonathancodes365/deploying-lovable-to-vercel-cracked-kfo</link>
      <guid>https://dev.to/jonathancodes365/deploying-lovable-to-vercel-cracked-kfo</guid>
      <description>&lt;p&gt;🚀 Live demo: &lt;a href="https://urljourney.vercel.app" rel="noopener noreferrer"&gt;urljourney.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Deploying Lovable + TanStack Start to Vercel kept throwing 404s and "No Output Directory" errors no matter what I tried. After hours of debugging, here's exactly what was wrong and the 2-file fix.&lt;/p&gt;

&lt;p&gt;What Lovable Generates:&lt;br&gt;
Lovable scaffolds projects using TanStack Start with Nitro as the server engine. This is a full-stack SSR framework, not a static site.&lt;br&gt;
That's the root cause of every Vercel deployment problem.&lt;/p&gt;

&lt;p&gt;Why It Fails Out of the Box&lt;br&gt;
Problem 1: Vercel expects public/ but gets nothing&lt;br&gt;
Vercel assumes a static site. TanStack Start + Nitro outputs a server bundle.&lt;br&gt;
So you get:&lt;br&gt;
No Output Directory named "public" found after the Build completed.&lt;/p&gt;

&lt;p&gt;Problem 2: Setting outputDirectory: "dist/client" gives 404&lt;br&gt;
Even after pointing Vercel to dist/client, every route returns 404. TanStack Start uses SSR — every route needs the Nitro server to handle it.&lt;br&gt;
 Without the server running, nothing works.&lt;/p&gt;

&lt;p&gt;Problem 3: The rewrite trick doesn't work&lt;br&gt;
Adding this to vercel.json:&lt;br&gt;
json{ "source": "/(.*)", "destination": "/dist/server/server.js" }&lt;br&gt;
...fails because dist/server/server.js is just an error logger, not the actual server entry.&lt;/p&gt;

&lt;p&gt;Problem 4: Vercel functions runtime syntax is wrong&lt;br&gt;
Trying "runtime": "nodejs20.x" throws:&lt;br&gt;
Function Runtimes must have a valid version, for example &lt;code&gt;now-php@1.0.0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Problem 5: Default Nitro preset is Cloudflare, not Vercel&lt;br&gt;
The @lovable.dev/vite-tanstack-config comment in vite.config.ts says:&lt;/p&gt;

&lt;p&gt;"nitro (build-only using cloudflare as a default target)"&lt;/p&gt;

&lt;p&gt;A Vercel preset exists in Nitro but it's never used unless you explicitly set it. That's the real fix.&lt;/p&gt;

&lt;p&gt;The Fix (2 Files)&lt;br&gt;
Step 1: Update vite.config.ts&lt;br&gt;
tsimport { defineConfig } from "@lovable.dev/vite-tanstack-config";&lt;/p&gt;

&lt;p&gt;export default defineConfig({&lt;br&gt;
  tanstackStart: {&lt;br&gt;
    server: { entry: "server" },&lt;br&gt;
  },&lt;br&gt;
  nitro: {&lt;br&gt;
    preset: "vercel",&lt;br&gt;
    output: {&lt;br&gt;
      dir: ".vercel/output",&lt;br&gt;
      serverDir: ".vercel/output/functions/__server.func",&lt;br&gt;
      publicDir: ".vercel/output/static",&lt;br&gt;
    },&lt;br&gt;
  },&lt;br&gt;
});&lt;br&gt;
Step 2: Create vercel.json&lt;br&gt;
json{&lt;br&gt;
  "buildCommand": "npm run build",&lt;br&gt;
  "outputDirectory": ".vercel/output",&lt;br&gt;
  "framework": null&lt;br&gt;
}&lt;br&gt;
Step 3: Build and verify locally&lt;br&gt;
bashnpm run build&lt;br&gt;
ls .vercel/output/&lt;/p&gt;

&lt;h1&gt;
  
  
  Should show: config.json  functions/  static/  nitro.json
&lt;/h1&gt;

&lt;p&gt;Step 4: Commit and push&lt;br&gt;
bashgit add vite.config.ts vercel.json&lt;br&gt;
git commit -m "fix: use nitro vercel preset with prebuilt output"&lt;br&gt;
git push&lt;/p&gt;

&lt;p&gt;Why This Works&lt;br&gt;
Nitro's Vercel preset generates .vercel/output in Vercel's Build Output API v3 format:&lt;br&gt;
.vercel/output/&lt;br&gt;
  config.json              ← routing rules&lt;br&gt;
  static/                  ← static assets served by CDN&lt;br&gt;
  functions/&lt;br&gt;
    __server.func/&lt;br&gt;
      index.mjs            ← serverless function handling all SSR routes&lt;br&gt;
      .vc-config.json      ← tells Vercel this is a Node.js function&lt;br&gt;
Vercel natively understands this format and correctly wires up static asset serving + the serverless function. No manual rewrites needed.&lt;/p&gt;

&lt;p&gt;Starting Fresh on Lovable?&lt;br&gt;
Make these two changes before your first push and skip all of this pain.&lt;/p&gt;

&lt;p&gt;Common Mistakes to Avoid&lt;/p&gt;

&lt;p&gt;❌ Don't set outputDirectory: "dist" or "dist/client"&lt;br&gt;
❌ Don't add manual rewrites in vercel.json&lt;br&gt;
❌ Don't set framework: "vite" or any other framework&lt;br&gt;
❌ Don't skip the output.dir override in vite.config.ts&lt;br&gt;
✅ Always run npm run build locally first and verify .vercel/output/ exists before pushing&lt;/p&gt;

</description>
      <category>devops</category>
      <category>javascript</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
