{"version":"https:\/\/jsonfeed.org\/version\/1","title":"Nemanja's blog RSS feed","home_page_url":"https:\/\/ninkovic.dev\/","feed_url":"https:\/\/ninkovic.dev\/feed.json","description":"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.","icon":"https:\/\/ninkovic.dev\/assets\/favicon-16x16.png","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"},"items":[{"id":"https:\/\/ninkovic.dev\/blog\/2025\/prompt-snapshot-testing.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2025\/prompt-snapshot-testing.html","title":"Prompt snapshot testing","date_modified":"2025-09-08T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2025\/think-twice-before-using-github-actions.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2025\/think-twice-before-using-github-actions.html","title":"I'll think twice before using Github Actions again","date_modified":"2025-01-19T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2024\/chat-gpt-on-a-budget.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2024\/chat-gpt-on-a-budget.html","title":"ChatGPT on a budget","date_modified":"2024-10-24T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2024\/extract-structured-information-with-llm.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2024\/extract-structured-information-with-llm.html","title":"Extracting structured information from documents with LLMs","date_modified":"2024-09-29T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2024\/rag-from-scratch-part-2.html","content_html":"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","url":"https:\/\/ninkovic.dev\/blog\/2024\/rag-from-scratch-part-2.html","title":"RAG from scratch series - part 2","date_modified":"2024-03-18T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2024\/rag-from-scratch-part-1.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2024\/rag-from-scratch-part-1.html","title":"RAG from scratch series - part 1","date_modified":"2024-03-09T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2024\/learning-materials-for-engineers-starting-out-with-generative-ai.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2024\/learning-materials-for-engineers-starting-out-with-generative-ai.html","title":"Learning materials for software engineers that are starting with Generative AI","date_modified":"2024-02-06T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2024\/generative-ai-glossary-for-beginners.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2024\/generative-ai-glossary-for-beginners.html","title":"Generative AI glossary for beginners","date_modified":"2024-01-29T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2023\/using-spaced-repetition-to-pass-cloud-certifications.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2023\/using-spaced-repetition-to-pass-cloud-certifications.html","title":"Using spaced repetition to pass cloud certifications","date_modified":"2023-01-25T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2022\/an-improved-guide-for-compiling-wasm-with-emscripten-and-embind.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2022\/an-improved-guide-for-compiling-wasm-with-emscripten-and-embind.html","title":"An improved guide for compiling WASM with Emscripten and Embind","date_modified":"2022-10-10T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2021\/how-to-acquire-more-time-for-technical-tasks.html","content_html":"In this post we offer a few tips on how to convince businesspeople and product owner to invest more time in solving technical tasks.","url":"https:\/\/ninkovic.dev\/blog\/2021\/how-to-acquire-more-time-for-technical-tasks.html","title":"How to convince your product owner to invest more time in technical tasks","date_modified":"2021-04-02T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}},{"id":"https:\/\/ninkovic.dev\/blog\/2020\/testing-web-components-with-jest-and-lit-element.html","content_html":"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.","url":"https:\/\/ninkovic.dev\/blog\/2020\/testing-web-components-with-jest-and-lit-element.html","title":"Testing Web component with Jest and Lit element","date_modified":"2020-06-01T00:00:00.000Z","author":{"name":"Nemanja Ninkovi\u0107","url":"https:\/\/ninkovic.dev\/"}}]}