<?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: Krešimir Iličić</title>
    <description>The latest articles on DEV Community by Krešimir Iličić (@kresohr).</description>
    <link>https://dev.to/kresohr</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%2F2826932%2Fc0b87b5b-cbbc-4b4f-bf75-9657c20fe073.png</url>
      <title>DEV Community: Krešimir Iličić</title>
      <link>https://dev.to/kresohr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kresohr"/>
    <language>en</language>
    <item>
      <title>How to stay up-to-date with AI [2026]</title>
      <dc:creator>Krešimir Iličić</dc:creator>
      <pubDate>Sun, 04 Oct 2026 10:47:11 +0000</pubDate>
      <link>https://dev.to/kresohr/how-to-stay-up-to-date-with-ai-2026-59f</link>
      <guid>https://dev.to/kresohr/how-to-stay-up-to-date-with-ai-2026-59f</guid>
      <description>&lt;p&gt;Let me guess, you feel like the AI world is moving too fast and you are falling behind? It's true, the progress is super fast, but let me teach you how to catch up. With super simple workflows you can say up to date with AI without breaking a sweat.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;The simple answer is that &lt;strong&gt;things are moving too fast&lt;/strong&gt;. AI models are being released every week by different companies, harnesses and other toolings as well. Where to find the time to stay on top of it? The truth is, &lt;strong&gt;you don't have to spend too much time&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Once you understand that the majority of news is filled with marketing and hype, it gets easier. Surely, the differences between models are real, some tooling might fit better in your workflow and pricing difference is also there. However, with proper automatization you'll quickly catch up and figure out that &lt;strong&gt;it's not that deep&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Key goals
&lt;/h2&gt;

&lt;p&gt;Whether you are a software developer, PM, PO, QA or any other role, there is one thing you need to understand and that is that the &lt;strong&gt;current&lt;/strong&gt; &lt;strong&gt;"AI" is a tool&lt;/strong&gt;. It is not here to replace us, it is not "AGI" (nice try OpenAI), it's here to make our work easier. That's why it's important to stay up to date with AI changes.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Controversial take&lt;/u&gt;: If you think AI will replace your job completely, sorry, but it wasn't complex enough to begin with and it would happen sooner or later.&lt;/p&gt;

&lt;p&gt;For the majority of us, it can replace those boring repetitive tasks or help us research new stuff faster, cheaper, easier than ever. The downside is that Dunning-Kruger effect was never more present. People feel like they can build a rocket ship and fly to Mars just with AI.&lt;/p&gt;

&lt;p&gt;Good luck with that.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;But what are the key goals then?&lt;/u&gt;&lt;/p&gt;

&lt;p&gt;If you ask me, these are the key goals you got to figure out:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Which model to use for your workflow?&lt;/li&gt;
&lt;li&gt;Which provider to use?&lt;/li&gt;
&lt;li&gt;Should you get subscription or pay based on tokens spent?&lt;/li&gt;
&lt;li&gt;Can you automate stuff?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you are software developer, you'll be using AI much more differently than some other IT role. You will usually spend more tokens than some other roles and therefore you might benefit more from "subsized" AI subscriptions such as those provided by Anthropic, OpenAI, OpenCode, etc.&lt;/p&gt;

&lt;p&gt;That being said, you will benefit from knowing which models have been released or the pricing update of subs and that are &lt;strong&gt;some of the keypoints you got to stay up to date about.&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Now let's step back for a second, how would you do it if things were not moving so quickly? You'd probably read documentation, watch a YouTube video or two, read some StackOverflow posts (rip) or even Reddit threads.&lt;/p&gt;

&lt;p&gt;What if I told you the process is exactly the same but with a small modification? Since there is SO MUCH to read and consume and not enough time, this is where we introduce &lt;strong&gt;automatization&lt;/strong&gt;. Instead of us going through all those news manually, we can utilize AI.&lt;/p&gt;

&lt;p&gt;Let me show you how I did it for myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automatization
&lt;/h2&gt;

&lt;p&gt;There are several ways to do it, some are free, some involve paying for tokens. The best way IMO is to combine both free and paid ways and get your informations from different sources. Ideally, you would need to minimize the friction required to read those as well.&lt;/p&gt;

&lt;h3&gt;
  
  
  The free ways to stay up to date with AI
&lt;/h3&gt;

&lt;p&gt;The first and easiest is to &lt;strong&gt;create custom feed on Reddit&lt;/strong&gt;. This free  feature allows you to pick which communities you want information from and to combine it all in one feed. Which communities to pick for ai? r/OpenAI, r/GithubCopilot, r/artificial, r/ClaudeAI and many more.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1d0vk55f4e6r0t6965pl.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F1d0vk55f4e6r0t6965pl.png" alt="Reddit Custom Feed for AI" width="800" height="284"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why Reddit? Because you will (mostly) get real human inputs on different AI topics. By creating a custom feed it's easier to not fall into the trap of doom scrolling meme communities and to curate the list exactly for our key goal of staying up to date with AI.&lt;/p&gt;

&lt;p&gt;Another way to stay up-to-date is to sign up for &lt;strong&gt;free newsletters&lt;/strong&gt;. Some of the good ones I personally use are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="//codenewsletter.ai"&gt;The Code&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.superhuman.ai/" rel="noopener noreferrer"&gt;Superhuman AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tldr.tech/ai" rel="noopener noreferrer"&gt;TLDR AI&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These provide simple, once-a-day updates with key informations on AI progress. If they ever become spammy or too much, you can always unsubscribe. &lt;strong&gt;&lt;u&gt;PRO TIP&lt;/u&gt;&lt;/strong&gt;: Never use your primary e-mail for newsletters, create a separate one just for this usecase.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F36899h5jd58qygvortqf.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F36899h5jd58qygvortqf.png" alt="AI Newsletters" width="799" height="497"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One more free way to stay up to date with AI is to follow specific YouTube channels which cover news and updates. There are so many good channels like &lt;a href="https://www.youtube.com/@AILABS-393" rel="noopener noreferrer"&gt;AI LABS&lt;/a&gt;, &lt;a href="https://www.youtube.com/@intheworldofai/videos" rel="noopener noreferrer"&gt;WorldofAI&lt;/a&gt;, &lt;a href="https://www.youtube.com/@airevolutionx" rel="noopener noreferrer"&gt;AI Revolution&lt;/a&gt;, and many more.&lt;/p&gt;

&lt;p&gt;Such YouTube channels cover multiple AI news at once, but spending so much time watching that... ain't nobody got time for that 🤣. That's why I've developed an application to make it way simpler, faster and less time consuming. The best thing about it? I made it open-source, but it does require some infrastructure to run it though.&lt;/p&gt;

&lt;h3&gt;
  
  
  Paid ways to stay up to date with AI
&lt;/h3&gt;

&lt;p&gt;Let me first start with the project I've mentioned above. What is it and how does it work? Meet YT summary project which you can find free, open-source on &lt;a href="https://github.com/kresohr/youtube-summary" rel="noopener noreferrer"&gt;my Github&lt;/a&gt;. The easiest way to explain it is to quote it from my README.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Automated system that fetches the latest videos from configured YouTube channels, generates AI-powered summaries via the Gemini REST API (multimodal video understanding), and displays them on a responsive web interface. Runs as a daily cron job inside Docker.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To keep it simple, you add the channels you want to summarize and the tool will check every 24 hours if there is a new video on any of those channels. If there is, it will pull the transcriptions from the video and summarize it. Then it will display it on the homepage like on the image below.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmd281b7nbngp0uo39nxu.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmd281b7nbngp0uo39nxu.png" alt="Youtube Summary Tool" width="800" height="421"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why did I build it? Because YouTube is full of quality video makers and there is not enough time to go through it all. That's why I summarize and if I detect through summary that the topic is something I really want to watch, I'll open the full video.&lt;/p&gt;

&lt;p&gt;It's free, self-hosted, dockerized, open-source. The reason why I've put it here in "paid" ways to stay up to date is because you might need to spend some money on tokens (or try the Gemini free tier) for the summary. &lt;strong&gt;Note&lt;/strong&gt;: this was mostly vibe coded and be careful if you will run it on production, I do not maintain it as it does everything I need flawless.&lt;/p&gt;

&lt;p&gt;There is &lt;strong&gt;even a simpler way to stay up to date with AI&lt;/strong&gt; but it involves paying for Cursor license (the cheapest one will do). What we are looking for is their "Grok Bot" which allows us to run AI on schedule and notify us. So what did I do?&lt;/p&gt;

&lt;p&gt;I created a bot called "Bobi" (the most popular dog name in Croatia) which gives me morning AI brief. The best part? I get it as a message on my Telegram so I can read it through my mobile phone. I've spent maybe 5 minutes configuring the whole thing. The longest part is giving him all the links where the information should come from.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4rwed41292vw1mwcpht1.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F4rwed41292vw1mwcpht1.png" alt="Grok Bot AI morning brief" width="800" height="813"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It runs as a "CRON job" on a schedule. Each morning when I wake up, I check my messages and it's there. Telegram bot can be configured through &lt;a href="https://core.telegram.org/bots/tutorial" rel="noopener noreferrer"&gt;"Bot Father"&lt;/a&gt; which is completely free and takes 2 minutes to setup.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: You could probably achieve the same thing by using OpenClaw, Hermess or some other free open-source tool on your VPS (costs money) or if you run it on your old laptop 24/7. I am paying for Cursor license anyways so why not use the Grok bot?&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;I've shown you multiple ways to stay up to date with AI. As you can see, it's not hard at all and doesn't take much time. You can read through all the news while drinking your morning coffee. Once you setup the automatic flow, you go through it each morning and you are ready to go.&lt;/p&gt;

&lt;p&gt;Hope you enjoyed the article, feel free to comment and leave a like.&lt;/p&gt;

&lt;p&gt;Peace, Krešo.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Guided Vibecoding YouTube Summary Project</title>
      <dc:creator>Krešimir Iličić</dc:creator>
      <pubDate>Sun, 15 Feb 2026 15:08:04 +0000</pubDate>
      <link>https://dev.to/kresohr/guided-vibecoding-youtube-summary-project-50p5</link>
      <guid>https://dev.to/kresohr/guided-vibecoding-youtube-summary-project-50p5</guid>
      <description>&lt;p&gt;Right now we are in a phase where everyone creates their own "AI SAAS". LinkedIn is flooded with these "AI will replace all devs" dumb posts and I can't wait for it all to fade away.&lt;/p&gt;

&lt;p&gt;In the meantime, I've decided to take AI and use it as it should be used, &lt;strong&gt;as a tool&lt;/strong&gt;. However, this time I wanted to go all-in and see how good code could the &lt;strong&gt;best AI models&lt;/strong&gt; write if I guide it from architectural side and review what it's doing.&lt;/p&gt;

&lt;p&gt;The majority of the code was written by &lt;strong&gt;Claude Opus 4.6&lt;/strong&gt; while minor tasks were done either by Claude Sonnet 4.5 or GPT-5 mini for super simple ones.&lt;/p&gt;

&lt;p&gt;But first, let's start with from the beginning.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem origin
&lt;/h2&gt;

&lt;p&gt;It's super hard to keep up with all the newsletters, YouTube channels, documentations and &lt;strong&gt;I simply don't have enough time to go through it all&lt;/strong&gt;. So what I usually did is if I run into an interesting YouTube video but it's too long, I'd use Perplexity or other AI platforms to summarize it for me.&lt;/p&gt;

&lt;h3&gt;
  
  
  Manual workload
&lt;/h3&gt;

&lt;p&gt;Even though that process saves time, it is still manual and I would need to browse through YouTube to find what I want to summarize in the first place. &lt;/p&gt;

&lt;p&gt;I knew there is room for further improvement.&lt;/p&gt;

&lt;h2&gt;
  
  
  The solution
&lt;/h2&gt;

&lt;p&gt;The first idea that came to my mind is &lt;strong&gt;what if&lt;/strong&gt; I could have a scheduled job of curated YouTube channels that I handpick summarized each day. Sure, I'd need to spend some time initially to choose which channels to put there, but that's still better than the previous process.&lt;/p&gt;

&lt;p&gt;It's a 1 hour total investment vs 1 hour daily investment.&lt;/p&gt;

&lt;p&gt;That's when the idea was born.&lt;/p&gt;

&lt;p&gt;I wanted to have some kind of a "dashboard" which I could access from multiple devices hosted on a server and available 24/7. The design had to be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Responsive&lt;/li&gt;
&lt;li&gt;Simple&lt;/li&gt;
&lt;li&gt;Intuitive&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The channels would be added through an "Admin panel" where I could add or remove those I want summarized. The trick is, I didn't want to summarize all available videos from each channel as some of them might have more than a thousand videos.&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%2Fmkwzidouxnt50bxoa7gm.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%2Fmkwzidouxnt50bxoa7gm.png" alt="Admin panel" width="800" height="436"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That's when I decided to put a scheduler (cron) job to fetch videos from the channels on the list every day at a certain time. If the channel had any new videos published in the last 24 hours, those will get summarized and shown on the dashboard.&lt;/p&gt;

&lt;p&gt;Since the page would be publicly available, I had to protect it with some kind of a login for the "admin panel" as I didn't want other people messing with it. The stack I chose was:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;VueJS for the frontend&lt;/li&gt;
&lt;li&gt;ExpressJS for the backend&lt;/li&gt;
&lt;li&gt;PostgreSQL for DB&lt;/li&gt;
&lt;li&gt;... and a few more external services visible in the diagram&lt;/li&gt;
&lt;/ul&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%2Flh1cfbtr923dprupxcfy.webp" 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%2Flh1cfbtr923dprupxcfy.webp" alt="Architectural Diagram" width="800" height="727"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fetching the videos
&lt;/h3&gt;

&lt;p&gt;The first piece of the puzzle was to fetch YouTube videos of given channel. To do that, we can use the &lt;a href="https://developers.google.com/youtube/v3" rel="noopener noreferrer"&gt;YouTube Data API&lt;/a&gt; which allows us to fetch videos sorted by date.&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%2Fz1okx0h07vdvw2dmqntw.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%2Fz1okx0h07vdvw2dmqntw.png" alt="Youtube Data Api Fetch" width="513" height="122"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We are only fetching videos published in the last 24h so we are passing the "publishedAfter" prop to get those.&lt;/p&gt;

&lt;p&gt;After fetching, we need to double-check the database to see if that video was already processed. If it wasn't, proceed to fetch transcription for the given video.&lt;/p&gt;

&lt;h3&gt;
  
  
  Fetching the transcription
&lt;/h3&gt;

&lt;p&gt;Fetching the video transcription can be done through many different 3rd party libraries, but &lt;strong&gt;I wanted to do it for free&lt;/strong&gt;. To do that we need to use the native YouTube transcript API which is used in NPM package called "&lt;strong&gt;youtube-transcript-plus&lt;/strong&gt;". The downside of this approach is that YouTube can change its API in any time and break the app, but since I'm building it for myself, it was a tradeoff I can live with.&lt;/p&gt;

&lt;h3&gt;
  
  
  Summarize with AI
&lt;/h3&gt;

&lt;p&gt;Now comes the fun part. How to choose an AI model with so many to choose from? Well, my goal was super simple:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spend the least amount of money&lt;/li&gt;
&lt;li&gt;Doesn't have to be the best model on market&lt;/li&gt;
&lt;li&gt;Gets the job done&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I decided that it doesn't have to be the "best model" because the task is super simple and generally all AI models are good enough with such simple tasks. After all, it's taking a bunch of text and summarizing it.&lt;/p&gt;

&lt;p&gt;So which one did I choose? Random &lt;a href="https://openrouter.ai/models/?q=free" rel="noopener noreferrer"&gt;free models from openrouter&lt;/a&gt;. What do I mean by "random" ? Well, OpenRouter can be seen as a platform for different AI model providers and they can update their models to no longer be free, so I've let OpenRouter choose a model for me instead.&lt;/p&gt;

&lt;p&gt;How to do it through code? One simple line.&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%2Fn3y5cx22idx4jq7behdv.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%2Fn3y5cx22idx4jq7behdv.png" alt="Model for OpenRouter" width="394" height="83"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Basically, we just write "openrouter/free" as model and let the platform choose appropriate/available one for the task. We can also specify the instructions for summarizing, such as this simple one:&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%2F0mxqz9ozbovy6mrjndep.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%2F0mxqz9ozbovy6mrjndep.png" alt="Summarize prompt instructions" width="800" height="23"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally, we &lt;strong&gt;get the summary and store it into the database&lt;/strong&gt;. At that point we can access it via dashboard and it looks something like this.&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%2Fg91te6y4k4zqnzhgc6h5.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%2Fg91te6y4k4zqnzhgc6h5.png" alt="YouTube Summary Dashboard" width="800" height="468"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Key notes
&lt;/h2&gt;

&lt;p&gt;The project is hosted on Oracle VPS Cloud. It is dockerized and uses nginx as the reverse proxy. Total amount of money I spent during this project is less than 10$. That's because I'm using &lt;a href="https://github.com/features/copilot/plans" rel="noopener noreferrer"&gt;Github Copilot Pro&lt;/a&gt; and carefully craft every prompt.&lt;/p&gt;

&lt;h3&gt;
  
  
  Room for improvement
&lt;/h3&gt;

&lt;p&gt;There is always room for improvement, depending on the end goal. I started this project as a simple way of keeping up with the news and to see which video is interesting enough for me to watch whole. It serves it purpose at the moment.&lt;/p&gt;

&lt;p&gt;However, other people might benefit from some additional features like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Configurable interval when the videos are fetched&lt;/li&gt;
&lt;li&gt;Configurable models to process transcripts and summarize them&lt;/li&gt;
&lt;li&gt;Multi user support&lt;/li&gt;
&lt;li&gt;Simpler way to add channels (At the moment there is no automated mechanism to fill channel ID)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Everything being said, it was a fun small project and the AI tools are definitely great addition to programming when properly used. I've made myself a tool that I can use each morning while I sip my coffee and that's enough for me.&lt;/p&gt;

&lt;p&gt;The most issues I've had when vibecoding this project was related to nginx and docker. I really wanted to force it out without manually intervening with it.&lt;/p&gt;

&lt;p&gt;P.S I didn't waste time optimizing anything in the code, the goal was just to get it working. This is definitely &lt;strong&gt;not a production ready project&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Github repo available at: &lt;a href="https://github.com/kresohr/youtube-summary" rel="noopener noreferrer"&gt;https://github.com/kresohr/youtube-summary&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>youtube</category>
      <category>javascript</category>
    </item>
    <item>
      <title>TypeScript to Go: Why does it really matter?</title>
      <dc:creator>Krešimir Iličić</dc:creator>
      <pubDate>Mon, 07 Jul 2025 17:57:29 +0000</pubDate>
      <link>https://dev.to/kresohr/typescript-to-go-why-does-it-really-matter-10da</link>
      <guid>https://dev.to/kresohr/typescript-to-go-why-does-it-really-matter-10da</guid>
      <description>&lt;p&gt;If you are in the web development world, you already know that TypeScript compiler will be migrated to Go (unless you've been living under a rock). But why should you care about it? Well the answer is simple, the &lt;strong&gt;typescript compiler migration to golang will improve your developer experience&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;In this article I'll skip the stuff you have already seen and go straight to the point. People keep claiming “oh it's 10x faster!” but let’s pause. What does this actually mean for the folks writing code every day and is there a catch?&lt;/p&gt;

&lt;h2&gt;
  
  
  What’s Really Changing?
&lt;/h2&gt;

&lt;p&gt;TypeScript itself isn’t changing. You’ll still write code the same way. What’s really changing is the compiler. You may know it as that strange thing that turns your TypeScript into JavaScript so browsers and servers can run it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Before&lt;/strong&gt;: The compiler was written in TypeScript, currently running on Node.js.&lt;br&gt;
&lt;strong&gt;After&lt;/strong&gt;: The compiler will use Golang instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Go, why not simply improve on TS?
&lt;/h2&gt;

&lt;p&gt;Node.js (which is great for lots of things) just isn’t built for heavy lifting in this way. It’s single-threaded, easily gets bogged down, and eats memory like a hungry raccoon.&lt;/p&gt;

&lt;p&gt;On the other hand, Go compiles straight to machine code. It has built-in concurrency (think of it as doing lots of things at once without breaking a sweat).&lt;/p&gt;

&lt;h2&gt;
  
  
  What Will Actually Happen?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Faster Builds&lt;/strong&gt;&lt;br&gt;
You change a file and the build will finish before you blink. Editors like VS Code will feel much faster. Autocomplete, error checking, all those little helpers? They’ll speed up quite a lot, even in monster-sized projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Less Memory Meltdown&lt;/strong&gt;&lt;br&gt;
The Go compiler uses less RAM. No more laptop fans sounding like Boeing 747 when you open a big repo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Easy Installs, Fewer Headaches&lt;/strong&gt;&lt;br&gt;
Forget the “delete node_modules and pray” ritual. The Go-based compiler can be a single binary. Download, run, done. No more dependency tangles or Node version drama.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Scales Like Crazy&lt;/strong&gt;&lt;br&gt;
Got a huge codebase? Go handles it. Multi-core CPUs finally get used properly. Builds and checks can run in parallel, not stuck in a single line.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Stays the Same?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Client-Side Performance:&lt;/strong&gt;&lt;br&gt;
The JavaScript that ends up in your browser is the same as before. Browsers don’t care how fast your code was compiled, they just run the final JavaScript. So, your website or app’s speed for users won’t change because it's still JavaScript at the end.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Server-Side Runtime:&lt;/strong&gt;&lt;br&gt;
If your TypeScript code runs on Node.js, it also won’t run faster at runtime for the clients/requests. Only the build process is affected.&lt;/p&gt;

&lt;p&gt;You can basically think of it as an improvement for you as a developer rather than the end client. However, if we end up shipping the product faster, the clients will be happier as well 😆.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;But… Is There a Downside?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Let’s be real. Nothing’s perfect.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ecosystem Shift&lt;/strong&gt;: Some tools or plugins that relied on the old Node.js-based compiler might break or need updates. Not everything will work out of the box, at least at first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning Curve for Maintainers&lt;/strong&gt;: If you want to hack on the compiler itself, you’ll need to learn Go. Most folks won’t care, but some will.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Platform Quirks&lt;/strong&gt;: Go binaries are easy to ship, but there may be new platform-specific bugs or edge cases, especially early days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not Magic for Runtime&lt;/strong&gt;: Your actual app won’t run faster in the browser or Node.js. Only the build and tooling speed up.&lt;/p&gt;

&lt;p&gt;Happier Devs: Less frustration, more focus. That’s worth more than raw speed.&lt;/p&gt;

&lt;p&gt;To read more about the decision behind migration, you should read the "&lt;a href="https://devblogs.microsoft.com/typescript/typescript-native-port/" rel="noopener noreferrer"&gt;A 10x Faster TypeScript&lt;/a&gt;" post from Microsoft.&lt;/p&gt;

</description>
      <category>typescript</category>
      <category>go</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>The Fetch API Trap: When HTTP Errors Don't Land in Catch</title>
      <dc:creator>Krešimir Iličić</dc:creator>
      <pubDate>Wed, 25 Jun 2025 17:04:11 +0000</pubDate>
      <link>https://dev.to/kresohr/the-fetch-api-trap-when-http-errors-dont-land-in-catch-40l6</link>
      <guid>https://dev.to/kresohr/the-fetch-api-trap-when-http-errors-dont-land-in-catch-40l6</guid>
      <description>&lt;p&gt;Many developers assume that if an HTTP request has an error status code like 404 or 500 then the Promise will automatically reject and flow into the catch block. It might surprise you, but that's wrong. &lt;/p&gt;

&lt;p&gt;HTTP errors remain in the try block when using native fetch API unless you manually throw an error (or use something like Axios).&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually happens when we get HTTP 404 from our backend?
&lt;/h2&gt;

&lt;p&gt;The native &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API" rel="noopener noreferrer"&gt;fetch API&lt;/a&gt; is implemented in a way where it only rejects (and triggers your catch block) when there's a genuine network problem. For example, your internet cuts out or if someone misconfigures CORS.&lt;/p&gt;

&lt;p&gt;And what about those HTTP status codes like the 4xx and 5xx? They will come back as resolved promises which won't land in the catch block. UNLESS you manually &lt;strong&gt;throw new Error&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;// Here's what happens with native fetch
async function getFetchData() {
  try {
    const response = await fetch('https://api.example.com/nonexistent');
    console.log('Response status:', response.status);

// You've got to manually check if everything's actually okay
    if (!response.ok) {
// This line ensures it gets picked up by the catch block.
      throw new Error(`HTTP error! Status: ${response.status}`);
    }

const data = await response.json();
    return data;
  } catch (error) {
    console.error('Caught in catch block:', error);
    // By default only network failures or other errors end up here
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you work with native Fetch API, you have to specifically check that "response.ok" property to see if something went wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Confuses So Many Developers?
&lt;/h2&gt;

&lt;p&gt;No wonder so many developers get confused when you consider that popular libraries like Axios work completely differently. Axios actually does what most of us expect would happen - HTTP errors automatically trigger the catch block.&lt;/p&gt;

&lt;h3&gt;
  
  
  How?
&lt;/h3&gt;

&lt;p&gt;Axios is set in a way that the promise will get rejected if we get HTTP status like 400 or 500. You may read-up the &lt;a href="https://axios-http.com/docs/intro" rel="noopener noreferrer"&gt;Axios documentation&lt;/a&gt; to see how it works behind the scenes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// With Axios, it works like you'd expect
import axios from 'axios';

async function getAxiosData() {
  try {
    // HTTP errors (4xx, 5xx) will immediately jump to catch
    const response = await axios.get('https://api.example.com/nonexistent');
// This only executes for successful responses (2xx)
    console.log('Data:', response.data);
    return response.data;
  } catch (error) {
    // Both network errors AND HTTP errors land here
    console.error('Caught in catch block:', error.message);
    console.error('Status code:', error.response?.status);
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why Should You Care About This?
&lt;/h2&gt;

&lt;p&gt;This isn't just some technical trivia - it actually matters for your day-to-day coding because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Switching between libraries can introduce unexpected bugs if you're not aware of this difference&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With fetch, forgetting to check response.ok can lead to silent failures that are a nightmare to debug&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Legacy codebase might often use native fetch API rather than something like Axios &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>http</category>
      <category>axios</category>
      <category>frontend</category>
      <category>fetch</category>
    </item>
  </channel>
</rss>
