<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
    <id>https://ninkovic.dev/</id>
    <title>Nemanja's blog RSS feed</title>
    <updated>2026-03-29T08:22:20.494Z</updated>
    <generator>https://github.com/jpmonette/feed</generator>
    <author>
        <name>Nemanja Ninković</name>
        <email>contact@ninkovic.dev</email>
        <uri>https://ninkovic.dev/</uri>
    </author>
    <link rel="alternate" href="https://ninkovic.dev/"/>
    <link rel="self" href="https://ninkovic.dev/atom.xml"/>
    <subtitle>My name is Nemanja, I'm a software engineer and this is RSS feed for my personal blog. I mostly write on technical topics such as Generative AI, DevOps, Cloud and my experiences from the software industry.</subtitle>
    <logo>https://ninkovic.dev/assets/favicon-16x16.png</logo>
    <icon>https://ninkovic.dev/assets/favicon-16x16.png</icon>
    <rights>Copyright Nemanja Ninković</rights>
    <category term="Technology"/>
    <category term="Generative AI"/>
    <category term="Software development"/>
    <entry>
        <title type="html"><![CDATA[Prompt snapshot testing]]></title>
        <id>https://ninkovic.dev/blog/2025/prompt-snapshot-testing.html</id>
        <link href="https://ninkovic.dev/blog/2025/prompt-snapshot-testing.html"/>
        <updated>2025-09-08T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Learn how one team streamlined LLM testing by using prompt snapshots to cut down on pipeline complexity, cost, and runtime. This post shares challenges, lessons, and a practical approach to more efficient automated testing with large language models.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[I'll think twice before using Github Actions again]]></title>
        <id>https://ninkovic.dev/blog/2025/think-twice-before-using-github-actions.html</id>
        <link href="https://ninkovic.dev/blog/2025/think-twice-before-using-github-actions.html"/>
        <updated>2025-01-19T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The blog post discusses dissatisfaction with GitHub Actions due to its limitations in managing complex workflows, especially in monorepo setups with certain features like pull request checks and workflow reusability. Several issues have been highlighted, along with alternatives for GitHub Actions.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[ChatGPT on a budget]]></title>
        <id>https://ninkovic.dev/blog/2024/chat-gpt-on-a-budget.html</id>
        <link href="https://ninkovic.dev/blog/2024/chat-gpt-on-a-budget.html"/>
        <updated>2024-10-24T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This is a blog post about using the OpenAI Batch API which allows users to batch process large language model requests, significantly reducing costs by up to 50% but requiring additional infrastructure and maintenance considerations.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Extracting structured information from documents with LLMs]]></title>
        <id>https://ninkovic.dev/blog/2024/extract-structured-information-with-llm.html</id>
        <link href="https://ninkovic.dev/blog/2024/extract-structured-information-with-llm.html"/>
        <updated>2024-09-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This blog post discusses the challenges of extracting structured information from unstructured documents using Large Language Models (LLMs). With the recent release of structured output by OpenAI, developers can now pass a JSON schema and get back a response that conforms to it.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[RAG from scratch series - part 2]]></title>
        <id>https://ninkovic.dev/blog/2024/rag-from-scratch-part-2.html</id>
        <link href="https://ninkovic.dev/blog/2024/rag-from-scratch-part-2.html"/>
        <updated>2024-03-18T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[The second part in the blog series of how to build a RAG (Retrieval Augmented Generation) system from scratch. Aimed at beginners, the blog will introduce you to foundational concepts and pieces which are needed to build such a system. The blog comes with code and step by step implementation]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[RAG from scratch series - part 1]]></title>
        <id>https://ninkovic.dev/blog/2024/rag-from-scratch-part-1.html</id>
        <link href="https://ninkovic.dev/blog/2024/rag-from-scratch-part-1.html"/>
        <updated>2024-03-09T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[First part in the blog series of how to build a RAG (Retrieval Augmented Generation) system from scratch. Aimed at beginners, the blog will introduce you to foundational concepts and pieces which are needed to build such a system. The blog comes with code and step by step implementation.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Learning materials for software engineers that are starting with Generative AI]]></title>
        <id>https://ninkovic.dev/blog/2024/learning-materials-for-engineers-starting-out-with-generative-ai.html</id>
        <link href="https://ninkovic.dev/blog/2024/learning-materials-for-engineers-starting-out-with-generative-ai.html"/>
        <updated>2024-02-06T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[A list of learning materials for software engineers that want to start working on Generative AI projects. The materials and concepts are categorized from beginner to more advanced with explanations on why each concept is important.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Generative AI glossary for beginners]]></title>
        <id>https://ninkovic.dev/blog/2024/generative-ai-glossary-for-beginners.html</id>
        <link href="https://ninkovic.dev/blog/2024/generative-ai-glossary-for-beginners.html"/>
        <updated>2024-01-29T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[Generative AI beginner-friendly glossary for software engineers who are just starting out in the AI space. Terminology is explained in the simplest terms with a lot of well-known examples and references.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Using spaced repetition to pass cloud certifications]]></title>
        <id>https://ninkovic.dev/blog/2023/using-spaced-repetition-to-pass-cloud-certifications.html</id>
        <link href="https://ninkovic.dev/blog/2023/using-spaced-repetition-to-pass-cloud-certifications.html"/>
        <updated>2023-01-25T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[After passing a few cloud certifications last year, I'm sharing some tips and tricks on how to prepare. We will also look at a technique called spaced repetition and see how we can leverage it to pass the exam with flying colors.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[An improved guide for compiling WASM with Emscripten and Embind]]></title>
        <id>https://ninkovic.dev/blog/2022/an-improved-guide-for-compiling-wasm-with-emscripten-and-embind.html</id>
        <link href="https://ninkovic.dev/blog/2022/an-improved-guide-for-compiling-wasm-with-emscripten-and-embind.html"/>
        <updated>2022-10-10T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[This post is an improved guide on how to work with Emscripten and Embind to compile C++ code to WebAssembly. We also cover some tips and tricks which are not clear from Emscripten documentation.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[How to convince your product owner to invest more time in technical tasks]]></title>
        <id>https://ninkovic.dev/blog/2021/how-to-acquire-more-time-for-technical-tasks.html</id>
        <link href="https://ninkovic.dev/blog/2021/how-to-acquire-more-time-for-technical-tasks.html"/>
        <updated>2021-04-02T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[In this post we offer a few tips on how to convince businesspeople and product owner to invest more time in solving technical tasks.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
    <entry>
        <title type="html"><![CDATA[Testing Web component with Jest and Lit element]]></title>
        <id>https://ninkovic.dev/blog/2020/testing-web-components-with-jest-and-lit-element.html</id>
        <link href="https://ninkovic.dev/blog/2020/testing-web-components-with-jest-and-lit-element.html"/>
        <updated>2020-06-01T00:00:00.000Z</updated>
        <summary type="html"><![CDATA[We all know that testing is critical for any software product and JS landscape offers a lot of tools to perform this task. One of the most popular ones is Jest which is famous for its simplicity.]]></summary>
        <author>
            <name>Nemanja Ninković</name>
            <email>contact@ninkovic.dev</email>
            <uri>https://ninkovic.dev/</uri>
        </author>
    </entry>
</feed>