<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Software Engineering on Nalar</title>
    <link>https://nalar.dev/software-engineering/</link>
    <description>Recent content in Software Engineering on Nalar</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 01 Sep 2026 00:00:00 +0700</lastBuildDate>
    <atom:link href="https://nalar.dev/software-engineering/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Evolving APIs Without Breaking Clients</title>
      <link>https://nalar.dev/evolving-apis-without-breaking-clients/</link>
      <pubDate>Tue, 01 Sep 2026 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/evolving-apis-without-breaking-clients/</guid>
      <description>&lt;p&gt;An API is not only an HTTP path or function signature. It is a contract about syntax, semantics, timing, errors, ordering, defaults, and lifecycle.&lt;/p&gt;&#xA;&lt;p&gt;Breaking changes often happen because a server remains syntactically compatible while changing one of those less-visible assumptions.&lt;/p&gt;&#xA;&lt;p&gt;Safe API evolution starts by identifying what clients can reasonably depend on and designing changes that allow old and new versions to coexist.&lt;/p&gt;&#xA;&lt;h2 id=&#34;compatibility-has-multiple-dimensions&#34;&gt;Compatibility has multiple dimensions&lt;/h2&gt;&#xA;&lt;p&gt;A change can preserve JSON shape and still break clients.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Programming Languages and Tools with Language Server Protocol (LSP) Support</title>
      <link>https://nalar.dev/programming-languages-and-tools-with-language-server-protocol-lsp-support/</link>
      <pubDate>Wed, 01 Oct 2025 00:00:00 +0700</pubDate>
      <guid>https://nalar.dev/programming-languages-and-tools-with-language-server-protocol-lsp-support/</guid>
      <description>&lt;p&gt;Modern editors such as VS Code, Neovim, Emacs, and Sublime Text can share language intelligence through the &lt;strong&gt;Language Server Protocol (LSP)&lt;/strong&gt;. A language server runs separately from the editor and provides features such as completion, diagnostics, symbol navigation, hover information, and refactoring support.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-lsp-works&#34;&gt;How LSP Works&lt;/h2&gt;&#xA;&lt;p&gt;A typical setup has three parts:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;a language server installed on the system or inside the project;&lt;/li&gt;&#xA;&lt;li&gt;an editor or editor plugin that speaks LSP;&lt;/li&gt;&#xA;&lt;li&gt;project configuration the server can understand.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;For example, Neovim can connect to &lt;code&gt;gopls&lt;/code&gt; for Go, while VS Code normally installs the appropriate extension that manages the server integration.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
