<?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: Paweł Sikora</title>
    <description>The latest articles on DEV Community by Paweł Sikora (@pawe_sikora_5535c45ed2cc).</description>
    <link>https://dev.to/pawe_sikora_5535c45ed2cc</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3613813%2F7e2f2bfb-ac19-4906-80fa-ec04ab0ffa72.jpg</url>
      <title>DEV Community: Paweł Sikora</title>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pawe_sikora_5535c45ed2cc"/>
    <language>en</language>
    <item>
      <title>Refactoring Legacy C/AL Code After Conversion to AL</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Tue, 20 Jan 2026 18:08:48 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/refactoring-legacy-cal-code-after-conversion-to-al-4le2</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/refactoring-legacy-cal-code-after-conversion-to-al-4le2</guid>
      <description>&lt;p&gt;Upgrading Microsoft Dynamics NAV to Business Central is rarely just a technical operation.&lt;br&gt;
The longer a company postponed the upgrade, the more technical debt accumulated in the codebase. What often looks like a “successful upgrade” is, in reality, only the beginning of a much harder journey.&lt;/p&gt;

&lt;p&gt;Automatic conversion from C/AL to AL allows the system to compile and run, but it does not make the code modern, maintainable, or extensible. In many projects, the converted AL code still thinks in C/AL — and that is where refactoring becomes essential.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://4coders.own.pl/php/refactoring-legacy-c-al-code-after-conversion-to-al/" rel="noopener noreferrer"&gt;Read more on 4coders.own.pl&lt;/a&gt;&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>upgrade</category>
    </item>
    <item>
      <title>RAG Showdown: Elasticsearch vs MongoDB</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Thu, 11 Dec 2025 08:47:49 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/rag-showdown-elasticsearch-vs-mongodb-1mlc</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/rag-showdown-elasticsearch-vs-mongodb-1mlc</guid>
      <description>&lt;p&gt;In the previous article on &lt;br&gt;
 (&lt;a href="https://4coders.own.pl/ai/rag-with-elasticsearch/" rel="noopener noreferrer"&gt;RAG with Elasticsearch&lt;/a&gt;), you detailed the full pipeline—ingestion, BM25/hybrid retrieval, and LLM integration—showing how Elasticsearch excels as a dedicated search engine for RAG apps. This follow-up assumes that foundation, shifting focus to MongoDB’s streamlined alternative via Atlas Vector Search, with a side-by-side comparison and thoughts on RAG’s evolution.​&lt;/p&gt;

&lt;h2&gt;
  
  
  RAG in MongoDB: Quick Overview
&lt;/h2&gt;

&lt;p&gt;MongoDB Atlas integrates RAG seamlessly through its Vector Search feature, storing documents with embeddings, metadata, and application data in a single collection for hybrid semantic and keyword queries. This simplifies ingestion (chunking data, generating embeddings) and retrieval, feeding relevant context directly to LLMs without separate storage layers.​&lt;/p&gt;

&lt;p&gt;Example and other part of article on 4coders.own.pl &lt;a href="https://4coders.own.pl/ai/rag-showdown-elasticsearch-vs-mongodb/" rel="noopener noreferrer"&gt;RAG Showdown: Elasticsearch vs MongoDB&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rag</category>
      <category>ai</category>
      <category>mongodb</category>
      <category>elasticsearch</category>
    </item>
    <item>
      <title>HATEOAS – Do we have standard?</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Sun, 07 Dec 2025 18:51:27 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/hateoas-do-we-have-standard-je6</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/hateoas-do-we-have-standard-je6</guid>
      <description>&lt;h2&gt;
  
  
  HATEOAS – Hypermedia as the Engine of Application State
&lt;/h2&gt;

&lt;p&gt;When designing &lt;strong&gt;RESTful APIs&lt;/strong&gt;, we often focus on resources, endpoints, and HTTP verbs — but we tend to overlook one of the most powerful ideas that REST was built upon: &lt;strong&gt;hypermedia&lt;/strong&gt;. This is where &lt;strong&gt;HATEOAS (Hypermedia as the Engine of Application State) comes in&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;At its core, HATEOAS means that a client interacts with an API** through hypermedia links provided dynamically by the server**, rather than relying on hardcoded URLs or prior knowledge of the API structure.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;We simply embed enough information in our responses that the client can intelligently choose what action to take next using only the contents of the HTTP response.&lt;br&gt;
— &lt;a href="https://restfulapi.net/hateoas" rel="noopener noreferrer"&gt;restfulapi.net/hateoas&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why HATEOAS?
&lt;/h2&gt;

&lt;p&gt;Traditional REST APIs often look like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;/api/orders&lt;br&gt;
/api/orders/{id}&lt;br&gt;
/api/orders/{id}/items&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Clients must know these routes ahead of time. Any change to an endpoint, or the introduction of a new workflow, may break existing clients.&lt;/p&gt;

&lt;p&gt;HATEOAS solves this problem by embedding links and relations directly in the server’s responses. This way, the client doesn’t need to know where to go next — the server tells it.&lt;/p&gt;

&lt;p&gt;The goal, as described is to create REST services that are easier to understand, more self-descriptive, and more adaptable to change.&lt;/p&gt;

&lt;p&gt;Read more on 4coders.onw.pl &lt;a href="https://4coders.own.pl/rest/hateoas-do-we-have-standard/" rel="noopener noreferrer"&gt;HATEOAS – Do we have standard?&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hateoas</category>
      <category>rest</category>
    </item>
    <item>
      <title>HEADLESS – Story about REST and GraphQL</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Sun, 07 Dec 2025 18:42:07 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/headless-story-about-rest-and-graphql-plp</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/headless-story-about-rest-and-graphql-plp</guid>
      <description>&lt;p&gt;For years the default was simple: &lt;strong&gt;one big application&lt;/strong&gt; where the backend (PHP, Java, .NET, Ruby…) generated &lt;strong&gt;full HTML pages&lt;/strong&gt; on the server and sent them to the browser. It was fast to build, easy to deploy, and worked perfectly… until it stopped working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Everything started cracking&lt;/strong&gt; around 2013–2016 when three things happened at once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Users began expecting real mobile apps, not just a responsive website.&lt;/li&gt;
&lt;li&gt;JavaScript frameworks (React, Angular, Vue) exploded and suddenly the frontend became a real, complex application on its own.&lt;/li&gt;
&lt;li&gt;Companies wanted to publish the same content and functionality on web, iOS, Android, smart TVs, kiosks, chatbots, and watches — all at the same time.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The monolithic model collapsed under that pressure:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Changing one line of HTML required a full backend deployment.&lt;/li&gt;
&lt;li&gt;Mobile teams had to wait for backend developers to expose new API endpoints.&lt;/li&gt;
&lt;li&gt;Reusing the same server-rendered templates on a native app or a voice device was basically impossible.&lt;/li&gt;
&lt;li&gt;Development speed slowed to a crawl because two completely different disciplines (server-side rendering vs modern frontend) were chained together.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the industry did the obvious thing: &lt;strong&gt;cut the rope.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Separate the “content and business logic” (backend) from the “experience and presentation” (frontend). Let the backend become a pure data service (headless) and give every channel its own specialized frontend.&lt;/p&gt;

&lt;p&gt;Read more on 4coders.own.pl &lt;a href="https://4coders.own.pl/coding/headles-story-about-rest-and-graphql/" rel="noopener noreferrer"&gt;HEADLESS – Story about REST and GraphQL&lt;/a&gt;&lt;/p&gt;

</description>
      <category>rest</category>
      <category>graphql</category>
      <category>headles</category>
    </item>
    <item>
      <title>PostgreSQL and JSON in 2025</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Sun, 07 Dec 2025 18:17:16 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/postgresql-and-json-in-2025-5fp5</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/postgresql-and-json-in-2025-5fp5</guid>
      <description>&lt;p&gt;We’ve seen MySQL vs MariaDB fight to the death over JSON. We’ve seen Microsoft SQL Server roll up in a spaceship and embarrass everyone. And then there’s PostgreSQL… just sitting there since 2012, sipping tea, with the most mature, powerful, and actually pleasant JSON implementation of them all.&lt;/p&gt;

&lt;p&gt;Read more on 4coders.own.pl &lt;a href="https://4coders.own.pl/databases/postgresql-and-json-in-2025/" rel="noopener noreferrer"&gt;PostgreSQL and JSON in 2025&lt;/a&gt;&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>json</category>
    </item>
    <item>
      <title>Securing Wordpres – Personal view</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Wed, 26 Nov 2025 10:28:54 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/securing-wordpres-personal-view-f8e</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/securing-wordpres-personal-view-f8e</guid>
      <description>&lt;p&gt;&lt;strong&gt;WordPress Security: A Personal Perspective on a Complex and Often Misunderstood Problem&lt;/strong&gt;&lt;br&gt;
Securing WordPress is a &lt;strong&gt;topic surrounded by myths&lt;/strong&gt;, oversimplifications, and false expectations. This article represents my personal view, based on hands-on experience with high-traffic WordPress installations, custom plugins, e-commerce environments, and real post-attack recoveries.&lt;br&gt;
It isn’t a universal truth, nor the only correct approach — but rather an attempt to explain why securing WordPress is challenging, what actually matters, and why some methods work better than others.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read mode on &lt;a href="https://4coders.own.pl/wordpress/securing-wordpres-my-personal-view/" rel="noopener noreferrer"&gt;4coders.own.pl - Securing Wordpres – My personal view&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>security</category>
    </item>
    <item>
      <title>Microsoft Turns Business Central into the First ERP with Built-in MCP Server Support</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Wed, 26 Nov 2025 10:25:27 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/microsoft-turns-business-central-into-the-first-erp-with-built-in-mcp-server-support-3ank</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/microsoft-turns-business-central-into-the-first-erp-with-built-in-mcp-server-support-3ank</guid>
      <description>&lt;p&gt;As AI agents evolve from assistants to autonomous orchestrators, a key question emerges: How will they seamlessly interface with core business systems like ERP without custom coding hurdles? What if your AI could query customer data, generate sales orders, or automate workflows in real-time, all through natural language? Time will reveal the full transformative impact, but Microsoft’s MCP Server for Dynamics 365 Business Central is poised to bridge this gap, turning ERP into a conversational powerhouse. Building on the foundational MCP concepts we explored in our previous article on MCP access for AI agents, let’s dive into this Business Central-specific implementation – now in public preview as part of the 2025 release wave 2.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read more on &lt;a href="https://4coders.own.pl/business-central/microsoft-turns-business-central-into-the-first-erp-with-built-in-mcp-server-support/" rel="noopener noreferrer"&gt;4coders.own.pl - Microsoft Turns Business Central into the First ERP with Built-in MCP Server Support&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>mcp</category>
      <category>erp</category>
    </item>
    <item>
      <title>The Journey of Storing Data for Extensions in BC</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Wed, 26 Nov 2025 10:23:04 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/the-journey-of-storing-data-for-extensions-in-bc-3hm0</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/the-journey-of-storing-data-for-extensions-in-bc-3hm0</guid>
      <description>&lt;p&gt;Microsoft Dynamics 365 Business Central (BC) is a modern ERP solution that has always prioritized flexibility and extensibility. One of the core mechanisms enabling customization is the extensions model, introduced in 2018 with BC 13 (formerly Dynamics NAV 2018). Extensions allow developers to modify standard objects such as tables, pages, and codeunits without altering Microsoft’s base code.&lt;/p&gt;

&lt;p&gt;Read more on &lt;a href="https://4coders.own.pl/business-central/the-journey-of-storing-data-for-extensions-in-bc/" rel="noopener noreferrer"&gt;4coders.own.pl - The Journey of Storing Data for Extensions in BC&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Dependency Injection in Modern .NET</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Tue, 18 Nov 2025 14:26:36 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/dependency-injection-in-modern-net-14c</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/dependency-injection-in-modern-net-14c</guid>
      <description>&lt;p&gt;Remember when Dependency Injection (DI) was that "advanced" topic you had to learn with a complex third-party library? Fast forward to today, and it's seamlessly woven into the very fabric of .NET. The pattern itself isn't new—it's a timeless recipe for clean code. But the real story is how .NET has not just adopted it, but has built upon it, creating a powerful, extensible, and incredibly streamlined system that powers everything from minimal APIs to massive enterprise applications. Let's explore the journey and see how the .NET implementation has taken this classic pattern to a whole new level.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Read more&lt;/strong&gt; on &lt;a href="https://4coders.own.pl/coding/dependency-injection-in-modern-net/" rel="noopener noreferrer"&gt;4coders.own.pl - Dependency Injection in Modern .NET&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Business Central - Evolution of Field Changes</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Tue, 18 Nov 2025 07:35:16 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/business-central-evolution-of-field-changes-4nda</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/business-central-evolution-of-field-changes-4nda</guid>
      <description>&lt;p&gt;In both &lt;strong&gt;Navision (Dynamics NAV)&lt;/strong&gt; and &lt;strong&gt;Business Central (BC)&lt;/strong&gt;, a field is the fundamental unit of data in a table. Fields define what kind of information is stored, how it is used in business processes, and how other objects—such as pages, reports, and codeunits—interact with it. Each field also has a &lt;strong&gt;unique numeric identifier&lt;/strong&gt;, known as the &lt;strong&gt;field number&lt;/strong&gt;, which plays a critical role in maintaining the stability and consistency of the table schema. Numbering allows fields to be uniquely identified regardless of their names, enables references from other objects without relying on field names, and supports safe data upgrades and migrations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Nothing speaks louder than code...
&lt;/h2&gt;

&lt;p&gt;and even louder than that is code that actually works :)&lt;/p&gt;

&lt;p&gt;Check it on &lt;a href="https://4coders.own.pl/business-central/evolution-of-field-changes-in-bc/" rel="noopener noreferrer"&gt;4coders.own.pl - Evolution of Field Changes in BC&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Message Queue in MS SQL</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Sun, 16 Nov 2025 17:31:45 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/message-queue-in-ms-sql-d89</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/message-queue-in-ms-sql-d89</guid>
      <description>&lt;p&gt;&lt;strong&gt;SQL Server Service Broker (SSB)&lt;/strong&gt; is a powerful messaging framework built directly into Microsoft SQL Server. It enables reliable, asynchronous communication between different databases or within the same database, allowing applications to send, receive, and process messages without blocking transactions.&lt;/p&gt;

&lt;p&gt;At its core, Service Broker acts like a highly scalable internal message queue, providing transactional guarantees and durability. This means messages are stored safely in SQL Server tables, ensuring they are processed exactly once, even if a server or process fails.&lt;/p&gt;

&lt;p&gt;Read more on &lt;a href="https://4coders.own.pl/message-queue/message-queue-in-ms-sql/" rel="noopener noreferrer"&gt;4coders.own.pl - SQL Server Service Broker (SSB)&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or check &lt;a href="https://github.com/pascalsikora/sql-service-broker" rel="noopener noreferrer"&gt;the working example on GitHub&lt;/a&gt;&lt;/p&gt;

</description>
      <category>microsoft</category>
      <category>sqlserver</category>
      <category>dotnet</category>
      <category>ssb</category>
    </item>
    <item>
      <title>Model Context Protocol (MCP) – Access For AI Agents</title>
      <dc:creator>Paweł Sikora</dc:creator>
      <pubDate>Sun, 16 Nov 2025 17:25:50 +0000</pubDate>
      <link>https://dev.to/pawe_sikora_5535c45ed2cc/model-context-protocol-mcp-access-for-ai-agents-19c8</link>
      <guid>https://dev.to/pawe_sikora_5535c45ed2cc/model-context-protocol-mcp-access-for-ai-agents-19c8</guid>
      <description>&lt;p&gt;&lt;strong&gt;The Model Context Protocol (MCP)&lt;/strong&gt; is an open standard developed by Anthropic that enables AI agents to securely connect with external data sources and tools. Think of MCP as a universal “plugin system” for AI – it provides a standardized way for AI models like Claude to interact with your business data, APIs, and applications without requiring direct database access.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why MCP Matters for AI Agents
&lt;/h2&gt;

&lt;p&gt;Traditional AI assistants operate in isolation, limited to their training data and unable to access real-time information. MCP changes this paradigm by:&lt;/p&gt;

&lt;p&gt;Providing real-time data access to your business systems&lt;br&gt;
Enabling action execution within your applications&lt;br&gt;
Maintaining security through controlled, predefined interfaces&lt;br&gt;
Ensuring data freshness without manual data exports&lt;/p&gt;

&lt;p&gt;Read more on &lt;a href="https://4coders.own.pl/ai/mcp-access-for-ai-agents/" rel="noopener noreferrer"&gt;4coders.own.pl - Model Context Protocol (MCP) – Access For AI Agents&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>mcp</category>
    </item>
  </channel>
</rss>
